Baseplate Posted November 5, 2013 Share Posted November 5, 2013 function saveThings(thePreviousAccount) x, y, z = getElementPosition(source) setTimer(function(source) dbExec(connection, "UPDATE players SET skin=?, x=?, y=?, z=?, int=?, dim=?, wanted=?, money=?, occupation=?, team=?, nick=?, wp=? WHERE account=?", tostring(getElementModel(source)), tostring(x), tostring(y), tostring(z), tostring(getElementInterior(source)), tostring(getElementDimension(source)), tostring(getPlayerWantedLevel(source)), tostring(getPlayerMoney(source)), tostring(getElementData(source, "Occupation")), tostring(getTeamName(getPlayerTeam(source))), tostring(getPlayerName(source)), tostring(getElementData(source, "wantedPoints")), thePreviousAccount) dbExec(connection, "UPDATE weapons SET playerWeaponAmmo0=?, playerWeaponAmmo1=?, playerWeaponAmmo2=?, playerWeaponAmmo3=?, playerWeaponAmmo4=?, playerWeaponAmmo5=?, playerWeaponAmmo6=?, playerWeaponAmmo7=?, playerWeaponAmmo8=?, playerWeaponAmmo9=?, playerWeaponAmmo10=?, playerWeaponAmmo11=?, playerWeaponAmmo10=?, pistolstat=?, silencedstat=?, desertstat=?, shotgunstat=?, sawnoffstat=?, spazstat=?, microstat=?, mp5stat=?, akstat=?, m4stat=?, sniperstat=? WHERE account=?", getPedTotalAmmo(source, 0), getPedTotalAmmo(source, 1), getPedTotalAmmo(source, 2), getPedTotalAmmo(source, 3), getPedTotalAmmo(source, 4), getPedTotalAmmo(source, 5), getPedTotalAmmo(source, 6), getPedTotalAmmo(source, 7), getPedTotalAmmo(source, 8) , getPedTotalAmmo(source, 9), getPedTotalAmmo(source, 10), getPedTotalAmmo(source, 11), getPedTotalAmmo(source, 12), getPedStat(source,69), getPedStat(source,70), getPedStat(source,71), getPedStat(source,72), getPedStat(source,73), getPedStat(source,74), getPedStat(source,75), getPedStat(source,76), getPedStat(source,77), getPedStat(source,78), getPedStat(source,79), thePreviousAccount) end, 2000, 1) end addEventHandler("onPlayerLogout", root, saveThings) Returns bad arguements when I use dbExec. Link to comment
Ab-47 Posted November 5, 2013 Share Posted November 5, 2013 What are the bad arguments? From your debug. Link to comment
Spajk Posted November 5, 2013 Share Posted November 5, 2013 The only problem that it could be is that "connection" is bad. Link to comment
Baseplate Posted November 5, 2013 Author Share Posted November 5, 2013 connection is already defined at the start of the script, and I didn't copy the whole script. Debug errors. [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getElementModel' [Expected element at argument 1, got nil] [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getElementInterior' [Expected element at argument 1, got nil] [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getElementDimension' [Expected element at argument 1, got nil] [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getPlayerWantedLevel' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getPlayerMoney' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getElementData' [Expected element at argument 1, got nil] [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getPlayerTeam' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getTeamName' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getPlayerName' [Expected element at argument 1, got nil] [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:93: Bad argument @ 'getElementData' [Expected element at argument 1, got nil] [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedTotalAmmo' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' [2013-11-05 10:31:43] WARNING: SANGsave\s.lua:94: Bad argument @ 'getPedStat' Link to comment
Renkon Posted November 5, 2013 Share Posted November 5, 2013 When using the timer it seems like source isn't correct Why are you using a timer btw? Link to comment
Baseplate Posted November 5, 2013 Author Share Posted November 5, 2013 Cause on logout, it doesn't update, tried to use a timer so probably it gets some time to save. Link to comment
Ab-47 Posted November 5, 2013 Share Posted November 5, 2013 Try using localPlayer instead of source or define player and use player. Link to comment
Baseplate Posted November 5, 2013 Author Share Posted November 5, 2013 lol, do you actually realize dbExec is server sided only??... Link to comment
Spajk Posted November 5, 2013 Share Posted November 5, 2013 On the end of the timer add ", source" so it goes like: " end, 2000, 1, source)" to pass the source to the timer function. But, there might be another problem. The logout event is mostly triggerd when player quits, right? If you delay that for a few seconds, I think that the player element will already be destroyed and it would probably say something like "bad pointer". Link to comment
Baseplate Posted November 5, 2013 Author Share Posted November 5, 2013 No errors, but still doesn't save.. Link to comment
Spajk Posted November 5, 2013 Share Posted November 5, 2013 You should do this without the timer, or if you cant do it like that, then you should collect all the data about the player before the timer and pass them to the timer function. BTW, you are doing the UPDATE statement, is there some data already in the table with the account or not? Link to comment
Baseplate Posted November 5, 2013 Author Share Posted November 5, 2013 Yeah, the script inserts some data if there is none. Link to comment
TAPL Posted November 5, 2013 Share Posted November 5, 2013 thePreviousAccount is an account not string (account name), so you can't use it this way you need to get the account name also you might need to pass it to the timer just like the source. Link to comment
Spajk Posted November 5, 2013 Share Posted November 5, 2013 But, wont it make errors if player quits. ( Logout is triggered, but if you delay it for 2 seconds, it would be too late, as the player element will be destroyed, right? ) Link to comment
TAPL Posted November 5, 2013 Share Posted November 5, 2013 Cause on logout, it doesn't update, tried to use a timer so probably it gets some time to save. Why he even need a timer, it does not save because it was wrong. function saveThings(thePreviousAccount) local x, y, z = getElementPosition(source) local accountName = getAccountName(thePreviousAccount) dbExec(connection, "UPDATE players SET skin=?, x=?, y=?, z=?, int=?, dim=?, wanted=?, money=?, occupation=?, team=?, nick=?, wp=? WHERE account=?", tostring(getElementModel(source)), tostring(x), tostring(y), tostring(z), tostring(getElementInterior(source)), tostring(getElementDimension(source)), tostring(getPlayerWantedLevel(source)), tostring(getPlayerMoney(source)), tostring(getElementData(source, "Occupation")), tostring(getTeamName(getPlayerTeam(source))), tostring(getPlayerName(source)), tostring(getElementData(source, "wantedPoints")), accountName) dbExec(connection, "UPDATE weapons SET playerWeaponAmmo0=?, playerWeaponAmmo1=?, playerWeaponAmmo2=?, playerWeaponAmmo3=?, playerWeaponAmmo4=?, playerWeaponAmmo5=?, playerWeaponAmmo6=?, playerWeaponAmmo7=?, playerWeaponAmmo8=?, playerWeaponAmmo9=?, playerWeaponAmmo10=?, playerWeaponAmmo11=?, playerWeaponAmmo10=?, pistolstat=?, silencedstat=?, desertstat=?, shotgunstat=?, sawnoffstat=?, spazstat=?, microstat=?, mp5stat=?, akstat=?, m4stat=?, sniperstat=? WHERE account=?", getPedTotalAmmo(source, 0), getPedTotalAmmo(source, 1), getPedTotalAmmo(source, 2), getPedTotalAmmo(source, 3), getPedTotalAmmo(source, 4), getPedTotalAmmo(source, 5), getPedTotalAmmo(source, 6), getPedTotalAmmo(source, 7), getPedTotalAmmo(source, 8 ) , getPedTotalAmmo(source, 9), getPedTotalAmmo(source, 10), getPedTotalAmmo(source, 11), getPedTotalAmmo(source, 12), getPedStat(source,69), getPedStat(source,70), getPedStat(source,71), getPedStat(source,72), getPedStat(source,73), getPedStat(source,74), getPedStat(source,75), getPedStat(source,76), getPedStat(source,77), getPedStat(source,78), getPedStat(source,79), accountName) end addEventHandler("onPlayerLogout", root, saveThings) Link to comment
Baseplate Posted November 6, 2013 Author Share Posted November 6, 2013 I've been trying to find a solution since a month, finally it works, thanks everyone. Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now