Ir para conteúdo
  • 0

TFS 0.3.6 8.60 ELE NÃO TIRA DANO DA CRIATURA MESMO 100 BOOSTED NA WEAPON


Muvuka

Pergunta

local UPGRADE_ITEM_ID = 5902 -- The upgrade item, e.g., "spooky blue eye"
local LIFE_LEECH_INCREMENT = 1 -- Percentage to be added to Life Leech
local MANA_LEECH_INCREMENT = 1 -- Percentage to be added to Mana Leech
local MAX_LEECH_PERCENT = 100 -- Maximum limit for Life Leech and Mana Leech

local FIXED_DAMAGE = 100000000000 -- Fixed damage that will be dealt to both the creature and the player

function onUse(cid, item, fromPosition, itemEx, toPosition)
    -- Check if the player is valid
    if not isPlayer(cid) then
        return false
    end

    -- Get the weapon the player is holding (left or right hand)
    local weapon = getPlayerSlotItem(cid, CONST_SLOT_LEFT)
    if weapon.itemid == 0 then
        weapon = getPlayerSlotItem(cid, CONST_SLOT_RIGHT)
    end

    -- Check if the player is holding a weapon
    if weapon.itemid == 0 then
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You need to be holding a weapon to upgrade it.")
        return false
    end

    -- Get current values of Life Leech and Mana Leech (if any)
    local currentLifeLeech = tonumber(getItemAttribute(weapon.uid, "lifeLeech")) or 0
    local currentManaLeech = tonumber(getItemAttribute(weapon.uid, "manaLeech")) or 0

    -- Accumulate new leech values
    local newLifeLeech = math.min(currentLifeLeech + LIFE_LEECH_INCREMENT, MAX_LEECH_PERCENT)
    local newManaLeech = math.min(currentManaLeech + MANA_LEECH_INCREMENT, MAX_LEECH_PERCENT)

    -- Apply new Life Leech and Mana Leech values to the weapon
    doItemSetAttribute(weapon.uid, "lifeLeech", newLifeLeech)
    doItemSetAttribute(weapon.uid, "manaLeech", newManaLeech)

    -- Modify the weapon description to show the new leech values
    local description = getItemAttribute(weapon.uid, "description") or ""
    description = "This weapon now has " .. newLifeLeech .. "% Life Leech and " .. newManaLeech .. "% Mana Leech."
    doItemSetAttribute(weapon.uid, "description", description)

    -- Messages and effects
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Your weapon has been upgraded! It now has " .. newLifeLeech .. "% Life Leech and " .. newManaLeech .. "% Mana Leech.")
    doSendMagicEffect(getPlayerPosition(cid), CONST_ME_FIREATTACK)

    -- Show animated text
    local position = getCreaturePosition(cid) -- Define the position for animated text
    doSendAnimatedText(position, "+Leech", 35) -- Display animated text with color 35 (green)

    -- Remove the upgrade item
    doRemoveItem(item.uid, 1)

    -- Combat logic: use all mana
    local maxMana = getCreatureMaxMana(cid)

    -- Check if the player has enough mana
    if getCreatureMana(cid) >= maxMana then
        local target = getCreatureTarget(cid) -- Get the target of the creature
        if isCreature(target) then
            -- Deal fixed damage to the target creature
            doTargetCombatHealth(cid, target, COMBAT_UNDEFINEDDAMAGE, -FIXED_DAMAGE, -FIXED_DAMAGE, CONST_ME_SOUND_WHITE)

            -- Reduce the target's mana by the fixed damage amount (with a cap)
            local targetMana = getCreatureMana(target)
            local newTargetMana = math.max(0, targetMana - FIXED_DAMAGE) -- Ensure mana doesn't go below 0
            doCreatureAddMana(target, -newTargetMana)

            -- Reduce the player's mana
            doCreatureAddMana(cid, -maxMana)

            -- Send a message about the attack
            doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You used all your mana to attack! Damage dealt: " .. FIXED_DAMAGE .. " to your target, and drained " .. newTargetMana .. " mana from the target.")
        else
            doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "You do not have a valid target to attack.")
        end
    else
        -- Message if there is not enough mana
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "You do not have enough mana to perform the attack!")
    end

    return true
end

 

Editado por Muvuka
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
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

 

  1. Reduzi o valor de FIXED_DAMAGE para um número mais razoável (100000000).
  2. Coloquei as verificações de alvo e mana no lugar correto para evitar erros de execução.
  3. 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.

Link para o comentário
Compartilhar em outros sites

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...