All pastes #677002 Raw Edit

Anonymous

public text v1 · immutable
#677002 ·published 2007-08-31 16:13 UTC
rendered paste body
public HideAndSeekTimer()
{
	// Check that a Hide and Seek game is active, if not exit here
	if (HideAndSeekStatus != 1) return 1;
	
	// Check target player id is connected, if not exit here
	if (!IsPlayerConnected(ActualHideAndSeekTarget)) return 1;
	
	// Create variables
	new Float:TargetPlayerPosX;
	new Float:TargetPlayerPosY;
	new Float:TargetPlayerPosZ;
	new Float:PlayerPosX;
	new Float:PlayerPosY;
	new Float:PlayerPosZ;
	new Float:DistanceBetween;
	new Float:a;
	new string[256];
	
	// Get target player name
	new pname[MAX_PLAYER_NAME];
	GetPlayerName(ActualHideAndSeekTarget, pname, sizeof(pname));
	
	// Debug
	if (debuglevel > 0) printf("** Hide and Seek Timer -> Target is %s (ID:%d)", pname, ActualHideAndSeekTarget);
	
	// Check if player is in a vehicle
	if (IsPlayerInAnyVehicle(ActualHideAndSeekTarget))
	{
	    GetVehiclePos(GetPlayerVehicleID(ActualHideAndSeekTarget), TargetPlayerPosX, TargetPlayerPosY, TargetPlayerPosZ);
	}
	else
	{
		GetPlayerPos(ActualHideAndSeekTarget, TargetPlayerPosX, TargetPlayerPosY, TargetPlayerPosZ);
	}

	// Loop
	for (new playerid = 0; playerid < MAX_PLAYERS; playerid++)
	{
	    // Check player is connected
	    if (IsPlayerConnected(playerid))
	    {
	        // Check direction updates are enabled
	        if (DirectionUpdates[playerid] == 1)
	        {
	            // Dont give updates to the target player
   				if (playerid != ActualHideAndSeekTarget)
   				{
		            // Debug
					if (debuglevel > 0) printf("** Hide and Seek Timer -> ID %d has Direction Updates On", playerid);

		            // Check if player is in a vehicle
					if (IsPlayerInAnyVehicle(playerid))
					{
					    GetVehiclePos(GetPlayerVehicleID(playerid), PlayerPosX, PlayerPosY, PlayerPosZ);
					    GetVehicleZAngle(GetPlayerVehicleID(playerid), a);
					}
					else
					{
						GetPlayerPos(playerid, PlayerPosX, PlayerPosY, PlayerPosZ);
						GetPlayerFacingAngle(playerid, a);
					}

		            // Get distance between players
					DistanceBetween = GetPointDistanceToPoint(PlayerPosX, PlayerPosY, PlayerPosZ, TargetPlayerPosX, TargetPlayerPosY, TargetPlayerPosZ);

					// Format string
					format(string, sizeof(string), " ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~ ~n~Distance to~n~%s (ID:%d)~n~%0.2fm", pname, ActualHideAndSeekTarget, DistanceBetween);

					// Display distance to player
					GameTextForPlayer(playerid, string, 5000, 6);

				    //a = atan2(TargetPlayerPosX-PlayerPosX, TargetPlayerPosY-PlayerPosY);
				    new bearing = atan2(PlayerPosX-TargetPlayerPosX, PlayerPosY-TargetPlayerPosY);

				    if (bearing < 0) bearing = bearing + 360;
				    
				    // Get pos 5m in front of player
					PlayerPosX += (5 * floatsin(-a, degrees));
					PlayerPosY += (5 * floatcos(-a, degrees));

				    // Debug
					if (debuglevel > 0) printf("** Hide and Seek Timer -> Bearing %0.2f", bearing);

					// Create variable
					new objectnumber = CreateObject(1318, PlayerPosX, PlayerPosY, PlayerPosZ, 0, 120, bearing);
					
					// Create object
					DirectionObjects[objectnumber] = objectnumber;
					
					// Set a timer to destroy the object
					SetTimerEx("DestroyDirectionObject", 5000, 0, "d", objectnumber);
				}
	        }
	    }
	}
	
	// Exit here
	return 1;
}