Originally Posted by simanovich
(Post 1897444)
This is my version of Jailbreak Coutdown that I made many days ago (Works perfect):
PHP Code:
#include <amxmodx>
#include <dhudmessage>
#include <fakemeta>
#define COUNTDOWN_TASKID 25789
#define MAX_SECONDS 60
#define MIN_SECONDS 5
#define STEP_SECONDS 5
enum _:Teams{
FM_TEAM_UNASSIGNED,
FM_TEAM_T,
FM_TEAM_CT,
FM_TEAM_SPECTATOR
};
new Timer = MIN_SECONDS,bool:g_sound,g_freeze,g_maxplayers,szName[32],szName2[32];
new g_teamnames[][] = {
"NO",
"Terrorists",
"Counter-Terrorists",
"Everyone"
};
public plugin_init(){
register_plugin("CountDown Menu","1.0","Hyuna");
register_clcmd("say /cd","Cmd_cdmenu");
g_maxplayers = get_maxplayers();
}
public Cmd_cdmenu(client){
if (fm_get_user_team(client) == FM_TEAM_CT && is_user_alive(client)|| is_user_admin(client))
{
new some[256];
formatex(some,255,"\d[\r CountDown Menu \d] ^n\yCountDown Status: \d[\y%s\d]^n\yLast Activer: \w%s^n\yLast Stopper: \w%s",(task_exists(COUNTDOWN_TASKID) ? "ON":"OFF"),szName,szName2);
new CDMenu = menu_create(some,"CDMenu_handler");
new cd_cb = menu_makecallback("CDMenu_CallBack");
formatex(some,255,"Seconds: \d[\y%i Seconds\d]",Timer);
menu_additem(CDMenu,some,.callback = cd_cb);
formatex(some,255,"Sound: \d[\y%s\d]",g_sound ? "ON":"OFF");
menu_additem(CDMenu,some,.callback = cd_cb);
formatex(some,255,"Freeze: \d[\y%s\d]",g_teamnames[g_freeze]);
menu_additem(CDMenu,some,.callback = cd_cb);
menu_additem(CDMenu,"\yStart \rCountDown\w!",.callback = cd_cb);
menu_additem(CDMenu,"\yStop \rCountDown\w!",.callback = cd_cb);
menu_setprop(CDMenu,MPROP_EXIT,MEXIT_ALL);
menu_display(client,CDMenu);
}
else
ColorChat(client,"You aren't a ^4Alive Guard^1 Or not ^4Admin^1!");
}
public CDMenu_CallBack(client,CDMenu,item){
switch(item)
{
case 0 .. 3: return (task_exists(COUNTDOWN_TASKID) ? ITEM_DISABLED:ITEM_ENABLED);
case 4: return (task_exists(COUNTDOWN_TASKID) ? ITEM_ENABLED:ITEM_DISABLED);
}
return ITEM_ENABLED;
}
public CDMenu_handler(client,CDMenu,item){
switch(item)
{
case MENU_EXIT:
{
menu_destroy(CDMenu);
return;
}
case 0:
{
Timer += STEP_SECONDS;
if (Timer > MAX_SECONDS)
Timer = MIN_SECONDS;
}
case 1:
{
switch(g_sound)
{
case false: g_sound = true;
case true: g_sound = false;
}
}
case 2:
{
g_freeze++;
if(g_freeze > 3)
g_freeze = 0;
}
case 3:
{
get_user_name(client,szName,31);
ColorChat(client,"^4%s^1 started ^3CountDown^1!",szName);
set_task(1.0,"CountDown",COUNTDOWN_TASKID,.flags="b");
if(g_freeze)
Freeze();
menu_destroy(CDMenu);
return;
}
case 4:
{
get_user_name(client,szName2,31);
ColorChat(client,"^4%s^1 stopped ^3CountDown^1!",szName2);
remove_task(COUNTDOWN_TASKID);
if(g_freeze)
UnFreeze();
Timer = MIN_SECONDS;
menu_destroy(CDMenu);
return;
}
}
menu_destroy(CDMenu);
Cmd_cdmenu(client);
}
public CountDown(){
if(Timer < 1)
{
engclient_cmd(0,"spk ^"radio/com_go^"");
set_dhudmessage(0,255,0,-1.0,0.23,0,6.0,6.0);
show_dhudmessage(0,"Go Go Go!!!");
ColorChat(0,"^3CountDown^1 is over! ^4Go Go Go^1!!!");
if(g_freeze)
UnFreeze();
remove_task(COUNTDOWN_TASKID);
Timer = MIN_SECONDS;
return;
}
if (g_sound)
{
new szWord[32];
num_to_word(Timer,szWord,31);
if (Timer < 21)
engclient_cmd(0,"spk ^"\vox/%s second%s^"",szWord,Timer > 1 ? "s":"");
else
engclient_cmd(0,"spk ^"\vox/%s^"",szWord);
}
set_dhudmessage(random_num(0,255),random_num(0,255),random_num(0,255),-1.0,0.23,0,6.0,0.5);
show_dhudmessage(0,"CountDown: %i Second%s Left",Timer,Timer > 1 ? "s":"");
Timer--;
}
public Freeze(){
for (new i = 1; i <= g_maxplayers; i++)
{
if(!is_user_alive(i))
continue;
switch(g_freeze)
{
case 1: if(fm_get_user_team(i) == FM_TEAM_T) set_user_freeze(i,1);
case 2: if(fm_get_user_team(i) == FM_TEAM_CT) set_user_freeze(i,1);
case 3: set_user_freeze(i,1);
}
}
}
public UnFreeze(){
for (new i = 1; i <= g_maxplayers; i++)
{
if(!is_user_alive(i))
continue;
switch(g_freeze)
{
case 1: if(fm_get_user_team(i) == FM_TEAM_T) set_user_freeze(i,0);
case 2: if(fm_get_user_team(i) == FM_TEAM_CT) set_user_freeze(i,0);
case 3: set_user_freeze(i,0);
}
}
}
stock ColorChat(const id,const string[],any:...){
new msg[191], players[32], count = 1;
static len; len = formatex(msg,charsmax(msg),"^4[ ^3CountDown ^4]^1 ");
vformat(msg[len],charsmax(msg) - len,string,3);
if(id) players[0] = id;
else get_players(players,count,"ch");
for (new i = 0; i < count; i++)
{
if(is_user_connected(players[i]))
{
message_begin(MSG_ONE_UNRELIABLE,get_user_msgid("SayText"),_,players[i]);
write_byte(players[i]);
write_string(msg);
message_end();
}
}
}
stock set_user_freeze(client,freeze){
new iFlag = pev(client,pev_flags);
set_pev(client,pev_flags,freeze ? iFlag | FL_FROZEN:iFlag & ~FL_FROZEN);
}
stock fm_get_user_team(index)
return get_pdata_int(index,114);
stock bool:is_user_admin(client)
return get_user_flags(client) & ADMIN_ADMIN ? true:false;
|