All pastes #951410 Raw Edit

tralor

public text v1 · immutable
·published 2008-03-21 11:03 UTC
rendered paste body
#include <a_samp>

/*----------------------------------------------------------------------------*/

new InCargoBob[MAX_PLAYERS],CargoHours[MAX_PLAYERS],CargoMinutes[MAX_PLAYERS],bool:ObjectsAdded[MAX_PLAYERS];

/*----------------------------------------------------------------------------*/

#define NOT_IN_CARGO "You need to be in a trailer."
#define ENTERED_CARGO "You entered the trailer"
#define TO_FAROF_CARGO "You need to be at a trailer"

#if !defined COLOR_NEUTRALGREEN
#define COLOR_NEUTRALGREEN 0x81CFAB00

#endif

#if !defined dcmd
#define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1

#endif

/*----------------------------------------------------------------------------*/

#if defined FILTERSCRIPT

public OnFilterScriptInit(){
    print("\n trailer succesfully loaded \n");
	return true;
}

public OnFilterScriptExit(){
    print("\n trailer succesfully unloaded \n");
	return true;
}

#endif

/*----------------------------------------------------------------------------*/

AddCargoObjects(playerid)
{
}

Float:GetXYOfVehicle(vehicleid, &Float:x, &Float:y, Float:distance)
{
	new Float:a;
	GetPlayerPos(vehicleid, x, y, a);
	GetVehicleZAngle(vehicleid, a);
	x += (distance * floatsin(-a, degrees));
	y += (distance * floatcos(-a, degrees));
	return a;
}

GetPlayerPosPower(playerid,Float: X,Float: Y,Float: Z,Float:PowX,Float:PowY,Float:PowZ,Float: PowXYZ)
{
	new Float: CtX,Float:CtY,Float:CtZ;
	new Float: DtX,Float: DtY,Float:DtZ;
	GetPlayerPos(playerid,CtX,CtY,CtZ);
	DtX = (CtX -X); DtY = (CtY -Y); DtZ = (CtZ -Z);

	if(DtX< PowXYZ+PowX && DtX> -PowXYZ+PowX && DtY < PowXYZ+PowY  && DtY > -PowXYZ+PowY && DtZ < PowXYZ+PowZ && DtZ > -PowXYZ+PowZ)
		return true;

	return false;
}

/*----------------------------------------------------------------------------*/

public OnPlayerConnect(playerid)
{
    AddCargoObjects(playerid);
	ObjectsAdded[playerid] = true;
    return true;
}

/*----------------------------------------------------------------------------*/

public OnPlayerDisconnect(playerid,reason)
{
	if(InCargoBob[playerid] != 0)
    InCargoBob[playerid] = 0;
    ObjectsAdded[playerid] = false;
	return true;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(InCargoBob[playerid] != 0)
	InCargoBob[playerid] = 0;
	SetPlayerVirtualWorld(playerid,0);
	return true;
}

/*----------------------------------------------------------------------------*/

public OnVehicleDeath(vehicleid, killerid)
{
	if(GetVehicleModel(vehicleid) == 435)
	{
		for(new i = 0;i < MAX_PLAYERS;i++)
  		{
  			if(InCargoBob[i] == vehicleid)
  			{
				new Float:X,Float:Y,Float:Z;
				GetPlayerPos(i,X,Y,Z);
				CreateExplosion(X,Y,Z,3,10);
				SetPlayerHealth(i,0.0);
				InCargoBob[i] = 0;
			}
  		}
	}
	return true;
}

/*----------------------------------------------------------------------------*/

public OnPlayerCommandText(playerid, cmdtext[])
{
	dcmd(enter,5,cmdtext);
	dcmd(leave,5,cmdtext);
	return false;
}

dcmd_enter(playerid,params[])
{
  	for(new i = 0;i < MAX_VEHICLES;i++)
  	{
  	  	if(GetVehicleModel(i) == 435)
		{
  	      	new Float:vX,Float:vY,Float:vZ;
  	      	GetVehiclePos(i,vX,vY,vZ);
  	      	GetXYOfVehicle(i,vX,vY,-5.5);
  	      	vZ -= 1.932519;
  	  	    if (GetPlayerPosPower(playerid,vX,vY,vZ,0,0,0,2.5))
		    {
				if (ObjectsAdded[playerid] == false)
				{
					AddCargoObjects(playerid);
					ObjectsAdded[playerid] = true;
				}
                InCargoBob[playerid] = i;
  	  	        SendClientMessage(playerid,COLOR_NEUTRALGREEN,ENTERED_CARGO);
				GetPlayerTime(playerid,CargoHours[playerid],CargoMinutes[playerid]);
				SetPlayerTime(playerid,0,0);
				SetPlayerPos(playerid,-2178.4397,716.1625,53.8906);
				GivePlayerWeapon(playerid,46,1);
				PlayerPlaySound(playerid,1187, 0.0, 0.0, 0.0);
				SetPlayerVirtualWorld(playerid,i);
                return true;
  	  	    }
  	  	}
  	}
  	SendClientMessage(playerid,COLOR_NEUTRALGREEN,TO_FAROF_CARGO);
    #pragma unused params
	return true;
}

dcmd_leave(playerid,params[])
{
	if(InCargoBob[playerid] == 0)
		return SendClientMessage(playerid,COLOR_NEUTRALGREEN,NOT_IN_CARGO);
    new Float:vX,Float:vY,Float:vZ;
    GetVehiclePos(InCargoBob[playerid],vX,vY,vZ);
    vZ -= 1.932519;
    new Float:a = GetXYOfVehicle(InCargoBob[playerid],vX,vY,-5.5);
    SetPlayerInterior(playerid,0);
    SetPlayerPos(playerid,vX,vY,vZ);
    SetPlayerFacingAngle(playerid,a-180);
    SetPlayerVirtualWorld(playerid,0);
    PlayerPlaySound(playerid, 1188, 0.0, 0.0, 0.0);
    SetPlayerTime(playerid,CargoHours[playerid],CargoMinutes[playerid]);
    InCargoBob[playerid] = 0;
    #pragma unused params
	return true;
}

/*----------------------------------------------------------------------------*/