UserToDelete Posted May 17, 2014 Share Posted May 17, 2014 function SaveLogout () local playeraccount = getAccountName(getPlayerAccount(source)) if (playeraccount) and not isGuestAccount(playeraccount)then local playermoney = getPlayerMoney(source) setAccountData (playeraccount,"vd.money",playermoney) outputChatBox("#00FF00[sAVE SYSTEM] Saved data #FFFFFF'"..playeraccount.."'#00FF00 for your account",source,0,255,0,true) end end function SaveQuit () local playeraccount = getAccountName(getPlayerAccount(source)) if (playeraccount) and not isGuestAccount(playeraccount)then local playermoney = getPlayerMoney(source) setAccountData (playeraccount,"vd.money",playermoney) end end function SaveJoin (_,playeraccount) if ( playeraccount) then local playermoney = getAccountData(playeraccount,"vd.money") if (playermoney) then outputChatBox("#00FF00[sAVE SYSTEM] Loaded data #FFFFFF'"..playeraccount.."'#00FF00 for your account",source,0,255,0,true) setPlayerMoney(source,playermoney) end end end addEventHandler("onPlayerLogout",root,SaveLogout) addEventHandler("onPlayerQuit",root,SaveQuit) addEventHandler("onPlayerLogin",root,SaveJoin) Errores: [2014-05-17 13:26:22] ERROR: vD\server.lua:105: attempt to concatenate local 'playeraccount' (a userdata value) [2014-05-17 13:26:22] LOGIN: (Admin, Everyone) #FFFFFFV#25FFFFeNaD successfully logged in as 'testServer' (IP: [HIDE] Serial: [HIDE]) [2014-05-17 13:29:32] SHUTDOWN: Got shutdown command from Console (No reason specified) [2014-05-17 13:29:32] WARNING: vD\server.lua:96: Bad argument @ 'isGuestAccount' [Expected account at argument 1, got string 'testServer'] [2014-05-17 13:29:32] WARNING: vD\server.lua:98: Bad argument @ 'setAccountData' [Expected account at argument 1, got string 'testServer'] El error que me interesa es el de "userdata" por que da error? Exactamente que significa eso ? y que debo hacer al respecto? Link to comment
Alexs Posted May 17, 2014 Share Posted May 17, 2014 · Hidden Hidden Ese error se genera porque intentas concadenar una cuenta y no el nombre de esta: function SaveJoin (_,playeraccount) if ( playeraccount) then local playermoney = getAccountData(playeraccount,"vd.money") if (playermoney) then outputChatBox("#00FF00[sAVE SYSTEM] Loaded data #FFFFFF'"..getAccountName(playeraccount).."'#00FF00 for your account",source,0,255,0,true) setPlayerMoney(source,playermoney) end end end * En cuanto a los otros errores es el caso contrario, utilizas el nombre de la cuenta y no la cuenta como elemento. Link to comment
UserToDelete Posted May 17, 2014 Author Share Posted May 17, 2014 Ese error se genera porque intentas concadenar una cuenta y no el nombre de esta: function SaveJoin (_,playeraccount) if ( playeraccount) then local playermoney = getAccountData(playeraccount,"vd.money") if (playermoney) then outputChatBox("#00FF00[sAVE SYSTEM] Loaded data #FFFFFF'"..getAccountName(playeraccount).."'#00FF00 for your account",source,0,255,0,true) setPlayerMoney(source,playermoney) end end end * En cuanto a los otros errores es el caso contrario, utilizas el nombre de la cuenta y no la cuenta como elemento. Entonces cual es el problema, Es decir, que es que? en la SaveJoin uso getAccountPlayer? y en la SaveQuit uso getAccountName? Me basé en este script: function onPlayerQuit ( ) -- when a player leaves, store his current money amount in his account data local playeraccount = getPlayerAccount ( source ) if ( playeraccount ) and not isGuestAccount ( playeraccount ) then -- if the player is logged in local playermoney = getPlayerMoney ( source ) -- get the player money setAccountData ( playeraccount, "piraterpg.money", playermoney ) -- save it in his account end end function onPlayerLogin (_, playeraccount ) -- when a player logins, retrieve his money amount from his account data and set it if ( playeraccount ) then local playermoney = getAccountData ( playeraccount, "piraterpg.money" ) -- make sure there was actually a value saved under this key (check if playermoney is not false). -- this will for example not be the case when a player plays the gametype for the first time if ( playermoney ) then setPlayerMoney ( source, playermoney ) end end end addEventHandler ( "onPlayerQuit", getRootElement ( ), onPlayerQuit ) addEventHandler ( "onPlayerLogin", getRootElement ( ), onPlayerLogin ) -- Copyright to MTA WIKI Cual es la linea 106? setPlayerMoney(source,playermoney) Link to comment
Alexs Posted May 17, 2014 Share Posted May 17, 2014 · Hidden Hidden Si te lo explico de ese modo no aprenderías cual es tu error, debes aprender a discriminar si es necesario utilizar una cuenta (elemento) o un nombre de cuenta (string). Link to comment
Bc# Posted May 18, 2014 Share Posted May 18, 2014 · Hidden Hidden Si te lo explico de ese modo no aprenderías cual es tu error, debes aprender a discriminar si es necesario utilizar una cuenta (elemento) o un nombre de cuenta (string). A menos que obtenga un elemento cuenta a partir de un nombre de cuenta Link to comment
Alexs Posted May 18, 2014 Share Posted May 18, 2014 · Hidden Hidden Si te lo explico de ese modo no aprenderías cual es tu error, debes aprender a discriminar si es necesario utilizar una cuenta (elemento) o un nombre de cuenta (string). A menos que obtenga un elemento cuenta a partir de un nombre de cuenta El problema es el mismo, no discrimina cuando es necesario uno u otro. Link to comment
UserToDelete Posted May 18, 2014 Author Share Posted May 18, 2014 Si te lo explico de ese modo no aprenderías cual es tu error, debes aprender a discriminar si es necesario utilizar una cuenta (elemento) o un nombre de cuenta (string). Tal como e ido testando, y mirando la Wiki y los errores e solucionado el "Join" pero ahora viene el problema que no entiendo Cuando hago /logout, o me salgo, vuelvo a entrar al server, me loggeo y no tengo dinero, es decir, lo que e hecho fue Al salirme del juego Loggearme Darme 1332 de dinero Salir Connect to server Loggearme Tengo 0 de dinero Al hacer logout Loggearme Darme 1332 de dinero /logout (Conservo los 1332 al logout) loggearme y me pone el dinero en "0" Es decir, el script me carga el dinero, pero no me lo guarda cuando hago logout o salgo del server, no da ningun error ni nada, por que puede ser? al no haber error, nose cual es el error edite gran parte del script, Cual es la linea que provoca el error, solo dime eso, @Alex_steel function SaveLogout () local account = getPlayerAccount(source) if account then local nombredeljugador = getPlayerName(source) local playermoney = getPlayerMoney(source) setAccountData (account,"vd.money",playermoney) outputChatBox("#00FF00[sAVE SYSTEM] Saved data #FFFFFF'"..nombredeljugador.."'#00FF00 for your account",source,0,255,0,true) end end function SaveQuit () local account = getPlayerAccount(source) if account then local nombredeljugador = getPlayerName(source) local playermoney = getPlayerMoney(source) setAccountData (account,"vd.money",playermoney) end end function SaveJoin (_,account) local account = getPlayerAccount(source) if account then local playermoney = getAccountData(account,"vd.money") if (playermoney) then local nombredeljugador = getPlayerName(source) outputChatBox("#00FF00[sAVE SYSTEM] Loaded data #FFFFFF"..nombredeljugador.."#00FF00 for your account",source,0,255,0,true) setPlayerMoney(source,playermoney) end end end Suelta los mensajes pero no el dinero Link to comment
Tomas Posted May 18, 2014 Share Posted May 18, 2014 No da ningun debug cuando logueas? Link to comment
UserToDelete Posted May 19, 2014 Author Share Posted May 19, 2014 No da ningun debug cuando logueas? No, Si no ya lo habria solucionado Link to comment
UserToDelete Posted May 19, 2014 Author Share Posted May 19, 2014 No da ningun debug cuando logueas? Alex steel ignora el post, y nadie responde, buena. Ahora tambien da este error desde que hice unas correcciones WARNING: vD\server.lua:18: Bad argument @ 'getPlayerName' [Expected element at argument 1, got nil] nombrepll = getPlayerName(source) Link to comment
Tomas Posted May 19, 2014 Share Posted May 19, 2014 Me parece a mi que esto es un foro libre, libre de expresión y libre de hacer lo que se te plaza la gana, siempre y cuando no rompas las reglas. Alexs_Steel está en todo su derecho de no ayudarte. Acá ayudan si quieren, a mi generalmente varias personas ignoran mis posts, y luego me mandan PM's insultando ( me encantaría saber por qué pero boe) y no me pongo a llorar. Si no nos das el code nuevo no podemos ayudarte. Link to comment
Alexs Posted May 19, 2014 Share Posted May 19, 2014 · Hidden Hidden No da ningun debug cuando logueas? Alex steel ignora el post, y nadie responde, buena. Ahora tambien da este error desde que hice unas correcciones WARNING: vD\server.lua:18: Bad argument @ 'getPlayerName' [Expected element at argument 1, got nil] nombrepll = getPlayerName(source) ¿Como defines 'source'? Link to comment
UserToDelete Posted May 20, 2014 Author Share Posted May 20, 2014 No da ningun debug cuando logueas? Alex steel ignora el post, y nadie responde, buena. Ahora tambien da este error desde que hice unas correcciones WARNING: vD\server.lua:18: Bad argument @ 'getPlayerName' [Expected element at argument 1, got nil] nombrepll = getPlayerName(source) ¿Como defines 'source'? como este ejemplo: --ejemplo combrepll = getPlayerName(source) function dsadsadsda (source,commandName,KmsSeE) setPlayerMoney(source,KmsSeE) outputChatBox("texto"..nombrepll,root,0,0,0,true) end addCommandHandler("kms",dsadsadsda Antes lo tenia así definido y no saltaba ningun problema en el script, ahora por extraña circunstancia, salta error Link to comment
Alexs Posted May 20, 2014 Share Posted May 20, 2014 · Hidden Hidden La variable 'source' aun no esta definida en ningún lado. Link to comment
UserToDelete Posted May 23, 2014 Author Share Posted May 23, 2014 La variable 'source' aun no esta definida en ningún lado. Nunca necesité definir source source = --(?) Siempre puse ese tipo de scripts y funcionaron a la perfeccion Agradeceria que me explicaras como se define source EDITO: Hasta el momento pensé que poner getPlayername(source) es source = thePlayer o algo por el estilo Link to comment
Alexs Posted May 23, 2014 Share Posted May 23, 2014 · Hidden Hidden La variable 'source' es en su mayoría definida por el evento, en tu caso no hay ningún evento, así que 'source' no posee definición. Link to comment
Sensacion Posted May 23, 2014 Share Posted May 23, 2014 · Hidden Hidden Revisa que tengas estas líneas addEventHandler("onPlayerLogout",root,SaveLogout) addEventHandler("onPlayerQuit",root,SaveQuit) addEventHandler("onPlayerLogin",root,SaveJoin) Link to comment
UserToDelete Posted May 28, 2014 Author Share Posted May 28, 2014 Revisa que tengas estas líneas addEventHandler("onPlayerLogout",root,SaveLogout) addEventHandler("onPlayerQuit",root,SaveQuit) addEventHandler("onPlayerLogin",root,SaveJoin) function SaveLogout () local account = getPlayerAccount(source) if account then local playermoney = getPlayerMoney(source) setAccountData (account,"vd.money",tostring(playermoney)) outputChatBox("#00FF00[sAVE SYSTEM] Saved data #FFFFFF'"..nombrepll.."'#00FF00 for your account",source,0,255,0,true) end end function SaveQuit () local account = getPlayerAccount(source) if account then local playermoney = getPlayerMoney(source) setAccountData (account,"vd.money",tostring(playermoney)) end end function SaveJoin (_,account) local account = getPlayerAccount(source) if account then local playermoney = getAccountData(account,"vd.money") outputChatBox("#00FF00[sAVE SYSTEM] Loaded data #FFFFFF"..nombrepll.."#00FF00 for your account",source,0,255,0,true) setPlayerMoney(source,tostring(playermoney)) end end addEventHandler("onPlayerLogout",root,SaveLogout) addEventHandler("onPlayerQuit",root,SaveQuit) addEventHandler("onPlayerLogin",root,SaveJoin) No guarda el dinero, pero si lo carga Link to comment
Sensacion Posted May 28, 2014 Share Posted May 28, 2014 · Hidden Hidden te falta definir "nombrepll" Link to comment
UserToDelete Posted May 29, 2014 Author Share Posted May 29, 2014 te falta definir "nombrepll" está definido, pero sigo con el problema de que no guarda el dinero --[[ SAVE SYSTEM ]] function SaveLogout () local nombrepll = getPlayerName(source) local account = getPlayerAccount(source) if account then local playermoney = getPlayerMoney(source) setAccountData (account,"vd.money",tostring(playermoney)) outputChatBox("#00FF00[sAVE SYSTEM] Saved data #FFFFFF'"..nombrepll.."'#00FF00 for your account",source,0,255,0,true) end end function SaveQuit () local nombrepll = getPlayerName(source) local account = getPlayerAccount(source) if account then local playermoney = getPlayerMoney(source) setAccountData (account,"vd.money",tostring(playermoney)) end end function SaveJoin (_,account) local nombrepll = getPlayerName(source) local account = getPlayerAccount(source) if account then local playermoney = getAccountData(account,"vd.money") outputChatBox("#00FF00[sAVE SYSTEM] Loaded data #FFFFFF"..nombrepll.."#00FF00 for your account",source,0,255,0,true) setPlayerMoney(source,tostring(playermoney)) end end addEventHandler("onPlayerLogout",root,SaveLogout) addEventHandler("onPlayerQuit",root,SaveQuit) addEventHandler("onPlayerLogin",root,SaveJoin) --exquisitos con el local Link to comment
Alexs Posted May 29, 2014 Share Posted May 29, 2014 · Hidden Hidden Si el jugador hace se des-identifica (logout), entonces ya no esta vinculado a una cuenta. Link to comment
UserToDelete Posted May 30, 2014 Author Share Posted May 30, 2014 Si el jugador hace se des-identifica (logout), entonces ya no esta vinculado a una cuenta. Ya veo por donde tiras, sugieres un Timer para la funcion de saveQuit y borrar saveLogout?? Link to comment
Alexs Posted May 30, 2014 Share Posted May 30, 2014 · Hidden Hidden No, nunca te sugeriría un timer. Link to comment
UserToDelete Posted May 30, 2014 Author Share Posted May 30, 2014 No, nunca te sugeriría un timer. Creo que me dijiste que el script no guarda el dinero porque al des-loggearse pierde la cuenta y por tanto el script no puede obtener el nombre, Ahora ya es el problema, Pero no hay un evento para esto, es decir, si no sirve "onPlayerQuit" porque pierde el nombre de la cuenta, y no sirve "onPlayerLogout" porque tambien la pierde, como puedo hacer? Edit: onAccountDataChange? Link to comment
Recommended Posts