local UPGRADE_ITEM_ID = 5902 -- O item de melhoria, ex: "spooky blue eye" local LIFE_LEECH_INCREMENT = 1 -- Porcentagem a ser adicionada ao Life Leech local MANA_LEECH_INCREMENT = 1 -- Porcentagem a ser adicionada ao Mana Leech local MAX_LEECH_PERCENT = 100 -- Limite máximo para Life Leech e Mana Leech local FIXED_DAMAGE = 100000000 -- Dano fixo que será causado à criatura e ao jogador function onUse(cid, item, fromPosition, itemEx, toPosition) -- Verifica se o jogador é válido if not isPlayer(cid) then return false end -- Obtém a arma que o jogador está segurando (mão esquerda ou direita) local weapon = getPlayerSlotItem(cid, CONST_SLOT_LEFT) if weapon.itemid == 0 then weapon = getPlayerSlotItem(cid, CONST_SLOT_RIGHT) end -- Verifica se o jogador está segurando uma arma if weapon.itemid == 0 then doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "Você precisa estar segurando uma arma para melhorá-la.") return false end -- Obtém os valores atuais de Life Leech e Mana Leech (se houver) local currentLifeLeech = tonumber(getItemAttribute(weapon.uid, "lifeLeech")) or 0 local currentManaLeech = tonumber(getItemAttribute(weapon.uid, "manaLeech")) or 0 -- Acumula novos valores de leech local newLifeLeech = math.min(currentLifeLeech + LIFE_LEECH_INCREMENT, MAX_LEECH_PERCENT) local newManaLeech = math.min(currentManaLeech + MANA_LEECH_INCREMENT, MAX_LEECH_PERCENT) -- Aplica os novos valores de Life Leech e Mana Leech à arma doItemSetAttribute(weapon.uid, "lifeLeech", newLifeLeech) doItemSetAttribute(weapon.uid, "manaLeech", newManaLeech) -- Modifica a descrição da arma para mostrar os novos valores de leech local description = getItemAttribute(weapon.uid, "description") or "" description = "Esta arma agora tem " .. newLifeLeech .. "% de Life Leech e " .. newManaLeech .. "% de Mana Leech." doItemSetAttribute(weapon.uid, "description", description) -- Mensagens e efeitos doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua arma foi melhorada! Agora ela tem " .. newLifeLeech .. "% de Life Leech e " .. newManaLeech .. "% de Mana Leech.") doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREATTACK) -- Exibe texto animado local position = getCreaturePosition(cid) -- Define a posição para o texto animado doSendAnimatedText(position, "+Leech", 35) -- Exibe o texto animado com a cor 35 (verde) -- Remove o item de melhoria doRemoveItem(item.uid, 1) -- Verifica se o jogador tem mana suficiente local maxMana = getCreatureMaxMana(cid) if getCreatureMana(cid) < maxMana then doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você não tem mana suficiente para realizar o ataque!") return false end -- Obtém o alvo e verifica se é válido local target = getCreatureTarget(cid) if not isCreature(target) then doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "Você não tem um alvo válido para atacar.") return false end -- Causa dano fixo à criatura alvo doTargetCombatHealth(cid, target, COMBAT_PHYSICALDAMAGE, -FIXED_DAMAGE, -FIXED_DAMAGE, CONST_ME_SOUND_WHITE) -- Reduz a mana do jogador doCreatureAddMana(cid, -maxMana) -- Envia uma mensagem sobre o ataque doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você usou toda sua mana para atacar! Dano causado: " .. FIXED_DAMAGE .. " ao seu alvo.") return true end
-
Reduzi o valor de
FIXED_DAMAGEpara um número mais razoável (100000000). - Coloquei as verificações de alvo e mana no lugar correto para evitar erros de execução.
- Simplifiquei o sistema de dano e remoção de mana para ser mais direto, garantindo que as operações funcionem como esperado.
Teste o script novamente com essas modificações para ver se ele resolve o problema de não causar dano.


info
Grupo: Artesão
Registrado: 01/03/20
Posts: 110
Reputação: +1
Gênero: Masculino
Char no Tibia: Samuel on Issobra
Editado Outubro 1 por Muvuka