Server CS deathrun
Eroarea:
Code: Select all
[AMXX] Displaying debug trace (plugin "DR_Duel1.amxx", version "4.0")
[AMXX] Run time error 10: native error (native "pev")
[AMXX][0] DR_Duel1.sma::get_ent_index (line 2008)
[AMXX][1] DR_Duel1.sma::set_start_value (line 1995)
[AMXX][2] DR_Duel1.sma::plugin_cfg (line 346)
Plugins :
- | Afiseaza codul
#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 "[DR.PlayCs.RO]" #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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; 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 set_user_armor id, 0; set_user_armor tempid, 0; StartMathDuel(id, tempid) return PLUGIN_HANDLED } case 13: { Word[id] = true Word[tempid] = true Duel = true set_user_armor id, 0; set_user_armor tempid, 0; 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)) { message_begin(MSG_ONE_UNRELIABLE, SayText, _, players) write_byte(players) 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=iDef; gOnStart=iDef; gDelay=get_pdata_float(gEnt,m_flWait); gDefaultDelay=gDelay; } } 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==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 }