- | 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 "[DeathRun]" #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)) { 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 }
Modificare plugin duel deathrun [ rezolvat ]
Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com
- TaZz.
- Membru, skill 0
- Posts: 45
- Joined: 19 Apr 2016, 17:30
- Detinator Steam: Da
- Fond eXtream: 0
- Contact:
Salut, imi puteti adauga timp la acest plugin ? Gen daca nu moare niciunul dintre cei 2 in 60 de secunde, sa dea el kill aleatoriu.
- levin
- Scripter eXtreamCS
- Posts: 3850
- Joined: 24 Aug 2011, 12:24
- Detinator Steam: Da
- CS Status: ♅
- Detinator server CS: ☯∴
- SteamID: 76561198063679589
- Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy - Location: ҳ̸Ҳ̸ҳ
- Discord: devilclass
- Has thanked: 36 times
- Been thanked: 595 times
- Contact:
are așa ceva
Nu îmi mai trimiteți PM pe forum! Nu merge să răspund
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
- Laurentiu P.
- Fost moderator
- Posts: 2550
- Joined: 10 Jul 2013, 21:26
- Detinator Steam: Da
- Reputatie: Fost super moderator
- Fond eXtream: 100
- Has thanked: 26 times
- Been thanked: 64 times
- Contact:
Code: Select all
[PcvarTimer = register_cvar("dd_timer", "0")
PcvarTimeLimit = register_cvar("dd_timelimit
no...
- TaZz.
- Membru, skill 0
- Posts: 45
- Joined: 19 Apr 2016, 17:30
- Detinator Steam: Da
- Fond eXtream: 0
- Contact:
da, uitasem sa adaug cvar-urile, multumesc.