All pastes #623210 Raw Edit

Rc-Amok

public text v1 · immutable
#623210 ·published 2007-07-17 12:51 UTC
rendered paste body
#include <a_samp>
#define PRICE_BANDIT 500 //price of RcBandit |change to the value the vehicle should cost
#define PRICE_TIGER 1500 //price of RcTiger |change to the value the vehicle should cost



#define TIGER_RADIUS 8 //the spread of the tiger
#define TIGER_RANGE 60 //the distance the tiger can shot;



new Float:x2[MAX_PLAYERS];
new Float:y2[MAX_PLAYERS];
new Float:z2[MAX_PLAYERS];
new Float:a2[MAX_PLAYERS];
new VSpCo[MAX_VEHICLES];
new IsPlayerInMission[MAX_PLAYERS];

new Menu:RcMenu;

new Text:ExplainBandit;
new Text:ExplainTiger;


public OnFilterScriptInit()
{
	print(" _______________________");
    print("|					   |");
    print("|    _ _ _ _ _ _ _ _    |");
   	print("|   |               |   |");
	print("|   |RcAmok by Jack |   |");
	print("|   |_ _ _ _ _ _ _ _|   |");
    print("|                       |");
	print("|_______________________|");
	
	//Menu
	RcMenu=CreateMenu("Chose your vehicle",2,5.0,250.0,120.0,150.0);
	if(IsValidMenu(RcMenu))
	{
	SetMenuColumnHeader(RcMenu,0,"Vehicle");
	SetMenuColumnHeader(RcMenu,1,"Price");
	//bandit
	AddMenuItem(RcMenu,0,"RcBandit");
	new bandit[255];
	format(bandit,255,"%d",PRICE_BANDIT);
	AddMenuItem(RcMenu,1,bandit);
	//tiger
	AddMenuItem(RcMenu,0,"RcTiger");
	new tiger[255];
	format(tiger,255,"%d",PRICE_TIGER);
	AddMenuItem(RcMenu,1,tiger);
	//bla
	
	
	//textdraws
	//bandit
	ExplainBandit=TextDrawCreate(465.0,100.0,"[Strg/Ctrl]- Selfdestruction");
	TextDrawTextSize(ExplainBandit, 655, 3);
	TextDrawSetShadow(ExplainBandit, 0);
	TextDrawFont(ExplainBandit, 1);
	TextDrawSetOutline(ExplainBandit,1);
	TextDrawColor(ExplainBandit, 0xe42f42ff);
	TextDrawLetterSize(ExplainBandit, 0.35, 1);
	TextDrawSetProportional(ExplainBandit, 1);
	TextDrawHideForAll(ExplainBandit);
	//tiger
	ExplainTiger=TextDrawCreate(465.0,100.0,"[Strg/Ctrl]- Selfdestruction [H]        -    Use Cannon");
	TextDrawSetShadow(ExplainTiger, 0);
	TextDrawFont(ExplainTiger, 1);
	TextDrawSetOutline(ExplainTiger,1);
	TextDrawColor(ExplainTiger, 0xe42f42ff);
	TextDrawLetterSize(ExplainTiger, 0.35, 1);
	TextDrawSetProportional(ExplainTiger, 1);
	TextDrawTextSize(ExplainTiger, 655, 3);
	TextDrawHideForAll(ExplainTiger);
	for (new i = 0; i < MAX_PLAYERS; i++)
	{
	HideMenuForPlayer(RcMenu,i);
	}
	
	}
	
	return 1;
}

public OnFilterScriptExit()
{
	return 1;
}

public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{

	//rc Kamikaze
	if(newkeys==1)
	{
	if(GetVehicleModel(GetPlayerVehicleID(playerid))==441||GetVehicleModel(GetPlayerVehicleID(playerid))==564)
	{
	IsPlayerInMission[playerid]=0;
	new Float:x,Float:y,Float:z;
	new vehicleid = GetPlayerVehicleID(playerid);
	GetVehiclePos(vehicleid,x,y,z);
	new timer;
	RemovePlayerFromVehicle(playerid);
	TextDrawHideForPlayer(playerid, ExplainBandit);
	TextDrawHideForPlayer(playerid, ExplainTiger);
	SetPlayerCameraPos(playerid,x+14,y+20,z+10);
	SetPlayerCameraLookAt(playerid,x,y,z);
	while(timer<4)
	{
	if(timer==0)
	{
	SetPlayerPos(playerid,x2[playerid],y2[playerid],z2[playerid]);
	SetPlayerFacingAngle(playerid,a2[playerid]);
	CreateExplosion(x,y,z,2,1.5);
	}
	if(timer==2)
	{
	VSpCo[vehicleid]=1;
	SetVehicleToRespawn(vehicleid);
	}
	if(timer==3)
	{
	SetCameraBehindPlayer(playerid);
	}
	timer++;
	Wait(1000);
	}
	}
	}


	//rc tigerKanone
	if(newkeys==2)
	{
	if(GetVehicleModel(GetPlayerVehicleID(playerid))==564)
	{
    new Float:x,Float:y,Float:z,Float:vx,Float:vy,Float:a;
	new vehicleid = GetPlayerVehicleID(playerid);
	GetVehiclePos(vehicleid,x,y,z);
	GetVehicleZAngle(vehicleid,a);
	for (new r = 10; r < TIGER_RANGE; r++)
	{
	
	vx = x + (r * floatsin(-a, degrees));
    vy = y + (r * floatcos(-a, degrees));
    if(GetPlayersOnline()==1)
    {
    vx = x + (40 * floatsin(-a, degrees));
    vy = y + (40 * floatcos(-a, degrees));
	CreateExplosion(vx,vy,z+0.5,2,1.0);
    }
    for (new i = 0; i < MAX_PLAYERS; i++)
	{
	
	if((i!=playerid)&&(IsPlayerConnected(i)==1))
	{
	//target(s) in range
	if(IsPlayerInSphere(i,vx,vy,z,TIGER_RADIUS)==1)
	{
	new Float:dis,Float:dis2,player;
	new pteam[MAX_PLAYERS];
	player = -1;
	dis = 99999.99;
	dis2 = GetDistanceBetweenPlayers(i,playerid);
	if (dis2 < dis && dis2 != -1.00 && pteam[i] == pteam[playerid])
	{
	dis = dis2;
	player = i;

	new Float:px,Float:py,Float:pz;
	GetPlayerPos(player,px,py,pz);
    CreateExplosion(px,py,pz+0.5,2,1.0);
	}
	}
	//noone hitable
	else if(IsPlayerInSphere(i,vx,vy,z,TIGER_RADIUS)==0)
	{
	vx = x + (40 * floatsin(-a, degrees));
    vy = y + (40 * floatcos(-a, degrees));
	CreateExplosion(vx,vy,z+0.5,2,1.0);
	
	}
	}
	}
	}
    }
	}
	
	return 1;
}

public OnPlayerDeath(playerid, killerid, reason)
{
	if(IsPlayerInMission[playerid]==1)
	{
	TextDrawHideForPlayer(playerid,ExplainBandit);
	TextDrawHideForPlayer(playerid,ExplainTiger);
	}
	return 1;
}

public OnVehicleSpawn(vehicleid)
{
if(GetVehicleModel(vehicleid)==441||GetVehicleModel(vehicleid)==564)
	{
	if(VSpCo[vehicleid]>0)
	{
	SetVehiclePos(vehicleid,10000.0,10000.0,0.0);
	DestroyVehicle(vehicleid);
	VSpCo[vehicleid]=0;
	}
	}
return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
if(GetVehicleModel(vehicleid)==441||GetVehicleModel(vehicleid)==564)
	{
	VSpCo[vehicleid]++;
	}
return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	if(newstate==PLAYER_STATE_PASSENGER)
	{
	new vehicle =GetPlayerVehicleID(playerid);
	if(GetVehicleModel(vehicle)==459)
	{
	RemovePlayerFromVehicle(playerid);
	new Float:x,Float:y,Float:z,Float:vx,Float:vy,Float:a;
	GetVehiclePos(GetPlayerVehicleID(playerid),x,y,z);
	GetVehicleZAngle(GetPlayerVehicleID(playerid),a);
	vx = x + (4.5 * floatsin(-a-180, degrees));
    vy = y + (4.5 * floatcos(-a-180, degrees));
    x2[playerid]=vx;
    y2[playerid]=vy;
    z2[playerid]=z;
    a2[playerid]=a-180;
	new timer;
	while (timer < 2)
	{
	if(timer==1)
	{
	ShowMenuForPlayer(RcMenu,playerid);
	TogglePlayerControllable(playerid, 0);
	}
	timer++;
	Wait(1000);
	}
	}
	}

	return 1;
}



stock OnRcMissionStartBandit(playerid,Float:x,Float:y,Float:z,Float:a)
{
IsPlayerInMission[playerid]=1;
SetPlayerPos(playerid,0.0,0.0,500.0);
CreateVehicle(441,x,y,z,a,-1,-1,0);
for (new c = 0; c < MAX_VEHICLES; c++)
{
if(GetVehicleModel(c)==441)
{
if(!(c==INVALID_VEHICLE_ID))
{
if(VSpCo[c]==0)
{
PutPlayerInVehicle(playerid,c,0);
VSpCo[c]=1;
new timer;
while (timer<4)
{

if (timer==0)
{
GameTextForPlayer(playerid,"~r~~h~~h~~h~3",990,3);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
if (timer==1)
{
GameTextForPlayer(playerid,"~r~~h~2",990,3);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
if (timer==2)
{
GameTextForPlayer(playerid,"~r~1",990,3);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
if (timer==3)
{
GameTextForPlayer(playerid,"~l~Amok",990,3);
TogglePlayerControllable(playerid,1);
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
TextDrawShowForPlayer(playerid,ExplainBandit);
}
timer++;
Wait(1000);
}
}
}
}
}
}

stock OnRcMissionStartTiger(playerid,Float:x,Float:y,Float:z,Float:a)
{
IsPlayerInMission[playerid]=1;
SetPlayerPos(playerid,0.0,0.0,500.0);
CreateVehicle(564,x,y,z,a,-1,-1,0);
for (new c = 0; c < MAX_VEHICLES; c++)
{
if(GetVehicleModel(c)==564)
{
if(!(c==INVALID_VEHICLE_ID))
{
if(VSpCo[c]==0)
{
PutPlayerInVehicle(playerid,c,0);
VSpCo[c]=1;
new timer;
while (timer<4)
{
if (timer==0)
{
GameTextForPlayer(playerid,"~r~~h~~h~3",990,3);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
if (timer==1)
{
GameTextForPlayer(playerid,"~r~~h~2",990,3);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
if (timer==2)
{
GameTextForPlayer(playerid,"~r~1",990,3);
PlayerPlaySound(playerid, 1056, 0.0, 0.0, 0.0);
}
if (timer==3)
{
GameTextForPlayer(playerid,"~l~Amok",990,3);
TogglePlayerControllable(playerid,1);
TextDrawShowForPlayer(playerid,ExplainTiger);
PlayerPlaySound(playerid, 1057, 0.0, 0.0, 0.0);
}
timer++;
Wait(1000);
}
}
}
}
}
}

public OnPlayerSelectedMenuRow(playerid, row)
{
	if(GetPlayerMenu(playerid)==RcMenu)
	{
	switch (row) {
	//bandit
	case 0:
	{
    new timer;
	while(timer<3)
	{
	TogglePlayerControllable(playerid,0);
	if(timer==2)
	{
	if(GetPlayerMoney(playerid)>PRICE_BANDIT-1)
	{
	OnRcMissionStartBandit(playerid,x2[playerid],y2[playerid],z2[playerid],a2[playerid]);
	GivePlayerMoney(playerid,-PRICE_BANDIT);
	}
	else{
	PlayerPlaySound(playerid,1053,0.0,0.0,0.0);
	TogglePlayerControllable(playerid,1);
	}
	}
	Wait(1000);
	timer++;
	}
	}
	
	//tiger
	case 1:
	{
	new timer;
	while(timer<3)
	{
	TogglePlayerControllable(playerid,0);
	if(timer==2)
	{
	if(GetPlayerMoney(playerid)>PRICE_TIGER-1)
	{
	OnRcMissionStartTiger(playerid,x2[playerid],y2[playerid],z2[playerid],a2[playerid]);
	GivePlayerMoney(playerid,-PRICE_TIGER);
	}
	else{
	PlayerPlaySound(playerid,1053,0.0,0.0,0.0);
	TogglePlayerControllable(playerid,1);
	}
	}
	Wait(1000);
	timer++;
	}
	}
	
	}
	}
	return 1;
}

public OnPlayerExitedMenu(playerid)
{
	TogglePlayerControllable(playerid,1);
	return 1;
}





stock Wait(time){ //By [sry,i forgot the name :S]
    new stamp = tickcount();
    while (tickcount() - stamp < time){}
    return 1;
}

stock GetDistanceBetweenPlayers(playerid, playerid2) //By Slick 
{
new Float:x1,Float:y1,Float:z1,Float:x3,Float:y3,Float:z3;
new Float:dis;
GetPlayerPos(playerid,x1,y1,z1);
GetPlayerPos(playerid2,x3,y3,z3);
dis = floatsqroot((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)+(z3-z1)*(z3-z1));
return floatround(dis);
}

stock IsPlayerInSphere(playerid,Float:x,Float:y,Float:z,radius) //By Sacky
{
 if(GetPlayerDistanceToPointEx(playerid,x,y,z) < radius)
 {
  return 1;
 }
 return 0;
}

stock GetPlayerDistanceToPointEx(playerid,Float:x,Float:y,Float:z) //By Sacky 
{
new Float:x1,Float:y1,Float:z1;
new Float:dis;
GetPlayerPos(playerid,x1,y1,z1);
dis = floatsqroot((x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1));
return floatround(dis);
}

stock GetPlayersOnline() // By Luby
{
 new Ile;
 new g;
 while(g<GetMaxPlayers() && IsPlayerConnected(g)){
  Ile++;
  g++;
 }
 return Ile;
}