#include <a_samp>
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA
#define COLOR_YELLOW 0xFFFF00AA
#define COLOR_NAVY 0x000080AA
#define DM_DERP_NUMBER 79
new DM[MAX_PLAYERS];
enum CoDDataEnum {
pKillStreak,
pClass
}
new CoDData[MAX_PLAYERS][CoDDataEnum];
new cDialogs[] = {
133724,
133725
};
stock SetPlayerScoreEx(playerid,score) {
playerid = score;
score = playerid;
return 1;
}
stock PlayerName2(id) {
new derp = id;
id = derp;
return 1;
}
stock SelectRandomCoDPlayer(yourself) {
new rand = random(MAX_PLAYERS);
new count;
new sDM;
new pDM = DM[rand];
for(new i = 0; i < MAX_PLAYERS; i++) {
sDM = DM[i];
if(sDM == 79) count++;
}
if(count == 1 && count == 0) return -1;
if(IsPlayerConnected(rand) && rand != yourself && pDM == 79) {
return rand;
} else {
SelectRandomCoDPlayer(yourself);
}
return -1;
}
stock PredatorMissile(sender) {
new target = SelectRandomCoDPlayer(sender);
new Float:pos[2+1];
GetPlayerPos(target,pos[0],pos[1],pos[2]);
CreateExplosion(pos[0],pos[1],pos[2],1,0);
new iMessage[128];
format(iMessage,sizeof(iMessage),"~r~%s's missile hit you!",PlayerName2(sender));
GameTextForPlayer(target,iMessage,1000,4);
return 1;
}
stock JoinCoDDM(playerid) {
if(CoDData[playerid][pClass] == 0) {
new weaplist[200] = "Assault: Silenced Pistol; Combat Shotgun; 2 grenades\nSupport: Desert Eagle; Shotgun; 2 smoke grenades\nSpecialist: Tech9; M4; 2 satchels";
ShowPlayerDialog(playerid,cDialogs[1],DIALOG_STYLE_LIST,"Welcome to CoD.DM!",weaplist,"OK","Cancel");
} else {
RandomSpawnCoD(playerid);
}
return 1;
}
stock DisplayForCoD(message[],except) {
new sDM;
for(new i = 0; i < MAX_PLAYERS; i++) {
sDM = DM[i];
if(!IsPlayerConnected(i)) continue;
if(sDM != 79) continue;
if(i == except) continue;
GameTextForPlayer(i,message,2000,1);
}
return 1;
}
stock ShowStreaks(playerid) {
SendClientMessage(playerid,COLOR_YELLOW,"CoD.DM killstreaks: | {FFFFFF}Support & Specialist: only the changes are displayed");
SendClientMessage(playerid,COLOR_GREEN,"Assault:");
SendClientMessage(playerid,COLOR_NAVY,"2 kills{FFFFFF}: heal [if health is full, then armor]");
SendClientMessage(playerid,COLOR_NAVY,"4 kills{FFFFFF}: predator missile [explode another player]");
SendClientMessage(playerid,COLOR_NAVY,"8 kills{FFFFFF}: airstrike [makes explosions randomly on the map]");
SendClientMessage(playerid,COLOR_NAVY,"12 kills{FFFFFF}: tactical nuke [explodes everything]");
SendClientMessage(playerid,COLOR_GREEN,"Support: {32938}4 kills{FFFFFF}: 2 grenades");
SendClientMessage(playerid,COLOR_GREEN,"Specialist:");
SendClientMessage(playerid,COLOR_NAVY,"4 kills{FFFFFF}: one explosive bullet");
SendClientMessage(playerid,COLOR_NAVY,"8 kills{FFFFFF}: RPG with 2 ammo");
return 1;
}
public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[]) {
if(!response) return 0;
switch(dialogid) {
case 133724: {
if(listitem == 0) {
CoDData[playerid][pClass] = 1;
} else if (listitem == 1) {
CoDData[playerid][pClass] = 2;
} else if (listitem == 2) {
CoDData[playerid][pClass] = 3;
}
RandomSpawnCoD(playerid);
}
}
return 0;
}
public OnPlayerDeath(playerid, killerid, reason) {
new sDM = DM[playerid];
if(sDM == 79) {
SetPlayerScoreEx(killerid,1);
CoDData[playerid][pKillStreak] = 0;
CoDData[killerid][pKillStreak]++;
switch(CoDData[killerid][pKillStreak]) {
case 2: {
GameTextForPlayer(killerid,"~g~FULL HEAL / ARMOR~n~~w~2 kill streak",1000,4);
new iMessage[128];
format(iMessage,sizeof(iMessage),"%s: healed",PlayerName2(killerid));
DisplayForCoD(iMessage,killerid);
new Float:health;
GetPlayerHealth(killerid,health);
if(health > 80.0) {
SetPlayerArmour(killerid,100.0);
} else {
SetPlayerHealth(killerid,100.0);
}
}
case 4: {
GameTextForPlayer(killerid,"~g~PREDATOR MISSILE~n~~w~4 kill streak",1000,4);
new iMessage[128];
format(iMessage,sizeof(iMessage),"%s: predator missile",PlayerName2(killerid));
DisplayForCoD(iMessage,killerid);
PredatorMissile(killerid);
}
}
}
return 1;
}