Jump to content

[HELP] Save position


Daron90

Recommended Posts

Hello all.

I downloaded a resource some days ago and it works very well, but i want to add a function.

I'm a pawno scripter and i'm starting with Lua.. maybe its just a noob change but i don't know how to make it for now.. if you can help me, i'll really tank you.

Here is the Lua code:

  
--[[ Save Load System   ]]-- 
--[[ By |Mr|-Talal07-|  ]]-- 
--[[ Don't Remove This  ]]-- 
LoadKey = "1" -- to load your position. 
SaveKey = "2" -- yo save your position. 
  
function getPlayerSaves(player) 
    local x,y,z = getElementData(player,"x"),getElementData(player,"y"),getElementData(player,"z") 
    local rx,ry,rz = getElementData(player,"rx"),getElementData(player,"ry"),getElementData(player,"rz") 
    local vx,vy,vz = getElementData(player,"vx"),getElementData(player,"vy"),getElementData(player,"vz") 
    local id,hp = getElementData(player,"id"),getElementData(player,"hp") 
    return x,y,z,rx,ry,rz,vx,vy,vz,id,hp 
end 
  
function SavePosition(player,x,y,z,rx,ry,rz,vx,vy,vz,id,hp) 
    setElementData(player,"x",x) 
    setElementData(player,"y",y) 
    setElementData(player,"z",z) 
    setElementData(player,"rx",rx) 
    setElementData(player,"ry",ry) 
    setElementData(player,"rz",rz) 
    setElementData(player,"vx",vx) 
    setElementData(player,"vy",vy) 
    setElementData(player,"vz",vz) 
    setElementData(player,"id",id) 
    setElementData(player,"hp",hp) 
    setElementData(player,"SL",true) 
end 
  
function LoadPosition(player) 
    local x,y,z,rx,ry,rz,vx,vy,vz,id,hp = getPlayerSaves(player) 
    setElementModel(getPedOccupiedVehicle(player),tonumber(id)) 
    setElementHealth(getPedOccupiedVehicle(player),hp) 
    setElementPosition(getPedOccupiedVehicle(player),x,y,z) 
    setElementRotation(getPedOccupiedVehicle(player),rx,ry,rz) 
    addVehicleUpgrade(getPedOccupiedVehicle(player),1010) 
    setTimer(setElementFrozen,1000,1,getPedOccupiedVehicle(player),false) 
    setTimer(setElementVelocity,1000,1,getPedOccupiedVehicle(player),vx,vy,vz) 
end 
  
function LoadPlayer(player) 
    if not isPedInVehicle(player) then return end 
    if getElementData(player,"SL") == true then 
        setElementFrozen(getPedOccupiedVehicle(player),true) 
        LoadPosition(player) 
        outputChatBox("*[LOAD] Position loaded !!",player,0,255,0) 
    else 
        outputChatBox("*[POSITION] You didn't saved any position yet. Use 2 key to save position.",player,255,0,0) 
    end 
end 
  
function SavePlayer(player) 
    if not isPedInVehicle(player) then return end 
    local x,y,z = getElementPosition(getPedOccupiedVehicle(player)) 
    local rx,ry,rz = getElementRotation(getPedOccupiedVehicle(player)) 
    local vx,vy,vz = getElementVelocity(getPedOccupiedVehicle(player)) 
    local id,hp = getElementModel(getPedOccupiedVehicle(player)),getElementHealth(getPedOccupiedVehicle(player)) 
    SavePosition(player,x,y,z,rx,ry,rz,vx,vy,vz,id,hp) 
    outputChatBox("*[sAVE] Position saved !!",player,0,255,0) 
end 
  
addEventHandler("onPlayerWasted",root, 
    function () 
        setElementData(source,"SL",false) 
        outputChatBox("*[POSITION] The current position saved were removed.",source,255,0,0) 
    end 
) 
  
addEventHandler("onGamemodeMapStart",root, 
    function () 
        for i,player in ipairs(getElementsByType("player")) do 
            setElementData(player,"SL",false) 
            outputChatBox("*[POSITION] The current position saved were removed.",player,255,0,0) 
        end 
    end 
) 
  
addEventHandler("onPlayerSpawn",root, 
    function () 
        setElementData(source,"SL",false) 
        outputChatBox("*[POSITION] The current position saved were removed.",source,255,0,0) 
    end 
) 
  
addEventHandler("onPlayerJoin",root, 
    function () 
        setElementData(source,"SL",false) 
        bindKey(source,LoadKey,"down",LoadPlayer) 
        bindKey(source,SaveKey,"down",SavePlayer) 
    end 
) 
  
addEventHandler("onResourceStart",resourceRoot, 
    function () 
        for i,player in ipairs(getElementsByType("player")) do 
            setElementData(player,"SL",false) 
            bindKey(player,LoadKey,"down",LoadPlayer) 
            bindKey(player,SaveKey,"down",SavePlayer) 
        end 
    end 
) 
  

The change is add a limit to use the LOAD key. Maybe it's posible with a counter or something like ...

For example.. you only can use 1 key (Load position) 5 times, and when the player is respawned set it as 0 again.

Also a thing.. maybe can be added is.. save the nos. If you had NOS before saving.. load it, else.. no. This is just a plus :)

But the most important is that about the limit.

Hope you can help me.

Regards 8)

Link to comment
  
  
local __count = 0; -- this hold number of times the user press the "load" key 
local __max_count = 5; -- this hold maximum number of times that user can press "load" key. 
  
addEventHandler ("onPlayerSpawn", root, 
      function () 
           setElementData(source,"SL",false); 
           outputChatBox("*[POSITION] The current position saved were removed.",source,255,0,0); 
  
           -- reset the count. 
           __count = 0; 
      end); 
  
addEventHandler("onPlayerJoin",root, 
    function () 
        setElementData(source,"SL",false); 
        
        bindKey(source,LoadKey,"down", 
              function (thePlayer) 
                   -- player press "load" key more than 5 times ? 
                   if __count < __max_count then  
                         -- no, so ... 
                          
                         LoadPlayer (thePlayer); 
  
                          -- increment count. 
                          __count = __count + 1; 
                   else  
                         -- "load" pressed 5 times. 
                         -- do whatever, output an error or something ...  
                   end; 
              end); 
        bindKey(source,SaveKey,"down",SavePlayer) 
    end); 
  
  

Link to comment
  
  
local __max_count =  5; 
local __count = {}; 
  
addEventHandler ("onPlayerSpawn", root, 
      function () 
           setElementData(source,"SL",false); 
           outputChatBox("*[POSITION] The current position saved were removed.",source,255,0,0); 
  
           -- reset the count. 
           __count [source] = 0;  
      end); 
  
addEventHandler("onPlayerJoin",root, 
    function () 
        setElementData(source,"SL",false); 
        
        bindKey(source,LoadKey,"down", 
              function (thePlayer) 
                   -- player press "load" key more than 5 times ? 
                   if __count [thePlayer] < __max_count then 
                         -- no, so ... 
                      
                         LoadPlayer (thePlayer); 
  
                          -- increment count. 
                          __count [thePlayer] = __count[thePlayer] + 1; 
                   else 
                         -- "load" pressed 5 times. 
                         -- do whatever, output an error or something ... 
                   end; 
              end); 
        bindKey(source,SaveKey,"down",SavePlayer) 
    end); 
  
  

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...