Jump to content

(AYUDA)Poner stats


lucascba

Recommended Posts

Posted

hola, me gustaria saber como puedo hacer esto:

Tengo un script del hijack y que cada vez que el jugador entregue el hijack se le coloque un "setElementData" para que luego yo use getElementData lo pueda poner en mis stats, me podrian decir como puedo hacer eso?

Gracias

Posted

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.

Posted

Si yo se eso, pero solo me pone 1 setElementData, lo que yo quiero hacer es que cada vez que entregue el hijack le sume 1 y así sucesivamente, como puedo hacer eso?

Posted

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) 
  

Posted
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?

Posted

* ¿Que es hijack?

Es un resource donde un vehículo determinado aparece de forma random en el mapa, cuando subes a él tienes que llevarlo al lugar donde te indique

Posted

¿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.

Posted

mirra te explico mejor, primero que todos los jugadores tengo por defecto 0 "hijacks" entregados, y que cuando entreguen 1 hijack les sume 1 y así si entregan otro que sea 2, y que cuando reconecten eso se guarde, fui un poco mas claro? :roll:

Posted

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....

Posted

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 
) 

Posted
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?

Posted
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) 
  

Posted

En mis scripts lo suelo hacer así, pero en el foro lo detallo más, la idea es que él entienda, ¿no?

El "or" lo uso porque si el player no tiene ninguna data returnaría un booleano (false) por eso el "or"

Posted

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..

Posted
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) 
  

Posted
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.

Posted
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.

  • Recently Browsing   0 members

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