show next map ---> show current map
Hello everyone
this code shows in hud message the next map and i want help from you guys to make it shows the current map
Code
PHP Code:
#include <amxmodx>
#include <amxmisc>
#include <cstrike>
#include <fakemeta>
#include <fakemeta_util>
#include <fun>
#include <hamsandwich>
#define PLUGIN "Deathrun Duel"
#define VERSION "4.0"
#define AUTHOR "[Vicious Vixen]"
#define PREFIX "[ Sharjah_DR ]"
#define is_valid_player(%1) (1 <= %1 <= 32)
#define GODTID 100500
#define TIMERTID 100501
#define TIMER2TID 100502
#define INFORMERTID 100503
#define WAITTIMERTID 100504
#define MCOUNT 9
#define SCOUNT 20
#define DCOUNT 13
#define DAMMO 1
#define KWPN "world"
#define KHS 1
#define MENUBODY 1024
#define MAXORIGINS 2
#define MAXWORDS 100
#define MAX_BUTTONS 100
#define KeysButtonsMenu (1<<0)|(1<<1)|(1<<2)|(1<<3)|(1<<4)|(1<<5)|(1<<6)|(1<<7)|(1<<8)|(1<<9) // Keys: 137890
#define KeysOptionsMenu (1<<0)|(1<<1)|(1<<8) //129
#define KeysDelayMenu (1<<0)|(1<<1)|(1<<2)|(1<<8) //1239
#define ANNOUNCE_TASK 10000
#define m_flWait 44
//Main
new gEnt [ MAX_BUTTONS ];
new gUsed [ MAX_BUTTONS ];
new giPointer = 0 ;
new gOnStart [ MAX_BUTTONS ];
new Float : gDefaultDelay [ MAX_BUTTONS ];
new Float : gDelay [ MAX_BUTTONS ];
new gInMenu [ 33 ];
new gszFile [ 128 ];
new giSprite ;
new gcvarDefault , gcvarTeam , gcvarFreeRun ;
new gcvarLimit , gcvarLimitMode , gcvarPrivilege ;
new gcvarMessage , gcvarRestore ;
//VOTE
#define TASK_SHOWMENU 432
#define TASK_RES 123
#define MAX_ROUNDS 999
#define KeysFFVote (1<<0)|(1<<1) // Keys: 12
new gcvarFRVoteTime ;
new giVoteStart , giVoteTime ;
new bool : gbFreeRun = false ;
new bool : gbVote = false ;
#define VOTE_ON 0
#define VOTE_OFF 1
new giVotes [ 33 ][ 2 ];
new giRounds = MAX_ROUNDS , giTime = 0 ;
new MaxPlayers
new ChoosedDuel
new DuelNum
new SayText
new BeaconSprite
new CounterID
new TerroristID
new MathAnswer
new RussianRouletteID
new RussianRouletteBullet
new Index
new Timer
new OriginsNum
new WordsNum
new g_MsgHud1
new g_MsgHud2
new g_MsgHud3
new PcvarDuels
new PcvarMusic
new PcvarTimer
new PcvarTimeLimit
new PcvarSpawnGod
new PcvarEffects
new PcvarInformer
new PcvarLastMenu
new PcvarWait
new PcvarMode
new PcvarTele
new MenuPosition [ 33 ]
new MenuTs [ 33 ]
new RussianRouletteName [ 64 ]
new MathTask [ 64 ]
new ConfigsDir [ 64 ]
new WordsFile [ 64 ]
new OriginsFile [ 128 ]
new WordAnswer [ 128 ]
new MenuBody [ MENUBODY + 1 ]
new bool : Last
new bool : Duel
new bool : FPage
new bool : TouchWeapons [ 33 ]
new bool : Once [ 33 ]
new bool : InDuel [ 33 ]
new bool : Knife [ 33 ]
new bool : Deagle [ 33 ]
new bool : M4a1 [ 33 ]
new bool : Ak47 [ 33 ]
new bool : Mp5navy [ 33 ]
new bool : Grenade [ 33 ]
new bool : Scout [ 33 ]
new bool : Drob [ 33 ]
new bool : Awp [ 33 ]
new bool : Math [ 33 ]
new bool : Word [ 33 ]
new bool : RussianRoulette [ 33 ]
new bool : Used [ 33 ]
new bool : Boom [ 33 ]
new bool : NotYou [ 33 ]
new bool : DoIt [ 33 ]
new bool : Start [ 33 ]
new bool : Famas [ 33 ]
new Origins [ MAXORIGINS ][ 128 ]
new Words [ MAXWORDS ][ 192 ]
new Music [ MCOUNT ][] =
{
"media/Half-Life01.mp3" ,
"media/Half-Life02.mp3" ,
"media/Half-Life03.mp3" ,
"media/Half-Life08.mp3" ,
"media/Half-Life11.mp3" ,
"media/Half-Life12.mp3" ,
"media/Half-Life13.mp3" ,
"media/Half-Life16.mp3" ,
"media/Half-Life17.mp3"
}
new Sound [ SCOUNT ][] =
{
"fvox/one" ,
"fvox/two" ,
"fvox/three" ,
"fvox/four" ,
"fvox/five" ,
"fvox/six" ,
"fvox/seven" ,
"fvox/eight" ,
"fvox/nine" ,
"fvox/ten" ,
"fvox/eleven" ,
"fvox/twelve" ,
"fvox/thirteen" ,
"fvox/fourteen" ,
"fvox/fifteen" ,
"fvox/sixteen" ,
"fvox/seventeen" ,
"fvox/eighteen" ,
"fvox/nineteen" ,
"fvox/twenty"
}
new Duels [ DCOUNT ][] =
{
"DUEL_1" ,
"DUEL_2" ,
"DUEL_3" ,
"DUEL_4" ,
"DUEL_5" ,
"DUEL_6" ,
"DUEL_7" ,
"DUEL_8" ,
"DUEL_9" ,
"DUEL_10" ,
"DUEL_11" ,
"DUEL_12" ,
"DUEL_13"
}
public plugin_init ()
{
register_plugin ( PLUGIN , VERSION , AUTHOR )
register_event ( "HLTV" , "RoundStart" , "a" , "1=0" , "2=0" )
register_logevent ( "RoundEnd" , 2 , "1=Round_End" )
RegisterHam ( Ham_Touch , "weaponbox" , "TouchWeapon" )
RegisterHam ( Ham_Touch , "armoury_entity" , "TouchWeapon" )
RegisterHam ( Ham_Touch , "weapon_shield" , "TouchWeapon" )
RegisterHam ( Ham_Spawn , "player" , "PlayerSpawn" , 1 )
RegisterHam ( Ham_Killed , "player" , "PlayerKilled" )
register_forward ( FM_CmdStart , "CmdStart" , 1 )
register_forward ( FM_UpdateClientData , "UpdateClientData" , 1 )
register_clcmd ( "say /duel" , "CmdDuelsMenu" )
register_clcmd ( "say /dd" , "CmdDuelsMenu" )
register_clcmd ( "say_team /duel" , "CmdDuelsMenu" )
register_clcmd ( "say_team /dd" , "CmdDuelsMenu" )
register_clcmd ( "deathrun_duels" , "CmdDuelsMenu" )
register_clcmd ( "say" , "hooksay" )
register_clcmd ( "say_team" , "hooksay_team" )
register_concmd ( "dd_origin_menu" , "CmdOriginsMenu" , ADMIN_RCON )
PcvarDuels = register_cvar ( "dd_duels" , "abcdefghijklm" )
PcvarMusic = register_cvar ( "dd_music" , "0" )
PcvarTimer = register_cvar ( "dd_timer" , "0" )
PcvarTimeLimit = register_cvar ( "dd_timelimit" , "60" )
PcvarSpawnGod = register_cvar ( "dd_spawngod" , "1" )
PcvarEffects = register_cvar ( "dd_effects" , "3" )
PcvarWait = register_cvar ( "dd_wait" , "5" )
PcvarInformer = register_cvar ( "dd_informer" , "1" )
PcvarLastMenu = register_cvar ( "dd_lastmenu" , "1" )
PcvarTele = register_cvar ( "dd_teleport" , "1" )
PcvarMode = register_cvar ( "deathrun_mode" , "BUTTONS" , FCVAR_SERVER )
register_cvar ( "Deathrun Duels" , "v2.5 by [I.G.]" , FCVAR_SERVER | FCVAR_SPONLY )
register_menucmd ( register_menuid ( "Duels Menu" ), MENUBODY - 1 , "ActionDuelsMenu" )
register_menucmd ( register_menuid ( "Enemy Menu" ), MENUBODY - 1 , "ActionEnemyMenu" )
register_menucmd ( register_menuid ( "Roulette Menu" ), MENUBODY - 1 , "ActionRussianRouletteMenu" )
register_menucmd ( register_menuid ( "Last Menu" ), MENUBODY - 1 , "ActionLastMenu" )
register_menucmd ( register_menuid ( "Origins Menu" ), MENUBODY - 1 , "ActionOriginsMenu" )
SayText = get_user_msgid ( "SayText" )
MaxPlayers = get_maxplayers ()
g_MsgHud1 = CreateHudSyncObj ()
g_MsgHud2 = CreateHudSyncObj ()
g_MsgHud3 = CreateHudSyncObj ()
register_dictionary ( "deathrun_duel.txt" )
set_task ( 1.0 , "Informer" , INFORMERTID , "" , 0 , "b" )
register_dictionary ( "common.txt" );
register_dictionary ( "adminvote.txt" );
register_menucmd ( register_menuid ( "FRVote" ), KeysFFVote , "PressedFRVote" );
register_menucmd ( register_menuid ( "ButtonsMenu" ), KeysButtonsMenu , "PressedButtonsMenu" );
register_menucmd ( register_menuid ( "OptionsMenu" ), KeysOptionsMenu , "PressedOptionsMenu" );
register_menucmd ( register_menuid ( "DelayMenu" ), KeysDelayMenu , "PressedDelayMenu" );
register_clcmd ( "amx_buttons" , "cmd_amx_buttons" , ADMIN_CFG , ": Buttons Menu" );
//Default count of uses
gcvarDefault = register_cvar ( "amx_buttons_default" , "1" );
//Who plugin analyze
//0 - anyone(plugin disabled?)
//1 - Te
//2 - Ct
//3 - Te+Ct
gcvarTeam = register_cvar ( "amx_buttons_team" , "1" );
//Enabled FreeRun mode?
gcvarFreeRun = register_cvar ( "amx_buttons_freerun" , "1" );
//Vote time
gcvarFRVoteTime = register_cvar ( "amx_freerun_votetime" , "10" );
//Type of limit
//0 - enabled after 'amx_freerun_limit' rounds
//1 - enabled after 'amx_freerun_limit' minutes
gcvarLimitMode = register_cvar ( "amx_freerun_limit_mode" , "0" );
//Size of Limit
gcvarLimit = register_cvar ( "amx_freerun_limit" , "5" );
//Interval of message
gcvarMessage = register_cvar ( "amx_freerun_info" , "120.0" , 0 , 120.0 );
//Terrorist`s privilege
//if he use /free FreeRun will start without vote, can he?
gcvarPrivilege = register_cvar ( "amx_freerun_tt_privilege" , "1" );
//restore buttons on new round
gcvarRestore = register_cvar ( "amx_restore_buttons" , "1" );
register_clcmd ( "say /free" , "cmdVoteFreeRun" );
register_clcmd ( "say_team /free" , "cmdVoteFreeRun" );
register_clcmd ( "say free" , "cmdVoteFreeRun" );
register_clcmd ( "say_team free" , "cmdVoteFreeRun" );
register_clcmd ( "say /freerun" , "cmdVoteFreeRun" );
register_clcmd ( "say_team /freerun" , "cmdVoteFreeRun" );
register_clcmd ( "say freerun" , "cmdVoteFreeRun" );
register_clcmd ( "say_team freerun" , "cmdVoteFreeRun" );
register_clcmd ( "say /fr" , "cmdVoteFreeRun" );
register_clcmd ( "say_team /fr" , "cmdVoteFreeRun" );
register_clcmd ( "say fr" , "cmdVoteFreeRun" );
register_clcmd ( "say_team fr" , "cmdVoteFreeRun" );
if( engfunc ( EngFunc_FindEntityByString ,- 1 , "classname" , "func_button" ))
RegisterHam ( Ham_Use , "func_button" , "fwButtonUsed" );
if( engfunc ( EngFunc_FindEntityByString ,- 1 , "classname" , "func_rot_button" ))
RegisterHam ( Ham_Use , "func_rot_button" , "fwButtonUsed" );
if( engfunc ( EngFunc_FindEntityByString ,- 1 , "classname" , "button_target" ))
RegisterHam ( Ham_Use , "button_target" , "fwButtonUsed" );
register_logevent ( "ResetButtons" , 2 , "0=World triggered" , "1=Round_Start" );
fillButtons ( "func_button" );
fillButtons ( "func_rot_button" );
fillButtons ( "button_target" );
return PLUGIN_CONTINUE
}
public plugin_cfg (){
setButtons ();
new iLen = 0 , iMax = charsmax ( gszFile );
iLen = get_configsdir ( gszFile , iMax );
iLen += copy ( gszFile [ iLen ], iMax - iLen , "/dr_buttons/" );
if(! dir_exists ( gszFile )){
set_fail_state ( "Not found dir: configs/dr_buttons" );
return;
}
new szMap [ 32 ];
get_mapname ( szMap , 31 );
formatex ( gszFile [ iLen ], charsmax ( gszFile )- iLen , "%s.ini" , szMap );
if(! file_exists ( gszFile )){
return;
}
new szLine [ 51 ];
new szButton [ 4 ], szTimes [ 3 ], szDelay [ 5 ];
new Float : fDelay ;
for(new i = 0 ; read_file ( gszFile , i , szLine , 50 , iLen ); i ++){
if( iLen == 0 ) continue;
trim ( szLine );
if( szLine [ 0 ]== ';' ) continue;
parse ( szLine , szButton , 3 , szTimes , 2 , szDelay , 4 );
fDelay = szDelay [ 0 ]? str_to_float ( szDelay ):- 1.0 ;
set_start_value ( str_to_num ( szButton ), str_to_num ( szTimes ), fDelay );
}
new Float : fInterval = get_pcvar_float ( gcvarMessage );
if( fInterval > 0.0 )
set_task ( 120.0 , "announceVote" , ANNOUNCE_TASK , _ , _ , "b" );
}
public plugin_precache ()
{
giSprite = precache_model ( "sprites/flare1.spr" );
BeaconSprite = precache_model ( "sprites/shockwave.spr" )
get_configsdir ( ConfigsDir , charsmax ( ConfigsDir ))
format ( WordsFile , charsmax ( WordsFile ), "%s/deathrun_duels.ini" , ConfigsDir )
new cmap [ 32 ], Len , dddir [ 128 ]
format ( dddir , 127 , "%s/deathrun_duels" , ConfigsDir )
if(! dir_exists ( dddir ))
{
mkdir ( dddir )
}
get_mapname ( cmap , 31 )
format ( OriginsFile , charsmax ( OriginsFile ), "%s/deathrun_duels/%s.ini" , ConfigsDir , cmap )
new i = 0
if( file_exists ( WordsFile ))
{
while( i < MAXWORDS && read_file ( WordsFile , i , Words [ WordsNum ], 191 , Len ))
{
i ++
if( Words [ WordsNum ][ 0 ] == ';' || Len == 0 )
{
continue
}
WordsNum ++
}
}
i = 0
if( file_exists ( OriginsFile ))
{
while( i < MAXORIGINS && read_file ( OriginsFile , i , Origins [ OriginsNum ], 127 , Len ))
{
i ++
if( Origins [ OriginsNum ][ 0 ] == ';' || Len == 0 )
{
continue
}
OriginsNum ++
}
}
return PLUGIN_CONTINUE
}
public RoundStart ()
{
Duel = false
Last = false
if( get_pcvar_num ( PcvarTimer ))
{
remove_task ( TIMERTID )
}
remove_task ( TIMER2TID )
remove_task ( WAITTIMERTID )
set_pcvar_string ( PcvarMode , "BUTTONS" )
return PLUGIN_CONTINUE
}
public RoundEnd ()
{
if( get_pcvar_num ( PcvarMusic ))
{
client_cmd ( 0 , "cd fadeout" )
}
if( get_pcvar_num ( PcvarTimer ))
{
remove_task ( TIMERTID )
}
remove_task ( TIMER2TID )
remove_task ( WAITTIMERTID )
return PLUGIN_CONTINUE
}
public PlayerSpawn ( id )
{
if(! is_user_alive ( id ) || ! cs_get_user_team ( id ) || is_user_bot ( id ))
{
return PLUGIN_CONTINUE
}
if( get_pcvar_num ( PcvarSpawnGod ))
{
set_pev ( id , pev_takedamage , 0 )
set_task ( 3.0 , "GodOff" , id + GODTID )
}
set_user_rendering ( id )
remove_task ( id )
TouchWeapons [ id ] = false
Once [ id ] = false
Knife [ id ] = false
Deagle [ id ] = false
M4a1 [ id ] = false
Ak47 [ id ] = false
Mp5navy [ id ] = false
Grenade [ id ] = false
Scout [ id ] = false
Drob [ id ] = false
Awp [ id ] = false
Math [ id ] = false
Word [ id ] = false
RussianRoulette [ id ] = false
Used [ id ] = false
NotYou [ id ] = false
DoIt [ id ] = false
Start [ id ] = false
InDuel [ id ] = false
Famas [ id ] = false
return PLUGIN_CONTINUE
}
public TouchWeapon ( weapon , id )
{
if(! is_user_connected ( id ))
{
return HAM_IGNORED
}
if( TouchWeapons [ id ] || cs_get_user_team ( id ) == CS_TEAM_SPECTATOR )
{
return HAM_SUPERCEDE
}
return HAM_IGNORED
}
public CmdStart ( player , uc_handle , random_seed )
{
if(! is_user_alive ( player ) || player < 1 || player > 32 )
{
return FMRES_IGNORED
}
new Buttons = get_uc ( uc_handle , UC_Buttons )
if( Buttons & IN_ATTACK && Used [ player ])
{
if( Famas [ player ] && get_user_weapon ( player , _ , _ ) == CSW_FAMAS )
{
new wEnt = fm_find_ent_by_owner (- 1 , "weapon_famas" , player );
cs_set_weapon_burst ( wEnt , 1 )
}
if(! NotYou [ player ])
{
if( player == RussianRouletteID && DoIt [ player ])
{
new id = player
get_user_name ( id , RussianRouletteName , 63 )
set_hudmessage ( 255 , 255 , 0 , - 1.0 , 0.3 , 0 , 1.0 , 2.0 , 0.5 , 0.5 , 2 )
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "RRDOING" , RussianRouletteName )
set_task ( 3.0 , "RussianRouletteStop" , id )
DoIt [ id ] = false
Start [ id ] = true
}
else if( player == RussianRouletteID && Start [ player ])
{
client_print ( player , print_center , "%L" , LANG_PLAYER , "RRWAIT" )
}
else
{
client_print ( player , print_center , "%L" , LANG_PLAYER , "RRNOTYOU" )
}
}
else if( Boom [ player ])
{
get_user_name ( player , RussianRouletteName , 63 )
set_hudmessage ( 255 , 0 , 0 , - 1.0 , 0.2 , 1 , 1.0 , 5.0 , 1.0 , 1.0 , 4 )
ShowSyncHudMsg ( 0 , g_MsgHud3 , "%L" , LANG_PLAYER , "RRBOOM" , RussianRouletteName )
client_cmd ( 0 , "spk weapons/deagle-1" )
set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_ONCE )
DeathMsg ( player , player , KHS , KWPN )
Kill ( player )
Used [ CounterID ] = false
Used [ TerroristID ] = false
}
else if(! Boom [ player ])
{
if( player == CounterID )
{
get_user_name ( TerroristID , RussianRouletteName , 63 )
RussianRouletteMenu ( TerroristID )
NotYou [ player ] = false
DoIt [ TerroristID ] = true
RussianRouletteID = TerroristID
}
else if( player == TerroristID )
{
get_user_name ( CounterID , RussianRouletteName , 63 )
RussianRouletteMenu ( CounterID )
NotYou [ player ] = false
DoIt [ CounterID ] = true
RussianRouletteID = CounterID
}
set_hudmessage ( 0 , 255 , 0 , - 1.0 , 0.2 , 0 , 1.0 , 3.0 , 0.5 , 0.5 , 4 )
ShowSyncHudMsg ( 0 , g_MsgHud3 , "%L" , LANG_PLAYER , "RRNOTBOOM" , RussianRouletteName )
client_cmd ( 0 , "spk weapons/dryfire_pistol" )
}
Buttons &= ~ IN_ATTACK
set_uc ( uc_handle , UC_Buttons , Buttons )
}
if( Deagle [ player ])
{
cs_set_user_bpammo ( player , CSW_DEAGLE , 1 )
}
if( M4a1 [ player ])
{
cs_set_user_bpammo ( player , CSW_M4A1 , 3 )
}
if( Ak47 [ player ])
{
cs_set_user_bpammo ( player , CSW_AK47 , 3 )
}
if( Mp5navy [ player ])
{
cs_set_user_bpammo ( player , CSW_MP5NAVY , 3 )
}
if( Scout [ player ])
{
cs_set_user_bpammo ( player , CSW_SCOUT , 1 )
}
if( Drob [ player ])
{
cs_set_user_bpammo ( player , CSW_M3 , 1 )
}
if( Awp [ player ])
{
cs_set_user_bpammo ( player , CSW_AWP , 1 )
}
if( Famas [ player ] && get_user_weapon ( player , _ , _ ) == CSW_FAMAS )
{
new wEnt = fm_find_ent_by_owner (- 1 , "weapon_famas" , player )
if( wEnt )
{
cs_set_weapon_burst ( wEnt , 1 )
cs_set_user_bpammo ( player , CSW_FAMAS , 3 )
}
}
return FMRES_HANDLED
}
public UpdateClientData ( id , sendweapons , cd_handle )
{
if(! is_user_alive ( id ))
{
return FMRES_IGNORED
}
if( Used [ id ] && InDuel [ id ])
{
set_cd ( cd_handle , CD_ID , 0 )
}
return FMRES_HANDLED
}
public PlayerKilled ( victim , attacker , shouldgib )
{
if( victim <= 0 || attacker <= 0 || victim >= 33 || attacker >= 33 )
{
return PLUGIN_HANDLED
}
if( Duel )
{
if( cs_get_user_team ( victim ) == CS_TEAM_CT && InDuel [ victim ])
{
if( RussianRoulette [ victim ] || Math [ victim ] || Word [ victim ])
{
if( victim == CounterID )
{
attacker = TerroristID
}
else if( victim == TerroristID )
{
attacker = CounterID
}
TouchWeapons [ attacker ] = false
Once [ attacker ] = false
Knife [ attacker ] = false
Deagle [ attacker ] = false
M4a1 [ attacker ] = false
Ak47 [ attacker ] = false
Mp5navy [ attacker ] = false
Grenade [ attacker ] = false
Scout [ attacker ] = false
Drob [ attacker ] = false
Awp [ attacker ] = false
Math [ attacker ] = false
Word [ attacker ] = false
RussianRoulette [ attacker ] = false
Used [ attacker ] = false
NotYou [ attacker ] = false
DoIt [ attacker ] = false
Start [ attacker ] = false
InDuel [ attacker ] = false
Famas [ attacker ] = false
Duel = false
}
}
}
remove_task ( attacker )
remove_task ( victim )
return PLUGIN_CONTINUE
}
public CmdDuelsMenu ( id )
{
if(! is_user_alive ( id ))
{
return PLUGIN_HANDLED
}
if (! Once [ id ])
{
if( cs_get_user_team ( id ) == CS_TEAM_CT )
{
new CTsNum = GetCTsNum ( 1 )
new TsNum = GetTsNum ( 1 )
if( CTsNum == 1 && TsNum >= 1 )
{
DuelsMenu ( id , MenuPosition [ id ] = 0 )
}
else if( TsNum < 1 )
{
ColorChat ( id , "^4%s %L^3" , PREFIX , LANG_PLAYER , "NOT_TS" )
}
else if( CTsNum > 1 )
{
ColorChat ( id , "^4%s %L^3" , PREFIX , LANG_PLAYER , "ONLY_LAST" )
}
}
else
{
ColorChat ( id , "^4%s %L^3" , PREFIX , LANG_PLAYER , "ONLY_CTS" )
}
}
return PLUGIN_HANDLED
}
public DuelsMenu ( id , position )
{
if( position < 0 )
{
return
}
FPage = false
new DuelsNum = GetFlagsNum ( PcvarDuels )
new Flags = GetFlags ( PcvarDuels )
new MenuStart = position * 8
if( MenuStart >= DuelsNum )
{
MenuStart = position = MenuPosition [ id ]
}
new MenuEnd = position * 8 + 8
if( MenuEnd >= DuelsNum && position != 0 )
{
MenuEnd = DuelsNum
}
else if( MenuEnd >= DuelsNum && position == 0 )
{
MenuEnd = DCOUNT
FPage = true
}
new Keys = MENU_KEY_0
new Len
new b
Len = format ( MenuBody , MENUBODY - 1 , "%L^n^n" , LANG_PLAYER , "CHOOSE_DUEL" )
for(new a = MenuStart ; a < MenuEnd ; a ++)
{
if( Flags & ( 1 << a ))
{
Keys |= ( 1 << b )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "%d. %L^n" , ++ b , LANG_PLAYER , Duels [ a ])
}
else
{
continue
}
}
if( MenuEnd != DuelsNum && ! FPage )
{
Keys |= MENU_KEY_9
Len += format ( MenuBody [ Len ], MENUBODY - Len , "^n9. %L^n0. %L^n^n %s" , LANG_PLAYER , "DD_MENU_MORE" , LANG_PLAYER , position ? "DD_MENU_BACK" : "DD_MENU_EXIT" , PLUGIN , VERSION , AUTHOR )
}
else
{
Len += format ( MenuBody [ Len ], MENUBODY - Len , "^n0. %L^n^n %s" , LANG_PLAYER , position ? "DD_MENU_BACK" : "DD_MENU_EXIT" , PLUGIN , VERSION , AUTHOR )
}
show_menu ( id , Keys , MenuBody , - 1 , "Duels Menu" )
}
public ActionDuelsMenu ( id , key )
{
switch( key )
{
case 8 :
{
DuelsMenu ( id , ++ MenuPosition [ id ])
}
case 9 :
{
DuelsMenu ( id , -- MenuPosition [ id ])
}
default:
{
if( GetTsNum ( 1 ) || GetCTsNum ( 1 ) == 1 || is_user_alive ( id ))
{
ChoosedDuel = MenuPosition [ id ] * 8 + key
EnemyMenu ( id , MenuPosition [ id ] = 0 )
}
}
}
}
public EnemyMenu ( id , position )
{
if( position < 0 )
{
return
}
new TsNum = 0
for(new aid = 1 ; aid <= MaxPlayers ; aid ++)
{
if( is_user_connected ( aid ) && is_user_alive ( aid ) && cs_get_user_team ( aid ) == CS_TEAM_T && ! is_user_bot ( aid ))
{
MenuTs [ TsNum ++] = aid
}
}
new MenuStart = position * 8
if( MenuStart >= TsNum )
{
MenuStart = position = MenuPosition [ id ]
}
new MenuEnd = position + 8
if( MenuEnd > TsNum )
{
MenuEnd = TsNum
}
new Keys = MENU_KEY_0
new Len
new b = 0
new Names [ 32 ]
Len = format ( MenuBody , MENUBODY - 1 , "%L^n^n" , LANG_PLAYER , "CHOOSE_ENEMY" )
for(new a = MenuStart ; a < MenuEnd ; a ++)
{
get_user_name ( MenuTs [ a ], Names , 31 )
Keys |= ( 1 << b )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "%d. %s^n" , ++ b , Names )
}
if( MenuEnd != TsNum )
{
Keys |= MENU_KEY_9
Len += format ( MenuBody [ Len ], MENUBODY - Len , "^n9. %L^n0. %L^n^n %s" , LANG_PLAYER , "DD_MENU_MORE" , LANG_PLAYER , position ? "DD_MENU_BACK" : "DD_MENU_EXIT" , PLUGIN , VERSION , AUTHOR )
}
else
{
Len += format ( MenuBody [ Len ], MENUBODY - Len , "^n0. %L^n^n %s" , LANG_PLAYER , position ? "DD_MENU_BACK" : "DD_MENU_EXIT" , PLUGIN , VERSION , AUTHOR )
}
show_menu ( id , Keys , MenuBody , - 1 , "Enemy Menu" )
}
public ActionEnemyMenu ( id , key )
{
switch( key )
{
case 8 :
{
EnemyMenu ( id , ++ MenuPosition [ id ])
}
case 9 :
{
EnemyMenu ( id , -- MenuPosition [ id ])
}
default:
{
if( GetTsNum ( 1 ) || GetCTsNum ( 1 ) == 1 || is_user_alive ( id ))
{
new Choosed = MenuPosition [ id ] * 8 + key
new Enemy = MenuTs [ Choosed ]
StartDuel ( id , Enemy )
}
}
}
}
public CmdOriginsMenu ( id , level , cid )
{
if(! cmd_access ( id , level , cid , 1 ))
{
return PLUGIN_HANDLED
}
else
{
ShowOriginsMenu ( id )
}
return PLUGIN_CONTINUE
}
public ShowOriginsMenu ( id )
{
new Keys = MENU_KEY_0
new Len
Len = format ( MenuBody , MENUBODY , "%L^n^n" , id , "ORIGINS_TITLE" )
Keys |= ( 1 << 0 )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "1. %L^n" , id , "SAVE_POSITION" )
Keys |= ( 1 << 1 )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "2. %L^n" , id , "DELETE_POSITIONS" )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "^n0. %L^n^n %s" , id , "DD_MENU_EXIT" , PLUGIN , VERSION , AUTHOR )
show_menu ( id , Keys , MenuBody , - 1 , "Origins Menu" )
return PLUGIN_CONTINUE
}
public ActionOriginsMenu ( id , key )
{
switch( key )
{
case 0 :
{
new vec [ 3 ]
get_user_origin ( id , vec )
add_spawn ( vec )
client_print ( id , print_center , "*** Saved ***" )
ShowOriginsMenu ( id )
}
case 1 :
{
if( file_exists ( OriginsFile ))
{
delete_file ( OriginsFile )
client_print ( id , print_center , "*** Deleted ***" )
ShowOriginsMenu ( id )
}
}
}
return PLUGIN_CONTINUE
}
public add_spawn ( vecs [ 3 ])
{
new Line [ 128 ]
format ( Line , 127 , "%d %d %d" , vecs [ 0 ], vecs [ 1 ], vecs [ 2 ])
write_file ( OriginsFile , Line )
return PLUGIN_CONTINUE
}
public SetOrigins ( ctid , terid )
{
if(! file_exists ( OriginsFile ) || ! get_pcvar_num ( PcvarTele ))
{
return PLUGIN_CONTINUE
}
new pos [ 4 ][ 8 ]
parse ( Origins [ 0 ], pos [ 1 ], 7 , pos [ 2 ], 7 , pos [ 3 ], 7 )
new Vec [ 3 ]
Vec [ 0 ] = str_to_num ( pos [ 1 ])
Vec [ 1 ] = str_to_num ( pos [ 2 ])
Vec [ 2 ] = str_to_num ( pos [ 3 ])
set_user_origin ( ctid , Vec )
parse ( Origins [ 1 ], pos [ 1 ], 7 , pos [ 2 ], 7 , pos [ 3 ], 7 )
Vec [ 0 ] = str_to_num ( pos [ 1 ])
Vec [ 1 ] = str_to_num ( pos [ 2 ])
Vec [ 2 ] = str_to_num ( pos [ 3 ])
set_user_origin ( terid , Vec )
return PLUGIN_CONTINUE
}
public StartDuel ( id , tempid )
{
if(! GetTsNum ( 1 ) || GetCTsNum ( 1 ) > 1 || ! is_user_alive ( tempid ) || ! is_user_alive ( id ) || cs_get_user_team ( tempid ) != CS_TEAM_T || cs_get_user_team ( id ) != CS_TEAM_CT || ! is_user_connected ( tempid ) || ! is_user_connected ( id ) || is_user_bot ( id ) || is_user_bot ( tempid ))
{
return PLUGIN_HANDLED
}
new challenger [ 32 ], challenged [ 32 ]
get_user_name ( id , challenger , 31 )
get_user_name ( tempid , challenged , 31 )
strip_user_weapons ( id )
strip_user_weapons ( tempid )
set_user_health ( id , 175 )
set_user_health ( tempid , 175 )
switch( get_pcvar_num ( PcvarEffects ))
{
case 1 :
{
set_user_rendering ( id , kRenderFxGlowShell , 0 , 0 , 150 , kRenderNormal , 20 )
set_user_rendering ( tempid , kRenderFxGlowShell , 150 , 0 , 0 , kRenderNormal , 20 )
}
case 2 :
{
set_task ( 1.0 , "Beacon" , id )
set_task ( 1.0 , "Beacon" , tempid )
}
case 3 :
{
set_user_rendering ( id , kRenderFxGlowShell , 0 , 0 , 150 , kRenderNormal , 20 )
set_task ( 1.0 , "Beacon" , id )
set_user_rendering ( tempid , kRenderFxGlowShell , 150 , 0 , 0 , kRenderNormal , 20 )
set_task ( 1.0 , "Beacon" , tempid )
}
}
InDuel [ tempid ] = true
InDuel [ id ] = true
Once [ id ] = true
TouchWeapons [ id ] = true
TouchWeapons [ tempid ] = true
CounterID = id
TerroristID = tempid
Timer = get_pcvar_num ( PcvarWait )
Index = get_pcvar_num ( PcvarTimeLimit ) + 1
set_pcvar_string ( PcvarMode , "DUEL" )
new Flags = GetFlags ( PcvarDuels )
DuelNum = 0
new DuelIndex
while( DuelIndex <= ChoosedDuel )
{
if( Flags & ( 1 << DuelNum ))
{
DuelIndex ++
}
DuelNum ++
}
SetOrigins ( id , tempid )
switch( DuelNum )
{
case 1 :
{
Knife [ id ] = true
Knife [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "KNIFE1" , challenger , challenged )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 2 :
{
Deagle [ id ] = true
Deagle [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "DEAGLE1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "DEAGLE2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 3 :
{
M4a1 [ id ] = true
M4a1 [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "M4A11" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "M4A12" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 4 :
{
Ak47 [ id ] = true
Ak47 [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "AK471" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "AK472" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 5 :
{
Mp5navy [ id ] = true
Mp5navy [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "MP5NAVY1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "MP5NAVY2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 6 :
{
Grenade [ id ] = true
Grenade [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "GRENADE1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "GRENADE2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 7 :
{
Scout [ id ] = true
Scout [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "SCOUT1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "SCOUT2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 8 :
{
Drob [ id ] = true
Drob [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "DROB1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "DROB2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 9 :
{
Awp [ id ] = true
Awp [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "AWP1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "AWP2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 10 :
{
Famas [ id ] = true
Famas [ tempid ] = true
Duel = true
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "FAMAS1" , challenger , challenged )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "FAMAS2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_HANDLED
}
case 11 :
{
RussianRoulette [ id ] = true
RussianRoulette [ tempid ] = true
Duel = true
RussianRouletteBullet = random_num ( 1 , 3 )
cs_set_weapon_ammo ( give_item ( id , "weapon_deagle" ), RussianRouletteBullet )
cs_set_weapon_ammo ( give_item ( tempid , "weapon_deagle" ), RussianRouletteBullet )
StartRussianRoulette ( id , tempid )
if( get_pcvar_num ( PcvarMusic ))
{
new musicnum = random_num ( 0 , MCOUNT - 1 )
client_cmd ( 0 , "mp3volume 0.9" )
client_cmd ( 0 , "mp3 play %s" , Music [ musicnum ])
}
return PLUGIN_HANDLED
}
case 12 :
{
Math [ id ] = true
Math [ tempid ] = true
Duel = true
StartMathDuel ( id , tempid )
return PLUGIN_HANDLED
}
case 13 :
{
Word [ id ] = true
Word [ tempid ] = true
Duel = true
StartWordDuel ( id , tempid )
return PLUGIN_HANDLED
}
}
if( get_pcvar_num ( PcvarMusic ))
{
new musicnum = random_num ( 0 , MCOUNT - 1 )
client_cmd ( 0 , "mp3volume 0.9" )
client_cmd ( 0 , "mp3 play %s" , Music [ musicnum ])
}
if( get_pcvar_num ( PcvarTimer ))
{
set_task ( 0.0 , "DuelTimer" , TIMERTID )
}
Duel = true
return PLUGIN_HANDLED
}
public DuelTimer ()
{
Index --
if( Index > 60 )
{
set_hudmessage ( 255 , 255 , 255 , - 1.0 , 0.25 , 0 , 1.0 , 1.0 , _ , _ , 2 )
if( Math [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , MathTask )
}
else if( Word [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , WordAnswer )
}
else
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER" , Index )
}
set_task ( 1.0 , "DuelTimer" , TIMERTID )
}
else if( 60 >= Index >= 46 )
{
set_hudmessage ( 0 , 255 , 0 , - 1.0 , 0.25 , 0 , 1.0 , 1.0 , _ , _ , 2 )
if( Math [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , MathTask )
}
else if( Word [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , WordAnswer )
}
else
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER" , Index )
}
set_task ( 1.0 , "DuelTimer" , TIMERTID )
}
else if( 45 >= Index >= 31 )
{
set_hudmessage ( 255 , 255 , 0 , - 1.0 , 0.25 , 0 , 1.0 , 1.0 , _ , _ , 2 )
if( Math [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , MathTask )
}
else if( Word [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , WordAnswer )
}
else
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER" , Index )
}
set_task ( 1.0 , "DuelTimer" , TIMERTID )
}
else if( 30 >= Index >= 16 )
{
set_hudmessage ( 255 , 0 , 0 , - 1.0 , 0.25 , 0 , 1.0 , 1.0 , _ , _ , 2 )
if( Math [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , MathTask )
}
else if( Word [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , WordAnswer )
}
else
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER" , Index )
}
set_task ( 1.0 , "DuelTimer" , TIMERTID )
}
else if( Index <= 15 )
{
set_hudmessage ( 255 , 0 , 0 , - 1.0 , 0.25 , 1 , 1.0 , 1.0 , _ , _ , 2 )
if( Index > 0 )
{
if( Math [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , MathTask )
}
else if( Word [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER2" , Index , WordAnswer )
}
else
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUEL_TIMER" , Index )
}
}
else if( Index < 0 )
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "NO_WINNER" )
Kill ( CounterID )
Kill ( TerroristID )
remove_task ( TIMERTID )
if( get_pcvar_num ( PcvarMusic ))
{
client_cmd ( 0 , "cd fadeout" )
}
}
set_task ( 1.0 , "DuelTimer" , TIMERTID )
}
if(! is_user_alive ( CounterID ) || ! is_user_alive ( TerroristID ))
{
remove_task ( TIMERTID )
if( get_pcvar_num ( PcvarMusic ))
{
client_cmd ( 0 , "cd fadeout" )
}
}
return PLUGIN_CONTINUE
}
public DuelTimer2 ()
{
set_hudmessage ( 255 , 255 , 255 , - 1.0 , 0.25 , 0 , 1.0 , 1.0 , _ , _ , 2 )
if( Math [ CounterID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUELTASK" , MathTask )
}
if( Word [ TerroristID ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "DUELTASK" , WordAnswer )
}
set_task ( 1.0 , "DuelTimer2" , TIMER2TID )
if(! is_user_alive ( CounterID ) || ! is_user_alive ( TerroristID ))
{
remove_task ( TIMER2TID )
if( get_pcvar_num ( PcvarMusic ))
{
client_cmd ( 0 , "cd fadeout" )
}
}
}
public StartMathDuel ( ct , ter )
{
new num1 , num2 , num3 , num4 , mode , ctname [ 64 ], tername [ 64 ]
mode = random_num ( 0 , 6 )
num1 = random_num ( 1 , 100 )
num2 = random_num ( 1 , 10 )
num3 = random_num ( 1 , 100 )
num4 = random_num ( 1 , 10 )
get_user_name ( ct , ctname , 63 )
get_user_name ( ter , tername , 63 )
switch( mode )
{
case 0 :
{
format ( MathTask , 63 , "%d + %d + %d + %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 + num2 + num3 + num4
}
case 1 :
{
format ( MathTask , 63 , "%d + %d + %d - %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 + num2 + num3 - num4
}
case 2 :
{
format ( MathTask , 63 , "%d + %d - %d + %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 + num2 - num3 + num4
}
case 3 :
{
format ( MathTask , 63 , "%d - %d + %d + %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 - num2 + num3 + num4
}
case 4 :
{
format ( MathTask , 63 , "%d + %d - %d - %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 + num2 - num3 - num4
}
case 5 :
{
format ( MathTask , 63 , "%d - %d + %d - %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 - num2 + num3 - num4
}
case 6 :
{
format ( MathTask , 63 , "%d - %d - %d + %d = ?" , num1 , num2 , num3 , num4 )
MathAnswer = num1 - num2 - num3 + num4
}
}
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "MATH1" , ctname , tername )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "MATH2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_CONTINUE
}
public StartWordDuel ( ct , ter )
{
new ctname [ 64 ], tername [ 64 ]
format ( WordAnswer , charsmax ( WordAnswer ), "%s" , Words [ random_num ( 0 , WordsNum )])
get_user_name ( ct , ctname , 63 )
get_user_name ( ter , tername , 63 )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "WORD1" , ctname , tername )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "WORD2" )
set_task ( 0.0 , "StartWait" , WAITTIMERTID )
return PLUGIN_CONTINUE
}
public StartWait ()
{
set_hudmessage ( 255 , 255 , 255 , - 1.0 , 0.25 , 0 , 1.0 , 1.0 , _ , _ , 2 )
switch( DuelNum )
{
case 1 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "KNIFE_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 2 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "DEAGLE_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 3 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "M4A1_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 4 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "AK47_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 5 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "MP5NAVY_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 6 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "GRENADE_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 7 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "SCOUT_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 8 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "DROB_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 9 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "AWP_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 10 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "FAMAS_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 11 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "MATH_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
case 12 :
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L^n%L" , LANG_PLAYER , "WORD_WAIT" , LANG_PLAYER , "STARTAFTER" , Timer )
}
}
Timer --
client_cmd ( 0 , "spk %s" , Sound [ Timer ])
if( Timer <= 0 )
{
set_task ( 1.0 , "StartGo" )
}
else
{
set_task ( 1.0 , "StartWait" , WAITTIMERTID )
}
return PLUGIN_CONTINUE
}
public StartGo ()
{
if(! is_user_alive ( TerroristID ) || ! is_user_alive ( CounterID ) || ! is_user_connected ( TerroristID ) || ! is_user_connected ( CounterID ) || ! is_valid_player ( CounterID ) || ! is_valid_player ( TerroristID ))
{
return PLUGIN_HANDLED
}
switch( DuelNum )
{
case 1 :
{
give_item ( CounterID , "weapon_knife" )
give_item ( TerroristID , "weapon_knife" )
}
case 2 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_deagle" ), DAMMO )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_deagle" ), DAMMO )
}
case 3 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_m4a1" ), DAMMO )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_m4a1" ), DAMMO )
cs_set_user_bpammo ( CounterID , CSW_M4A1 , 200 )
cs_set_user_bpammo ( TerroristID , CSW_M4A1 , 200 )
}
case 4 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_ak47" ), DAMMO )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_ak47" ), DAMMO )
cs_set_user_bpammo ( CounterID , CSW_AK47 , 200 )
cs_set_user_bpammo ( TerroristID , CSW_AK47 , 200 )
}
case 5 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_mp5navy" ), DAMMO )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_mp5navy" ), DAMMO )
cs_set_user_bpammo ( CounterID , CSW_MP5NAVY , 200 )
cs_set_user_bpammo ( TerroristID , CSW_MP5NAVY , 200 )
}
case 6 :
{
give_item ( CounterID , "weapon_hegrenade" )
give_item ( TerroristID , "weapon_hegrenade" )
cs_set_user_bpammo ( CounterID , CSW_HEGRENADE , 100 )
cs_set_user_bpammo ( TerroristID , CSW_HEGRENADE , 100 )
}
case 7 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_scout" ), DAMMO )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_scout" ), DAMMO )
}
case 8 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_m3" ), 8 )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_m3" ), 8 )
}
case 9 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_awp" ), DAMMO )
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_awp" ), DAMMO )
}
case 10 :
{
cs_set_weapon_ammo ( give_item ( CounterID , "weapon_famas" ), 3 )
new wEnt = fm_find_ent_by_owner (- 1 , "weapon_famas" , CounterID )
if( wEnt )
{
cs_set_weapon_burst ( wEnt , 1 )
}
cs_set_weapon_ammo ( give_item ( TerroristID , "weapon_famas" ), 3 )
wEnt = fm_find_ent_by_owner (- 1 , "weapon_famas" , TerroristID )
if( wEnt )
{
cs_set_weapon_burst ( wEnt , 1 )
}
}
}
if( get_pcvar_num ( PcvarMusic ))
{
new musicnum = random_num ( 0 , MCOUNT - 1 )
client_cmd ( 0 , "mp3volume 0.9" )
client_cmd ( 0 , "mp3 play %s" , Music [ musicnum ])
}
if( get_pcvar_num ( PcvarTimer ))
{
set_task ( 0.0 , "DuelTimer" , TIMERTID )
}
else if( Math [ CounterID ] || Word [ CounterID ])
{
set_task ( 0.0 , "DuelTimer2" , TIMER2TID )
}
return PLUGIN_CONTINUE
}
public StartRussianRoulette ( ct , ter )
{
new ctname [ 64 ], tername [ 64 ]
get_user_name ( ct , ctname , 63 )
get_user_name ( ter , tername , 63 )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "RR1" , ctname , tername )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "RR2" )
ColorChat ( 0 , "^4%s %L^3" , PREFIX , LANG_PLAYER , "RR3" , ctname )
set_hudmessage ( 0 , 255 , 0 , - 1.0 , 0.2 , 0 , 1.0 , 2.0 , 0.5 , 0.5 , 4 )
ShowSyncHudMsg ( 0 , g_MsgHud3 , "%L" , LANG_PLAYER , "RRSTART" , ctname , RussianRouletteBullet )
RussianRouletteMenu ( ct )
Used [ ct ] = true
Used [ ter ] = true
NotYou [ ct ] = false
NotYou [ ter ] = false
RussianRouletteID = ct
return PLUGIN_CONTINUE
}
public RussianRouletteMenu ( id )
{
new Len
new Keys = MENU_KEY_0
Len = format ( MenuBody , MENUBODY - 1 , "%L^n^n" , LANG_PLAYER , "RRTITLE" )
Keys |= ( 1 << 0 )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "1. %L^n^n %s" , LANG_PLAYER , "RRDO" , PLUGIN , VERSION , AUTHOR )
DoIt [ id ] = true
show_menu ( id , Keys , MenuBody , - 1 , "Roulette Menu" )
return PLUGIN_CONTINUE
}
public ActionRussianRouletteMenu ( id , Key )
{
if(! DoIt [ id ])
{
return PLUGIN_HANDLED
}
get_user_name ( id , RussianRouletteName , 63 )
set_hudmessage ( 255 , 255 , 0 , - 1.0 , 0.3 , 0 , 1.0 , 2.0 , 0.5 , 0.5 , 2 )
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "RRDOING" , RussianRouletteName )
set_task ( 3.0 , "RussianRouletteStop" , id )
DoIt [ id ] = false
Start [ id ] = true
return PLUGIN_HANDLED
}
public RussianRouletteStop ( id )
{
new RuletteRandom
RuletteRandom = random_num ( 1 , 7 )
get_user_name ( id , RussianRouletteName , 63 )
if( RussianRouletteBullet == 1 && RuletteRandom == 1 )
{
Boom [ id ] = true
}
else if( RussianRouletteBullet == 2 && RuletteRandom == 2 )
{
Boom [ id ] = true
}
else if( RussianRouletteBullet == 3 && RuletteRandom == 3 )
{
Boom [ id ] = true
}
else
{
Boom [ id ] = false
}
NotYou [ id ] = true
Start [ id ] = false
set_hudmessage ( 255 , 255 , 0 , - 1.0 , 0.3 , 0 , 1.0 , 2.0 , 0.5 , 0.5 , 2 )
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "RRPRESS" , RussianRouletteName )
return PLUGIN_CONTINUE
}
public hooksay ( id )
{
if(! Math [ id ] && ! Word [ id ])
{
return PLUGIN_CONTINUE
}
new Msg [ 256 ], smanswer [ 32 ], wname [ 32 ]
read_args ( Msg , 255 )
remove_quotes ( Msg )
num_to_str ( MathAnswer , smanswer , 31 )
if(( Math [ id ] && equal ( Msg , smanswer )) || ( Word [ id ] && equal ( Msg , WordAnswer )))
{
if( get_pcvar_num ( PcvarTimer ))
{
remove_task ( TIMERTID )
}
if( get_pcvar_num ( PcvarMusic ))
{
client_cmd ( 0 , "cd fadeout" )
}
get_user_name ( id , wname , 31 )
//set_user_lifes(id, 1)
set_hudmessage ( 0 , 255 , 0 , - 1.0 , 0.2 , 0 , 1.0 , 10.0 , 1.0 , 1.0 , 2 )
if( Math [ id ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "MATH_WINNER" , wname , smanswer )
}
else if( Word [ id ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "WORD_WINNER" , wname )
}
if( id == CounterID )
{
set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_ONCE )
DeathMsg ( CounterID , TerroristID , 1 , KWPN )
Kill ( TerroristID )
}
else if( id == TerroristID )
{
set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_ONCE )
DeathMsg ( CounterID , TerroristID , 1 , KWPN )
Kill ( CounterID )
}
Math [ CounterID ] = false
Math [ TerroristID ] = false
Word [ CounterID ] = false
Word [ TerroristID ] = false
}
return PLUGIN_CONTINUE
}
public hooksay_team ( id )
{
if(! Math [ id ] && ! Word [ id ])
{
return PLUGIN_CONTINUE
}
new Msg [ 256 ], smanswer [ 32 ], wname [ 32 ]
read_args ( Msg , 255 )
remove_quotes ( Msg )
num_to_str ( MathAnswer , smanswer , 31 )
if(( Math [ id ] && equal ( Msg , smanswer )) || ( Word [ id ] && equal ( Msg , WordAnswer )))
{
if( get_pcvar_num ( PcvarTimer ))
{
remove_task ( TIMERTID )
}
if( get_pcvar_num ( PcvarMusic ))
{
client_cmd ( 0 , "cd fadeout" )
}
get_user_name ( id , wname , 31 )
//set_user_lifes(id, 1)
set_hudmessage ( 0 , 255 , 0 , - 1.0 , 0.2 , 0 , 1.0 , 10.0 , 1.0 , 1.0 , 2 )
if( Math [ id ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "MATH_WINNER" , wname , smanswer )
}
else if( Word [ id ])
{
ShowSyncHudMsg ( 0 , g_MsgHud2 , "%L" , LANG_PLAYER , "WORD_WINNER" , wname )
}
if( id == CounterID )
{
set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_ONCE )
DeathMsg ( CounterID , TerroristID , 1 , KWPN )
Kill ( TerroristID )
}
else if( id == TerroristID )
{
set_msg_block ( get_user_msgid ( "DeathMsg" ), BLOCK_ONCE )
DeathMsg ( CounterID , TerroristID , 1 , KWPN )
Kill ( CounterID )
}
Math [ CounterID ] = false
Math [ TerroristID ] = false
Word [ CounterID ] = false
Word [ TerroristID ] = false
}
return PLUGIN_CONTINUE
}
public client_disconnect ( id )
{
remove_task ( id )
TouchWeapons [ id ] = false
Once [ id ] = false
Knife [ id ] = false
Deagle [ id ] = false
M4a1 [ id ] = false
Ak47 [ id ] = false
Mp5navy [ id ] = false
Grenade [ id ] = false
Scout [ id ] = false
Drob [ id ] = false
Awp [ id ] = false
Math [ id ] = false
Word [ id ] = false
RussianRoulette [ id ] = false
Used [ id ] = false
NotYou [ id ] = false
DoIt [ id ] = false
Start [ id ] = false
InDuel [ id ] = false
Famas [ id ] = false
return PLUGIN_CONTINUE
}
public GodOff ( tskid )
{
new id = tskid - GODTID
set_pev ( id , pev_takedamage , 1 )
return PLUGIN_CONTINUE
}
public Informer ()
{
if(! get_pcvar_num ( PcvarInformer ))
{
remove_task ( INFORMERTID )
return PLUGIN_HANDLED
}
new id , LastID , acts , cts , all , NextMap [ 32 ], CurrentTime [ 32 ], Terrorist [ 32 ], names [ 33 ][ 32 ], Message [ 512 ]
for( id = 1 ; id <= MaxPlayers ; id ++)
{
if(! is_user_connected ( id ))
{
continue
}
else if( is_user_alive ( id ) && cs_get_user_team ( id ) == CS_TEAM_CT )
{
acts ++
cts ++
all ++
LastID = id
get_user_name ( id , names [ acts ], 31 )
}
else if(! is_user_alive ( id ) && cs_get_user_team ( id ) == CS_TEAM_CT )
{
cts ++
all ++
}
else if( cs_get_user_team ( id ) == CS_TEAM_T && ! is_user_bot ( id ))
{
get_user_name ( id , Terrorist , 63 )
all ++
}
else
{
all ++
}
}
if( acts == 1 && ! Last && get_pcvar_num ( PcvarLastMenu ))
{
LastMenu ( LastID )
Last = true
}
for( id = 1 ; id <= MaxPlayers ; id ++)
{
new Len , Mode [ 32 ]
get_pcvar_string ( PcvarMode , Mode , 31 )
Len = format ( Message , 511 , "%L: %L" , LANG_PLAYER , "CURRENTMODE" , LANG_PLAYER , Mode )
get_time ( "%H:%M:%S" , CurrentTime , 31 )
Len += format ( Message [ Len ], 511 - Len , "^n%L: %s" , LANG_PLAYER , "CURRENTTIME" , CurrentTime )
if( get_cvar_float ( "mp_timelimit" ))
{
new a = get_timeleft ()
Len += format ( Message [ Len ], 511 - Len , "^n%L: %d:%02d" , LANG_PLAYER , "TLEFT" , ( a / 60 ), ( a % 60 ))
}
else
{
Len += format ( Message [ Len ], 511 - Len , "^n%L: %L" , LANG_PLAYER , "TLEFT" , LANG_PLAYER , "LASTR" )
}
get_cvar_string ( "amx_nextmap" , NextMap , 31 )
Len += format ( Message [ Len ], 511 - Len , "^n%L: %s" , LANG_PLAYER , "NMAP" , NextMap )
if( GetTsNum ( 0 ))
{
Len += format ( Message [ Len ], 511 - Len , "^n%L: %s" , LANG_PLAYER , "CTER" , Terrorist )
}
else
{
Len += format ( Message [ Len ], 511 - Len , "^n%L: %L" , LANG_PLAYER , "CTER" , LANG_PLAYER , "TNONE" )
}
Len += format ( Message [ Len ], 511 - Len , "^n%L: %d/%d" , LANG_PLAYER , "ALIVECTS" , acts , cts )
Len += format ( Message [ Len ], 511 - Len , "^n%L: %d/%d" , LANG_PLAYER , "APLAYERS" , all , MaxPlayers )
if( acts > 3 )
{
set_hudmessage ( 100 , 100 , 100 , 0.01 , 0.18 , 0 , 1.0 , 1.0 )
}
else if( acts == 3 )
{
set_hudmessage ( 0 , 255 , 0 , 0.01 , 0.18 , 0 , 1.0 , 1.0 )
Len += format ( Message [ Len ], 511 - Len , "^n^n1. %s^n2. %s^n3. %s" , names [ 1 ], names [ 2 ], names [ 3 ])
}
else if( acts == 2 )
{
set_hudmessage ( 255 , 255 , 0 , 0.01 , 0.18 , 0 , 1.0 , 1.0 )
Len += format ( Message [ Len ], 511 - Len , "^n^n1. %s^n2. %s" , names [ 1 ], names [ 2 ])
}
else
{
set_hudmessage ( 255 , 0 , 0 , 0.01 , 0.18 , 1 , 1.0 , 1.0 , _ , _ , 1 )
Len += format ( Message [ Len ], 511 - Len , "^n^n1. %s" , names [ 1 ])
}
ShowSyncHudMsg ( id , g_MsgHud1 , "%s" , Message )
}
return PLUGIN_CONTINUE
}
public LastMenu ( id )
{
new Len
new Keys = MENU_KEY_0
Len = format ( MenuBody , MENUBODY - 1 , "%L ^n^n" , LANG_PLAYER , "YOULAST" )
Keys |= ( 1 << 0 )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "1. %L^n" , LANG_PLAYER , "LASTYES" )
Keys |= ( 1 << 1 )
Len += format ( MenuBody [ Len ], MENUBODY - Len , "2. %L^n^n %s" , LANG_PLAYER , "LASTNO" , PLUGIN , VERSION , AUTHOR )
show_menu ( id , Keys , MenuBody , - 1 , "Last Menu" )
return PLUGIN_CONTINUE
}
public ActionLastMenu ( id , key )
{
switch( key )
{
case 0 :
{
client_cmd ( id , "deathrun_duels" )
}
case 1 :
{
client_print ( id , print_center , "%L" , LANG_PLAYER , "FDUEL" )
}
}
return PLUGIN_CONTINUE
}
public Beacon ( id )
{
if( cs_get_user_team ( id ) == CS_TEAM_CT )
{
static origin [ 3 ]
get_user_origin ( id , origin )
message_begin ( MSG_BROADCAST , SVC_TEMPENTITY )
write_byte ( TE_BEAMCYLINDER )
write_coord ( origin [ 0 ])
write_coord ( origin [ 1 ])
write_coord ( origin [ 2 ]- 20 )
write_coord ( origin [ 0 ])
write_coord ( origin [ 1 ])
write_coord ( origin [ 2 ]+ 200 )
write_short ( BeaconSprite )
write_byte ( 0 )
write_byte ( 1 )
write_byte ( 6 )
write_byte ( 2 )
write_byte ( 1 )
write_byte ( 0 )
write_byte ( 0 )
write_byte ( 255 )
write_byte ( 255 )
write_byte ( 0 )
message_end ()
}
else
{
static origin [ 3 ]
get_user_origin ( id , origin )
message_begin ( MSG_BROADCAST , SVC_TEMPENTITY )
write_byte ( TE_BEAMCYLINDER )
write_coord ( origin [ 0 ])
write_coord ( origin [ 1 ])
write_coord ( origin [ 2 ]- 20 )
write_coord ( origin [ 0 ])
write_coord ( origin [ 1 ])
write_coord ( origin [ 2 ]+ 200 )
write_short ( BeaconSprite )
write_byte ( 0 )
write_byte ( 1 )
write_byte ( 6 )
write_byte ( 2 )
write_byte ( 1 )
write_byte ( 255 )
write_byte ( 0 )
write_byte ( 0 )
write_byte ( 255 )
write_byte ( 0 )
message_end ()
}
set_task ( 1.0 , "Beacon" , id )
return PLUGIN_CONTINUE
}
stock ColorChat (const id , const input [], any :...)
{
new count = 1 , players [ 32 ]
static msg [ 190 ]
vformat ( msg , 190 , input , 3 )
replace_all ( msg , 190 , "!g" , "^4" )
replace_all ( msg , 190 , "!y" , "^1" )
replace_all ( msg , 190 , "!team" , "^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 , SayText , _ , players [ i ])
write_byte ( players [ i ])
write_string ( msg )
message_end ()
}
}
return PLUGIN_CONTINUE
}
stock DeathMsg ( killer_id , victim_id , headshot , weaponname [])
{
message_begin ( MSG_ALL , get_user_msgid ( "DeathMsg" ))
write_byte ( killer_id )
write_byte ( victim_id )
write_byte ( headshot )
write_string ( weaponname )
message_end ()
return PLUGIN_CONTINUE
}
stock GetFlagsNum ( pcvar )
{
new Duels = GetFlags ( pcvar )
new DuelsNum = 0
for(new a = 0 ; a < DCOUNT ; a ++)
{
if( Duels & ( 1 << a ))
{
DuelsNum ++
}
}
return DuelsNum
}
stock GetFlags ( pcvar )
{
new Flags [ 32 ]
get_pcvar_string ( pcvar , Flags , 31 )
return read_flags ( Flags )
}
stock GetCTsNum ( alive )
{
new CTsNum = 0
for (new id = 1 ; id <= MaxPlayers ; id ++)
{
if(! is_user_connected ( id ))
{
continue
}
if( alive )
{
if( cs_get_user_team ( id ) == CS_TEAM_CT && is_user_alive ( id ))
{
CTsNum ++
}
}
else
{
if( cs_get_user_team ( id ) == CS_TEAM_CT )
{
CTsNum ++
}
}
}
return CTsNum
}
stock GetTsNum ( alive )
{
new TsNum = 0
for (new id = 1 ; id <= MaxPlayers ; id ++)
{
if(! is_user_connected ( id ) || is_user_bot ( id ))
{
continue
}
if( alive )
{
if( cs_get_user_team ( id ) == CS_TEAM_T && is_user_alive ( id ))
{
TsNum ++
}
}
else
{
if( cs_get_user_team ( id ) == CS_TEAM_T )
{
TsNum ++
}
}
}
return TsNum
}
public client_putinserver ( id ){
if(! is_user_bot ( id ))
eventInGame ( id );
}
public client_connect ( id ){
giVotes [ id ][ VOTE_ON ]= 0 ;
giVotes [ id ][ VOTE_OFF ]= 0 ;
return 1
}
public announceVote (){
if( get_pcvar_num ( gcvarFreeRun ))
ColorChat ( 0 , "!g[!teamFreeRun!g]!team %L" , LANG_SERVER , "ANNOUNCE" );
}
setButtons (){
new iDef = get_pcvar_num ( gcvarDefault );
for(new i = 0 ; i < giPointer ; i ++){
gUsed [ i ]= iDef ;
gOnStart [ i ]= iDef ;
gDelay [ i ]= get_pdata_float ( gEnt [ i ], m_flWait );
gDefaultDelay [ i ]= gDelay [ i ];
}
}
fillButtons (const szClass []){
new ent = - 1 ;
while(( ent = engfunc ( EngFunc_FindEntityByString , ent , "classname" , szClass )) != 0 ){
gEnt [ giPointer ++]= ent ;
set_pev ( ent , pev_iuser4 , giPointer );
}
}
set_start_value ( ent , times , Float : delay ){
new index = get_ent_index ( ent );
if( index !=- 1 ){
gOnStart [ index ]= times ;
if( delay >= 0.0 )
gDelay [ index ]= delay ;
}
}
get_ent_index ( ent ){
/*
for(new i=0;i<giPointer;i++)
if(gEnt[i]==ent) return i;
return -1;
*/
return pev ( ent , pev_iuser4 )- 1 ;
}
restoreButton ( ent ){
if( pev ( ent , pev_frame ) > 0.0 ){
new Float : Life ;
pev ( ent , pev_nextthink , Life );
set_pev ( ent , pev_ltime , Life - 0.01 );
}
}
public ResetButtons (){
gbFreeRun = false ;
gbVote = false ;
new bool : bRestore = get_pcvar_num ( gcvarRestore )!= 0 ;
for(new i = 0 ; i < MAX_BUTTONS ; i ++){
gUsed [ i ]= gOnStart [ i ];
if( bRestore ){
restoreButton ( gEnt [ i ]);
}
}
giRounds ++;
}
public fwButtonUsed ( this , idcaller , idactivator , use_type , Float : value ){
if( idcaller != idactivator ) return HAM_IGNORED ;
if( pev ( this , pev_frame ) > 0.0 )
return HAM_IGNORED ;
new index = get_ent_index ( this );
if( index ==- 1 )
return HAM_IGNORED ;
if( get_user_team ( idcaller )& get_pcvar_num ( gcvarTeam )){
if( gbFreeRun ){
ColorChat ( idcaller , "!y[!gFreeRun!y]!team %L" , idcaller , "BUTTON_FREERUN" );
return HAM_SUPERCEDE ;
}
else if( gUsed [ index ]<= 0 && gOnStart [ index ]!=- 1 ){
ColorChat ( idcaller , "!y[!gInfo!y]!team %L" , idcaller , "BUTTON_NOMORE" );
return HAM_SUPERCEDE ;
}
else{
if( gUsed [ index ]> 0 )
if(-- gUsed [ index ]){
ColorChat ( idcaller , "!y[!gInfo!y]!team %L" , idcaller , "BUTTON_LEFT" , gUsed [ index ]);
}else
ColorChat ( idcaller , "!y[!gInfo!y]!team %L" , idcaller , "BUTTON_ENDOFLIMIT" );
}
}
set_task ( 0.1 , "setDelay" , this );
return HAM_IGNORED ;
}
public setDelay ( this ){
new index = get_ent_index ( this );
set_pev ( this , pev_nextthink , pev ( this , pev_ltime )+ gDelay [ index ]+ 0.01 );
}
//MENU--------------
public cmd_amx_buttons ( id , level , cid ){
if(! cmd_access ( id , level , cid , 1 ))
return PLUGIN_HANDLED ;
if( giPointer == 0 )
client_print ( id , print_chat , "%L" , id , "NO_BUTTONS" );
else
ShowButtonsMenu ( id );
return PLUGIN_HANDLED ;
}
ShowButtonsMenu ( id , trace = 1 ){
if(! is_user_alive ( id )){
client_print ( id , print_center , "%L" , id , "MUST_B_ALIVE" );
return;
}
new iNow = gInMenu [ id ];
new iKeys =( 1 << 0 )|( 1 << 2 )|( 1 << 3 )|( 1 << 4 )|( 1 << 5 )|( 1 << 6 )|( 1 << 9 );
new szMenu [ 196 ], iLen , iMax =( sizeof szMenu ) - 1 ;
new szNoLimit [ 32 ];
formatex ( szNoLimit , 31 , "(%L)" , id , "NOLIMIT" );
iLen = copy ( szMenu , iMax , "Buttons Menu^n" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "Ent #%d^n^n" , gEnt [ iNow ]);
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "%L: %d %s^n 1. %L " , id , "USAGE" , gOnStart [ iNow ],( gOnStart [ iNow ]==- 1 )? szNoLimit : "" , id , "MORE" );
if( gOnStart [ iNow ]>= 0 ){
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "2. %L" , id , "WORD_LESS" );
iKeys |=( 1 << 1 );
}else
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "2. %L" , id , "WORD_LESS" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n^n3. %L^n^n4. %L^n^n" , id , "DELAY_EDITOR" , id , "OPTIONS" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "5. %sNo Clip^n" , isNoClip ( id )? "r" : "" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "6. %sGodMode^n" , isGodMode ( id )? "r" : "" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n7. %L^nw" , id , "WORD_SAVE" );
if( iNow > 0 ){
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n8. %L" , id , "BACK" );
iKeys |=( 1 << 7 );
}
if( iNow < giPointer - 1 ){
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n9. %L" , id , "WORD_NEXT" );
iKeys |=( 1 << 8 );
}
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n0. %L" , id , "EXIT" );
show_menu ( id , iKeys , szMenu , - 1 , "ButtonsMenu" );
if( trace ){
new Float : fOrigin [ 3 ], Float : fOrigin2 [ 3 ];
fm_get_brush_entity_origin ( gEnt [ gInMenu [ id ]], fOrigin );
pev ( id , pev_origin , fOrigin2 );
Create_TE_BEAMPOINTS ( fOrigin , fOrigin2 , giSprite , 0 , 10 , 20 , 5 , 1 , 255 , 0 , 0 , 100 , 50 );
}
}
bool : isNoClip ( id )
return pev ( id , pev_movetype )== MOVETYPE_NOCLIP ;
bool : isGodMode ( id )
return pev ( id , pev_takedamage )== 0.0 ;
public PressedButtonsMenu ( id , key ) {
if(! is_user_alive ( id )){
client_print ( id , print_center , "%L" , id , "MUST_B_ALIVE" );
return;
}
/* Menu:
* Buttons Menu
* Ent#<ent>
*
* Uzyc: <ile>
* 1. Wiecej 2. Mniej
*
* 3. Editor
*
* 4. Options
*
* 5. NoClip
* 6. GodMode
*
* 7. Zapisz
*
* 8. Poprzedni
* 9. Nastepny
* 0. Wyjdz
*/
new trace = 0 ;
switch ( key ) {
case 0 : { // 1
gOnStart [ gInMenu [ id ]]++;
}
case 1 : { // 2
gOnStart [ gInMenu [ id ]]--;
}
case 2 : { // 3
ShowDelayMenu ( id );
return;
}
case 3 :{ //4
ShowOptionsMenu ( id );
return;
}
case 4 :{ //5
set_pev ( id , pev_movetype , isNoClip ( id )? MOVETYPE_WALK : MOVETYPE_NOCLIP );
}
case 5 :{ //6
set_pev ( id , pev_takedamage , isGodMode ( id )? 1.0 : 0.0 );
}
case 6 : { // 7
save2File ( id );
}
case 7 : { // 8
gInMenu [ id ]--;
trace = 1 ;
}
case 8 : { // 9
gInMenu [ id ]++;
trace = 1 ;
}
case 9 : { // 0
return;
}
}
ShowButtonsMenu ( id , trace );
}
//--------------
ShowOptionsMenu ( id ){
if(! is_user_alive ( id )){
client_print ( id , print_center , "%L" , id , "MUST_B_ALIVE" );
return;
}
new szMenu [ 196 ], iLen , iMax =( sizeof szMenu ) - 1 ;
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "yOptions^n^n" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "w1. %L^n" , id , "GOTO" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "2. %L^n^n" , id , "NEAREST" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "9. %L" , id , "BACK" );
show_menu ( id , KeysOptionsMenu , szMenu , - 1 , "OptionsMenu" );
}
public PressedOptionsMenu ( id , key ){
if(! is_user_alive ( id )){
client_print ( id , print_center , "%L" , id , "MUST_B_ALIVE" );
return;
}
new trace = 0 ;
switch ( key ) {
case 0 : { // 1
go2Button ( id );
}
case 1 : { // 2
gInMenu [ id ]= findTheClosest ( id );
trace = 1 ;
}
}
ShowButtonsMenu ( id , trace );
}
//-------------
ShowDelayMenu ( id ){
if(! is_user_alive ( id )){
client_print ( id , print_center , "%L" , id , "MUST_B_ALIVE" );
return;
}
new iNow = gInMenu [ id ];
new iKeys =( 1 << 0 )|( 1 << 2 )|( 1 << 8 );
new szMenu [ 196 ], iLen , iMax =( sizeof szMenu ) - 1 ;
iLen = copy ( szMenu , iMax , "yDelay Menu^n" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "Ent#%d^n^n" , gEnt [ iNow ]);
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "%L: %.1f^n" , id , "CURRENT_DELAY" , gDelay [ iNow ]);
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "1. %L " , id , "MORE" );
if( gDelay [ iNow ]> 0.0 ){
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "2. %L" , id , "WORD_LESS" );
iKeys |=( 1 << 1 );
}else
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "2. %Lw" , id , "WORD_LESS" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n3. %L" , id , "DEFAULT" );
iLen += formatex ( szMenu [ iLen ], iMax - iLen , "^n^n9. %L" , id , "BACK" );
show_menu ( id , iKeys , szMenu , - 1 , "DelayMenu" );
}
public PressedDelayMenu ( id , key ){
new iNow = gInMenu [ id ];
switch( key ){
case 0 :{
gDelay [ iNow ]+= 1.0 ;
}
case 1 :{
gDelay [ iNow ]-= 1.0 ;
if( gDelay [ iNow ] < 0.0 )
gDelay [ iNow ]= 0.0 ;
}
case 2 :{
gDelay [ iNow ]= gDefaultDelay [ iNow ];
}
case 8 :{
ShowButtonsMenu ( id , 0 );
return;
}
}
ShowDelayMenu ( id );
}
//-------------
save2File ( id ){
if( file_exists ( gszFile ))
delete_file ( gszFile );
write_file ( gszFile , ";<ent> <count> <delay>" );
new szLine [ 35 ];
for(new i = 0 ; i < giPointer ; i ++){
formatex ( szLine , 34 , "%d %d %.1f" , gEnt [ i ], gOnStart [ i ], gDelay [ i ]);
write_file ( gszFile , szLine );
}
client_print ( id , print_center , "%L!" , id , "WORD_SAVED" );
}
findTheClosest ( id ){
new Float : fPlayerOrig [ 3 ];
pev ( id , pev_origin , fPlayerOrig );
new Float : fOrigin [ 3 ];
fm_get_brush_entity_origin ( gEnt [ 0 ], fOrigin );
new Float : fRange = get_distance_f ( fOrigin , fPlayerOrig ), index = 0 ;
new Float : fNewRange ;
for(new i = 1 ; i < giPointer ; i ++){
fm_get_brush_entity_origin ( gEnt [ i ], fOrigin );
fNewRange = get_distance_f ( fOrigin , fPlayerOrig );
if( fNewRange < fRange ){
fRange = fNewRange ;
index = i ;
}
}
return index ;
}
go2Button ( id , ent =- 1 ){
if( ent ==- 1 )
ent = gInMenu [ id ];
ent = gEnt [ ent ];
if(! pev_valid ( ent )){
client_print ( id , print_center , "%L" , id , "NOTARGET" );
return;
}
new Float : fOrigin [ 3 ];
fm_get_brush_entity_origin ( ent , fOrigin );
set_pev ( id , pev_origin , fOrigin );
client_print ( id , print_chat , "PS. No Clip :)" );
}
//FreeRun
public cmdVoteFreeRun ( id ){
if( get_pcvar_num ( gcvarFreeRun )== 0 ){
ColorChat ( id , "!y[!gFreeRun!y]!team %L" , id , "FREERUN_DISABLED" );
return PLUGIN_HANDLED ;
}
if( gbVote ){
ColorChat ( id , "!y[!gFreeRun!y]!team %L" , id , "FREERUN_VOTE_IS_NOW" );
return PLUGIN_HANDLED ;
}
if(! is_user_alive ( id )){
client_print ( id , print_center , "%L" , id , "MUST_B_ALIVE" );
return PLUGIN_HANDLED ;
}
if( get_pcvar_num ( gcvarPrivilege )!= 0 && ! gbFreeRun && get_user_team ( id )== 1 ){
ColorChat ( id , "!y[!gFreeRun!y]!team %L" , id , "FREERUN_TT_DECIDED" );
makeFreeRun ( true );
return PLUGIN_HANDLED ;
}
new iLimit = get_pcvar_num ( gcvarLimit );
new iOffset = 0 ;
if( get_pcvar_num ( gcvarLimitMode )){
iOffset = ( giTime + iLimit * 60 ) - get_systime ();
if( iOffset > 0 ){
ColorChat ( id , "!y[!gFreeRun!y]!team %L" , id , "FREERUN_NEXT_VOTE_TIME" , iOffset / 60 , iOffset % 60 );
return PLUGIN_HANDLED ;
}
}
else{
iOffset = min ( MAX_ROUNDS , iLimit ) - giRounds ;
if( iOffset > 0 ){
ColorChat ( id , "!y[!gFreeRun!y]!team %L" , id , "FREERUN_NEXT_VOTE_ROUNDS" , iOffset );
return PLUGIN_HANDLED ;
}
}
makeVote ();
return PLUGIN_CONTINUE ;
}
//FREERUN
public makeVote (){
giVoteTime = get_pcvar_num ( gcvarFRVoteTime );
gbVote = true ;
giVoteStart = get_systime ();
set_task ( float ( giVoteTime ), "resultsOfVote" , TASK_RES );
new Players [ 32 ], playerCount ;
new id ;
get_players ( Players , playerCount );
for (new i = 0 ; i < playerCount ; i ++){
id = Players [ i ];
eventInGame ( id );
}
}
public resultsOfVote ( tid ){
gbVote = false ;
new giVotesOn = count ( VOTE_ON );
new giVotesOff = count ( VOTE_OFF );
ColorChat ( 0 , "!y[!gFreeRun!y]!team %L %L(%d) vs %L(%d)" , LANG_SERVER , "FREERUN_RESULTS" , LANG_SERVER , "YES" , giVotesOn , LANG_SERVER , "NO" , giVotesOff );
if( giVotesOn == giVotesOff ){
ColorChat ( 0 , "!y[!gFreeRun!y]!team %L" , LANG_SERVER , "FREERUN_TIE" );
return;
}
makeFreeRun (( giVotesOn > giVotesOff ));
ColorChat ( 0 , "!y[!gFreeRun!y]!team %L ^x03%L" , LANG_SERVER , "FREERUN_WINOPTION" , LANG_SERVER , gbFreeRun ? "YES" : "NO" );
}
makeFreeRun ( bool : bFR = true ){
gbFreeRun = bFR ;
reset ();
giRounds = 0 ;
giTime = get_systime ();
if( gbFreeRun ){
set_pcvar_string ( PcvarMode , "FreeRun" )
set_hudmessage ( 0 , 255 , 255 , 0.02 , - 1.0 );
show_hudmessage ( 0 , "FreeRun!" );
}
}
count ( VOTE_STATE ){
new iCounter = 0 ;
for(new i = 1 ; i < 33 ; i ++)
if( giVotes [ i ][ VOTE_STATE ])
iCounter ++;
return iCounter ;
}
reset (){
for(new i = 1 ; i < 33 ; i ++){
giVotes [ i ][ VOTE_ON ]= 0 ;
giVotes [ i ][ VOTE_OFF ]= 0 ;
}
}
public show_menu_ ( tid ){
new id = tid - TASK_SHOWMENU ;
new iTeam = get_user_team ( id );
new menu_id , keys ;
new menuUp = player_menu_info ( id , menu_id , keys );
// Only display menu if another isn't shown
if ( iTeam && ( menuUp <= 0 || menu_id < 0 ) ){
new iTime = get_pcvar_num ( gcvarFRVoteTime );
new iOffset = get_systime ()- giVoteStart ;
iTime -= iOffset ;
new szMenu [ 128 ];
formatex ( szMenu , 127 , "%L^n^n1. %L^n2. %L" , id , "FREERUN_VOTEMENU" , id , "YES" , id , "NO" );
show_menu ( id , KeysFFVote , szMenu , iTime , "FRVote" );
}else
set_task ( 1.0 , "show_menu_" , tid );
}
public eventInGame ( id ){
if( giVotes [ id ][ VOTE_ON ] || giVotes [ id ][ VOTE_OFF ])
return;
if( gbVote )
set_task ( 1.0 , "show_menu_" , id + TASK_SHOWMENU );
}
public PressedFRVote ( id , key ) {
if( gbVote == false ) return;
switch ( key ) {
case VOTE_ON : { // 1
giVotes [ id ][ VOTE_ON ]= 1 ;
}
case VOTE_OFF : { // 2
giVotes [ id ][ VOTE_OFF ]= 1 ;
}
default:{
return;
}
}
new szName [ 32 ];
get_user_name ( id , szName , 31 );
client_print ( 0 , print_chat , "* %L" , LANG_PLAYER ,( key == VOTE_ON )? "VOTED_FOR" : "VOTED_AGAINST" , szName );
}
stock Create_TE_BEAMPOINTS ( Float : start [ 3 ], Float : end [ 3 ], iSprite , startFrame , frameRate , life , width , noise , red , green , blue , alpha , speed ){
message_begin ( MSG_BROADCAST , SVC_TEMPENTITY )
write_byte ( TE_BEAMPOINTS )
write_coord ( floatround ( start [ 0 ]) )
write_coord ( floatround ( start [ 1 ]) )
write_coord ( floatround ( start [ 2 ]) )
write_coord ( floatround ( end [ 0 ]) )
write_coord ( floatround ( end [ 1 ]) )
write_coord ( floatround ( end [ 2 ]) )
write_short ( iSprite ) // model
write_byte ( startFrame ) // start frame
write_byte ( frameRate ) // framerate
write_byte ( life ) // life
write_byte ( width ) // width
write_byte ( noise ) // noise
write_byte ( red ) // red
write_byte ( green ) // green
write_byte ( blue ) // blue
write_byte ( alpha ) // brightness
write_byte ( speed ) // speed
message_end ()
}
stock Kill ( id )
{
user_kill ( id , 1 )
return PLUGIN_CONTINUE
}
line i think that will be edited, line 1717
PHP Code:
get_cvar_string ( "amx_nextmap" , NextMap , 31 )
Len += format ( Message [ Len ], 511 - Len , "^n%L: %s" , LANG_PLAYER , "NMAP" , NextMap )
if( GetTsNum ( 0 ))
thanks for your attention