Jump to content

Ayuda con PayDay


aka Blue

Recommended Posts

Bueno, estoy creando mi propio PayDay a partir de uno básico y bueno, tengo un problema que es que, le da el dinero del rango 1 y de su rango. Digamos que yo estoy en el rango 6, lo que pasa es que me da el dinero de ese rango y del rango 1, no lo entiendo. Posteo aquí el código.

function allPlayersPayDay() 
  local allPlayers = getElementsByType("player") 
  for index,value in ipairs(allPlayers) do 
  local charID = exports.players:getCharacterID( value ) 
  if charID == exports.players:getCharacterID( value ) then 
  local dude = value 
if exports.factions:isPlayerInFaction( value, 5 ) then 
local player = value 
local characterID = exports.players:getCharacterID( value ) 
local name = exports.players:getCharacterName(characterID) 
local result = exports.sql:query_assoc( "SELECT factionRank FROM character_to_factions WHERE characterID = " .. characterID ) 
    for key, value in ipairs( result ) do 
    local rango = value.factionRank 
                        if rango == 1 then 
                exports.players:giveMoney( player, 25 ) 
                    outputChatBox ( "Gobierno: #00FF00$25", player, 255, 193, 37, true ) 
            elseif rango == 2 then 
                exports.players:giveMoney( player, 50 ) 
                    outputChatBox ( "Gobierno: #00FF00$50", player, 255, 193, 37, true ) 
            elseif rango == 3 then 
                exports.players:giveMoney( player, 100 ) 
                    outputChatBox ( "Gobierno: #00FF00$100", player, 255, 193, 37, true ) 
            elseif rango == 4 then 
                exports.players:giveMoney( player, 150 ) 
                    outputChatBox ( "Gobierno: #00FF00$150", player, 255, 193, 37, true ) 
            elseif rango == 5 then 
                exports.players:giveMoney( player, 200 ) 
                    outputChatBox ( "Gobierno: #00FF00$200", player, 255, 193, 37, true ) 
            elseif rango == 6 then 
                exports.players:giveMoney( player, 250 ) 
                    outputChatBox ( "Gobierno: #00FF00$250", player, 255, 193, 37, true ) 
else end 
end  
end 
end 
end 
end 
function onResourceStart(thisResource) 
  setTimer ( allPlayersPayDay, 15000, 0 ) 
end 
addEventHandler ( "onResourceStart", getResourceRootElement(getThisResource()), onResourceStart ) 

Link to comment

Intenta con esto..

  
setTimer( 
    function ( ) 
        for index, value in ipairs ( getElementsByType("player") ) do 
            if ( exports.players:getCharacterID(value) ) then 
                if ( exports.factions:isPlayerInFaction(value, 5) ) then 
                    if ( getFactionRank(value) ) then 
                        local money = getFactionRank(value) * 50  
                        exports.players:giveMoney(value, money) 
                        outputChatBox ( "Gobierno: #00FF00$"..money, value, 255, 193, 37, true) 
                    end 
                end 
            end 
        end 
    end, 150000, 0) 
     
function getFactionRank(player) 
    db_call = exports.sql:query_assoc( "SELECT factionRank FROM character_to_factions WHERE characterID = " .. exports.players:getCharacterID(player) ) 
    if ( db_call and #db_call > 1 ) then 
        for _, data in ipairs ( db_call ) do 
            if ( data.factionRank ) then 
                return data.factionRank 
            else 
                outputDebugString("Something went wrong, failing on looping "..getPlayerName(player).."'s data.") 
            end 
        end 
    else 
        outputDebugString("Something went wrong, failing on getting "..getPlayerName(player).."'s faction rank.") 
    end 
end 
  
  

Link to comment

Es que no sale ningún error. Lo que sale es, por ejemplo, yo estoy en el rango 6 y me dice:

Gobierno: 250 (la paga del rango 6)

Gobierno: 25 (la paga del rango 1)

Y me da ambas pagas.

PD: Tomas, ¿no se podría hacer que yo asignara los sueldos? Osea, como en mi script.

Link to comment
Es que no sale ningún error. Lo que sale es, por ejemplo, yo estoy en el rango 6 y me dice:

Gobierno: 250 (la paga del rango 6)

Gobierno: 25 (la paga del rango 1)

Y me da ambas pagas.

PD: Tomas, ¿no se podría hacer que yo asignara los sueldos? Osea, como en mi script.

local dineroRank = {15,75,100,110,150,164,180,200,235,250,260,275} 
setTimer( 
    function ( ) 
    dataPlayer = {} 
        for index, value in ipairs ( getElementsByType("player") ) do 
            if ( exports.players:getCharacterID(value) ) then 
                if ( exports.factions:isPlayerInFaction(value, 5) ) then 
                    if ( getFactionRank(value) ) and dataPlayer[value] == nil then 
                        --local money = getFactionRank(value) * 50 
                        local money = dineroRank[getFactionRank(value)] 
                        exports.players:giveMoney(value, money) 
                        outputChatBox ( "Gobierno: #00FF00$"..money, value, 255, 193, 37, true) 
                        dataPlayer[value] = true 
                    end 
                end 
            end 
        end 
    end 
, 150000, 0 
) 

Ahora solo te va a dar un solo output, aver cual xD

Link to comment
Intenta con esto..
  
setTimer( 
    function ( ) 
        for index, value in ipairs ( getElementsByType("player") ) do 
            if ( exports.players:getCharacterID(value) ) then 
                if ( exports.factions:isPlayerInFaction(value, 5) ) then 
                    if ( getFactionRank(value) ) then 
                        local money = getFactionRank(value) * 50  
                        exports.players:giveMoney(value, money) 
                        outputChatBox ( "Gobierno: #00FF00$"..money, value, 255, 193, 37, true) 
                    end 
                end 
            end 
        end 
    end, 150000, 0) 
     
function getFactionRank(player) 
    db_call = exports.sql:query_assoc( "SELECT factionRank FROM character_to_factions WHERE characterID = " .. exports.players:getCharacterID(player) ) 
    if ( db_call and #db_call > 1 ) then 
        for _, data in ipairs ( db_call ) do 
            if ( data.factionRank ) then 
                return data.factionRank 
            else 
                outputDebugString("Something went wrong, failing on looping "..getPlayerName(player).."'s data.") 
            end 
        end 
    else 
        outputDebugString("Something went wrong, failing on getting "..getPlayerName(player).."'s faction rank.") 
    end 
end 
  
  

¿Por qué mayor a uno? ¿Es decir que tienes mas de un fila con el mismo id?

if ( db_call and #db_call > 1 ) then 

Link to comment
Intenta con esto..
  
setTimer( 
    function ( ) 
        for index, value in ipairs ( getElementsByType("player") ) do 
            if ( exports.players:getCharacterID(value) ) then 
                if ( exports.factions:isPlayerInFaction(value, 5) ) then 
                    if ( getFactionRank(value) ) then 
                        local money = getFactionRank(value) * 50  
                        exports.players:giveMoney(value, money) 
                        outputChatBox ( "Gobierno: #00FF00$"..money, value, 255, 193, 37, true) 
                    end 
                end 
            end 
        end 
    end, 150000, 0) 
     
function getFactionRank(player) 
    db_call = exports.sql:query_assoc( "SELECT factionRank FROM character_to_factions WHERE characterID = " .. exports.players:getCharacterID(player) ) 
    if ( db_call and #db_call > 1 ) then 
        for _, data in ipairs ( db_call ) do 
            if ( data.factionRank ) then 
                return data.factionRank 
            else 
                outputDebugString("Something went wrong, failing on looping "..getPlayerName(player).."'s data.") 
            end 
        end 
    else 
        outputDebugString("Something went wrong, failing on getting "..getPlayerName(player).."'s faction rank.") 
    end 
end 
  
  

¿Por qué mayor a uno? ¿Es decir que tienes mas de un fila con el mismo id?

if ( db_call and #db_call > 1 ) then 

Debería ser > 0 o >= 1, se me pasó xD

Link to comment
Intenta con esto..
  
setTimer( 
    function ( ) 
        for index, value in ipairs ( getElementsByType("player") ) do 
            if ( exports.players:getCharacterID(value) ) then 
                if ( exports.factions:isPlayerInFaction(value, 5) ) then 
                    if ( getFactionRank(value) ) then 
                        local money = getFactionRank(value) * 50  
                        exports.players:giveMoney(value, money) 
                        outputChatBox ( "Gobierno: #00FF00$"..money, value, 255, 193, 37, true) 
                    end 
                end 
            end 
        end 
    end, 150000, 0) 
     
function getFactionRank(player) 
    db_call = exports.sql:query_assoc( "SELECT factionRank FROM character_to_factions WHERE characterID = " .. exports.players:getCharacterID(player) ) 
    if ( db_call and #db_call > 1 ) then 
        for _, data in ipairs ( db_call ) do 
            if ( data.factionRank ) then 
                return data.factionRank 
            else 
                outputDebugString("Something went wrong, failing on looping "..getPlayerName(player).."'s data.") 
            end 
        end 
    else 
        outputDebugString("Something went wrong, failing on getting "..getPlayerName(player).."'s faction rank.") 
    end 
end 
  
  

¿Por qué mayor a uno? ¿Es decir que tienes mas de un fila con el mismo id?

if ( db_call and #db_call > 1 ) then 

Debería ser > 0 o >= 1, se me pasó xD

Pues ahi esta el error de Blue Pie, pues es que loopea las dos filas, uno que tiene un rank y otro que tiene otro. A pesar de que le pongas eso Tomas, siempre va a devolver el valor de la primera fila ya que el return hace que finalice por completo la funcion y es por eso que ahora solo devuelve una vez. Pero si le funciona, supongo que no habrá problema.

Link to comment
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...