All pastes #2071978 Raw Edit

Someone

public text v1 · immutable
#2071978 ·published 2011-05-30 08:17 UTC
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;
}