PHP Code:
#include <amxmodx>
#include <cstrike>
#include <fun>
#include <hamsandwich>
new const PLUGIN[] = "Days Votemenu"
new const VERSION[] = "1.0"
new const AUTHOR[] = "Wrecked"
new const prefix[] = "!g[Jailbreak]!y"
#define DAYS 7
#define VOTE_TIME 6.0
#define TASKID 1996
#define START_TASKID 1998
new iVotes[DAYS]
new const DAYSNAMES[DAYS][] =
{
"Zombie Day",
"Cage Day",
"Free Day",
"Spartan Day",
"War Day",
"Knife Day",
"Other Day"
}
new iVoteAmount
new bool:b_DayChosen
new bool:b_NoWep
new menu
public plugin_init()
{
register_plugin( PLUGIN, VERSION, AUTHOR ) // :avast:
register_event( "HLTV", "EVENT_NewRound", "a", "1=0", "2=0" ) // new round, no freezetime
RegisterHam( Ham_Spawn, "player", "HAM_Spawn_Post", 1 )
RegisterHam( Ham_PlayerAddItem, "player", "HAM_Add_Item_Pre", 0 )
set_task( 7.0, "EVENT_NewRound", START_TASKID ) // since HLTV isn't called on mapstart
}
public HAM_Add_Item_Pre( id, iEnt )
{
if( cs_get_user_team( id ) == CS_TEAM_T && b_NoWep && b_DayChosen )
{
return HAM_SUPERCEDE;
}
return HAM_IGNORED;
}
public HAM_Spawn_Post( id )
{
if( !is_user_alive( id ) || !b_DayChosen )
return HAM_IGNORED;
new bigger = 0
for( new i = 1; i < DAYS; i++ ) // thanks seta
{
if( iVotes[i] > iVotes[bigger] )
{
bigger = i
}
}
EXEC_DayAction( id, bigger + 1 )
return HAM_IGNORED;
}
public EVENT_NewRound()
{
b_DayChosen = false
b_NoWep = false
remove_task( TASKID )
remove_task( START_TASKID )
for( new i = 0; i < sizeof( iVotes ); i++ )
{
iVotes[i] = 0
}
menu = menu_create( "What day will today be?", "MENU_Handler" )
for( new z = 0; z < DAYS; z++ )
{
new menuitem[64]
new number[10]
formatex( menuitem, 63, "%s", DAYSNAMES[z] )
formatex( number, 9, "%d", z + 1 )
menu_additem( menu, menuitem, number, 0 )
}
menu_setprop( menu, MPROP_EXIT, MEXIT_ALL )
new iPlayers[32]
new iNum
get_players( iPlayers, iNum )
new id
for( new i = 0; i < iNum; i++ )
{
id = iPlayers[i]
if( cs_get_user_team( id ) == CS_TEAM_CT )
{
menu_display( id, menu, 0 )
iVoteAmount++
}
}
UPDATE_Hud()
set_task( VOTE_TIME, "TASK_GetDay", TASKID )
}
public MENU_Handler( id, menu, item )
{
if( item == MENU_EXIT )
{
menu_destroy( menu )
return PLUGIN_HANDLED;
}
new name[64]
new data[6]
new access
new callback
menu_item_getinfo( menu, item, access, data, 5, name, 63, callback )
new choice = str_to_num( data )
iVotes[choice-1]++
iVoteAmount--
menu_destroy( menu )
UPDATE_Hud()
return PLUGIN_HANDLED;
}
public TASK_GetDay()
{
new bigger = 0;
for( new i = 1; i < DAYS; i++ ) // thanks Seta
{
if( iVotes[i] > iVotes[bigger] )
{
bigger = i
}
}
EXEC_DayAction( 0, bigger + 1 )
}
EXEC_DayAction( plr, iValue )
{
b_DayChosen = true
new iPlayers[32]
new iNum = 1
if( plr )
{
iPlayers[0] = plr
}
else
{
get_players( iPlayers, iNum )
}
new id
switch( iValue )
{
case 1: // zombie
{
for( new i = 0; i < iNum; i++ )
{
id = iPlayers[i]
if( cs_get_user_team( id ) == CS_TEAM_T && is_user_alive( id ) )
{
set_user_health( id, 2000 )
}
}
b_NoWep = true
ChatColor( plr ? plr : 0, "%s Today is a!g zombie day!y! All terrorists get!g 2000!y HP!", prefix )
}
case 2: // cage
{
ChatColor( plr ? plr : 0, "%s Everyone get to the!g cage!y and listen to orders! It's a!g cage day!", prefix )
b_NoWep = false
}
case 3: // free
{
ChatColor( plr ? plr : 0, "%s Today is a!g free day!", prefix )
b_NoWep = false
}
case 4: // spartan
{
for( new i = 0; i < iNum; i++ )
{
id = iPlayers[i]
if( cs_get_user_team( id ) == CS_TEAM_T && is_user_alive( id ) )
{
strip_user_weapons( id )
give_item( id, "weapon_deagle" )
cs_set_user_bpammo( id, CSW_DEAGLE, 35 )
give_item( id, "weapon_shield" )
}
}
ChatColor( plr ? plr : 0, "%s Today is a!g spartan day!y!", prefix )
b_NoWep = true
}
case 5: // war
{
for( new i = 0; i < iNum; i++ )
{
id = iPlayers[i]
if( is_user_alive( id ) )
{
strip_user_weapons( id )
new iWep = give_item( id, "weapon_m3" )
cs_set_weapon_ammo( iWep, 32 ) // 32, right?
}
}
ChatColor( plr ? plr : 0, "%s Today is a!g war day!y!", prefix )
b_NoWep = true
}
case 6: // knife
{
for( new i = 0; i < iNum; i++ )
{
id = iPlayers[i]
if( is_user_alive( id ) )
{
strip_user_weapons( id )
if( cs_get_user_team( id ) == CS_TEAM_CT )
{
give_item( id, "weapon_knife" ) // requested by chris
set_user_health( id, 1000 )
}
}
}
ChatColor( plr ? plr : 0, "%s Today is a!g knife day!y!", prefix )
b_NoWep = true
}
case 7: // other
{
ChatColor( plr ? plr : 0, "%s Today is an!g other day!y!", prefix )
b_NoWep = false
}
}
}
stock UPDATE_Hud()
{
new message[256]
new iLen
iLen += formatex( message, charsmax( message ) - iLen, "%s v%s by %s^n^n", PLUGIN, VERSION, AUTHOR )
for( new i = 0; i < DAYS; i++ )
{
iLen += formatex( message[iLen], charsmax( message ) - iLen, "%s [%d Vote%s]^n", DAYSNAMES[i], iVotes[i], ( iVotes[i] == 1 ) ? "" : "s" )
}
iLen += formatex( message[iLen], charsmax( message ) - iLen, "^nRemaining Votes: %d", iVoteAmount )
set_hudmessage( 255, 255, 255, 0.56, 0.02, 0, 6.0, 2.0 )
show_hudmessage( 0, "%s", message )
}
stock ChatColor( id, const input[], any:... )
{
new count = 1;
new players[32];
static msg[191];
vformat(msg, 190, input, 3);
replace_all(msg, 190, "!g", "^4"); // Green Color
replace_all(msg, 190, "!y", "^1"); // Default Color
replace_all(msg, 190, "!team", "^3"); // Team Color
replace_all(msg, 190, "!team2", "^0"); // Team2 Color
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();
}
}
}