rendered paste body/*
Filterscript : Save and load position
*/
#include a_samp
#include zcmd
#define FILTERSCRIPT
new
bool: gPlayerHasSavedPosition[ MAX_PLAYERS char ];
enum gPosEnum
{
Float: playerX,
Float: playerY,
Float: playerZ,
Float: playerA,
playerInterior,
playerWorld
}
new
gPlayer[ MAX_PLAYERS ][ gPosEnum ];
public OnPlayerConnect( playerid )
{
gPlayerHasSavedPosition{ playerid } = false;
return 1;
}
CMD:savep( playerid, params[ ] )
{
gPlayerHasSavedPosition{ playerid } = true;
GetPlayerPos( playerid, gPlayer[ playerid ][ playerX ], gPlayer[ playerid ][ playerY ], gPlayer[ playerid ][ playerZ ] );
GetPlayerFacingAngle( playerid, gPlayer[ playerid ][ playerA ] );
gPlayer[ playerid ][ playerInterior ] = GetPlayerInterior( playerid );
gPlayer[ playerid ][ playerWorld ] = GetPlayerVirtualWorld( playerid );
SendClientMessage( playerid, 0xCCFFFFAA, "Position saved, to load the position use /loadp. Or use KEY_SUBMISSION." );
return 1;
}
CMD:loadp( playerid, params[ ] )
{
if( gPlayerHasSavedPosition{ playerid } == false )
return SendClientMessage( playerid, 0xCCFFFFAA, "You haven't created a savepoint, use /savep to save a savepoint." );
if( !IsPlayerInAnyVehicle( playerid ) )
{
SetPlayerPos( playerid, gPlayer[ playerid ][ playerX ], gPlayer[ playerid ][ playerY ], gPlayer[ playerid ][ playerZ ] );
SetPlayerFacingAngle( playerid, gPlayer[ playerid][ playerA ] );
SetPlayerInterior( playerid, gPlayer[ playerid ][ playerInterior ] );
SetPlayerVirtualWorld( playerid, gPlayer[ playerid ][ playerWorld ] );
}
else
{
new
playerVehicle = GetPlayerVehicleID( playerid );
SetVehiclePos( playerVehicle, gPlayer[ playerid ][ playerX ], gPlayer[ playerid ][ playerY ],
gPlayer[ playerid ][ playerZ ] );
SetVehicleZAngle( playerVehicle, gPlayer[ playerid][ playerA ] );
LinkVehicleToInterior( playerVehicle, gPlayer[ playerid ][ playerInterior ] );
SetVehicleVirtualWorld( playerVehicle, gPlayer[ playerid ][ playerWorld ] );
}
SendClientMessage( playerid ,0xCCFFFFAA, "Position loaded." );
return 1;
}
public OnPlayerKeyStateChange( playerid, newkeys, oldkeys )
{
if( gPlayerHasSavedPosition{ playerid } == true )
{
if( newkeys == KEY_SUBMISSION )
{
if( !IsPlayerInAnyVehicle( playerid ) )
{
SetPlayerPos( playerid, gPlayer[ playerid ][ playerX ], gPlayer[ playerid ][ playerY ],
gPlayer[ playerid ][ playerZ ] );
SetPlayerInterior( playerid, gPlayer[ playerid ][ playerInterior ] );
SetPlayerVirtualWorld( playerid, gPlayer[ playerid ][ playerWorld ] );
}
else
{
new
playerVehicle = GetPlayerVehicleID( playerid );
SetVehiclePos( playerVehicle, gPlayer[ playerid ][ playerX ], gPlayer[ playerid ][ playerY ],
gPlayer[ playerid ][ playerZ ] );
LinkVehicleToInterior( playerVehicle, gPlayer[ playerid ][ playerInterior ] );
SetVehicleVirtualWorld( playerVehicle, gPlayer[ playerid ][ playerWorld ] );
SendClientMessage( playerid ,0xCCFFFFAA, "Position loaded." );
}
}
}
return 1;
}