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.