TheHead Posted January 27, 2020 Share Posted January 27, 2020 It's save system but I got a problem in the code that keeps sending me this line in debugscript . " Bad arguement @ 'getPlayerAccount' [Expected element at arguement 1 , got nil] function onPlayerQuit() local playeraccount = getPlayerAccount(source) if (playeraccount) then local x,y,z = getElementPosition (source) local HijackExp = getElementData (source, "hiExp" ) local health = getElementHealth (source) local armor = getPedArmor (source) local storeRobExp = getElementData (source, "srExp" ) local CriminalExp = getElementData (source, "CriminalExp" ) local married = getElementData (source, "married" ) local CopKillingExp = getElementData (source, "cExp" ) local walkstyle = getAccountData( source, "walks") local job = exports.CISbusiness:getPlayerJob(source) local w = getElementData(source, "w") local policearrests = getElementData(source, "policeArrests") local arrestpoints = getElementData(source, "arrestPoints") local arrestkills = getElementData(source, "arrestsKills") local sweepam = getElementData(source, "sweeps") local farmam = getElementData(source, "farmer_bails") local taxiam = getElementData(source, "taxi_dropoff") local limoam = getElementData(source, "limo_dropoff") local busam = getElementData(source, "busdriver_progress") local fisham = getElementData(source, "fish_sales") local wasteam = getElementData(source, "rubbish_collections") local pizzaam = getElementData(source, "delivered_pizzas") local ironam = getElementData(source, "iron") local ironlifeam = getElementData(source, "lifetimeiron") local turftakenam = getElementData(source, "turfTaken") local bagtakenam = getElementData(source, "bagtaken") local oil = getElementData(source, "oil") local EX = getElementData(source, "explosive") local EP = getElementData(source, "engineparts") local Ch = getElementData(source, "chemicals") local gold = getElementData(source, "gold") local pin = getElementData(source, "ATMPW") local r,g,b = getPlayerNametagColor(source) setAccountData (playeraccount, "pin", pin) setAccountData (playeraccount, "TagR", r) setAccountData (playeraccount, "TagG", g) setAccountData (playeraccount, "TagB", b) setAccountData (playeraccount, "chemicals", Ch) setAccountData (playeraccount, "gold", gold) setAccountData (playeraccount, "EX", EX) setAccountData (playeraccount, "engineparts", EP) setAccountData (playeraccount, "cis.job", job) setAccountData (playeraccount, "health", health) setAccountData (playeraccount, "armor", armor) setAccountData (playeraccount, "hiExp", HijackExp) setAccountData (playeraccount, "CriminalExp", CriminalExp) setAccountData (playeraccount, "policeArrests", policearrests) setAccountData (playeraccount, "arrestPoints", arrestpoints) setAccountData (playeraccount, "arrestsKills", arrestkills) setAccountData (playeraccount, "married", married) setAccountData (playeraccount, "cExp", CopKillingExp) setAccountData (playeraccount, "srExp", storeRobExp) setAccountData (playeraccount, "w", w) setAccountData (playeraccount, "sweeps", sweepam) setAccountData (playeraccount, "farmer_bails", farmam) setAccountData (playeraccount, "taxi_dropoff", taxiam) setAccountData (playeraccount, "limo_dropoff", limoam) setAccountData (playeraccount, "busdriver_progress", busam) setAccountData (playeraccount, "fish_sales", fisham) setAccountData (playeraccount, "rubbish_collections", wasteam) setAccountData (playeraccount, "delivered_pizzas", pizzaam) setAccountData (playeraccount, "iron", ironam) setAccountData (playeraccount, "lifetimeiron", ironlifeam) setAccountData (playeraccount, "bagtaken", bagtakenam) setAccountData (playeraccount, "turfTaken", turftakenam) setAccountData (playeraccount, "oil", oil) setAccountData (playeraccount, "s.HandMoney", getPlayerMoney ( source ) ) setAccountData (playeraccount, "s.skin", tostring (getPedSkin (source))) setAccountData (playeraccount, "s.x", x) setAccountData (playeraccount, "s.y", y) setAccountData (playeraccount, "s.z", z) setAccountData (playeraccount, "s.int", getElementInterior (source)) setAccountData (playeraccount, "s.dim", getElementDimension (source)) setAccountData (playeraccount, "s.rot", getPedRotation (source)) setAccountData (playeraccount, "s.weap0", getPedWeapon ( source, 0 )) setAccountData (playeraccount, "s.weap1", getPedWeapon ( source, 1 )) setAccountData (playeraccount, "s.weap2", getPedWeapon ( source, 2 )) setAccountData (playeraccount, "s.ammo2", getPedTotalAmmo ( source, 2 )) setAccountData (playeraccount, "s.weap3", getPedWeapon ( source, 3 )) setAccountData (playeraccount, "s.ammo3", getPedTotalAmmo ( source, 3 )) setAccountData (playeraccount, "s.weap4", getPedWeapon ( source, 4 )) setAccountData (playeraccount, "s.ammo4", getPedTotalAmmo ( source, 4 )) setAccountData (playeraccount, "s.weap5", getPedWeapon ( source, 5 )) setAccountData (playeraccount, "s.ammo5", getPedTotalAmmo ( source, 5 )) setAccountData (playeraccount, "s.weap6", getPedWeapon ( source, 6 )) setAccountData (playeraccount, "s.ammo6", getPedTotalAmmo ( source, 6 )) setAccountData (playeraccount, "s.weap7", getPedWeapon ( source, 7 )) setAccountData (playeraccount, "s.ammo7", getPedTotalAmmo ( source, 7 )) setAccountData (playeraccount, "s.weap8", getPedWeapon ( source, 8 )) setAccountData (playeraccount, "s.ammo8", getPedTotalAmmo ( source, 8 )) setAccountData (playeraccount, "s.weap9", getPedWeapon ( source, 9 )) setAccountData (playeraccount, "s.ammo9", getPedTotalAmmo ( source, 9 )) setAccountData (playeraccount, "s.weap10", getPedWeapon ( source, 10 )) setAccountData (playeraccount, "s.weap11", getPedWeapon ( source, 11 )) setAccountData (playeraccount, "s.weap12", getPedWeapon ( source, 12 )) end end addEventHandler("onPlayerLogout", getRootElement(), onPlayerQuit) addEventHandler("onPlayerQuit", getRootElement(), onPlayerQuit) setTimer(onPlayerQuit, 3000, 0) Link to comment
Moderators Patrick Posted January 27, 2020 Moderators Share Posted January 27, 2020 (edited) The source of the events is the player that left the server or logout. So, if onPlayerQuit FUNCTION triggered by onPlayerLogout or onPlayerQuit EVENT, the source exists and it is the player's element. BUT if you call the onPlayerQuit FUNCTION with the timer, the source doesn't exists. Solutions: 1) Remove the setTimer. 2) Or modify the script, like this: function savePlayerAccount() -- rename the function, because it's less misleading local playeraccount = getPlayerAccount(source) if (playeraccount) then local x,y,z = getElementPosition (source) local HijackExp = getElementData (source, "hiExp" ) local health = getElementHealth (source) local armor = getPedArmor (source) local storeRobExp = getElementData (source, "srExp" ) local CriminalExp = getElementData (source, "CriminalExp" ) local married = getElementData (source, "married" ) local CopKillingExp = getElementData (source, "cExp" ) local walkstyle = getAccountData( source, "walks") local job = exports.CISbusiness:getPlayerJob(source) local w = getElementData(source, "w") local policearrests = getElementData(source, "policeArrests") local arrestpoints = getElementData(source, "arrestPoints") local arrestkills = getElementData(source, "arrestsKills") local sweepam = getElementData(source, "sweeps") local farmam = getElementData(source, "farmer_bails") local taxiam = getElementData(source, "taxi_dropoff") local limoam = getElementData(source, "limo_dropoff") local busam = getElementData(source, "busdriver_progress") local fisham = getElementData(source, "fish_sales") local wasteam = getElementData(source, "rubbish_collections") local pizzaam = getElementData(source, "delivered_pizzas") local ironam = getElementData(source, "iron") local ironlifeam = getElementData(source, "lifetimeiron") local turftakenam = getElementData(source, "turfTaken") local bagtakenam = getElementData(source, "bagtaken") local oil = getElementData(source, "oil") local EX = getElementData(source, "explosive") local EP = getElementData(source, "engineparts") local Ch = getElementData(source, "chemicals") local gold = getElementData(source, "gold") local pin = getElementData(source, "ATMPW") local r,g,b = getPlayerNametagColor(source) setAccountData (playeraccount, "pin", pin) setAccountData (playeraccount, "TagR", r) setAccountData (playeraccount, "TagG", g) setAccountData (playeraccount, "TagB", b) setAccountData (playeraccount, "chemicals", Ch) setAccountData (playeraccount, "gold", gold) setAccountData (playeraccount, "EX", EX) setAccountData (playeraccount, "engineparts", EP) setAccountData (playeraccount, "cis.job", job) setAccountData (playeraccount, "health", health) setAccountData (playeraccount, "armor", armor) setAccountData (playeraccount, "hiExp", HijackExp) setAccountData (playeraccount, "CriminalExp", CriminalExp) setAccountData (playeraccount, "policeArrests", policearrests) setAccountData (playeraccount, "arrestPoints", arrestpoints) setAccountData (playeraccount, "arrestsKills", arrestkills) setAccountData (playeraccount, "married", married) setAccountData (playeraccount, "cExp", CopKillingExp) setAccountData (playeraccount, "srExp", storeRobExp) setAccountData (playeraccount, "w", w) setAccountData (playeraccount, "sweeps", sweepam) setAccountData (playeraccount, "farmer_bails", farmam) setAccountData (playeraccount, "taxi_dropoff", taxiam) setAccountData (playeraccount, "limo_dropoff", limoam) setAccountData (playeraccount, "busdriver_progress", busam) setAccountData (playeraccount, "fish_sales", fisham) setAccountData (playeraccount, "rubbish_collections", wasteam) setAccountData (playeraccount, "delivered_pizzas", pizzaam) setAccountData (playeraccount, "iron", ironam) setAccountData (playeraccount, "lifetimeiron", ironlifeam) setAccountData (playeraccount, "bagtaken", bagtakenam) setAccountData (playeraccount, "turfTaken", turftakenam) setAccountData (playeraccount, "oil", oil) setAccountData (playeraccount, "s.HandMoney", getPlayerMoney ( source ) ) setAccountData (playeraccount, "s.skin", tostring (getPedSkin (source))) setAccountData (playeraccount, "s.x", x) setAccountData (playeraccount, "s.y", y) setAccountData (playeraccount, "s.z", z) setAccountData (playeraccount, "s.int", getElementInterior (source)) setAccountData (playeraccount, "s.dim", getElementDimension (source)) setAccountData (playeraccount, "s.rot", getPedRotation (source)) setAccountData (playeraccount, "s.weap0", getPedWeapon ( source, 0 )) setAccountData (playeraccount, "s.weap1", getPedWeapon ( source, 1 )) setAccountData (playeraccount, "s.weap2", getPedWeapon ( source, 2 )) setAccountData (playeraccount, "s.ammo2", getPedTotalAmmo ( source, 2 )) setAccountData (playeraccount, "s.weap3", getPedWeapon ( source, 3 )) setAccountData (playeraccount, "s.ammo3", getPedTotalAmmo ( source, 3 )) setAccountData (playeraccount, "s.weap4", getPedWeapon ( source, 4 )) setAccountData (playeraccount, "s.ammo4", getPedTotalAmmo ( source, 4 )) setAccountData (playeraccount, "s.weap5", getPedWeapon ( source, 5 )) setAccountData (playeraccount, "s.ammo5", getPedTotalAmmo ( source, 5 )) setAccountData (playeraccount, "s.weap6", getPedWeapon ( source, 6 )) setAccountData (playeraccount, "s.ammo6", getPedTotalAmmo ( source, 6 )) setAccountData (playeraccount, "s.weap7", getPedWeapon ( source, 7 )) setAccountData (playeraccount, "s.ammo7", getPedTotalAmmo ( source, 7 )) setAccountData (playeraccount, "s.weap8", getPedWeapon ( source, 8 )) setAccountData (playeraccount, "s.ammo8", getPedTotalAmmo ( source, 8 )) setAccountData (playeraccount, "s.weap9", getPedWeapon ( source, 9 )) setAccountData (playeraccount, "s.ammo9", getPedTotalAmmo ( source, 9 )) setAccountData (playeraccount, "s.weap10", getPedWeapon ( source, 10 )) setAccountData (playeraccount, "s.weap11", getPedWeapon ( source, 11 )) setAccountData (playeraccount, "s.weap12", getPedWeapon ( source, 12 )) end end addEventHandler("onPlayerLogout", getRootElement(), savePlayerAccount) addEventHandler("onPlayerQuit", getRootElement(), savePlayerAccount) addEvent("savePlayerAccount", true) -- register a custom event what we can call with triggerEvent and pass the source addEventHandler("savePlayerAccount", getRootElement(), savePlayerAccount) setTimer(function() for _, player in ipairs(getElementsByType("player")) do -- loop all online players and call savePlayerAccount function triggerEvent("savePlayerAccount", player) end end, 3000, 0) Edited January 27, 2020 by stPatrick 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