Ir para conteúdo

Featured Replies

  • Respostas 17
  • Visualizações 884
  • Created
  • Última resposta

Top Posters In This Topic

Most 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

  • 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

  • Mateus Robeerto
    Mateus Robeerto

    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

Postado

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.
 

Postado
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

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

Quem Está Navegando 0

  • Nenhum usuário registrado visualizando esta página.

Estatísticas dos Fóruns

  • Tópicos 96.1k
  • Posts 512.4k

Informação Importante

Confirmação de Termo