/*
Welcome to the Play Hitman Minigame! This is a minigame I used to play
at an old server with some freinds, and found it too be quite fun!
(c) Grove/Jay 2008
*/
#define CASH_PRIZE 500000 //This is the prize that the player will win when killing the terrirost!
#define WEAPON_ID 34 //This is the weapon id that all players will recived to help kill him!
#define WEAPON_AMMO 400 ///this is the ammo!
#include <a_samp>
#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
#define yellow 0xFFFF00AA
#define green 0x33FF33AA
#define red 0xFF0000AA
#define white 0xFFFFFFAA
#define pink 0xCCFF00FFAA
#define blue 0x00FFFFAA
#define grey 0xAFAFAFAA
#define darkred 0x660000AA
#define orange 0xFF8040FF
#define green2 0x33AA33AA
#define red2 0xAA3333AA
forward VehicleTimerHealth(playerid);
new IsGameOn;
new PlayerHitman[200];
new lolz[256];
new color[200];
public OnFilterScriptInit()
{
print("Play Hitman Minigame 1.0 by Grove Loaded!");
}
public OnFilterScriptExit()
{
print("Play Hitman Minigame 1.0 by Grove Unloaded!");
}
public OnPlayerCommandText(playerid, cmdtext[])
{
dcmd(hitman,6,cmdtext);
dcmd(endhitman,9,cmdtext);
return 0;
}
dcmd_hitman(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,red,"You have to be an rcon adminitrator!");
if(IsGameOn ==1) return SendClientMessage(playerid,red,"The minigame is already on!");
StartHitman();
#pragma unused params
return true;
}
dcmd_endhitman(playerid, params[])
{
if(!IsPlayerAdmin(playerid)) return SendClientMessage(playerid,red,"You have to be an rcon adminitrator!");
if(!IsGameOn) return SendClientMessage(playerid,red,"The minigame is already off!");
EndHitman();
SendClientMessage(playerid,yellow,"You have successfully ended the hitman minigame.");
GameTextForAll("Minigame Over",5000,1);
#pragma unused params
return true;
}
StartHitman()
{
new id = GetRandomID();
GameTextForAll("~w~Kill the ~r~red~w~ player!",5000,1);
format(lolz,256,"%s has been identified as a very dangerous terrorist",PlayerName(id));
SendClientMessageToAll(red,lolz);
SendClientMessageToAll(red,"and is Wanted Dead or Alive!");
format(lolz,256,"Whoever can kill %s will win $%d.",PlayerName(id),CASH_PRIZE);
SendClientMessageToAll(red,lolz);
for(new i =0; i <MAX_PLAYERS; i++)
{
color[i] = GetPlayerColor(i);
SetPlayerColor(i,white);
GivePlayerWeapon(i,WEAPON_ID,WEAPON_AMMO);
}
ResetPlayerWeapons(id);
SetPlayerArmour(id,100);
SetPlayerHealth(id,100);
SetPlayerColor(id,red);
PlayerHitman[id] = true;
SetTimerEx("VehicleTimerHealth",30*1000,false,"i",id);
IsGameOn = 1;
}
EndHitman()
{
KillTimer(0);
IsGameOn = 0;
for(new i =0; i <MAX_PLAYERS; i++)
{
SetPlayerColor(i,color[i]);
PlayerHitman[i] = false;
}
}
public OnPlayerSpawn(playerid)
{
if(IsGameOn) return SetPlayerColor(playerid,white);
return true;
}
public VehicleTimerHealth(playerid)
{
if(!IsPlayerInAnyVehicle(playerid)) return false;
if(IsGameOn)
{
SetVehicleHealth((GetPlayerVehicleID(playerid)),100);
SendClientMessage(playerid,red,"Burn Baby Burn!");
SetTimerEx("VehicleTimerHealth",30*1000,false,"i",playerid);
return false;
}
KillTimer(0);
return true;
}
public OnPlayerDeath(playerid,killerid,reason)
{
if(PlayerHitman[playerid])
{
if(killerid == INVALID_PLAYER_ID)
{
format(lolz,256,"%s has killed himself, the minigame is over!",PlayerName(playerid));
SendClientMessageToAll(red,lolz);
EndHitman();
return false;
}
format(lolz,256,"%s has killed the Terrorist, %s! The Minigame is over!!",PlayerName(killerid),PlayerName(playerid));
SendClientMessageToAll(red,lolz);
EndHitman();
GivePlayerMoney(killerid,CASH_PRIZE);
}
return true;
}
stock GetRandomID() //thanks to Boylett
{
new bool:connected[MAX_PLAYERS] = false, amount = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
if(IsPlayerConnected(i))
{
connected[i] = true;
amount++;
}
if(amount == 0) return -1;
new rand = random(amount), done = 0;
for(new i = 0; i < MAX_PLAYERS; i++)
if(connected[i])
{
if(done == rand) return i;
done++;
}
return -1;
}
stock PlayerName(playerid)
{
new name[255];
GetPlayerName(playerid, name, 255);
return name;
}