#include #include #include #include #include #define KEYSMENU MENU_KEY_1 | MENU_KEY_2 | MENU_KEY_0 #define PREFIX "[Respawn]" // Prefix in chat. #define MONEY 1500 // Money for respawn. #define FRAGS 7 // Frags for respawn. #define MAX_RESP 5 // Maximum Respawn for round. new bool:g_bEndRound new g_amount /*================================================================================ [Plugin Init] =================================================================================*/ public plugin_init() { register_plugin("Respawn Manager", "0.1", "WPMG Team") register_clcmd("say /respawn", "show_menu_rev") register_clcmd("say /resp", "show_menu_rev") register_menu("menu show", KEYSMENU, "menu_rev_handler") register_event("HLTV", "event_round_start", "a", "1=0", "2=0") register_logevent("logevent_round_end", 2, "1=Round_End") RegisterHam(Ham_Killed, "player", "Player_Killed", 1) } /*================================================================================ [Main Events] =================================================================================*/ public event_round_start() { g_bEndRound = false g_amount = 0 } public logevent_round_end() { g_bEndRound = true } public Player_Killed(victim, attacker, myaso) { if(!is_user_connected(victim)) return HAM_IGNORED if(g_bEndRound) return HAM_IGNORED if(g_amount >= MAX_RESP) return HAM_IGNORED client_printcolor(victim, "^4%s ^1Say: ^4/resp^1, ^4/respawn ^1for respawn.", PREFIX) return HAM_HANDLED } /*================================================================================ [Menu] =================================================================================*/ public show_menu_rev(id) { if(is_user_alive(id)) { client_printcolor(id, "^4%s ^1You are alive!", PREFIX) return PLUGIN_HANDLED } if(g_bEndRound) { client_printcolor(id, "^4%s ^1Unknown command. Round is end.", PREFIX) return PLUGIN_HANDLED } if(g_amount >= MAX_RESP) { client_printcolor(id, "^4%s ^1Used the maximum amount respawn for round.", PREFIX) return PLUGIN_HANDLED } new menu[128] formatex(menu, charsmax(menu), "\ySelect what will be respawn:^n^n\r1. \wMoney \y%d $^n\r2. \wFrags \y(%d frags)^n^n\r0. \wExit", MONEY, FRAGS) show_menu(id, KEYSMENU, menu, -1, "menu show") return PLUGIN_CONTINUE } /*================================================================================ [Menu Handler] =================================================================================*/ public menu_rev_handler(id, key) { key++ switch(key) { case 1: set_spawn_for_money(id) case 2: set_spawn_for_frags(id) } return PLUGIN_HANDLED } set_spawn_for_money(id) { if(cs_get_user_money(id) < MONEY) { client_printcolor(id, "^4%s ^1Not enough money!", PREFIX) return PLUGIN_HANDLED } cs_set_user_money(id, cs_get_user_money(id) - MONEY, 1) ExecuteHamB(Ham_CS_RoundRespawn, id) g_amount++ client_printcolor(id, "^4%s ^1Your respawned for money.", PREFIX) client_printcolor(id, "^4%s ^1Used respawn:^4 %d/%d ^1for round.", PREFIX, g_amount, MAX_RESP) return PLUGIN_CONTINUE } set_spawn_for_frags(id) { if(get_user_frags(id) < FRAGS) { client_printcolor(id, "^4%s ^1Not enough frags!", PREFIX) return PLUGIN_HANDLED } set_user_frags(id, get_user_frags(id) - FRAGS) ExecuteHamB(Ham_CS_RoundRespawn, id) g_amount++ client_printcolor(id, "^4%s ^1Your respawned for frags.", PREFIX) client_printcolor(id, "^4%s ^1Used respawn:^4 %d/%d ^1for round.", PREFIX, g_amount, MAX_RESP) return PLUGIN_CONTINUE } /*================================================================================ [Stock] =================================================================================*/ stock client_printcolor(const id, const input[], any:...) { new iCount = 1, iPlayers[32] static szMsg[191] vformat(szMsg, charsmax(szMsg), input, 3) replace_all(szMsg, 190, "/g", "^4") replace_all(szMsg, 190, "/y", "^1") replace_all(szMsg, 190, "/ctr", "^1") replace_all(szMsg, 190, "/w", "^0") if(id) iPlayers[0] = id else get_players(iPlayers, iCount, "ch") for (new i = 0; i < iCount; i++) { if(is_user_connected(iPlayers[i])) { message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, iPlayers[i]) write_byte(iPlayers[i]) write_string(szMsg) message_end() } } }