Ir para conteúdo
  • Cadastre-se

Transformar script em action


Posts Recomendados

Ola teria como alguem transformar esse script em script action (function onUse) porfavor ?
Tipo, tiraria esse negocio de reset, e botasse pra quando ele clicasse no item 8300 ele ganhasse o bonus (damage_percent)

TFS 0.4 [8.60]

 

Citar

ResetSystem = {
    back_to_level = 500,
    Reset = {
        [1] = {needed_level = 15000, damage_percent = 2},
        [2] = {needed_level = 16000, damage_percent = 4},
        [3] = {needed_level = 16500, damage_percent = 6},
        [4] = {needed_level = 16700, damage_percent = 8},
        [5] = {needed_level = 20000, damage_percent = 10},
        [6] = {needed_level = 20000, damage_percent = 12},
        [7] = {needed_level = 20000, damage_percent = 14},
        [8] = {needed_level = 20000, damage_percent = 16},
        [9] = {needed_level = 20000, damage_percent = 18},
        [10] = {needed_level = 21000, damage_percent = 20},
        [11] = {needed_level = 21000, damage_percent = 22},
        [12] = {needed_level = 21000, damage_percent = 24},
        [13] = {needed_level = 21000, damage_percent = 26},
        [14] = {needed_level = 21000, damage_percent = 28},
        [15] = {needed_level = 22500, damage_percent = 30},
        [16] = {needed_level = 24000, damage_percent = 32},
        [17] = {needed_level = 25500, damage_percent = 34},
        [18] = {needed_level = 27000, damage_percent = 36},
        [19] = {needed_level = 28500, damage_percent = 38},
        [20] = {needed_level = 30000, damage_percent = 40},
        [21] = {needed_level = 31500, damage_percent = 42},
        [22] = {needed_level = 33000, damage_percent = 44},
        [23] = {needed_level = 34500, damage_percent = 46},
        [24] = {needed_level = 36000, damage_percent = 48},
        [25] = {needed_level = 37500, damage_percent = 50},
        [26] = {needed_level = 39000, damage_percent = 52},
        [27] = {needed_level = 40500, damage_percent = 54},
        [28] = {needed_level = 42000, damage_percent = 56},
        [29] = {needed_level = 43500, damage_percent = 58},
        [30] = {needed_level = 45000, damage_percent = 60},
        [31] = {needed_level = 46500, damage_percent = 62},
        [32] = {needed_level = 48000, damage_percent = 64},
        [33] = {needed_level = 49500, damage_percent = 66},
        [34] = {needed_level = 51000, damage_percent = 68},
        [35] = {needed_level = 52500, damage_percent = 70},
        [36] = {needed_level = 54000, damage_percent = 72},
        [37] = {needed_level = 55500, damage_percent = 74},
        [38] = {needed_level = 57000, damage_percent = 76},
        [39] = {needed_level = 58500, damage_percent = 78},
        [40] = {needed_level = 60000, damage_percent = 80},
        [41] = {needed_level = 61500, damage_percent = 82},
        [42] = {needed_level = 63000, damage_percent = 84},
        [43] = {needed_level = 64500, damage_percent = 86},
        [44] = {needed_level = 66000, damage_percent = 88},
        [45] = {needed_level = 67500, damage_percent = 90},
        [46] = {needed_level = 69000, damage_percent = 92},
        [47] = {needed_level = 70500, damage_percent = 94},
        [48] = {needed_level = 72000, damage_percent = 96},
        [49] = {needed_level = 73500, damage_percent = 98},
        [50] = {needed_level = 75000, damage_percent = 100},
        [51] = {needed_level = 80000, damage_percent = 102},
        [52] = {needed_level = 85000, damage_percent = 104},
        [53] = {needed_level = 90000, damage_percent = 106},
        [54] = {needed_level = 100000, damage_percent = 108},
        [55] = {needed_level = 110000, damage_percent = 110},
        [56] = {needed_level = 130000, damage_percent = 112},
        [57] = {needed_level = 150000, damage_percent = 114},
        [58] = {needed_level = 170000, damage_percent = 116},
        [59] = {needed_level = 180000, damage_percent = 118},
        [60] = {needed_level = 200000, damage_percent = 120},
    }
}

function ResetSystem:getCount(pid)
    return getPlayerResets(pid)
end

function ResetSystem:setCount(pid, value)
    setPlayerResets(pid, value)
end

function ResetSystem:addCount(pid)
    self:setCount(pid, self:getCount(pid) + 1)
end

function ResetSystem:getInfo(pid)
    return self.Reset[math.min(self:getCount(pid), #self.Reset)]
end

function ResetSystem:addBonuses(pid)
    local bonus = self:getInfo(pid)
    if (bonus and bonus.damage_percent) then
        setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0))
    end
end

function ResetSystem:removeBonuses(pid)
    local bonus = self:getInfo(pid)
    if (bonus and bonus.damage_percent) then
        setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) - (bonus.damage_percent / 100.0))
    end
end

function ResetSystem:execute(pid)
    self:removeBonuses(pid)
    local oldMaxHealth = getCreatureMaxHealth(pid)
    local oldMaxMana = getCreatureMaxMana(pid)
    local playerLevel = getPlayerLevel(pid)
    if (playerLevel > self.back_to_level) then
        doPlayerAddExperience(pid, getExperienceForLevel(self.back_to_level) - getPlayerExperience(pid))
        playerLevel = self.back_to_level
    end
        
    self:addCount(pid)
    self:addBonuses(pid)

    setCreatureMaxHealth(pid, oldMaxHealth)
    setCreatureMaxMana(pid, oldMaxMana)
    doCreatureAddHealth(pid, oldMaxHealth)
    doCreatureAddMana(pid, oldMaxMana)

    local bonus = self:getInfo(pid)
    if (bonus) then
        local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. self:getCount(pid) .. "° RESET."
        if (bonus.damage_percent) then
            message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
        end
        doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, message)
        doRemoveCreature(pid)
    end
end

 

Editado por deza (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
  • deza mudou o título para Transformar script em action
  • Sub-Admin
function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local pid = getPlayerGUID(player)
    local resetSystem = {
        back_to_level = 500,
        Reset = {
            [1] = {needed_level = 15000, damage_percent = 2},
            [2] = {needed_level = 16000, damage_percent = 4},
            [3] = {needed_level = 16500, damage_percent = 6},
            [4] = {needed_level = 16700, damage_percent = 8},
            [5] = {needed_level = 20000, damage_percent = 10},
            [6] = {needed_level = 20000, damage_percent = 12},
            [7] = {needed_level = 20000, damage_percent = 14},
            [8] = {needed_level = 20000, damage_percent = 16},
            [9] = {needed_level = 20000, damage_percent = 18},
            [10] = {needed_level = 21000, damage_percent = 20},
            [11] = {needed_level = 21000, damage_percent = 22},
            [12] = {needed_level = 21000, damage_percent = 24},
            [13] = {needed_level = 21000, damage_percent = 26},
            [14] = {needed_level = 21000, damage_percent = 28},
            [15] = {needed_level = 22500, damage_percent = 30},
            [16] = {needed_level = 24000, damage_percent = 32},
            [17] = {needed_level = 25500, damage_percent = 34},
            [18] = {needed_level = 27000, damage_percent = 36},
            [19] = {needed_level = 28500, damage_percent = 38},
            [20] = {needed_level = 30000, damage_percent = 40},
            [21] = {needed_level = 31500, damage_percent = 42},
            [22] = {needed_level = 33000, damage_percent = 44},
            [23] = {needed_level = 34500, damage_percent = 46},
            [24] = {needed_level = 36000, damage_percent = 48},
            [25] = {needed_level = 37500, damage_percent = 50},
            [26] = {needed_level = 39000, damage_percent = 52},
            [27] = {needed_level = 40500, damage_percent = 54},
            [28] = {needed_level = 42000, damage_percent = 56},
            [29] = {needed_level = 43500, damage_percent = 58},
            [30] = {needed_level = 45000, damage_percent = 60},
            [31] = {needed_level = 46500, damage_percent = 62},
            [32] = {needed_level = 48000, damage_percent = 64},
            [33] = {needed_level = 49500, damage_percent = 66},
            [34] = {needed_level = 51000, damage_percent = 68},
            [35] = {needed_level = 52500, damage_percent = 70},
            [36] = {needed_level = 54000, damage_percent = 72},
            [37] = {needed_level = 55500, damage_percent = 74},
            [38] = {needed_level = 57000, damage_percent = 76},
            [39] = {needed_level = 58500, damage_percent = 78},
            [40] = {needed_level = 60000, damage_percent = 80},
            [41] = {needed_level = 61500, damage_percent = 82},
            [42] = {needed_level = 63000, damage_percent = 84},
            [43] = {needed_level = 64500, damage_percent = 86},
            [44] = {needed_level = 66000, damage_percent = 88},
            [45] = {needed_level = 67500, damage_percent = 90},
            [46] = {needed_level = 69000, damage_percent = 92},
            [47] = {needed_level = 70500, damage_percent = 94},
            [48] = {needed_level = 72000, damage_percent = 96},
            [49] = {needed_level = 73500, damage_percent = 98},
            [50] = {needed_level = 75000, damage_percent = 100},
            [51] = {needed_level = 80000, damage_percent = 102},
            [52] = {needed_level = 85000, damage_percent = 104},
            [53] = {needed_level = 90000, damage_percent = 106},
            [54] = {needed_level = 100000, damage_percent = 108},
            [55] = {needed_level = 110000, damage_percent = 110},
            [56] = {needed_level = 130000, damage_percent = 112},
            [57] = {needed_level = 150000, damage_percent = 114},
            [58] = {needed_level = 170000, damage_percent = 116},
            [59] = {needed_level = 180000, damage_percent = 118},
            [60] = {needed_level = 200000, damage_percent = 120},
        }
    }

    local function getInfo(pid)
        return resetSystem.Reset[1]  -- Sempre obtém o bônus da primeira entrada
    end

    local function addBonuses(pid)
        local bonus = getInfo(pid)
        if (bonus and bonus.damage_percent) then
            setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0))
            local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano."
            doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, mensagem)
            doRemoveItem(item.uid, 1)
        end
    end

    addBonuses(pid)
    return true
end

 

 

20230912_034613.png.cf49b650c34dd7d7b1f79bd49c70f53c.png

Eu sou um entusiasta da programação apaixonado por ajudar a comunidade open source a crescer. Sempre em busca de novos desafios e oportunidades para contribuir com meu código.  #OpenSource #Programação #Contribuição

 

Link para o post
Compartilhar em outros sites
Em 19/11/2023 em 02:10, L3K0T disse:

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    local pid = getPlayerGUID(player)
    local resetSystem = {
        back_to_level = 500,
        Reset = {
            [1] = {needed_level = 15000, damage_percent = 2},
            [2] = {needed_level = 16000, damage_percent = 4},
            [3] = {needed_level = 16500, damage_percent = 6},
            [4] = {needed_level = 16700, damage_percent = 8},
            [5] = {needed_level = 20000, damage_percent = 10},
            [6] = {needed_level = 20000, damage_percent = 12},
            [7] = {needed_level = 20000, damage_percent = 14},
            [8] = {needed_level = 20000, damage_percent = 16},
            [9] = {needed_level = 20000, damage_percent = 18},
            [10] = {needed_level = 21000, damage_percent = 20},
            [11] = {needed_level = 21000, damage_percent = 22},
            [12] = {needed_level = 21000, damage_percent = 24},
            [13] = {needed_level = 21000, damage_percent = 26},
            [14] = {needed_level = 21000, damage_percent = 28},
            [15] = {needed_level = 22500, damage_percent = 30},
            [16] = {needed_level = 24000, damage_percent = 32},
            [17] = {needed_level = 25500, damage_percent = 34},
            [18] = {needed_level = 27000, damage_percent = 36},
            [19] = {needed_level = 28500, damage_percent = 38},
            [20] = {needed_level = 30000, damage_percent = 40},
            [21] = {needed_level = 31500, damage_percent = 42},
            [22] = {needed_level = 33000, damage_percent = 44},
            [23] = {needed_level = 34500, damage_percent = 46},
            [24] = {needed_level = 36000, damage_percent = 48},
            [25] = {needed_level = 37500, damage_percent = 50},
            [26] = {needed_level = 39000, damage_percent = 52},
            [27] = {needed_level = 40500, damage_percent = 54},
            [28] = {needed_level = 42000, damage_percent = 56},
            [29] = {needed_level = 43500, damage_percent = 58},
            [30] = {needed_level = 45000, damage_percent = 60},
            [31] = {needed_level = 46500, damage_percent = 62},
            [32] = {needed_level = 48000, damage_percent = 64},
            [33] = {needed_level = 49500, damage_percent = 66},
            [34] = {needed_level = 51000, damage_percent = 68},
            [35] = {needed_level = 52500, damage_percent = 70},
            [36] = {needed_level = 54000, damage_percent = 72},
            [37] = {needed_level = 55500, damage_percent = 74},
            [38] = {needed_level = 57000, damage_percent = 76},
            [39] = {needed_level = 58500, damage_percent = 78},
            [40] = {needed_level = 60000, damage_percent = 80},
            [41] = {needed_level = 61500, damage_percent = 82},
            [42] = {needed_level = 63000, damage_percent = 84},
            [43] = {needed_level = 64500, damage_percent = 86},
            [44] = {needed_level = 66000, damage_percent = 88},
            [45] = {needed_level = 67500, damage_percent = 90},
            [46] = {needed_level = 69000, damage_percent = 92},
            [47] = {needed_level = 70500, damage_percent = 94},
            [48] = {needed_level = 72000, damage_percent = 96},
            [49] = {needed_level = 73500, damage_percent = 98},
            [50] = {needed_level = 75000, damage_percent = 100},
            [51] = {needed_level = 80000, damage_percent = 102},
            [52] = {needed_level = 85000, damage_percent = 104},
            [53] = {needed_level = 90000, damage_percent = 106},
            [54] = {needed_level = 100000, damage_percent = 108},
            [55] = {needed_level = 110000, damage_percent = 110},
            [56] = {needed_level = 130000, damage_percent = 112},
            [57] = {needed_level = 150000, damage_percent = 114},
            [58] = {needed_level = 170000, damage_percent = 116},
            [59] = {needed_level = 180000, damage_percent = 118},
            [60] = {needed_level = 200000, damage_percent = 120},
        }
    }

    local function getInfo(pid)
        return resetSystem.Reset[1]  -- Sempre obtém o bônus da primeira entrada
    end

    local function addBonuses(pid)
        local bonus = getInfo(pid)
        if (bonus and bonus.damage_percent) then
            setPlayerDamageMultiplier(pid, getPlayerDamageMultiplier(pid) + (bonus.damage_percent / 100.0))
            local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano."
            doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, mensagem)
            doRemoveItem(item.uid, 1)
        end
    end

    addBonuses(pid)
    return true
end

 

Opa, bllz ?
Grato por ajudar, mas deu seguinte error !
=[

 

error.png

Link para o post
Compartilhar em outros sites
45 minutos atrás, Anderson Sacani disse:

A função getPlayerDamageMultiplier não foi encontrada. Ela existe no teu servidor?

Veio a lista que veio no server.

A unica q encontrei foram essas...

addDamageCondition(condition, rounds, time, value)

Link para o post
Compartilhar em outros sites
  • Moderador

Parece que você está tentando aplicar um bônus multiplicador de dano com base no nível do jogador. Eu percebi que você está usando getPlayerDamageMultiplier(pid) para obter o multiplicador de dano do jogador, mas você mencionou que getDamageMultiplier está retornando nil.

Troque a sua função add bonus por essa e faça o teste.

 

local function addBonuses(pid)
    local bonus = getInfo(pid)
    if bonus and bonus.damage_percent then
        local currentMultiplier = getPlayerDamageMultiplier(pid) or 1.0
        setPlayerDamageMultiplier(pid, currentMultiplier + (bonus.damage_percent / 100.0))

        local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano."
        doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, mensagem)
        doRemoveItem(item.uid, 1)
    end
end

Em todo caso essa função getPlayerDamageMultiplier deveria existir nesse contexto, caso não exista você pode adicionar na suas funções existentes ou criar um arquivo separado.

damage_multiplier_lib.lua
 

DamageMultiplierLib = {}

-- Function to get the player's damage multiplier

function DamageMultiplierLib.getPlayerDamageMultiplier(playerId)
    local player = Player(playerId)
    if player then
        return player:getDamageMultiplier()
    end
    return nil
end

-- Function to set the player's damage multiplier

function DamageMultiplierLib.setPlayerDamageMultiplier(playerId, value)
    local player = Player(playerId)
    if player then
        player:setDamageMultiplier(value)
    end
end

-- Return the library table

return DamageMultiplierLib


Se você adicionar essa função a cima então atualizei o seu script na função addBonus

 

-- local DamageMultiplierLib = require("damage_multiplier_lib") LEMBRE-SE DE IMPORTAR A LIB A CIMA PARA FUNCIONA CORRETAMENTE!

-- Your existing code
local function addBonuses(playerId)
    local bonus = getInfo(playerId)
    if bonus and bonus.damage_percent then
        local currentMultiplier = DamageMultiplierLib.getPlayerDamageMultiplier(playerId) or 1.0
        DamageMultiplierLib.setPlayerDamageMultiplier(playerId, currentMultiplier + (bonus.damage_percent / 100.0))

        local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano."
        doPlayerSendTextMessage(playerId, MESSAGE_EVENT_ADVANCE, mensagem)
        doRemoveItem(item.uid, 1)
    end
end

Não testei.
 

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
7 horas atrás, Underewar disse:

Parece que você está tentando aplicar um bônus multiplicador de dano com base no nível do jogador. Eu percebi que você está usando getPlayerDamageMultiplier(pid) para obter o multiplicador de dano do jogador, mas você mencionou que getDamageMultiplier está retornando nil.

Troque a sua função add bonus por essa e faça o teste.

 


local function addBonuses(pid)
    local bonus = getInfo(pid)
    if bonus and bonus.damage_percent then
        local currentMultiplier = getPlayerDamageMultiplier(pid) or 1.0
        setPlayerDamageMultiplier(pid, currentMultiplier + (bonus.damage_percent / 100.0))

        local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano."
        doPlayerSendTextMessage(pid, MESSAGE_EVENT_ADVANCE, mensagem)
        doRemoveItem(item.uid, 1)
    end
end

Em todo caso essa função getPlayerDamageMultiplier deveria existir nesse contexto, caso não exista você pode adicionar na suas funções existentes ou criar um arquivo separado.

damage_multiplier_lib.lua
 


DamageMultiplierLib = {}

-- Function to get the player's damage multiplier

function DamageMultiplierLib.getPlayerDamageMultiplier(playerId)
    local player = Player(playerId)
    if player then
        return player:getDamageMultiplier()
    end
    return nil
end

-- Function to set the player's damage multiplier

function DamageMultiplierLib.setPlayerDamageMultiplier(playerId, value)
    local player = Player(playerId)
    if player then
        player:setDamageMultiplier(value)
    end
end

-- Return the library table

return DamageMultiplierLib


Se você adicionar essa função a cima então atualizei o seu script na função addBonus

 


-- local DamageMultiplierLib = require("damage_multiplier_lib") LEMBRE-SE DE IMPORTAR A LIB A CIMA PARA FUNCIONA CORRETAMENTE!

-- Your existing code
local function addBonuses(playerId)
    local bonus = getInfo(playerId)
    if bonus and bonus.damage_percent then
        local currentMultiplier = DamageMultiplierLib.getPlayerDamageMultiplier(playerId) or 1.0
        DamageMultiplierLib.setPlayerDamageMultiplier(playerId, currentMultiplier + (bonus.damage_percent / 100.0))

        local mensagem = "[SISTEMA DE BÔNUS]\nVocê recebeu um bônus de +" .. bonus.damage_percent .. "% de dano."
        doPlayerSendTextMessage(playerId, MESSAGE_EVENT_ADVANCE, mensagem)
        doRemoveItem(item.uid, 1)
    end
end

Não testei.
 

Fiz tudo q voce falou. (eu acho) kk

Porem deu esse error ! =[

error.png

Link para o post
Compartilhar em outros sites
52 minutos atrás, Doidodepeda disse:

É, Refis umas 50 vezes de ontem pra hoje, de todas as formas que voce falou. Mas mesmos assim da o error em todas as formas =[

adfadsifhdafhudsf.png

local DamageMultiplierLib = {}

-- Function to get the player's damage multiplier

function DamageMultiplierLib.getPlayerDamageMultiplier(playerId)
    local playerMultiplier = getPlayerDamageMultiplier(playerId)
    return playerMultiplier
end

-- Function to set the player's damage multiplier

function DamageMultiplierLib.setPlayerDamageMultiplier(playerId, value)
    setPlayerDamageMultiplier(playerId, value)
end

-- Return the library table
return DamageMultiplierLib

tentar..

 

Ele adicionou isso 'local player = Player(playerId) if player then', que é especificamente para TFS 1.x+. Acredito que tenha adicionado isso por acidente. Então, eu peguei e adaptei corretamente para o TFS 0.4. Veja se funcionou ou não.

 

TFS 1.X 

player:getDamageMultiplier

 

TFS 0.4

getPlayerDamageMultiplier

 

 

 

Editado por GM Vortex (veja o histórico de edições)
Link para o post
Compartilhar em outros sites
13 horas atrás, GM Vortex disse:

local DamageMultiplierLib = {}

-- Function to get the player's damage multiplier

function DamageMultiplierLib.getPlayerDamageMultiplier(playerId)
    local playerMultiplier = getPlayerDamageMultiplier(playerId)
    return playerMultiplier
end

-- Function to set the player's damage multiplier

function DamageMultiplierLib.setPlayerDamageMultiplier(playerId, value)
    setPlayerDamageMultiplier(playerId, value)
end

-- Return the library table
return DamageMultiplierLib

tentar..

 

Ele adicionou isso 'local player = Player(playerId) if player then', que é especificamente para TFS 1.x+. Acredito que tenha adicionado isso por acidente. Então, eu peguei e adaptei corretamente para o TFS 0.4. Veja se funcionou ou não.

 

TFS 1.X 

player:getDamageMultiplier

 

TFS 0.4

getPlayerDamageMultiplier

 

 

 

Deu error =[

error1.png

Link para o post
Compartilhar em outros sites
  • Moderador
16 horas atrás, Doidodepeda disse:

Deu error =[

error1.png

Na verdade acredito que não é possivel iniciar a lib dessa manaiera na tfs 0x, vou atualizar e te mando.

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites

 

58 minutos atrás, Underewar disse:

Na verdade acredito que não é possivel iniciar a lib dessa manaiera na tfs 0x, vou atualizar e te mando.

Estou no aguardo tbm !

Link para o post
Compartilhar em outros sites
  • Moderador
Em 17/11/2023 em 23:17, deza disse:

Ola teria como alguem transformar esse script em script action (function onUse) porfavor ?
Tipo, tiraria esse negocio de reset, e botasse pra quando ele clicasse no item 8300 ele ganhasse o bonus (damage_percent)

TFS 0.4 [8.60]

 

 

Me desculpe não vi que o tópico era seu @Doidodepeda aconselho a criar outro topico ja que o seu problema é relacionado a lib, me marca e eu te ajudo la.

 

 

Exempo de uma action com o sistema de reset
 

-- ItemID para o item que aciona o sistema de resets
local resetItemID = 8300

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item:getId() == resetItemID then
        local resetSystem = ResetSystem

        -- Obtém informações do jogador
        local pid = player:getId()
        local oldMaxHealth = player:getMaxHealth()
        local oldMaxMana = player:getMaxMana()
        local playerLevel = player:getLevel()

        -- Verifica se o jogador atende ao requisito de voltar ao nível base
        if playerLevel > resetSystem.back_to_level then
            player:addExperience(getExperienceForLevel(resetSystem.back_to_level) - player:getExperience())
            playerLevel = resetSystem.back_to_level
        end

        -- Remove os bônus existentes antes de aplicar novos
        resetSystem:removeBonuses(pid)

        -- Adiciona um reset ao contador do jogador
        resetSystem:addCount(pid)

        -- Adiciona os novos bônus
        resetSystem:addBonuses(pid)

        -- Restaura a saúde e mana do jogador
        player:setMaxHealth(oldMaxHealth)
        player:setMaxMana(oldMaxMana)
        player:addHealth(oldMaxHealth)
        player:addMana(oldMaxMana)

        -- Exibe uma mensagem informativa ao jogador
        local bonus = resetSystem:getInfo(pid)
        if bonus then
            local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. resetSystem:getCount(pid) .. "° RESET."
            if bonus.damage_percent then
                message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
            end
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message)
            player:remove()
        end
    end
end

@deza
 


 


 

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites
14 horas atrás, Underewar disse:

Me desculpe não vi que o tópico era seu @Doidodepeda aconselho a criar outro topico ja que o seu problema é relacionado a lib, me marca e eu te ajudo la.

 

 

Exempo de uma action com o sistema de reset
 


-- ItemID para o item que aciona o sistema de resets
local resetItemID = 8300

function onUse(player, item, fromPosition, target, toPosition, isHotkey)
    if item:getId() == resetItemID then
        local resetSystem = ResetSystem

        -- Obtém informações do jogador
        local pid = player:getId()
        local oldMaxHealth = player:getMaxHealth()
        local oldMaxMana = player:getMaxMana()
        local playerLevel = player:getLevel()

        -- Verifica se o jogador atende ao requisito de voltar ao nível base
        if playerLevel > resetSystem.back_to_level then
            player:addExperience(getExperienceForLevel(resetSystem.back_to_level) - player:getExperience())
            playerLevel = resetSystem.back_to_level
        end

        -- Remove os bônus existentes antes de aplicar novos
        resetSystem:removeBonuses(pid)

        -- Adiciona um reset ao contador do jogador
        resetSystem:addCount(pid)

        -- Adiciona os novos bônus
        resetSystem:addBonuses(pid)

        -- Restaura a saúde e mana do jogador
        player:setMaxHealth(oldMaxHealth)
        player:setMaxMana(oldMaxMana)
        player:addHealth(oldMaxHealth)
        player:addMana(oldMaxMana)

        -- Exibe uma mensagem informativa ao jogador
        local bonus = resetSystem:getInfo(pid)
        if bonus then
            local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. resetSystem:getCount(pid) .. "° RESET."
            if bonus.damage_percent then
                message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
            end
            player:sendTextMessage(MESSAGE_EVENT_ADVANCE, message)
            player:remove()
        end
    end
end

@deza
 


 


 

Mano, você fez um script para TFS 1.X, mas o cara que pediu está utilizando o TFS 0.4... Só para te avisar mesmo, rs.

Link para o post
Compartilhar em outros sites
  • Moderador
Em 25/11/2023 em 10:36, GM Vortex disse:

Mano, você fez um script para TFS 1.X, mas o cara que pediu está utilizando o TFS 0.4... Só para te avisar mesmo, rs.

Verdade aqui esta
Tfs 0x

@deza

-- ItemID para o item que aciona o sistema de resets
local resetItemID = 8300

function onUse(cid, item, fromPosition, itemEx, toPosition)
    if item.itemid == resetItemID then
        local resetSystem = ResetSystem

        -- Obtém informações do jogador
        local pid = cid
        local oldMaxHealth = getPlayerMaxHealth(cid)
        local oldMaxMana = getPlayerMaxMana(cid)
        local playerLevel = getPlayerLevel(cid)

        -- Verifica se o jogador atende ao requisito de voltar ao nível base
        if playerLevel > resetSystem.back_to_level then
            doPlayerAddExperience(cid, getExperienceForLevel(resetSystem.back_to_level) - getPlayerExperience(cid))
            playerLevel = resetSystem.back_to_level
        end

        -- Remove os bônus existentes antes de aplicar novos
        resetSystem:removeBonuses(pid)

        -- Adiciona um reset ao contador do jogador
        resetSystem:addCount(pid)

        -- Adiciona os novos bônus
        resetSystem:addBonuses(pid)

        -- Restaura a saúde e mana do jogador
        doPlayerSetMaxHealth(cid, oldMaxHealth)
        doPlayerSetMaxMana(cid, oldMaxMana)
        doPlayerAddHealth(cid, oldMaxHealth)
        doPlayerAddMana(cid, oldMaxMana)

        -- Exibe uma mensagem informativa ao jogador
        local bonus = resetSystem:getInfo(pid)
        if bonus then
            local message = "[RESET-SYSTEM]\nVocê efetuou seu " .. resetSystem:getCount(pid) .. "° RESET."
            if bonus.damage_percent then
                message = message .. "\nAgora você tem +" .. bonus.damage_percent .. "% de dano."
            end
            doPlayerSendTextMessage(cid, MESSAGE_EVENT_ADVANCE, message)

            -- Substitua doPlayerRemoveItem por doPlayerRemoveItem se desejar remover o item após o uso
            doPlayerRemoveItem(cid, resetItemID, 1)
        end
    end
end

 

Participe da organização Open-Tibia.
Meus Perfils pessoais

Linkedin Rafhael Oliveira Tryber | XP Inc Github Rafhael Oliveira Tryber | XP Inc

Link para o post
Compartilhar em outros sites

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

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    Nenhum usuário registrado visualizando esta página.

×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo