i want to add 1 option in this plugin ...
2 admins are selected as captains , if admins are not there then only random player is selected as captain .
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#define TASK_MENUCLOSE 9001
#define TASK_PLAYERSLIST 9002
#define MinPlayers 10
new const Prefix[] = "[Captain]";
new RandomPlayer1;
new RandomPlayer2;
new bool:CaptainSort;
public plugin_init()
{
register_plugin("Captain Sorting", "1.0", "kramesa");
register_clcmd("say /capsort", "StartCaptain");
register_clcmd("chooseteam", "Block");
register_clcmd("jointeam", "Block");
}
public StartCaptain(id)
{
if(is_user_admin(id))
{
if(CaptainSort == true)
{
client_print(id, print_chat, "%s Captain Sort already running.", Prefix);
return PLUGIN_HANDLED;
}
Captain();
return PLUGIN_HANDLED;
}
client_print(id, print_chat, "%s Only admins have access to this command.", Prefix);
return PLUGIN_HANDLED;
}
public Block(id)
{
if(CaptainSort == true)
{
client_print(id, print_chat, "%s Captain Sort is running.", Prefix);
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
public client_putinserver(id)
{
if(!is_user_connected(RandomPlayer1) && CaptainSort && get_user_flags(id) & ADMIN_KICK)
{
RandomPlayer1 = id;
new First_Captain[35];
get_user_name(RandomPlayer1, First_Captain, charsmax(First_Captain));
client_print(0, print_chat, "%s The new Captain of CTs is: %s", Prefix, First_Captain);
set_cvar_num("sv_restartround", 1);
}
if(!is_user_connected(RandomPlayer2) && CaptainSort && get_user_flags(id) & ADMIN_KICK)
{
RandomPlayer2 = id;
new Second_Captain[35];
get_user_name(RandomPlayer2, Second_Captain, charsmax(Second_Captain));
client_print(0, print_chat, "%s The new Captain of Ts is: %s", Prefix, Second_Captain);
set_cvar_num("sv_restartround", 1)
}
}
public Captain()
{
new iPlayers[32], iNum;
get_players(iPlayers, iNum, "ch");
if(iNum < MinPlayers)
{
client_print(0, print_chat, "%s Need have more %d players to start Captain Sort.", Prefix, (iNum - MinPlayers));
return PLUGIN_HANDLED;
}
for(new i; i < iNum; i++)
{
user_silentkill(iPlayers[i]);
cs_set_user_team(iPlayers[i], 3);
}
if(get_user_flags(iPlayers[iNum]) & ADMIN_KICK) {
RandomPlayer1 = iPlayers[random(iNum)];
RandomPlayer2 = iPlayers[random(iNum)];
}
while(RandomPlayer1 == RandomPlayer2)
{
RandomPlayer2 = iPlayers[random(iNum)];
}
cs_set_user_team(RandomPlayer1, CS_TEAM_CT);
cs_set_user_team(RandomPlayer2, CS_TEAM_T);
new First_Captain[35], Second_Captain[35];
get_user_name(RandomPlayer1, First_Captain, charsmax(First_Captain));
get_user_name(RandomPlayer2, Second_Captain, charsmax(Second_Captain));
client_print(0, print_chat, "%s The Captain's are: %s (TRs) and %s (CTs).", Prefix, First_Captain, Second_Captain);
client_print(0, print_chat, "%s If no player is selected in 10 seconds, a player will be chosen random.", Prefix);
set_cvar_num("sv_restartround", 1)
new First = random(2)
set_task(1.5, "captain_menu", First ? RandomPlayer1 : RandomPlayer2);
set_task(0.2, "PlayersList", TASK_PLAYERSLIST, _, _, "b");
CaptainSort = true
return PLUGIN_CONTINUE
}
public captain_menu(id)
{
new menu = menu_create("Select a Player:", "captainmenu_handler")
set_task(11.5, "menu_task", id + TASK_MENUCLOSE);
new players[32], pnum, tempid;
new szName[32], szTempid[10];
get_players(players, pnum, "ch")
if(pnum == 0)
{
remove_task(id+TASK_MENUCLOSE)
remove_task(TASK_PLAYERSLIST)
CaptainSort = false
client_print(0, print_chat, "%s Closing Captain Sort. Missing players.", Prefix);
return PLUGIN_HANDLED;
}
for(new i; i<pnum; i++)
{
tempid = players[i];
if(cs_get_user_team(tempid) != CS_TEAM_SPECTATOR) continue;
get_user_name(tempid, szName, charsmax(szName));
num_to_str(tempid, szTempid, charsmax(szTempid));
menu_additem(menu, szName, szTempid,0);
}
menu_setprop(menu, MPROP_EXIT, MEXIT_NEVER);
menu_display(id, menu, 0);
return PLUGIN_HANDLED;
}
public captainmenu_handler(id,menu,item)
{
if(item == MENU_EXIT)
{
menu_display(id,menu,0)
return PLUGIN_HANDLED;
}
new data[6], szName[64];
new access, callback;
menu_item_getinfo(menu, item, access, data, charsmax(data), szName, charsmax(szName), callback);
new tempid = str_to_num(data)
new name[35], namec[35];
get_user_name(tempid, name, charsmax(name));
get_user_name(id, namec, charsmax(namec));
cs_set_user_team(tempid, cs_get_user_team(id));
client_print(0, print_chat, "%s %s choose the player %s", Prefix, namec, name);
set_cvar_num("sv_restart",1)
remove_task(id+TASK_MENUCLOSE)
new iPlayers[32],pnum
get_players(iPlayers,pnum,"h")
if(is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2))
{
set_task(1.5,"captain_menu",id == RandomPlayer1 ? RandomPlayer2 : RandomPlayer1)
}
else
{
set_task(5.0,"CheckCaptainJoin",id == RandomPlayer1 ? RandomPlayer1 : RandomPlayer2)
}
menu_destroy(menu)
return PLUGIN_HANDLED
}
public menu_task(id)
{
id -= TASK_MENUCLOSE
new players[32], pnum;
get_players(players, pnum, "ch");
new randomnum = random(pnum)
new bool:has_spec
for(new i; i < pnum; i++)
{
if(cs_get_user_team(players[i]) == CS_TEAM_SPECTATOR)
{
has_spec = true
}
}
if(!has_spec)
{
remove_task(TASK_PLAYERSLIST);
CaptainSort = false;
return;
}
while(cs_get_user_team(players[randomnum]) != CS_TEAM_SPECTATOR)
{
randomnum = random(pnum)
}
if(is_user_connected(id))
{
set_cvar_num("sv_restart",1)
cs_set_user_team(players[randomnum],cs_get_user_team(id))
set_task(1.5, "captain_menu", id == RandomPlayer1 ? RandomPlayer2 : RandomPlayer1);
}
else
{
set_task(5.0, "CheckCaptainJoin", id == RandomPlayer1 ? RandomPlayer2 : RandomPlayer1);
client_print(0, print_chat, "%s Awaiting the arrival of a new Captain.", Prefix);
}
show_menu(id, 0, "^n", 1);
}
public CheckCaptainJoin(NextCaptainMenu)
{
if(is_user_connected(RandomPlayer1) && is_user_connected(RandomPlayer2))
{
set_task(1.5, "captain_menu", NextCaptainMenu)
}
else
{
set_task(5.0, "CheckCaptainJoin", NextCaptainMenu)
}
}
public PlayersList()
{
new iPlayers[32], iNum;
get_players(iPlayers, iNum, "ch");
new posTR, posCT, posSPEC;
new HudTextTR[512], HudTextCT[512], HudTextSPEC[512];
new szName[38], name[38];
for(new i; i < iNum; i++)
{
get_user_name(iPlayers[i], szName, charsmax(szName));
if(iPlayers[i] == RandomPlayer1 || iPlayers[i] == RandomPlayer2)
{
formatex(name, charsmax(name), "%s (C)", szName);
}
else
{
name = szName;
}
if(cs_get_user_team(iPlayers[i]) == CS_TEAM_T)
{
posTR += formatex(HudTextTR[posTR], 511-posTR,"%s^n", name);
}
else if(cs_get_user_team(iPlayers[i]) == CS_TEAM_CT)
{
posCT += formatex(HudTextCT[posCT], 511-posCT, "%s^n", name);
}
else
{
posSPEC += formatex(HudTextSPEC[posSPEC], 511-posSPEC, "%s^n", name);
}
}
for(new i; i < iNum; i++)
{
set_hudmessage(255, 0, 0, 0.70, 0.16, 0, 0.0, 1.1, 0.0, 0.0, 1);
show_hudmessage(iPlayers[i], "Terrorists:");
set_hudmessage(255, 255, 255, 0.70, 0.19, 0, 0.0, 1.1, 0.0, 0.0, 2);
show_hudmessage(iPlayers[i], HudTextTR);
set_hudmessage(0, 0, 255, 0.70, 0.51, 0, 0.0, 1.1, 0.0, 0.0, 3);
show_hudmessage(iPlayers[i], "Counter-Terrorist:");
set_hudmessage(255, 255, 255, 0.70, 0.54, 0, 0.0, 1.1, 0.0, 0.0, 4);
show_hudmessage(iPlayers[i], HudTextCT);
}
}