Jump to content

Save system. Help Me


iPanda

Recommended Posts

WARNING!!!

If you use these TWO preserve the system, then it will work!

The first (my):

-- Here you can use tables, so that the script remains more clear ... 
local gamemode = "funmodev2"; 
  
function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) 
    if isGuestAccount (getPlayerAccount (source)) then return; end; 
    -- here I thinks is better hold a data "funmodev2-datasaved" to check if 
    -- data is saved or not. 
    -- check if our data is saved. 
    if getAccountData ( theCurrentAccount, gamemode .. "-datasaved") then 
        -- extract the data. 
        -- you need to convert strings to numbers with tonumber. 
        -- be careful with that,cause getAccountData always return a string. 
        local playerMoney  = tonumber (getAccountData (theCurrentAccount, gamemode .. "-money")) 
        local playerSkin   = tonumber (getAccountData (theCurrentAccount, gamemode .. "-skin")) 
        local playerHealth = tonumber (getAccountData (theCurrentAccount, gamemode .. "-health")) 
        local playerArmor  = tonumber (getAccountData (theCurrentAccount, gamemode .. "-armor")) 
        local R = tonumber (getAccountData (theCurrentAccount, gamemode .. "-R")) 
        local G  = tonumber (getAccountData (theCurrentAccount, gamemode .. "-G")) 
        local B  = tonumber (getAccountData (theCurrentAccount, gamemode .. "-B")) 
        local playerX = tonumber (getAccountData (theCurrentAccount, gamemode .. "-x")) 
        local playerY = tonumber (getAccountData (theCurrentAccount, gamemode .. "-y")) 
        local playerZ = tonumber (getAccountData (theCurrentAccount, gamemode .. "-z")) 
        local playerInt = tonumber (getAccountData (theCurrentAccount, gamemode .. "-int")) 
        local playerDim = tonumber (getAccountData (theCurrentAccount, gamemode .. "-dim")) 
        local playerWanted = tonumber (getAccountData (theCurrentAccount, gamemode .. "-wantedlevel")) 
        local playerWeapon = {}; -- store all player weapons in a table. 
        local playerWeaponAmmo = {}; -- store weapon amnos in a table. 
        -- load all weapons & amno just with few lines. 
        for i=0,12,1 do 
            playerWeapon [i] = tonumber (getAccountData (theCurrentAccount, gamemode .. "-weaponID" .. tostring (i))) 
            playerWeaponAmmo [i] = tonumber (getAccountData (theCurrentAccount, gamemode .. "weaponAmno" .. tostring (i))) 
        end; 
  
        spawnPlayer (source, playerX, playerY, playerZ+1, 0, playerSkin, playerInt, playerDim) 
        setPlayerMoney  (source, playerMoney); 
        -- here just use 1 one timer. why use 3? 
        setTimer ( 
            function (thePlayer, health, armor, wantedLevel) 
                setElementHealth (thePlayer, health) 
                setPedArmor (thePlayer, armor) 
                setPlayerWantedLevel (thePlayer, wantedLevel) 
            end, 
            500, 1, source, playerHealth, playerArmor, playerWanted) 
        -- give weapons to player with just few lines with a loop. 
        for i=1,12,1 do 
            giveWeapon (source, playerWeapon [i], playerWeaponAmmo [i], false) 
        end 
        giveWeapon (source, playerWeapon [0], playerWeaponAmmo [0], true) 
        setCameraTarget (source, source) 
        fadeCamera (source, true, 2.0) 
        setPlayerNametagColor (source, R, G, B) 
    else 
        spawnPlayer ( source, 2005.25, 1544.80, 13.5907, 0, 286, 0, 0, nil) 
        setPlayerMoney ( source, 100) 
        setElementHealth ( source, 100) 
        setPedArmor ( source, 10) 
        giveWeapon ( source, 31, 200) 
    end 
end 
addEventHandler ("onPlayerLogin", getRootElement(), playerLogin) 
  
function onLogout () 
    -- instead of kick the player when trying to logout, just cancel the 
    -- event so that you can avoid him to logout without kick him. (I guess) 
    -- tell him that he cannot logout ... 
    outputChatBox ("You cannot logout!", source, 255, 50, 0) 
end 
  
addEventHandler ("onPlayerLogout", getRootElement(), onLogout) 
  
function onQuit (quitType, reason, responsibleElement) 
    if isGuestAccount (getPlayerAccount (source)) then return end 
    local account = getPlayerAccount (source) 
    if not account then return end 
    -- save the data. 
    local x,y,z = getElementPosition (source) 
    local r,g,b = getPlayerNametagColor (source) 
    setAccountData(account, gamemode .. "-money", tostring (getPlayerMoney (source))) 
    setAccountData(account, gamemode .. "-skin", tostring (getElementModel (source))) 
    setAccountData(account, gamemode .. "-health", tostring (getElementHealth (source))) 
    setAccountData(account, gamemode .. "-armor", tostring (getPedArmor (source))) 
    setAccountData(account, gamemode .. "-R", tostring (r)) 
    setAccountData(account, gamemode .. "-G", tostring (g)) 
    setAccountData(account, gamemode .. "-B", tostring (b)) 
    setAccountData(account, gamemode .. "-x", tostring (x)) 
    setAccountData(account, gamemode .. "-y", tostring (y)) 
    setAccountData(account, gamemode .. "-z", tostring (z)) 
    setAccountData(account, gamemode .. "-int", tostring (getElementInterior (source))) 
    setAccountData(account, gamemode .. "-dim", tostring (getElementDimension (source))) 
    setAccountData(account, gamemode .. "-wantedlevel", tostring (getPlayerWantedLevel (source))) 
    setAccountData(account, gamemode .. "-datasaved", true) 
    -- to store weapons & weapon amno, you can do it better with a loop. 
    for i=0,12,1 do 
        setAccountData(account, gamemode .. "-weaponID" .. tostring (i), tostring (getPedWeapon (source, i))) 
        setAccountData(account, gamemode .. "-weaponAmmo" .. tostring (i), tostring (getPedTotalAmmo (source, i))) 
    end 
end 
addEventHandler ("onPlayerQuit", getRootElement(), onQuit) 
  
function onWasted(totalAmmo, killer, killerWeapon, bodypart, stealth) 
  if isGuestAccount (getPlayerAccount(source)) then return; end; 
    local theWeapon = getPedWeapon (source) 
    local weaponAmmo = getPedTotalAmmo (source) 
    fadeCamera (source, false) 
    -- here just use 3 timers instead of 4. 
    setTimer (spawnPlayer, 1000, 1, source, 2036.1735839844, -1413.0563964844, 16.9921875, 0, getElementModel (source), 0, 0, getPlayerTeam(source)) 
    setTimer (setCameraTarget, 1250, 1, source, source) 
    setTimer ( 
        function (thePlayer) 
            fadeCamera (thePlayer, true) 
            giveWeapon (source, 31, 200, true) 
        end, 2000, 1, source, theWeapon, weaponAmmo) 
end 
addEventHandler ("onPlayerWasted", getRootElement(), onWasted) 
  
function spawnLastPlayer ( posX, posY, posZ, rotZ, theSkin, theInterior, theDimension, theTeam ) 
  spawnPlayer ( source, 2005.25, 1544.80, 13.5907, 0, 286, 0, 0, nil ) 
  givePlayerMoney ( source, 100 ) 
  setElementHealth ( source, 100 ) 
  setPedArmor ( source, 10 ) 
  giveWeapon ( source, 31, 200 ) 
  fadeCamera (source, true) 
  setCameraTarget (source, source) 
  removeEventHandler ("onPlayerSpawn", source, spawnLastPlayer); 
end 
  
addEventHandler ("onPlayerJoin", getRootElement (), 
    function () 
        addEventHandler ( "onPlayerSpawn", source, spawnLastPlayer); 
    end 
) 

The second(silent):

function playerLogin (thePreviousAccount, theCurrentAccount, autoLogin) 
  if  not (isGuestAccount (getPlayerAccount (source))) then 
    local accountData = getAccountData (theCurrentAccount, "funmodev2-money") 
    if (accountData) then 
      local playerMoney = getAccountData (theCurrentAccount, "funmodev2-money") 
      local playerSkin = getAccountData (theCurrentAccount, "funmodev2-skin") 
      local playerHealth = getAccountData (theCurrentAccount, "funmodev2-health") 
      local playerArmor = getAccountData (theCurrentAccount, "funmodev2-armor") 
      local R = getAccountData (theCurrentAccount, "funmodev2-R") 
      local G = getAccountData (theCurrentAccount, "funmodev2-G") 
      local B = getAccountData (theCurrentAccount, "funmodev2-B") 
      local playerX = getAccountData (theCurrentAccount, "funmodev2-x") 
      local playerY = getAccountData (theCurrentAccount, "funmodev2-y") 
      local playerZ = getAccountData (theCurrentAccount, "funmodev2-z") 
      local playerInt = getAccountData (theCurrentAccount, "funmodev2-int") 
      local playerDim = getAccountData (theCurrentAccount, "funmodev2-dim") 
      local playerWanted = getAccountData (theCurrentAccount, "funmodev2-wantedlevel") 
      local playerWeaponID0 = getAccountData (theCurrentAccount, "funmodev2-weaponID0") 
      local playerWeaponID1 = getAccountData (theCurrentAccount, "funmodev2-weaponID1") 
      local playerWeaponID2 = getAccountData (theCurrentAccount, "funmodev2-weaponID2") 
      local playerWeaponID3 = getAccountData (theCurrentAccount, "funmodev2-weaponID3") 
      local playerWeaponID4 = getAccountData (theCurrentAccount, "funmodev2-weaponID4") 
      local playerWeaponID5 = getAccountData (theCurrentAccount, "funmodev2-weaponID5") 
      local playerWeaponID6 = getAccountData (theCurrentAccount, "funmodev2-weaponID6") 
      local playerWeaponID7 = getAccountData (theCurrentAccount, "funmodev2-weaponID7") 
      local playerWeaponID8 = getAccountData (theCurrentAccount, "funmodev2-weaponID8") 
      local playerWeaponID9 = getAccountData (theCurrentAccount, "funmodev2-weaponID9") 
      local playerWeaponID10 = getAccountData (theCurrentAccount, "funmodev2-weaponID10") 
      local playerWeaponID11 = getAccountData (theCurrentAccount, "funmodev2-weaponID11") 
      local playerWeaponID12 = getAccountData (theCurrentAccount, "funmodev2-weaponID12") 
      local playerWeaponAmmo0 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo0") 
      local playerWeaponAmmo1 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo1") 
      local playerWeaponAmmo2 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo2") 
      local playerWeaponAmmo3 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo3") 
      local playerWeaponAmmo4 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo4") 
      local playerWeaponAmmo5 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo5") 
      local playerWeaponAmmo6 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo6") 
      local playerWeaponAmmo7 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo7") 
      local playerWeaponAmmo8 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo8") 
      local playerWeaponAmmo9 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo9") 
      local playerWeaponAmmo10 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo10") 
      local playerWeaponAmmo11 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo11") 
      local playerWeaponAmmo12 = getAccountData (theCurrentAccount, "funmodev2-weaponAmmo12") 
      spawnPlayer (source, playerX, playerY, playerZ +1, 0, playerSkin, playerInt, playerDim) 
      setPlayerMoney (source, playerMoney) 
      setTimer (setElementHealth, 500, 1, source, playerHealth) 
      setTimer (setPedArmor, 500, 1, source, playerArmor) 
      setTimer (setPlayerWantedLevel, 500, 1, source, playerWanted) 
      giveWeapon(source, playerWeaponID0, playerWeaponAmmo0, true) 
      giveWeapon(source, playerWeaponID1, playerWeaponAmmo1, false) 
      giveWeapon(source, playerWeaponID2, playerWeaponAmmo2, false) 
      giveWeapon(source, playerWeaponID3, playerWeaponAmmo3, false) 
      giveWeapon(source, playerWeaponID4, playerWeaponAmmo4, false) 
      giveWeapon(source, playerWeaponID5, playerWeaponAmmo5, false) 
      giveWeapon(source, playerWeaponID6, playerWeaponAmmo6, false) 
      giveWeapon(source, playerWeaponID7, playerWeaponAmmo7, false) 
      giveWeapon(source, playerWeaponID8, playerWeaponAmmo8, false) 
      giveWeapon(source, playerWeaponID9, playerWeaponAmmo9, false) 
      giveWeapon(source, playerWeaponID10, playerWeaponAmmo10, false) 
      giveWeapon(source, playerWeaponID11, playerWeaponAmmo11, false) 
      giveWeapon(source, playerWeaponID12, playerWeaponAmmo12, false) 
      setCameraTarget (source, source) 
      fadeCamera(source, true, 2.0) 
      setPlayerNametagColor (source, R, G, B)  
    else 
      spawnPlayer ( source, 2005.25, 1544.80, 13.5907, 0, 286, 0, 0, nil) 
      setPlayerMoney ( source, 100) 
      setElementHealth ( source, 100) 
      setPedArmor ( source, 10) 
      giveWeapon ( source, 31, 200) 
    end    
  end 
end 
addEventHandler ("onPlayerLogin", getRootElement(), playerLogin) 
  
function onQuit (quitType, reason, responsibleElement) 
  if not (isGuestAccount (getPlayerAccount (source))) then 
    account = getPlayerAccount (source) 
    if (account) then 
      local x,y,z = getElementPosition (source) 
      local r,g,b = getPlayerNametagColor (source) 
      setAccountData (account, "funmodev2-money", tostring (getPlayerMoney (source))) 
      setAccountData (account, "funmodev2-skin", tostring (getElementModel (source))) 
      setAccountData (account, "funmodev2-health", tostring (getElementHealth (source))) 
      setAccountData (account, "funmodev2-armor", tostring (getPedArmor (source))) 
      setAccountData (account, "funmodev2-R", r) 
      setAccountData (account, "funmodev2-G", g) 
      setAccountData (account, "funmodev2-B", b) 
      setAccountData (account, "funmodev2-x", x) 
      setAccountData (account, "funmodev2-y", y) 
      setAccountData (account, "funmodev2-z", z) 
      setAccountData (account, "funmodev2-int", getElementInterior (source)) 
      setAccountData (account, "funmodev2-dim", getElementDimension (source)) 
      setAccountData (account, "funmodev2-wantedlevel", getPlayerWantedLevel (source)) 
      setAccountData (account, "funmodev2-weaponID0", getPedWeapon (source, 0)) 
      setAccountData (account, "funmodev2-weaponID1", getPedWeapon (source, 1)) 
      setAccountData (account, "funmodev2-weaponID2", getPedWeapon (source, 2)) 
      setAccountData (account, "funmodev2-weaponID3", getPedWeapon (source, 3)) 
      setAccountData (account, "funmodev2-weaponID4", getPedWeapon (source, 4)) 
      setAccountData (account, "funmodev2-weaponID5", getPedWeapon (source, 5)) 
      setAccountData (account, "funmodev2-weaponID6", getPedWeapon (source, 6)) 
      setAccountData (account, "funmodev2-weaponID7", getPedWeapon (source, 7)) 
      setAccountData (account, "funmodev2-weaponID8", getPedWeapon (source, -- s8) -->) 
      setAccountData (account, "funmodev2-weaponID9", getPedWeapon (source, 9)) 
      setAccountData (account, "funmodev2-weaponID10", getPedWeapon (source, 10)) 
      setAccountData (account, "funmodev2-weaponID11", getPedWeapon (source, 11)) 
      setAccountData (account, "funmodev2-weaponID12", getPedWeapon (source, 12)) 
      setAccountData (account, "funmodev2-weaponAmmo0", getPedTotalAmmo (source, 0)) 
      setAccountData (account, "funmodev2-weaponAmmo1", getPedTotalAmmo (source, 1)) 
      setAccountData (account, "funmodev2-weaponAmmo2", getPedTotalAmmo (source, 2)) 
      setAccountData (account, "funmodev2-weaponAmmo3", getPedTotalAmmo (source, 3)) 
      setAccountData (account, "funmodev2-weaponAmmo4", getPedTotalAmmo (source, 4)) 
      setAccountData (account, "funmodev2-weaponAmmo5", getPedTotalAmmo (source, 5)) 
      setAccountData (account, "funmodev2-weaponAmmo6", getPedTotalAmmo (source, 6)) 
      setAccountData (account, "funmodev2-weaponAmmo7", getPedTotalAmmo (source, 7)) 
      setAccountData (account, "funmodev2-weaponAmmo8", getPedTotalAmmo (source, -- s8) -->) 
      setAccountData (account, "funmodev2-weaponAmmo9", getPedTotalAmmo (source, 9)) 
      setAccountData (account, "funmodev2-weaponAmmo10", getPedTotalAmmo (source, 10)) 
      setAccountData (account, "funmodev2-weaponAmmo11", getPedTotalAmmo (source, 11)) 
      setAccountData (account, "funmodev2-weaponAmmo12", getPedTotalAmmo (source, 12)) 
    end 
  end 
end 
addEventHandler ("onPlayerQuit", getRootElement(), onQuit) 

Oops, first + second = work!

Link to comment

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

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