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;
}