Jump to content

(AYUDA)Poner stats


lucascba

Recommended Posts

Recuerda que usando un setElementData cuando el jugador salga del servidor (se destruya el ped/al elemento que le asignaste la data) se borrará, te recomiendo usar getAccountData.

Y como dijo Aleks tu mismo estás posteando como hacerlo, te dejo el syntax de setElementData y setAccountData por si te sirve

setElementData(elemento,data,info)

Data va dentro de comillas (string) en caso que esté dentro de una variable ya definida.

Con info pasa lo mismo que arriba.

setAccountData(cuenta,data,info)

Y pasa exáctamente igual con el elementData.

Link to comment
Debes usar aritmética, detectar cuanto tiene y sumarle uno, ejemplo:
  
function onChat() 
local messages = getElementData(source,"LinesofChat") or 0 
setElementData(source,messages+1) 
end 
addEventHandler("onPlayerChat",getRootElement(),onChat) 
  

Por obvios motivos, eso no funcionaria.

* ¿Que es hijack?

Link to comment

¿Lo que quieres es asignarte un elementData en concreto y que cada vez que completes el hijack te suba "un punto"?

De ser así podrías editar el propio script de hijack y agregar que cada vez que lo completes te agregue uno, por ejemplo.

Digamos que al subir por primera vez al coche te asigna algo como:

setElementData(source, "hijack", 0) 

  
function aumentarstat(player) 
local stat = getElementData(player, "hijack") 
       -- en este caso devolvería el valor de stat del jugador que complete el hijack 
       setElementData(player, "hijack", stat+1) 
      -- si tenías stat 0, al completar el hijack te suma 1 al anterior 
end 
  
  

No sé si te referías a eso o a qué, podrías aclararte.

* Hijack en inglés significa "secuestro", de ahí se supone de lo que trata el juego.

Link to comment

Postea tu codigo y te ayudamos a ponerlo todo en su sitio... aleks te explico la manera de hacerlo si no sabes como organizarlo es mejor que pongas el script aquí para que podamos ayudarte mas.

Como ya te dijeron arriba para que se guarde una vez que salga de servidor se tiene que usar setAccountData o otros metodos como puede ser sql mysql xml....

Link to comment

Ok este es mi codigo, Es un mysterybag seria lo mismo que lo del hijack pero con una bolsa, cada vez que el jugador agarre la bolsa le sume +1 en sus stats.

Codigo:

local mbag = { 
    {2422.3,-2261.6,16}, 
    {1758.9,-2767.9,1.7}, 
    {2493.3,-951.8,82.25}, 
    {815.7,-1108.2,25.8}, 
    {390.9,-2054.3,13.8}, 
    {-719.05,-1938.8,8.35}, 
    {-625.7,-2249.5,23.05}, 
    {-1812.3,-168.5,18.2}, 
    {-2659.5,1528.05,54.79}, 
    {-1733.76,194.75,3.6}, 
    {-2535.5,40.15,8.5}, 
    {-1804.85,558.45,35.15}, 
    {-752.6,-131.6,65.8}, 
} 
  
function createBag() 
    local random = math.random ( #mbag ) 
    local x, y, z = mbag[random][1], mbag[random][2], mbag[random][3] 
    bag = createPickup( x, y, z, 3, 1550 ) 
    setElementCollisionsEnabled( bag, false ) 
    bl = createBlipAttachedTo(bag,37) 
    exports.UIPtexts:output("Una Bolsa Misteriosa ha aparecido en tu mapa conseguila primero y obten algunos premios agradables en ella!", root, 0, 255, 0) 
end 
addEventHandler("onResourceStart", resourceRoot,createBag) 
  
addEventHandler("onPickupHit",root, 
function ( player, killer ) 
    if ( source ~= bag ) then 
        return 
    end 
    if ( isPedInVehicle( player ) ) then 
        return 
    end 
    if ( getElementData( player, "Ocupacion" ) == "FBI" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "SAPD" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "SWAT" ) then  
    else 
    if ( getElementData( player, "Ocupacion" ) == "Special Forces" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Police Officer" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Medic" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "None" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Bus Driver" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Mechanic" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Pilot" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Taxi Driver" ) then 
    else 
    if ( getElementData( player, "Ocupacion" ) == "Trucker" ) then 
        return 
        exports.CLtexts:output("Debes Ser Criminal Para Agarrar La Bolsa Misteriosa", localPlayer, 0, 255, 0) 
    end 
        destroyElement( bag ) 
        destroyElement( bl ) 
        randomMoney = math.random ( 1000, 20000 ) 
        randomArmor = math.random( 40, 80 ) 
        setPedArmor ( player, getPedArmor(player) + randomArmor ) 
        outputChatBox("Usted Gano $" .. tostring(randomMoney) .." Y ".. tostring(randomArmor) .."% De Chaleco", player, 0, 250, 0) 
        setTimer( createBag, 90000, 1 ) 
        givePlayerMoney(player,randomMoney) 
        local stat = getElementData(player, "BC") 
        setElementData(player, "BC", stat+1) 
    end 
    end 
    end 
    end 
    end 
    end 
    end 
    end 
    end 
    end 
    end 
    end 
) 
  
addEventHandler( "onResourceStart",resourceRoot, 
    function( ) 
        outputDebugString( "add Total Kills to scoreboard Return: "..tostring( 
            call( getResourceFromName("dxscoreboard"), "addScoreboardColumn", "BC",root,2, 0.032 ) 
        ) ) 
    end 
) 

Link to comment
Debes usar aritmética, detectar cuanto tiene y sumarle uno, ejemplo:
  
function onChat() 
local messages = getElementData(source,"LinesofChat") or 0 
setElementData(source,messages+1) 
end 
addEventHandler("onPlayerChat",getRootElement(),onChat) 
  

Por obvios motivos, eso no funcionaria.

* ¿Que es hijack?

¿Por qué no funcionaría?

Link to comment
Debes usar aritmética, detectar cuanto tiene y sumarle uno, ejemplo:
  
function onChat() 
local messages = getElementData(source,"LinesofChat") or 0 
setElementData(source,messages+1) 
end 
addEventHandler("onPlayerChat",getRootElement(),onChat) 
  

Por obvios motivos, eso no funcionaria.

* ¿Que es hijack?

¿Por qué no funcionaría?

Tomas, revisa el código, si quitas la variable estás haciendo esto:

  
setElementData(source,getElementData(source,"LinesofChat")+1) 
  

Link to comment

Bueno volviendo al tema aquí esta lo que necesitas:

local mbag = { 
    {2422.3,-2261.6,16}, 
    {1758.9,-2767.9,1.7}, 
    {2493.3,-951.8,82.25}, 
    {815.7,-1108.2,25.8}, 
    {390.9,-2054.3,13.8}, 
    {-719.05,-1938.8,8.35}, 
    {-625.7,-2249.5,23.05}, 
    {-1812.3,-168.5,18.2}, 
    {-2659.5,1528.05,54.79}, 
    {-1733.76,194.75,3.6}, 
    {-2535.5,40.15,8.5}, 
    {-1804.85,558.45,35.15}, 
    {-752.6,-131.6,65.8}, 
} 
  
function createBag() 
    local random = math.random ( #mbag ) 
    local x, y, z = mbag[random][1], mbag[random][2], mbag[random][3] 
    bag = createPickup( x, y, z, 3, 1550 ) 
    setElementCollisionsEnabled( bag, false ) 
    bl = createBlipAttachedTo(bag,37) 
    exports.UIPtexts:output("Una Bolsa Misteriosa ha aparecido en tu mapa conseguila primero y obten algunos premios agradables en ella!", root, 0, 255, 0) 
end 
addEventHandler("onResourceStart", resourceRoot,createBag) 
  
addEventHandler("onPickupHit",root, 
function ( player, killer ) 
    if ( source ~= bag ) then 
        return 
    end 
    if ( isPedInVehicle( player ) ) then 
        return 
    end 
    if ( getElementData( player, "Ocupacion" ) == "Criminal" ) then 
        destroyElement( bag ) 
        destroyElement( bl ) 
        randomMoney = math.random ( 1000, 20000 ) 
        randomArmor = math.random( 40, 80 ) 
        setPedArmor ( player, getPedArmor(player) + randomArmor ) 
        outputChatBox("Usted Gano $" .. tostring(randomMoney) .." Y ".. tostring(randomArmor) .."% De Chaleco", player, 0, 250, 0) 
        setTimer( createBag, 90000, 1 ) 
        givePlayerMoney(player,randomMoney) 
        local stat = getElementData(player, "BC") 
        setElementData(player, "BC", stat+1) 
        --Linea de stats HiJack 
        local hjackeds = getElementData(player, "hijacks") or 032 
        setElementData(player, "j", hjackeds+1) 
    else 
        exports.CLtexts:output("Debes Ser Criminal Para Agarrar La Bolsa Misteriosa", player, 0, 255, 0) 
    end 
end 
) 
  
function saveData(player) 
    local account = getPlayerAccount ( player ) 
    if not isGuestAccount ( account ) then 
        setAccountData ( account, "hijack", getElementData(player, "hijacks") or 0 ) 
    end 
end 
  
addEventHandler ( "onResourceStop", getThisResource ( ),  
function ( resource ) 
    local players = getElementsByType ( "player" ) 
    for theKey,thePlayer in ipairs(players) do 
        saveData(thePlayer) 
    end 
end  
) 
  
addEventHandler( "onResourceStart",resourceRoot, 
    function( ) 
        outputDebugString( "add Total Kills to scoreboard Return: "..tostring( 
            call( getResourceFromName("dxscoreboard"), "addScoreboardColumn", "BC",root,2, 0.032 ) 
        ) ) 
    end 
) 
  
addEventHandler("onPlayerLogin", root, 
function(_, account) 
    local data = getAccountData ( account, "hijack" ) or 032 
    setElementData(source, "hijacks", data) 
end 
) 
  
function loggedOut() 
    saveData(source) 
end 
addEventHandler("onPlayerLogout",getRootElement(),loggedOut) 

eh mejorado algunas cosas de tu scripts..

Link to comment
Lo que alexs y yo nos referimos es que tal y como lo pusiste no funcionaria, fijate en como queda el setElementData y revisa su syntax.

Damn, ya entendí el error xD

  
    function onChat() 
    local messages = getElementData(source,"LinesofChat") or 0 
    setElementData(source,"LinesofChat",messages+1) 
    end 
    addEventHandler("onPlayerChat",getRootElement(),onChat) 
  

Link to comment
Bueno volviendo al tema aquí esta lo que necesitas:
local mbag = { 
    {2422.3,-2261.6,16}, 
    {1758.9,-2767.9,1.7}, 
    {2493.3,-951.8,82.25}, 
    {815.7,-1108.2,25.8}, 
    {390.9,-2054.3,13.8}, 
    {-719.05,-1938.8,8.35}, 
    {-625.7,-2249.5,23.05}, 
    {-1812.3,-168.5,18.2}, 
    {-2659.5,1528.05,54.79}, 
    {-1733.76,194.75,3.6}, 
    {-2535.5,40.15,8.5}, 
    {-1804.85,558.45,35.15}, 
    {-752.6,-131.6,65.8}, 
} 
  
function createBag() 
    local random = math.random ( #mbag ) 
    local x, y, z = mbag[random][1], mbag[random][2], mbag[random][3] 
    bag = createPickup( x, y, z, 3, 1550 ) 
    setElementCollisionsEnabled( bag, false ) 
    bl = createBlipAttachedTo(bag,37) 
    exports.UIPtexts:output("Una Bolsa Misteriosa ha aparecido en tu mapa conseguila primero y obten algunos premios agradables en ella!", root, 0, 255, 0) 
end 
addEventHandler("onResourceStart", resourceRoot,createBag) 
  
addEventHandler("onPickupHit",root, 
function ( player, killer ) 
    if ( source ~= bag ) then 
        return 
    end 
    if ( isPedInVehicle( player ) ) then 
        return 
    end 
    if ( getElementData( player, "Ocupacion" ) == "Criminal" ) then 
        destroyElement( bag ) 
        destroyElement( bl ) 
        randomMoney = math.random ( 1000, 20000 ) 
        randomArmor = math.random( 40, 80 ) 
        setPedArmor ( player, getPedArmor(player) + randomArmor ) 
        outputChatBox("Usted Gano $" .. tostring(randomMoney) .." Y ".. tostring(randomArmor) .."% De Chaleco", player, 0, 250, 0) 
        setTimer( createBag, 90000, 1 ) 
        givePlayerMoney(player,randomMoney) 
        local stat = getElementData(player, "BC") 
        setElementData(player, "BC", stat+1) 
        --Linea de stats HiJack 
        local hjackeds = getElementData(player, "hijacks") or 032 
        setElementData(player, "j", hjackeds+1) 
    else 
        exports.CLtexts:output("Debes Ser Criminal Para Agarrar La Bolsa Misteriosa", player, 0, 255, 0) 
    end 
end 
) 
  
function saveData(player) 
    local account = getPlayerAccount ( player ) 
    if not isGuestAccount ( account ) then 
        setAccountData ( account, "hijack", getElementData(player, "hijacks") or 0 ) 
    end 
end 
  
addEventHandler ( "onResourceStop", getThisResource ( ),  
function ( resource ) 
    local players = getElementsByType ( "player" ) 
    for theKey,thePlayer in ipairs(players) do 
        saveData(thePlayer) 
    end 
end  
) 
  
addEventHandler( "onResourceStart",resourceRoot, 
    function( ) 
        outputDebugString( "add Total Kills to scoreboard Return: "..tostring( 
            call( getResourceFromName("dxscoreboard"), "addScoreboardColumn", "BC",root,2, 0.032 ) 
        ) ) 
    end 
) 
  
addEventHandler("onPlayerLogin", root, 
function(_, account) 
    local data = getAccountData ( account, "hijack" ) or 032 
    setElementData(source, "hijacks", data) 
end 
) 
  
function loggedOut() 
    saveData(source) 
end 
addEventHandler("onPlayerLogout",getRootElement(),loggedOut) 

eh mejorado algunas cosas de tu scripts..

No funciona solo suma 1 y se queda alli.

Link to comment
Bueno volviendo al tema aquí esta lo que necesitas:
local mbag = { 
    {2422.3,-2261.6,16}, 
    {1758.9,-2767.9,1.7}, 
    {2493.3,-951.8,82.25}, 
    {815.7,-1108.2,25.8}, 
    {390.9,-2054.3,13.8}, 
    {-719.05,-1938.8,8.35}, 
    {-625.7,-2249.5,23.05}, 
    {-1812.3,-168.5,18.2}, 
    {-2659.5,1528.05,54.79}, 
    {-1733.76,194.75,3.6}, 
    {-2535.5,40.15,8.5}, 
    {-1804.85,558.45,35.15}, 
    {-752.6,-131.6,65.8}, 
} 
  
function createBag() 
    local random = math.random ( #mbag ) 
    local x, y, z = mbag[random][1], mbag[random][2], mbag[random][3] 
    bag = createPickup( x, y, z, 3, 1550 ) 
    setElementCollisionsEnabled( bag, false ) 
    bl = createBlipAttachedTo(bag,37) 
    exports.UIPtexts:output("Una Bolsa Misteriosa ha aparecido en tu mapa conseguila primero y obten algunos premios agradables en ella!", root, 0, 255, 0) 
end 
addEventHandler("onResourceStart", resourceRoot,createBag) 
  
addEventHandler("onPickupHit",root, 
function ( player, killer ) 
    if ( source ~= bag ) then 
        return 
    end 
    if ( isPedInVehicle( player ) ) then 
        return 
    end 
    if ( getElementData( player, "Ocupacion" ) == "Criminal" ) then 
        destroyElement( bag ) 
        destroyElement( bl ) 
        randomMoney = math.random ( 1000, 20000 ) 
        randomArmor = math.random( 40, 80 ) 
        setPedArmor ( player, getPedArmor(player) + randomArmor ) 
        outputChatBox("Usted Gano $" .. tostring(randomMoney) .." Y ".. tostring(randomArmor) .."% De Chaleco", player, 0, 250, 0) 
        setTimer( createBag, 90000, 1 ) 
        givePlayerMoney(player,randomMoney) 
        local stat = getElementData(player, "BC") 
        setElementData(player, "BC", stat+1) 
        --Linea de stats HiJack 
        local hjackeds = getElementData(player, "hijacks") or 032 
        setElementData(player, "j", hjackeds+1) 
    else 
        exports.CLtexts:output("Debes Ser Criminal Para Agarrar La Bolsa Misteriosa", player, 0, 255, 0) 
    end 
end 
) 
  
function saveData(player) 
    local account = getPlayerAccount ( player ) 
    if not isGuestAccount ( account ) then 
        setAccountData ( account, "hijack", getElementData(player, "hijacks") or 0 ) 
    end 
end 
  
addEventHandler ( "onResourceStop", getThisResource ( ),  
function ( resource ) 
    local players = getElementsByType ( "player" ) 
    for theKey,thePlayer in ipairs(players) do 
        saveData(thePlayer) 
    end 
end  
) 
  
addEventHandler( "onResourceStart",resourceRoot, 
    function( ) 
        outputDebugString( "add Total Kills to scoreboard Return: "..tostring( 
            call( getResourceFromName("dxscoreboard"), "addScoreboardColumn", "BC",root,2, 0.032 ) 
        ) ) 
    end 
) 
  
addEventHandler("onPlayerLogin", root, 
function(_, account) 
    local data = getAccountData ( account, "hijack" ) or 032 
    setElementData(source, "hijacks", data) 
end 
) 
  
function loggedOut() 
    saveData(source) 
end 
addEventHandler("onPlayerLogout",getRootElement(),loggedOut) 

eh mejorado algunas cosas de tu scripts..

Esa tabla posee una ligera incorrección en su forma.

Link to comment
  • Recently Browsing   0 members

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