Jump to content

Pequeño problema con exp system


Anthrax

Recommended Posts

Hola de nuevo, tengo un pequeño problema con este script, el script funciona correctamente sin errores, el problema es que cuando sube un nivel, no se aplica los setPedStats del siguiente nivel, solo se aplica cuando hace spawn (como lo dice en "onPlayerSpawn" e pensado cambiarlo a "onPlayerLogin") y no deberia ser asi.

Lo que me gustaria es que se aplique los setPedStats en el acto cuando suba un nivel (tambien en spawn).

Aqui el script:

"Server side"

function healthskill ()                              
    for i, v in ipairs(getElementsByType("player")) do 
    local level = exports.exp:getPlayerLevel(source) 
                if level == 1 then 
                    setPedStat(source, 24, 500) 
                    setPedStat(source, 69, 10) 
                    setPedStat(source, 70, 50) 
                    setPedStat(source, 71, 25) 
                    setPedStat(source, 72, 25) 
                    setPedStat(source, 73, 25) 
                    setPedStat(source, 74, 25) 
                    setPedStat(source, 75, 20) 
                    setPedStat(source, 76, 50) 
                    setPedStat(source, 77, 0) 
                    setPedStat(source, 78, 0) 
                    setPedStat(source, 79, 0) 
                  outputChatBox("Nivel 1", source, 255, 255, 255, true) 
                end 
                if level == 2 then 
                    setPedStat(source, 24, 550) 
                    setPedStat(source, 69, 20) 
                    setPedStat(source, 70, 100) 
                    setPedStat(source, 71, 50) 
                    setPedStat(source, 72, 50) 
                    setPedStat(source, 73, 50) 
                    setPedStat(source, 74, 50) 
                    setPedStat(source, 75, 30) 
                    setPedStat(source, 76, 100) 
                    setPedStat(source, 77, 15) 
                    setPedStat(source, 78, 15) 
                    setPedStat(source, 79, 0) 
                    outputChatBox("Nivel 2", source, 255, 255, 255, true) 
                end 
                if level == 3 then 
                    setPedStat(source, 24, 600) 
                    setPedStat(source, 69, 40) 
                    setPedStat(source, 70, 500) 
                    setPedStat(source, 71, 200) 
                    setPedStat(source, 72, 100) 
                    setPedStat(source, 73, 100) 
                    setPedStat(source, 74, 100) 
                    setPedStat(source, 75, 40) 
                    setPedStat(source, 76, 200) 
                    setPedStat(source, 77, 25) 
                    setPedStat(source, 78, 25) 
                    setPedStat(source, 79, 0) 
                    outputChatBox("Nivel3", source, 255, 255, 255, true) 
                end 
    end 
    end 
addEventHandler("onPlayerSpawn", getRootElement(), healthskill)  

Muchas gracias saludos :)

Link to comment

si utilisas el exp system de castillo14 la manera mas facil de hacerlo podría ser haci

  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root,  
function ( )                          
level = getElementData(source, "level") 
                    setPedStat(source, 24, 500) 
                    setPedStat(source, 69, 10) 
                    setPedStat(source, 70, 50) 
                    setPedStat(source, 71, 25) 
                    setPedStat(source, 72, 25) 
                    setPedStat(source, 73, 25) 
                    setPedStat(source, 74, 25) 
                    setPedStat(source, 75, 20) 
                    setPedStat(source, 76, 50) 
                    setPedStat(source, 77, 0) 
                    setPedStat(source, 78, 0) 
                    setPedStat(source, 79, 0) 
                  outputChatBox("Nivel "..level, source, 255, 255, 255, true) 
                end 
) 
  

Link to comment
si utilisas el exp system de castillo14 la manera mas facil de hacerlo podría ser haci
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root,  
function ( )                          
level = getElementData(source, "level") 
                    setPedStat(source, 24, 500) 
                    setPedStat(source, 69, 10) 
                    setPedStat(source, 70, 50) 
                    setPedStat(source, 71, 25) 
                    setPedStat(source, 72, 25) 
                    setPedStat(source, 73, 25) 
                    setPedStat(source, 74, 25) 
                    setPedStat(source, 75, 20) 
                    setPedStat(source, 76, 50) 
                    setPedStat(source, 77, 0) 
                    setPedStat(source, 78, 0) 
                    setPedStat(source, 79, 0) 
                  outputChatBox("Nivel "..level, source, 255, 255, 255, true) 
                end 
) 
  

ok ese script si sale bien (tengo el script exp de castillo), pero no se porque solo me da un solo level, no entiendo muy bien esto, nunca se me ocurrio el "addEvent".

Cuando llego a nivel 2 o 3 o 4 sigue con los mismos setpedstat de tu script, no aumentan.

Como se aumenta eso sucesivamente en los siguientes niveles?

PD: server o client

Saludos :D

Link to comment
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root, 
    function ( )                          
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
) 

Link to comment
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root, 
    function ( )                          
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
) 

ok, nunca me imagine eso iva a hacer asi de complicado ._.

muchas gracias resulto a la perfección.

le añadi el "onPlayerLogin" al final para que también pueda ejecutarse cuando se loguee el player, pero no ejecuta ni da error xD

esto serial lo ultimo que me faltaría ( una ayudita aquí por fa)

function health () 
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 700, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
    [3] = { 900, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 3 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root, 
    function ( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
) 
addEventHandler("onPlayerLogin", getRootElement(), health) 
end 

Muchisimas gracias :D

Link to comment
Para que el "end" al final?

El script no funciona cuando haces login,no agarra los Stats del level, solo agarra los stats cuando avanza un nivel :(.

Tiene que funcionar cuando avance un nivel y cuando haces login.

el "end" esta solo para que no de error (osea de relleno) al igual que el "onPlayerLogin" que puse.

Link to comment

Prueva de esta forma corriganme si cometí algún error xD

local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
  
    function level( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", getRootElement(), level) 
addEventHandler("onPlayerLogin", getRootElement(), level) 

Link to comment

Mientras el addEventHandler esté dentro de la función solo se agregará cuando alguien suba de nivel. ( Se ejecute la función )

Debes colocarlo fuera del end, y no es lo más factible agregar end's así por así para que no de debug, deberías encontrar el problema.

Link to comment
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root, 
    function ( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
) 
  
addEventHandler ( "onPlayerLogin", root,     
    setTimer( 
        function( ) 
            triggerEvent( "onPlayerLevelUP", source ) 
        end 
        1000, 1, source 
    ) 
) 

Link to comment
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root, 
    function ( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
) 
  
addEventHandler ( "onPlayerLogin", root,     
    setTimer( 
        function( ) 
            triggerEvent( "onPlayerLevelUP", source ) 
        end 
        1000, 1, source 
    ) 
) 

Lo probe y da error en la linea 29, es por que al end le faltaba una coma.

Le puse la coma que corresponde y me tira 2 errores

Prueva de esta forma corriganme si cometí algún error xD
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
  
    function level( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", getRootElement(), level) 
addEventHandler("onPlayerLogin", getRootElement(), level) 

Este script funciona perfecto! es justo lo que necesitaba para que tire bien los stats cuando de login y avance un level

Muchas gracias facebook-like-icon.png

Muchisimas gracias a todos que me apoyaron a arreglar el script, son muy buenos todos. facebook-like-icon.png

Doy este post como cerrado

Link to comment
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", root, 
    function ( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
) 
  
addEventHandler ( "onPlayerLogin", root,     
    setTimer( 
        function( ) 
            triggerEvent( "onPlayerLevelUP", source ) 
        end 
        1000, 1, source 
    ) 
) 

Lo probe y da error en la linea 29, es por que al end le faltaba una coma.

Le puse la coma que corresponde y me tira 2 errores, pero muy buen intento al hacer la base necesaria del script

Prueva de esta forma corriganme si cometí algún error xD
local n = { 
    [1] = { 500, 10, 50, 25, 25, 25, 25, 20, 50, 0, 0, 0 },--Nivel 1 
    [2] = { 550, 20, 100, 50, 50, 50, 50, 30, 100, 15, 15, 0 },--Nivel 2 
} 
  
local func_lvl = setmetatable({}, {__index = function (t, k) 
  return n[#n] 
end}) 
  
local lvl_tbl = setmetatable( n, {__index=func_lvl}) 
local fallback_t = setmetatable({}, {__index=lvl_tbl}) 
  
  
    function level( )                         
        local n = tonumber( getElementData(source, "level")) 
        setPedStat(source, 24, fallback_t[n][1]) 
        for i = 69, 79 do 
            setPedStat(source, i, fallback_t[n][i-67]) 
        end 
        outputChatBox("Nivel "..n, source, 255, 255, 255, true) 
    end 
addEvent ( "onPlayerLevelUP", true ) 
addEventHandler ( "onPlayerLevelUP", getRootElement(), level) 
addEventHandler("onPlayerLogin", getRootElement(), level) 

Este script funciona perfecto! es justo lo que necesitaba para que tire bien los stats cuando de login y avance un level

Muchisimas gracias :D

Muchas gracias a todos que me apoyaron a arreglar el script, son muy buenos todos se lo agradecere siempre. facebook-like-icon.png

Doy este post como cerrado

Link to comment
  • Recently Browsing   0 members

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