DonOmar Posted July 20, 2017 Share Posted July 20, 2017 (edited) Hello there i used Account and Element data to make a weapon save system and works fine , but if someone dead and disconnected from the server His weapons will be lost. Here is the code : function onPlayerQuitWeaponSave() local playeraccount = getPlayerAccount(source) if (playeraccount) and not isGuestAccount(playeraccount) then if getElementData(source,"22") == false then local ca = 3 setAccountData(playeraccount, "cadd", ca) else if getElementData(source,"22") == true then local caa = 2 setAccountData(playeraccount, "cadd", caa) end end if getElementData(source,"24") == false then local da = 3 setAccountData ( playeraccount, "dadd", da ) else if getElementData(source,"24") == true then local daa = 2 setAccountData ( playeraccount, "dadd", daa ) end end if getElementData(source,"23") == false then local sila = 3 setAccountData ( playeraccount, "siladd", sila ) else if getElementData(source,"23") == true then local silaa = 2 setAccountData ( playeraccount, "siladd", silaa ) end end if getElementData(source,"25") == false then local sha = 3 setAccountData ( playeraccount, "shadd", sha ) else if getElementData(source,"25") == true then local shaa = 2 setAccountData ( playeraccount, "shadd", shaa ) end end if getElementData(source,"26") == false then local swa = 3 setAccountData ( playeraccount, "swadd", swa ) else if getElementData(source,"26") == true then local swaa = 2 setAccountData ( playeraccount, "swadd", swaa ) end end if getElementData(source,"27") == false then local spa = 3 setAccountData ( playeraccount, "spadd", spa ) else if getElementData(source,"27") == true then local spaa = 2 setAccountData ( playeraccount, "spadd", spaa ) end end if getElementData(source,"30") == false then local aka = 3 setAccountData ( playeraccount, "akadd", aka ) else if getElementData(source,"30") == true then local akaa = 2 setAccountData ( playeraccount, "akadd", akaa ) end end if getElementData(source,"31") == false then local ma = 3 setAccountData ( playeraccount, "madd", ma ) else if getElementData(source,"31") == true then local maa = 2 setAccountData ( playeraccount, "madd", maa ) end end if getElementData(source,"28") == false then local ua = 3 setAccountData ( playeraccount, "uadd", ua ) else if getElementData(source,"28") == true then local uaa = 2 setAccountData ( playeraccount, "uadd", uaa ) end end if getElementData(source,"32") == false then local ta = 3 setAccountData ( playeraccount, "tadd", ta ) else if getElementData(source,"32") == true then local taa = 2 setAccountData ( playeraccount, "tadd", taa ) end end if getElementData(source,"29") == false then local mpa = 3 setAccountData ( playeraccount, "mpadd", mpa ) else if getElementData(source,"29") == true then local mpaa = 2 setAccountData ( playeraccount, "mpadd", mpaa ) end end if getElementData(source,"33") == false then local ra = 3 setAccountData ( playeraccount, "radd", ra ) else if getElementData(source,"33") == true then local raa = 2 setAccountData ( playeraccount, "radd", raa ) end end if getElementData(source,"34") == false then local sna = 3 setAccountData ( playeraccount, "snadd", sna ) else if getElementData(source,"34") == true then local snaa = 2 setAccountData ( playeraccount, "snadd", snaa ) end end if getElementData(source,"38") == false then local mia = 3 setAccountData ( playeraccount, "miadd", mia ) else if getElementData(source,"38") == true then local miaa = 2 setAccountData ( playeraccount, "miadd", miaa ) end end end end addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuitWeaponSave) function onPlayerLoginWeaponSave(_, playeraccount) if ( playeraccount ) then local ca = getAccountData ( playeraccount, "cadd" ) if (ca == 2 ) then setElementData (source, "22", true) end local da = getAccountData ( playeraccount, "dadd" ) if (da == 2 ) then setElementData (source, "24", true) end local sila = getAccountData ( playeraccount, "siladd" ) if (sila == 2 ) then setElementData (source, "23", true) end local sha = getAccountData ( playeraccount, "shadd" ) if (sha == 2 ) then setElementData (source, "25", true) end local swa = getAccountData ( playeraccount, "swadd" ) if (swa == 2 ) then setElementData (source, "26", true) end local spa = getAccountData ( playeraccount, "spadd" ) if (spa == 2 ) then setElementData (source, "27", true) end local aka = getAccountData ( playeraccount, "akadd" ) if (aka == 2 ) then setElementData (source, "30", true) end local ma = getAccountData ( playeraccount, "madd" ) if (ma == 2 ) then setElementData (source, "31", true) end local ua = getAccountData ( playeraccount, "uadd" ) if (ua == 2 ) then setElementData (source, "28", true) end local ta = getAccountData ( playeraccount, "tadd" ) if (ta == 2 ) then setElementData (source, "32", true) end local mpa = getAccountData ( playeraccount, "mpadd" ) if (mpa == 2 ) then setElementData (source, "29", true) end local ra = getAccountData ( playeraccount, "radd" ) if (ra == 2 ) then setElementData (source, "33", true) end local sna = getAccountData ( playeraccount, "snadd" ) if (sna == 2 ) then setElementData (source, "34", true) end local mia = getAccountData ( playeraccount, "miadd" ) if (mia == 2 ) then setElementData (source, "38", true) end end end addEventHandler("onPlayerLogin", getRootElement(), onPlayerLoginWeaponSave) i tried to use addEventHandler("onPlayerWasted", getRootElement(), onPlayerQuitWeaponSave) but it didnt work with me . Edited July 20, 2017 by DonOmar Link to comment
DonOmar Posted July 20, 2017 Author Share Posted July 20, 2017 12 minutes ago, Killer Project said: test it i did. Link to comment
AHMED MOSTAFA Posted July 20, 2017 Share Posted July 20, 2017 Just now, DonOmar said: i did. so ? Link to comment
DonOmar Posted July 20, 2017 Author Share Posted July 20, 2017 it doesn't work. also i wanna save fix my save system. Link to comment
AHMED MOSTAFA Posted July 20, 2017 Share Posted July 20, 2017 Just now, DonOmar said: it doesn't work. also i wanna save fix my save system. function onPlayerQuitWeaponSave() local playeraccount = getPlayerAccount(source) if (playeraccount) and not isGuestAccount(playeraccount) then if getElementData(source,"22") == false then local ca = 3 setAccountData(playeraccount, "cadd", ca) else if getElementData(source,"22") == true then local caa = 2 setAccountData(playeraccount, "cadd", caa) end end if getElementData(source,"24") == false then local da = 3 setAccountData ( playeraccount, "dadd", da ) else if getElementData(source,"24") == true then local daa = 2 setAccountData ( playeraccount, "dadd", daa ) end end if getElementData(source,"23") == false then local sila = 3 setAccountData ( playeraccount, "siladd", sila ) else if getElementData(source,"23") == true then local silaa = 2 setAccountData ( playeraccount, "siladd", silaa ) end end if getElementData(source,"25") == false then local sha = 3 setAccountData ( playeraccount, "shadd", sha ) else if getElementData(source,"25") == true then local shaa = 2 setAccountData ( playeraccount, "shadd", shaa ) end end if getElementData(source,"26") == false then local swa = 3 setAccountData ( playeraccount, "swadd", swa ) else if getElementData(source,"26") == true then local swaa = 2 setAccountData ( playeraccount, "swadd", swaa ) end end if getElementData(source,"27") == false then local spa = 3 setAccountData ( playeraccount, "spadd", spa ) else if getElementData(source,"27") == true then local spaa = 2 setAccountData ( playeraccount, "spadd", spaa ) end end if getElementData(source,"30") == false then local aka = 3 setAccountData ( playeraccount, "akadd", aka ) else if getElementData(source,"30") == true then local akaa = 2 setAccountData ( playeraccount, "akadd", akaa ) end end if getElementData(source,"31") == false then local ma = 3 setAccountData ( playeraccount, "madd", ma ) else if getElementData(source,"31") == true then local maa = 2 setAccountData ( playeraccount, "madd", maa ) end end if getElementData(source,"28") == false then local ua = 3 setAccountData ( playeraccount, "uadd", ua ) else if getElementData(source,"28") == true then local uaa = 2 setAccountData ( playeraccount, "uadd", uaa ) end end if getElementData(source,"32") == false then local ta = 3 setAccountData ( playeraccount, "tadd", ta ) else if getElementData(source,"32") == true then local taa = 2 setAccountData ( playeraccount, "tadd", taa ) end end if getElementData(source,"29") == false then local mpa = 3 setAccountData ( playeraccount, "mpadd", mpa ) else if getElementData(source,"29") == true then local mpaa = 2 setAccountData ( playeraccount, "mpadd", mpaa ) end end if getElementData(source,"33") == false then local ra = 3 setAccountData ( playeraccount, "radd", ra ) else if getElementData(source,"33") == true then local raa = 2 setAccountData ( playeraccount, "radd", raa ) end end if getElementData(source,"34") == false then local sna = 3 setAccountData ( playeraccount, "snadd", sna ) else if getElementData(source,"34") == true then local snaa = 2 setAccountData ( playeraccount, "snadd", snaa ) end end if getElementData(source,"38") == false then local mia = 3 setAccountData ( playeraccount, "miadd", mia ) else if getElementData(source,"38") == true then local miaa = 2 setAccountData ( playeraccount, "miadd", miaa ) end end end end addEventHandler("onPlayerQuit", root, onPlayerQuitWeaponSave) addEventHandler("onPlayerWasted", root, onPlayerQuitWeaponSave) function onPlayerLoginWeaponSave(_, playeraccount) if ( playeraccount ) then local ca = getAccountData ( playeraccount, "cadd" ) if (ca == 2 ) then setElementData (source, "22", true) end local da = getAccountData ( playeraccount, "dadd" ) if (da == 2 ) then setElementData (source, "24", true) end local sila = getAccountData ( playeraccount, "siladd" ) if (sila == 2 ) then setElementData (source, "23", true) end local sha = getAccountData ( playeraccount, "shadd" ) if (sha == 2 ) then setElementData (source, "25", true) end local swa = getAccountData ( playeraccount, "swadd" ) if (swa == 2 ) then setElementData (source, "26", true) end local spa = getAccountData ( playeraccount, "spadd" ) if (spa == 2 ) then setElementData (source, "27", true) end local aka = getAccountData ( playeraccount, "akadd" ) if (aka == 2 ) then setElementData (source, "30", true) end local ma = getAccountData ( playeraccount, "madd" ) if (ma == 2 ) then setElementData (source, "31", true) end local ua = getAccountData ( playeraccount, "uadd" ) if (ua == 2 ) then setElementData (source, "28", true) end local ta = getAccountData ( playeraccount, "tadd" ) if (ta == 2 ) then setElementData (source, "32", true) end local mpa = getAccountData ( playeraccount, "mpadd" ) if (mpa == 2 ) then setElementData (source, "29", true) end local ra = getAccountData ( playeraccount, "radd" ) if (ra == 2 ) then setElementData (source, "33", true) end local sna = getAccountData ( playeraccount, "snadd" ) if (sna == 2 ) then setElementData (source, "34", true) end local mia = getAccountData ( playeraccount, "miadd" ) if (mia == 2 ) then setElementData (source, "38", true) end end end addEventHandler("onPlayerLogin", root, onPlayerLoginWeaponSave) addEventHandler("OnPlayerSpawn", root, onPlayerLoginWeaponSave) Link to comment
DNL291 Posted July 20, 2017 Share Posted July 20, 2017 (edited) Try this: function saveWeapons( p, toAcc ) local weapons = {} for i=1,12 do weapons[i] = { getPedWeapon( p, i ), getPedTotalAmmo( p, i ) } end if toAcc then return setAccountData( getPlayerAccount(p), "playerWeapons", toJSON( weapons ) ) end setElementData( p, "playerWeapons", toJSON( weapons ), false ) end function loadWeapons( p, fromAcc ) if fromAcc then local weps = getAccountData( getPlayerAccount(p), "playerWeapons" ) if weps then return setElementData( p, "playerWeapons", weps, false ) end else local weps = getElementData( p, "playerWeapons" ) if weps then for weapon, ammo in ipairs( fromJSON(weps) ) do giveWeapon( p, weapon, ammo, true ) end end end end addEventHandler( "onPlayerWasted", root, function() saveWeapons( source ) end ) addEventHandler( "onPlayerQuit", root, function() saveWeapons( source, true ) end ) addEventHandler( "onPlayerLogin", root, function() loadWeapons( source, true ) end ) addEventHandler( "onPlayerSpawn", root, function() loadWeapons( source ) end ) Edit: 6 hours ago, DonOmar said: and works fine , but if someone dead and disconnected from the server His weapons will be lost. This is kind of controversial, actually nothing is working then lol. Edited July 20, 2017 by DNL291 Link to comment
NeXuS™ Posted July 22, 2017 Share Posted July 22, 2017 Jesus christ, that first code is killing my eyes. @DNL291, did you test your script? Link to comment
Gabriele01 Posted July 22, 2017 Share Posted July 22, 2017 https://community.multitheftauto.com/index.php?p=resources&s=details&id=3940 You need that I think. Link to comment
DNL291 Posted July 23, 2017 Share Posted July 23, 2017 (edited) On 21/07/2017 at 18:24, DonOmar said: @DNL291 Didn't Work. It had an error at line 18, I looped the table the wrong way. I tested my code and now it works, try this: function saveWeapons( p, toAcc ) local weapons = {} for i=1,12 do weapons[i] = { getPedWeapon( p, i ), getPedTotalAmmo( p, i ) } end if toAcc then return setAccountData( getPlayerAccount(p), "playerWeapons", toJSON( weapons ) ) end setElementData( p, "playerWeapons", toJSON( weapons ), false ) end function loadWeapons( p, fromAcc ) if fromAcc then local weps = getAccountData( getPlayerAccount(p), "playerWeapons" ) if weps then return setElementData( p, "playerWeapons", weps, false ) end else local weps = getElementData( p, "playerWeapons" ) if weps then for i, v in ipairs( fromJSON(weps) ) do giveWeapon( p, v[1], v[2], true ) end end end end addEventHandler( "onPlayerWasted", root, function() saveWeapons( source ) end ) addEventHandler( "onPlayerQuit", root, function() saveWeapons( source, true ) end ) addEventHandler( "onPlayerLogin", root, function() loadWeapons( source, true ) end ) addEventHandler( "onPlayerSpawn", root, function() loadWeapons( source ) end ) Always remember to use /debugscript 3 when testing any script. Edited July 23, 2017 by DNL291 Link to comment
DonOmar Posted July 23, 2017 Author Share Posted July 23, 2017 11 hours ago, DNL291 said: It had an error at line 18, I looped the table the wrong way. I tested my code and now it works, try this: function saveWeapons( p, toAcc ) local weapons = {} for i=1,12 do weapons[i] = { getPedWeapon( p, i ), getPedTotalAmmo( p, i ) } end if toAcc then return setAccountData( getPlayerAccount(p), "playerWeapons", toJSON( weapons ) ) end setElementData( p, "playerWeapons", toJSON( weapons ), false )endfunction loadWeapons( p, fromAcc ) if fromAcc then local weps = getAccountData( getPlayerAccount(p), "playerWeapons" ) if weps then return setElementData( p, "playerWeapons", weps, false ) end else local weps = getElementData( p, "playerWeapons" ) if weps then for i, v in ipairs( fromJSON(weps) ) do giveWeapon( p, v[1], v[2], true ) end end endendaddEventHandler( "onPlayerWasted", root, function() saveWeapons( source ) end )addEventHandler( "onPlayerQuit", root, function() saveWeapons( source, true ) end )addEventHandler( "onPlayerLogin", root, function() loadWeapons( source, true ) end )addEventHandler( "onPlayerSpawn", root, function() loadWeapons( source ) end ) Always remember to use /debugscript 3 when testing any script. When i reconnected while dead i lost my weapons . Link to comment
itHyperoX Posted July 23, 2017 Share Posted July 23, 2017 https://community.multitheftauto.com/index.php?p=resources&s=details&id=10588 Tested, work Link to comment
DonOmar Posted July 24, 2017 Author Share Posted July 24, 2017 Thanks @TheMOG and Everyone tried to help me. i used SQL saving better . 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