Ir para conteúdo
  • Cadastre-se

Transformar script em action


Posts Recomendados

  • Respostas 17
  • Created
  • Última resposta

Top Posters In This Topic

Top Posters In This Topic

Popular Posts

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 = getPlayerDamageMulti

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  

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.

Posted Images

  • Administrador

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.
 

Link para o post
Compartilhar em outros sites
  Em 21/11/2023 em 16:58, 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.
 

Expand   Mostrar mais  

Fiz tudo q voce falou. (eu acho) kk

Porem deu esse error ! =[

error.png

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.

  • Estatísticas dos Fóruns

    96844
    Tópicos
    519613
    Posts



×
×
  • Criar Novo...

Informação Importante

Confirmação de Termo