es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Si el enunciado se ejecuta más de una vez en Lua.

Hola, una vez que se activa este evento y verifica el nivel y me da la recompensa correcta, el problema es que xplayer.blablabla se ejecuta varias veces al azar en un solo clic. ¿Alguien sabe qué está mal?

RegisterServerEvent('battlepass:rewardskteolekaramele')
AddEventHandler('battlepass:rewardskteolekaramele', function()
    local source = source
    local xPlayer = ESX.GetPlayerFromId(source)
    local identifier = xPlayer.identifier
    MySQL.Async.fetchAll("SELECT level FROM levelxptable WHERE identifier = @identifier", {
        ["identifier"] = GetPlayerIdentifiers(source)[1]},
        function(attributeti)
        print(attributeti[1].level)
        local resultar = attributeti[1].level
        if attributeti[1].level == 1 or resultar == 11 or resultar == 21 or resultar == 31  or resultar == 41 or resultar == 51 or resultar == 61 or resultar == 71 or resultar == 81 or resultar == 91 then
            xPlayer.addMoney(50000)

        elseif attributeti[1].level == 2 or resultar == 12 or resultar == 22 or resultar == 32 or resultar == 42 or resultar == 52 or resultar == 62 or resultar == 72 or resultar == 82 or resultar == 92 then
            xPlayer.addInventoryItem("WEAPON_FENNEC", 1)

        elseif attributeti[1].level == 3 or resultar == 13 or resultar == 23 or  resultar == 33 or resultar == 43 or resultar == 53 or resultar == 63 or resultar == 73 or resultar == 83 or resultar == 93 then
            xPlayer.addAccountMoney('bitcoin_money', 10)
        end
    end)
end)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que el evento battlepass:rewardskteolekaramele se activa múltiples veces con un solo clic, lo cual provoca que xPlayer.blablabla se ejecute múltiples veces y potencialmente cause un comportamiento inesperado. No está claro en el código proporcionado a qué se refiere la parte de blablabla, pero una solución potencial es agregar una verificación al inicio del evento para asegurarse de que solo se ejecute una vez por clic. Esto se puede hacer estableciendo una variable booleana fuera del evento (por ejemplo, rewarded = false) y verificando si es verdadera antes de ejecutar el resto del código del evento. Si es falsa, se cambia a verdadera y se continúa con el código del evento. Si ya es verdadera, se omite el código del evento. Esto garantizará que xPlayer.blablabla se ejecute solo una vez por clic.

Comments are closed.