Ir para conteúdo

Featured Replies

  • Respostas 14
  • Visualizações 218
  • Created
  • Última resposta

Top Posters In This Topic

Most Popular Posts

  • data > creaturescripts > creaturescripts.xml   <event type="kill" name="killTheBoss" event="script" value="killTheBoss.lua"/> <event type="login" name="killTheBossLogin" eve

  • Mateus Robeerto
    Mateus Robeerto

    tentou onDeath? local config = { NameBoss = "Boss Hits", rewardItem1 = {itemID = 8300, chance = 10}, -- 10% de chance de vim esse item rewardItem2 = {itemID = 8301, chance = 20}, -- 20%

Posted Images

Postado
function onKill(player, target)
    if isMonster(target) then
        local bossName = getCreatureName(target)
        print("Nome do Boss: " .. bossName) 

        if bossName == "Boss Hits" then
            local chanceToDropItem = math.random(1, 100)
            print("Chance de drop: " .. chanceToDropItem)

            if chanceToDropItem <= 50 then
                local itemsToDrop = {
                    1234,
                    5678, 
                    91011 
                }
                
                local randomItemID = itemsToDrop[math.random(1, #itemsToDrop)] 
                local newItem = doCreateItem(randomItemID, 1)

                if newItem then
                    doPlayerAddItem(player, newItem)
                    doSendMagicEffect(getCreaturePosition(player), CONST_ME_MAGIC_RED)
                    doPlayerSendTextMessage(player, MESSAGE_EVENT_DEFAULT, "Você recebeu um item raro como recompensa por derrotar o Boss!")
                    print("Item dropado: " .. randomItemID) 
                end
            else
                doPlayerSendTextMessage(player, MESSAGE_EVENT_DEFAULT, "Você não recebeu nenhum item como recompensa por derrotar o Boss.")
            end
        else
            print("Boss não encontrado no banco de dados ou não é 'Boss Hits'.")
        end
    end
end

Tirei a função isPlayer, mantendo apenas isMonster. Também adicionei um print para fins de depuração e ele será enviado para o seu console. Assim, será possível identificar onde está o erro. Isso ajudará a entender, e poderei corrigi-lo na próxima etapa. Por favor, faça o teste e me envie o console. O que for indicado no print sobre se foi encontrado ou não, etc

Postado
  • Autor
  Em 06/11/2023 em 20:00, GM Vortex disse:


function onKill(player, target)
    if isMonster(target) then
        local bossName = getCreatureName(target)
        print("Nome do Boss: " .. bossName) 

        if bossName == "Boss Hits" then
            local chanceToDropItem = math.random(1, 100)
            print("Chance de drop: " .. chanceToDropItem)

            if chanceToDropItem <= 50 then
                local itemsToDrop = {
                    1234,
                    5678, 
                    91011 
                }
                
                local randomItemID = itemsToDrop[math.random(1, #itemsToDrop)] 
                local newItem = doCreateItem(randomItemID, 1)

                if newItem then
                    doPlayerAddItem(player, newItem)
                    doSendMagicEffect(getCreaturePosition(player), CONST_ME_MAGIC_RED)
                    doPlayerSendTextMessage(player, MESSAGE_EVENT_DEFAULT, "Você recebeu um item raro como recompensa por derrotar o Boss!")
                    print("Item dropado: " .. randomItemID) 
                end
            else
                doPlayerSendTextMessage(player, MESSAGE_EVENT_DEFAULT, "Você não recebeu nenhum item como recompensa por derrotar o Boss.")
            end
        else
            print("Boss não encontrado no banco de dados ou não é 'Boss Hits'.")
        end
    end
end

Tirei a função isPlayer, mantendo apenas isMonster. Também adicionei um print para fins de depuração e ele será enviado para o seu console. Assim, será possível identificar onde está o erro. Isso ajudará a entender, e poderei corrigi-lo na próxima etapa. Por favor, faça o teste e me envie o console. O que for indicado no print sobre se foi encontrado ou não, etc

n morre e ficou isso no console sem parar...
 

sadsadsadsa.png

  Em 06/11/2023 em 20:05, Doidodepeda disse:

n morre e ficou isso no console sem parar...
 

sadsadsadsa.png

 

dddddddddd.png

 

Irmão, n querendo encomodar... mas se tu souber bolar um script que funfe no 0.4, eu so faço questo do script entregar 1 item e com %

tipo...
matou o boss ganha 1 item
[item] 8300 - [porcentagem] 10% de vim esse item

[item] 8301 - [porcentagem] 20% de vim esse item

[item] 8302 - [porcentagem] 30% de vim esse item

[item] 8303 - [porcentagem] 40% de vim esse item

Editado por Doidodepeda (veja o histórico de edições)

Postado
local config = {
    NameBoss = "Boss Hits",
    rewardItem1 = {itemID = 8300, chance = 10}, -- 10% de chance de vim esse item
    rewardItem2 = {itemID = 8301, chance = 20}, -- 20% de chance de vim esse item
    rewardItem3 = {itemID = 8302, chance = 30}, -- 30% de chance de vim esse item
    rewardItem4 = {itemID = 8303, chance = 40}, -- 40% de chance de vim esse item
    effect = CONST_ME_MAGIC_RED
}

function onDeath(cid, corpse, deathList)
    local bossName = getCreatureName(cid)

    if bossName == config.NameBoss then
        local chanceToDropItem = math.random(1, 100)
        print("Chance de drop: " .. chanceToDropItem)

        local rewardItemID = nil

        if chanceToDropItem <= config.rewardItem1.chance then
            rewardItemID = config.rewardItem1.itemID
        elseif chanceToDropItem <= config.rewardItem1.chance + config.rewardItem2.chance then
            rewardItemID = config.rewardItem2.itemID
        elseif chanceToDropItem <= config.rewardItem1.chance + config.rewardItem2.chance + config.rewardItem3.chance then
            rewardItemID = config.rewardItem3.itemID
        elseif chanceToDropItem <= config.rewardItem1.chance + config.rewardItem2.chance + config.rewardItem3.chance + config.rewardItem4.chance then
            rewardItemID = config.rewardItem4.itemID
        end

        if rewardItemID then
            doPlayerAddItemEx(deathList[1], rewardItemID, 1)
            doSendMagicEffect(getCreaturePosition(deathList[1]), config.effect)
            doPlayerSendTextMessage(deathList[1], MESSAGE_EVENT_DEFAULT, "Você recebeu um item raro como recompensa por derrotar o Boss!")
            print("Item dropado: " .. rewardItemID)
        else
            doPlayerSendTextMessage(deathList[1], MESSAGE_EVENT_DEFAULT, "Você não recebeu nenhum item como recompensa por derrotar o Boss.")
        end
    end
end

Deve registrar no monstro. Procure por esta linha </monster> antes do final e adicione. Por exemplo, assim aqui

 

<script>
<event name="Boss Hits"/>

</script>
</monster>

ou aqui funçao onKill..

local config = {
    NameBoss = "Boss Hits",
    rewardItem1 = {itemID = 8300, chance = 10}, -- 10% de chance de vim esse item
    rewardItem2 = {itemID = 8301, chance = 20}, -- 20% de chance de vim esse item
    rewardItem3 = {itemID = 8302, chance = 30}, -- 30% de chance de vim esse item
    rewardItem4 = {itemID = 8303, chance = 40}, -- 40% de chance de vim esse item
    effect = CONST_ME_MAGIC_RED
}

function onKill(cid, target)
    if isMonster(target) then
        local bossName = getCreatureName(target)
        print("Nome do Boss: " .. bossName) 

        if bossName == config.NameBoss then
            local chanceToDropItem = math.random(1, 100)
            print("Chance de drop: " .. chanceToDropItem)

            local rewardItemID = nil

            if chanceToDropItem <= config.rewardItem1.chance then
                rewardItemID = config.rewardItem1.itemID
            elseif chanceToDropItem <= config.rewardItem1.chance + config.rewardItem2.chance then
                rewardItemID = config.rewardItem2.itemID
            elseif chanceToDropItem <= config.rewardItem1.chance + config.rewardItem2.chance + config.rewardItem3.chance then
                rewardItemID = config.rewardItem3.itemID
            elseif chanceToDropItem <= config.rewardItem1.chance + config.rewardItem2.chance + config.rewardItem3.chance + config.rewardItem4.chance then
                rewardItemID = config.rewardItem4.itemID
            end

            if rewardItemID then
                doPlayerAddItemEx(cid, rewardItemID, 1)
                doSendMagicEffect(getCreaturePosition(cid), config.effect)
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você recebeu um item raro como recompensa por derrotar o Boss!")
                print("Item dropado: " .. rewardItemID)
            else
                doPlayerSendTextMessage(cid, MESSAGE_EVENT_DEFAULT, "Você não recebeu nenhum item como recompensa por derrotar o Boss.")
            end
        else
            print("Boss não encontrado no banco de dados ou não é 'Boss Hits'.")
        end
    end
end

 

Editado por GM Vortex (veja o histórico de edições)

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.9k
  • Posts 519.6k

Informação Importante

Confirmação de Termo