#include #include #include #include #include new const gNazwaPluginu[] = "Interp Menu"; new const gWersjaPluginu[] = "0.5"; new const gAutorPluginu[] = "MisieQ"; #define ADMIN_UPRAWNIENIA ADMIN_BAN #define MAX_PLAYERS 32 #define SetUserReversed(%1) g_bMigraineux |= 1<<(%1 & 31) #define ClearUserReversed(%1) g_bMigraineux &= ~( 1<<(%1 & 31) ) #define HasUserMigraine(%1) g_bMigraineux & 1<<(%1 & 31) new bool:wybral_interp[33]; new bool:dostal_kare[33]; new const interp[][] = { "^x03 wybral interp^x04 0.01", "^x03 wybral interp^x04 0.02", "^x03 wybral interp^x04 0.03", "^x03 nie wybral interpu wiec zostal ukarany!" } new Map[32], Name[32]; new g_bMigraineux new Float:g_vecPunchAngles[MAX_PLAYERS+1][3] new g_iFfPlayerPreThink public plugin_init() { register_plugin(gNazwaPluginu, gWersjaPluginu, gAutorPluginu); RegisterHam(Ham_Spawn, "player", "fwSpawn", 1); register_concmd("amx_interp", "ustaw", ADMIN_UPRAWNIENIA, ""); register_clcmd("say /kara","kara"); register_clcmd("say_team /kara","kara"); get_mapname(Map,sizeof Map - 1); } public client_authorized(id) { wybral_interp[id] = false dostal_kare[id] = false ClearUserReversed(id) CheckForward() } public client_disconnect(id) { wybral_interp[id] = false dostal_kare[id] = false ClearUserReversed(id) CheckForward() } public fwSpawn(id) { if (!is_user_alive(id)) return HAM_IGNORED; if(!wybral_interp[id]) { set_task( 10.0, "menu_interpu",id); } return HAM_IGNORED; } public menu_interpu(id) { new menu = menu_create("\wWybor \yInterpu:", "menu_interpu_1"); menu_additem(menu, "\w0.01", "0", 0); menu_addblank(menu,0) menu_additem(menu, "\y0.02", "1", 0); menu_addblank(menu,0) menu_additem(menu, "\r0.03", "2", 0); menu_setprop(menu,MPROP_EXIT,MEXIT_ALL) menu_setprop(menu,MPROP_EXITNAME,"Wyjscie") menu_display(id, menu, 0); return PLUGIN_CONTINUE; } public menu_interpu_1(id, menu, item) { new data[6], iName[64], acces, callback; menu_item_getinfo(menu, item, acces, data,sizeof data - 1, iName, sizeof iName - 1, callback); get_user_name(id, Name, sizeof Name - 1); if(item==MENU_EXIT) { wybral_interp[id] = true; dostal_kare[id] = true; informacja(id, 3); SetUserReversed(id); CheckForward() g_vecPunchAngles[id][0] = 0.0 g_vecPunchAngles[id][1] = 0.0 menu_destroy(menu); return PLUGIN_HANDLED; } new key = str_to_num(data); switch(key) { case 0: { client_cmd(id,"ex_interp 0.01") wybral_interp[id] = true; informacja(id, 0); menu_destroy(menu); } case 1: { client_cmd(id,"ex_interp 0.02") wybral_interp[id] = true; informacja(id, 1); menu_destroy(menu); } case 2: { client_cmd(id,"ex_interp 0.03") wybral_interp[id] = true; informacja(id, 2); menu_destroy(menu); } } return PLUGIN_HANDLED; } public informacja(id,itp) { get_user_name(id, Name, sizeof Name - 1); ColorChat(0, GREEN, "[^x03 %s^x04 ]^x03 Gracz^x04 %s %s",Map, Name, interp[itp]); } public ustaw(id,level,cid) { if (!cmd_access(id, level, cid, 2)) return PLUGIN_HANDLED; read_argv(1, Name, sizeof Name - 1); new player = cmd_target(id, Name, 0); if (!player) { console_print(id, "Przepraszamy, gracz %s nie moze zostac zlokalizowany!", Name); return PLUGIN_HANDLED; } else { ColorChat(0, GREEN, "[^x03 %s^x04 ]^x03 Admin wymusil ponowny wybor interpu dla gracza^x04 %s", Map, Name); wybral_interp[player] = false } return PLUGIN_CONTINUE; } public kara(id) { if (is_user_alive(id)) { ColorChat(0, GREEN, "[^x03 %s^x04 ]^x03 Tylko martwi gracze moga uzyc tej komendy!", Map); return PLUGIN_HANDLED; } else { if(dostal_kare[id]) { get_user_name(id, Name, sizeof Name - 1); ColorChat(0, GREEN, "[^x03 %s^x04 ]^x03 Gracz^x04 %s^x03 stwierdzil iz jednak woli wybrac interp ;)", Map, Name); ClearUserReversed(id) CheckForward() wybral_interp[id] = false; dostal_kare[id] = false; } } return PLUGIN_CONTINUE; } /* Kara */ public PlayerPreThink(id) { if(HasUserMigraine(id) && is_user_alive(id)) { if( g_vecPunchAngles[id][1] < 180.0 ) { g_vecPunchAngles[id][1] += 2.0 g_vecPunchAngles[id][0] = g_vecPunchAngles[id][1] * 2.0 } else { g_vecPunchAngles[id][0] = 0.0 } static Float:vecPunchAngle[3] vecPunchAngle[0] = g_vecPunchAngles[id][0] vecPunchAngle[1] = g_vecPunchAngles[id][0] vecPunchAngle[2] = g_vecPunchAngles[id][1] set_pev(id, pev_punchangle, vecPunchAngle) } } CheckForward() { if( !g_bMigraineux != !g_iFfPlayerPreThink ) { if( g_bMigraineux ) { g_iFfPlayerPreThink = register_forward(FM_PlayerPreThink, "PlayerPreThink") } else { unregister_forward(FM_PlayerPreThink, g_iFfPlayerPreThink) g_iFfPlayerPreThink = 0 } } }