Ir para conteúdo
  • 0

TFS 0.3.6 8.60 EU FIZ ESSE CODIGO POREM ELE SÓ ATACA CRITURA SE USA ITEM 5902 ESSE ITEM É FEITO PRA APRIMORA O ITEM EU QUERO QUE NAO DEPENDA 5902 PRA TRANSFERI DANO A CRITURA MAIS SIM O APRIMORAMENTO DO ITEM MAX_LEEECH_PERCENT


Muvuka

Pergunta

 

 

 

TFS 0.3.6 8.60 EU FIZ ESSE CODIGO POREM ELE SÓ ATACA CRITURA SE USA ITEM 5902 ESSE ITEM É FEITO PRA APRIMORA O ITEM EU QUERO QUE NAO DEPENDA 5902 PRA TRANSFERI DANO A CRITURA MAIS SIM O APRIMORAMENTO DO ITEM MAX_LEEECH_PERCENT

 

giphy.gif

 

local UPGRADE_ITEM_ID = 5902 -- O item de aprimoramento, neste caso, o "olho azul assustador"
local LIFE_LEECH_INCREMENT = 10 -- Porcentagem a ser adicionada ao Life Leech a cada uso
local MANA_LEECH_INCREMENT = 10 -- Porcentagem a ser adicionada ao Mana Leech a cada uso
local MAX_LEECH_PERCENT = 100 -- Limite máximo para Life Leech e Mana Leech
local BASE_DAMAGE = 100000000000 -- Dano base da arma
local STORAGE_KEY = 10000 -- Chave de armazenamento para o nível de aprimoramento

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 aprimorá-la.")
        return false
    end

    -- Obtém os valores atuais de Life Leech e Mana Leech (se existirem)
    local currentLifeLeech = tonumber(getItemAttribute(weapon.uid, "lifeLeech")) or 0
    local currentManaLeech = tonumber(getItemAttribute(weapon.uid, "manaLeech")) or 0

    -- Acumula novos valores de leech, limitados pelo máximo
    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 exibir 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. O máximo é 100%."
    doItemSetAttribute(weapon.uid, "description", description)

    -- Envia uma mensagem para o jogador informando sobre o aprimoramento
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua arma foi aprimorada! Agora tem " .. newLifeLeech .. "% de Life Leech e " .. newManaLeech .. "% de Mana Leech. O máximo é 100%.")

    -- Exibe um texto animado "+Leech!!!" em verde (cor 35)
    local position = getCreaturePosition(cid)
    doSendAnimatedText(position, "+Leech!!!", 35)

    -- Remove o item de aprimoramento (olho azul assustador)
    doRemoveItem(item.uid, 1)

    -- Armazena o novo nível de aprimoramento da arma
    setPlayerStorageValue(cid, STORAGE_KEY, newLifeLeech)

    -- Obtém o alvo atual do jogador
    local target = getCreatureTarget(cid)

    -- Verifica se há um alvo válido
    if isCreature(target) then
        -- Calcula o dano proporcional ao nível de aprimoramento da arma
        local damage = (newLifeLeech / 100) * BASE_DAMAGE -- Dano proporcional ao nível de leech
        doTargetCombatHealth(cid, target, COMBAT_UNDEFINEDDAMAGE, -damage, -damage, CONST_ME_HITAREA)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você realizou um ataque poderoso com sua arma aprimorada! Causou " .. damage .. " de dano.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "Você não tem um alvo válido para atacar.")
    end

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

2 respostass a esta questão

Posts Recomendados

  • 0

podemos remover a parte do código que está verificando e consumindo o item de aprimoramento e ajustar o cálculo do dano para depender exclusivamente do nível de lifeLeech do item.

 

local LIFE_LEECH_INCREMENT = 10 -- Porcentagem a ser adicionada ao Life Leech a cada uso
local MANA_LEECH_INCREMENT = 10 -- Porcentagem a ser adicionada ao Mana Leech a cada uso
local MAX_LEECH_PERCENT = 100 -- Limite máximo para Life Leech e Mana Leech
local BASE_DAMAGE = 100000000000 -- Dano base da arma
local STORAGE_KEY = 10000 -- Chave de armazenamento para o nível de aprimoramento

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 aprimorá-la.")
        return false
    end

    -- Obtém os valores atuais de Life Leech e Mana Leech (se existirem)
    local currentLifeLeech = tonumber(getItemAttribute(weapon.uid, "lifeLeech")) or 0
    local currentManaLeech = tonumber(getItemAttribute(weapon.uid, "manaLeech")) or 0

    -- Acumula novos valores de leech, limitados pelo máximo
    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 exibir 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. O máximo é 100%."
    doItemSetAttribute(weapon.uid, "description", description)

    -- Envia uma mensagem para o jogador informando sobre o aprimoramento
    doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Sua arma foi aprimorada! Agora tem " .. newLifeLeech .. "% de Life Leech e " .. newManaLeech .. "% de Mana Leech. O máximo é 100%.")

    -- Exibe um texto animado "+Leech!!!" em verde (cor 35)
    local position = getCreaturePosition(cid)
    doSendAnimatedText(position, "+Leech!!!", 35)

    -- Armazena o novo nível de aprimoramento da arma
    setPlayerStorageValue(cid, STORAGE_KEY, newLifeLeech)

    -- Obtém o alvo atual do jogador
    local target = getCreatureTarget(cid)

    -- Verifica se há um alvo válido
    if isCreature(target) then
        -- Calcula o dano proporcional ao nível de aprimoramento da arma
        local damage = (newLifeLeech / 100) * BASE_DAMAGE -- Dano proporcional ao nível de leech
        doTargetCombatHealth(cid, target, COMBAT_UNDEFINEDDAMAGE, -damage, -damage, CONST_ME_HITAREA)
        doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Você realizou um ataque poderoso com sua arma aprimorada! Causou " .. damage .. " de dano.")
    else
        doPlayerSendTextMessage(cid, MESSAGE_STATUS_SMALL, "Você não tem um alvo válido para atacar.")
    end

    return true
end

 

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...