#include #include #include #include #include #include #include #include //tylko uzyte do zablokowania latarki #define PLUGIN "Jail Mod" #define VERSION "1.0.7p" #define AUTHOR "Cypis" // SUPPORT "HubertTM" //#define DEBUG 1 #define MAX 32 #define strip_user_weapons2(%0) strip_user_weapons(%0), set_pdata_int(%0, 116, 0) native cs_set_player_model(id, newmodel[]); //wymaga cs_player_models_api.amxx enum { ID_DZWIEK_POSZ = 7000, ID_LOS_PROWADZACY, ID_CZAS, ID_FREZZ, ID_SPEED_FZ, } #define WSZYSCY 0 #define ZYWI 1 new ilosc_graczy[2]; new array_graczy[2][MAX+1]; new const maxAmmo[31] = {0,52,0,90,1,31,1,100,90,1,120,100,100,90,90,90,100,120,30,120,200,31,90,120,90,2,35,90,90,0,100}; new const dni_tygodnia[][] = {"Niedziela", "Poniedzialek", "Wtorek", "Sroda", "Czwartek", "Piatek", "Sobota"}; new SyncHudObj1, SyncHudObj3, SyncHudObj4, jail_day;//SyncHudObj2 new bool:usuwanie_ustawien, bool:end_usun, bool:pokaz_raz, bool:czas_bronie, bool:pojedynek[MAX+1], bool:free_day[MAX+1]; new bool:obsluga_dala, bool:ustaw_freeday[MAX+1], bool:ustaw_duszka[MAX+1]; new AdminVoice, prowadzacy, ostatni_wiezien; new szPoszukiwani[512], nazwa_gracza[MAX+1][64], gTeam[MAX+1]; new g_msgid[MAX+1]; new bool:user_duszek[MAX+1]; new bool:g_bPlayerZaglosowal[MAX+1]; new szInfo[257], szInfoPosz[513], dane_dnia[11], gTimeStart, id_zabawa; new fLastPrisonerShowWish, fLastPrisonerTakeWish, fRemoveData, fDayStartPre, fDayStartPost, fJoinTeam; new ProwadzacyMenu; new pCvarMikro; new Float:user_speed[MAX+1]; new g_RoundTime, g_FreezeTime; new g_Buttons[10]; public plugin_init() { #if defined DEBUG log_to_file("jail_api_jailbreak.log", "plugin_init pre"); #endif register_plugin(PLUGIN, VERSION, AUTHOR); RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); RegisterHam(Ham_TraceAttack, "player", "TraceAttack"); RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1); RegisterHam(Ham_Item_Deploy, "weapon_knife", "WeaponKnife", 1); RegisterHam(Ham_TraceAttack, "func_button", "ButtonTraceAttack"); RegisterHam(Ham_Touch, "armoury_entity", "DotykBroni"); RegisterHam(Ham_Touch, "weapon_shield", "DotykBroni"); RegisterHam(Ham_Touch, "weaponbox", "DotykBroni"); RegisterHam(Ham_Use, "game_player_equip", "BlokowanieUse"); RegisterHam(Ham_Use, "player_weaponstrip", "BlokowanieUse"); RegisterHam(Ham_Use, "func_button", "BlokowanieUse2"); RegisterHam(Ham_Use, "func_healthcharger", "BlokowanieLeczenie"); RegisterHam(Ham_Item_AddToPlayer, "weapon_knife", "OnAddToPlayerKnife", 1); register_forward(FM_EmitSound, "EmitSound"); register_forward(FM_Voice_SetClientListening, "Voice_SetClientListening"); register_event("StatusValue", "StatusShow", "be", "1=2", "2!0"); register_event("StatusValue", "StatusHide", "be", "1=1", "2=0"); register_event("TextMsg", "RoundRestart", "a", "2&#Game_w"); register_event("HLTV", "PreRoundStart", "a", "1=0", "2=0"); register_event("CurWeapon", "CurWeapon", "be", "1=1"); register_logevent("RoundEnd", 2, "1=Round_End"); register_logevent("RoundRestart", 2, "0=World triggered", "1=Game_Commencing"); register_logevent("PostRoundStart", 2, "0=World triggered", "1=Round_Start"); set_msg_block(get_user_msgid("HudTextArgs"), BLOCK_SET); //block dhud set_msg_block(get_user_msgid("HudTextPro"), BLOCK_SET); // bloc dhud Pro set_msg_block(get_user_msgid("StatusText"), BLOCK_SET); //block info player set_msg_block(get_user_msgid("ClCorpse"), BLOCK_SET); //block clcorpse set_msg_block(get_user_msgid("MOTD"), BLOCK_SET); register_clcmd("radio1", "BlokujKomende"); register_clcmd("radio2", "BlokujKomende"); register_clcmd("radio3", "BlokujKomende"); register_clcmd("drop", "BlockDrop"); register_clcmd("weapon_piesci", "ClientCommand_SelectKnife"); register_clcmd("weapon_palka", "ClientCommand_SelectKnife"); register_clcmd("jointeam", "cmdChooseTeam"); register_clcmd("chooseteam", "cmdChooseTeam"); register_clcmd("jail_cele", "MenuUstwianiaCel"); register_clcmd("+adminvoice", "AdminVoiceOn"); register_clcmd("-adminvoice", "AdminVoiceOff"); register_clcmd("say /oddaj", "OddajProwadzenie"); register_clcmd("say /obsluga", "ObslugaZyczen"); register_clcmd("say /guns", "MenuBroni"); register_clcmd("say /zabawy", "MenuZabaw"); register_clcmd("say /lr", "MenuZyczen"); register_clcmd("say /cele", "MenuVoteCele"); register_clcmd("say /mute", "MenuMutowania"); register_message(get_user_msgid("TextMsg") ,"msg_TextMsg"); register_message(get_user_msgid("ShowMenu"), "msg_show_menu"); register_message(get_user_msgid("StatusIcon"), "msg_StatusIcon"); register_message(get_user_msgid("VGUIMenu"), "msg_vgui_menu"); register_impulse(100, "msg_FlashLight"); register_menucmd(register_menuid("mainmenu"), 0x223, "_menu_chooseteam"); pCvarMikro = register_cvar("jail_tt_mikro", "0"); g_FreezeTime = get_pcvar_num(get_cvar_pointer("mp_freezetime")); g_RoundTime = floatround(get_cvar_float("mp_roundtime")*60.0); SyncHudObj1 = CreateHudSyncObj(); SyncHudObj3 = CreateHudSyncObj(); SyncHudObj4 = CreateHudSyncObj(); fJoinTeam = CreateMultiForward("OnJoinTeam", ET_CONTINUE, FP_CELL, FP_CELL, FP_CELL, FP_CELL); fDayStartPre = CreateMultiForward("OnDayStartPre", ET_CONTINUE, FP_CELL, FP_ARRAY, FP_ARRAY, FP_ARRAY, FP_CELL); fDayStartPost = CreateMultiForward("OnDayStartPost", ET_CONTINUE, FP_CELL); fLastPrisonerShowWish = CreateMultiForward("OnLastPrisonerShowWish", ET_CONTINUE, FP_CELL); fLastPrisonerTakeWish = CreateMultiForward("OnLastPrisonerTakeWish", ET_CONTINUE, FP_CELL, FP_CELL); fRemoveData = CreateMultiForward("OnRemoveData", ET_CONTINUE, FP_CELL); ProwadzacyMenu = menu_create("Pozwol wiezniowi wybrac zyczenie:", "Handel_Obsluga_Zyczen"); menu_additem(ProwadzacyMenu, "Tak"); menu_additem(ProwadzacyMenu, "Nie"); WczytajCele(); set_task(1.0, "task_server", _, _, _, "b"); set_task(5.0, "task_cfg"); #if defined DEBUG log_to_file("jail_api_jailbreak.log", "plugin_init post"); #endif } public task_cfg() { #if defined DEBUG log_to_file("jail_api_jailbreak.log", "task_cfg pre"); #endif server_cmd("exec addons/amxmodx/configs/jailbreak.cfg"); #if defined DEBUG log_to_file("jail_api_jailbreak.log", "task_cfg post"); #endif } public CurWeapon(id) { if(!is_user_alive(id)) return; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "CurWeapon pre"); #endif if(!end_usun) set_user_maxspeed(id, user_speed[id]? user_speed[id]: 250.0); if(user_duszek[id]) { new weapon = read_data(2); if(weapon != CSW_KNIFE && weapon != CSW_FLASHBANG && weapon != CSW_SMOKEGRENADE) { user_duszek[id] = false; set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255); AddArray(id, WSZYSCY); AddArray(id, ZYWI); } } if(dane_dnia[7]) { if(dane_dnia[7] != 3) { if(gTeam[id] != dane_dnia[7]) return; } new weapon = read_data(2); if(weapon == CSW_KNIFE || weapon == CSW_HEGRENADE || weapon == CSW_FLASHBANG || weapon == CSW_SMOKEGRENADE) return; cs_set_user_bpammo(id, weapon, maxAmmo[weapon]); } #if defined DEBUG log_to_file("jail_api_jailbreak.log", "CurWeapon post"); #endif } enum { MIKRO = 0, WALKA, FF_TT, TT_GOD, CT_GOD, CT_NIE_MOZE_TT, TT_NIE_MOZE_CT } new bool:mode_gracza[7]; enum { V_PALKA = 0, P_PALKA, V_PIESCI, P_PIESCI, V_REKAWICE, P_REKAWICE } new SzModels[6][128]; public plugin_precache() { SzModels[V_PALKA] = "models/jb_cypis/v_palka.mdl"; SzModels[P_PALKA] = "models/jb_cypis/p_palka.mdl"; SzModels[V_PIESCI] = "models/jb_cypis/v_piesci.mdl"; SzModels[P_PIESCI] = "models/jb_cypis/p_piesci.mdl"; SzModels[V_REKAWICE] = "models/jb_cypis/v_rekawice.mdl"; SzModels[P_REKAWICE] = "models/jb_cypis/p_rekawice.mdl"; precache_model(SzModels[V_PALKA]); precache_model(SzModels[P_PALKA]); precache_model(SzModels[V_PIESCI]); precache_model(SzModels[P_PIESCI]); precache_model(SzModels[V_REKAWICE]); precache_model(SzModels[P_REKAWICE]); precache_model("models/player/wiezien_cypis/wiezien_cypis.mdl"); precache_model("models/player/klawisz_cypis/klawisz_cypis.mdl"); precache_sound("weapons/prawy_przycisk.wav"); precache_sound("weapons/uderzenie_mur.wav"); precache_sound("weapons/hit1.wav"); precache_sound("weapons/hit2.wav"); precache_sound("weapons/machanie.wav"); precache_sound("jb_cypis/uciekinier.wav"); precache_generic("sprites/weapon_piesci.txt"); precache_generic("sprites/weapon_palka.txt"); precache_generic("sprites/640hud41.spr"); } /********** - Native - ************/ new Array:gZabawyName; new Array:gZyczeniaName; public plugin_natives() { gZabawyName = ArrayCreate(32); gZyczeniaName = ArrayCreate(32); register_native("jail_register_game", "ZarejstrujZabawe", 1); register_native("jail_register_wish", "ZarejstrujZyczenie", 1); register_native("jail_set_game_hud", "jail_set_game_hud_p", 0); register_native("jail_get_prisoners_micro", "PobierzMikrofon", 1); register_native("jail_get_prisoners_fight", "PobierzWalke", 1); register_native("jail_get_prisoner_free", "PobierzFreeday", 1); register_native("jail_get_prisoner_ghost", "PobierzDuszka", 1); register_native("jail_get_prisoner_last", "PobierzOstatniego", 1); register_native("jail_get_prowadzacy", "PobierProwadzacego", 1); register_native("jail_get_poszukiwany", "PobierzPoszukiwany", 1); register_native("jail_get_user_block", "PobierzPojedynek", 1); register_native("jail_get_play_game_id", "PobierzIdZabawy", 1); register_native("jail_get_days", "PobierzDni", 1); register_native("jail_set_prisoners_micro", "UstawMikrofon", 1); register_native("jail_set_prisoners_fight", "UstawWalke", 1); register_native("jail_set_prisoner_free", "UstawFreeday", 1); register_native("jail_set_prisoner_ghost", "UstawDuszka", 1); register_native("jail_set_prowadzacy", "UstawProwadzacego", 1); register_native("jail_set_god_tt", "UstawTTGod", 1); register_native("jail_set_god_ct", "UstawCTGod", 1); register_native("jail_set_ct_hit_tt", "UstawCTHitTT", 1); register_native("jail_set_tt_hit_ct", "UstawTTHitCT", 1); register_native("jail_set_user_block", "UstawBlokade", 1); register_native("jail_set_play_game", "UstawZabawe", 1); register_native("jail_set_user_menuweapons", "UstawMenuWeapon", 1); register_native("jail_set_user_speed", "UstawPredkosc", 1); register_native("jail_open_cele", "OtworzCele", 1); } public ZarejstrujZyczenie(nazwa_zyczenia[]) { param_convert(1); ArrayPushString(gZyczeniaName, nazwa_zyczenia); static ilosc; ilosc++; return ilosc; } new bool:zyczenie_wybrane; public OnLastPrisonerShowWish(id) { #if defined DEBUG log_to_file("jail_api_jailbreak.log", "OnLastPrisonerShowWish pre"); #endif MenuZyczen(id); #if defined DEBUG log_to_file("jail_api_jailbreak.log", "OnLastPrisonerShowWish post"); #endif } public MenuZyczen(id) { if(gTeam[id] != 1 || ostatni_wiezien != id || zyczenie_wybrane || !obsluga_dala) return PLUGIN_HANDLED; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "MenuZyczen pre"); #endif if(!ArraySize(gZyczeniaName)) { ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Nie ma zadnych zyczen na serwerze!"); return PLUGIN_HANDLED; } new szZyczenia[32], szID[32], menu = menu_create("Wybierz Zyczenie:", "Handel_Zyczenie"); for(new i=0; i 0) { get_weaponname(weapon, weaponname, 23); give_item(id, weaponname); cs_set_user_bpammo(id, weapon, maxAmmo[weapon]); } weapon = bronie_gracza[id][1]; if(weapon > 0) { get_weaponname(weapon, weaponname, 23); give_item(id, weaponname); cs_set_user_bpammo(id, weapon, maxAmmo[weapon]); } return; } bronie_gracza[id][0] = 0; bronie_gracza[id][1] = 0; bronie_menu[id][0] = bronie; bronie_menu[id][1] = pistolety; bronie_bitsum[id][0] = bitsum_bronie; bronie_bitsum[id][1] = bitsum_pistolety; MenuBronie(id); } public MenuBronie(id) { if(!bronie_menu[id][0] && bronie_menu[id][1]) { MenuPistolety(id); return; } if(!bronie_menu[id][0]) return; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "MenuBronie pre"); #endif new menu = menu_create("Wybierz Bronie:", "Handel_Bronie"); if(!(bronie_bitsum[id][0] & (1< 0) ham_strip_weapon(id, callback); weapon = str_to_num(data); get_weaponname(weapon, weaponname, 23); give_item(id, weaponname); cs_set_user_bpammo(id, weapon, maxAmmo[weapon]); bronie_gracza[id][0] = weapon; if(bronie_menu[id][1]) MenuPistolety(id); #if defined DEBUG log_to_file("jail_api_jailbreak.log", "Handel_Bronie post"); #endif } public MenuPistolety(id) { if(!bronie_menu[id][1]) return; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "MenuPistolety pre"); #endif new menu = menu_create("Wybierz Pistolet:", "Handel_Pistolety"); if(!(bronie_bitsum[id][1] & (1< 0)) { set_pev(prowadzacy, pev_body, 1); } } } stock RandomCT() { #if defined DEBUG log_to_file("jail_api_jailbreak.log", "RandomCT pre"); #endif new CT_Player[MAX+2], ile=0; for(new i=1; i<=MAX; i++) { if(!is_user_connected(i) || !is_user_alive(i) || gTeam[i] != 2) continue; CT_Player[++ile] = i; } #if defined DEBUG log_to_file("jail_api_jailbreak.log", "RandomCT post"); #endif return CT_Player[(ile? random_num(1, ile): 0)]; } new TimeAfk[MAX+1], LastPosition[MAX+1][3]; public task_server() { if(end_usun) return; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "task_server pre"); #endif for(new id=1; id<=MAX; id++) { if(!is_user_alive(id) || !is_user_connected(id)) continue; if(gTeam[id] == 1) { if(dane_dnia[6]) { new PlayerPos[3]; get_user_origin(id, PlayerPos); if(PlayerPos[0] == LastPosition[id][0] && PlayerPos[1] == LastPosition[id][1]) { TimeAfk[id]++; if(TimeAfk[id] == 15) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak] ^x01Przestan Kampic!"); ExecuteHam(Ham_TakeDamage, id, 0, 0, 5.0, (1<<14)); } else if(TimeAfk[id] == 18) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak] ^x01Przestan Kampic!"); ExecuteHam(Ham_TakeDamage, id, 0, 0, 10.0, (1<<14)); } else if(TimeAfk[id] >= 20) { ColorChat(id, TEAM_COLOR, "^x04[PrisonBreak] ^x01Przestan Kampic!"); ExecuteHam(Ham_TakeDamage, id, 0, 0, 20.0, (1<<14)); } } else TimeAfk[id] = 0; LastPosition[id][0] = PlayerPos[0]; LastPosition[id][1] = PlayerPos[1]; } if(czas_bronie && dane_dnia[0] == 1 && ostatni_wiezien == id && !pokaz_raz) { new iRet; usun_ustawienia_dzien(); ExecuteForward(fLastPrisonerShowWish, iRet, id); obsluga_dala = true; pokaz_raz = true; } } else if(gTeam[id] == 2) { PokazStatusText(id, "Wiezniowie: %i zywi | %i Wszyscy", ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]); if(czas_bronie && !dane_dnia[0] && ostatni_wiezien && prowadzacy == id && !pokaz_raz) { menu_display(id, ProwadzacyMenu); usun_ustawienia_dzien(); pokaz_raz = true; } } } //set_hudmessage(0, 255, 0, 0.6, 0.1, 0, 0.01, 1.0); //ShowSyncHudMsg(0, SyncHudObj2, "Dzien %i - %s", jail_day, dni_tygodnia[jail_day%7]); static szDay[256]; formatex(szDay, 63, "Dzien %i - %s^n", jail_day, dni_tygodnia[jail_day%7]); set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 0.01, 1.0); if(prowadzacy && !szInfo[0]) { set_hudmessage(0, 255, 0, 0.01, 0.18, 0, 0.01, 1.0); format(szDay, 255, "%s%s jest prowadzacym straznikiem.", szDay, nazwa_gracza[prowadzacy]); } else if(szInfo[0]) { set_hudmessage(255, 0, 0, 0.01, 0.18, 0, 0.01, 1.0); format(szDay, 255, "%s%s", szDay, szInfo); } ShowSyncHudMsg(0, SyncHudObj3, szDay); if(szPoszukiwani[0] && !szInfoPosz[0]) { set_hudmessage(255, 85, 85, 0.01, 0.4, 0, 0.01, 1.0); ShowSyncHudMsg(0, SyncHudObj4, "Poszukiwani:%s", szPoszukiwani); } else if(szInfoPosz[0]) { set_hudmessage(0, 255, 0, 0.01, 0.22, 0, 0.01, 1.0); ShowSyncHudMsg(0, SyncHudObj4, szInfoPosz); } #if defined DEBUG log_to_file("jail_api_jailbreak.log", "task_server post"); #endif } PokazStatusText(id, szText[], any:...) { new szTemp[192]; vformat(szTemp, 191, szText, 3); message_begin(MSG_ONE_UNRELIABLE, 106, {0,0,0}, id); write_byte(0); write_string(szTemp); message_end(); } usun_ustawienia_dzien() { #if defined DEBUG log_to_file("jail_api_jailbreak.log", "usun_ustawienia_dzien pre"); #endif if(mode_gracza[WALKA]) { mode_gracza[WALKA] = false; if(get_user_weapon(ostatni_wiezien) == CSW_KNIFE) { set_pev(ostatni_wiezien, pev_viewmodel2, SzModels[V_PIESCI]); set_pev(ostatni_wiezien, pev_weaponmodel2, SzModels[P_PIESCI]); } } mode_gracza[MIKRO] = true; mode_gracza[FF_TT] = false; mode_gracza[TT_GOD] = false; mode_gracza[CT_GOD] = false; mode_gracza[CT_NIE_MOZE_TT] = false; mode_gracza[TT_NIE_MOZE_CT] = false; dane_dnia[4] = 0; dane_dnia[7] = 0; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "usun_ustawienia_dzien post"); #endif } public ObslugaZyczen(id) { if(prowadzacy != id || obsluga_dala || !ostatni_wiezien || !czas_bronie) return PLUGIN_HANDLED; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "ObslugaZyczen pre"); #endif menu_display(id, ProwadzacyMenu); #if defined DEBUG log_to_file("jail_api_jailbreak.log", "ObslugaZyczen post"); #endif return PLUGIN_HANDLED; } public Handel_Obsluga_Zyczen(id, menu, item) { if(prowadzacy != id || !ostatni_wiezien || !is_user_alive(id)) return; if(item == MENU_EXIT) return; #if defined DEBUG log_to_file("jail_api_jailbreak.log", "Handel_Obsluga_Zyczen pre"); #endif switch(item) { case 0: { ColorChat(0, TEAM_COLOR, "^x04[PrisonBreak]^x01 Obsluga wiezienia pozwolila wybrac zyczenie!"); obsluga_dala = true; new iRet; ExecuteForward(fLastPrisonerShowWish, iRet, ostatni_wiezien); } case 1: { ColorChat(0, TEAM_COLOR, "^x04[PrisonBreak]^x01 Obsluga wiezienia zadecydowala ze wiezien nie ma zyczenia!"); } } #if defined DEBUG log_to_file("jail_api_jailbreak.log", "Handel_Obsluga_Zyczen post"); #endif } public ClientCommand_SelectKnife(id) { engclient_cmd(id, "weapon_knife"); } public OnAddToPlayerKnife(const item, const player) { if(pev_valid(item) && is_user_alive(player)) { message_begin(MSG_ONE, 78, .player = player);//WeaponList = 78 { write_string(cs_get_user_team(player) == CS_TEAM_T? "weapon_piesci": "weapon_palka"); // WeaponName write_byte(-1); // PrimaryAmmoID write_byte(-1); // PrimaryAmmoMaxAmount write_byte(-1); // SecondaryAmmoID write_byte(-1); // SecondaryAmmoMaxAmount write_byte(2); // SlotID (0...N) write_byte(1); // NumberInSlot (1...N) write_byte(CSW_KNIFE); // WeaponID write_byte(0); // Flags } message_end(); } } public cmdChooseTeam(id) { menu_chooseteam(id) return PLUGIN_HANDLED; } public msg_vgui_menu(msgid, dest, id) { if(get_msg_arg_int(1) != 2) return PLUGIN_CONTINUE; g_msgid[id] = msgid; menu_chooseteam(id); return PLUGIN_HANDLED; } public msg_show_menu(msgid, dest, id) { static team_select[] = "#Team_Select"; static menu_text_code[sizeof team_select]; get_msg_arg_string(4, menu_text_code, charsmax(menu_text_code)); if(!equal(menu_text_code, team_select)) return PLUGIN_CONTINUE; g_msgid[id] = msgid; menu_chooseteam(id); return PLUGIN_HANDLED; } public menu_chooseteam(id) { if(!is_user_connected(id)) return PLUGIN_HANDLED; new text[512], len; len += format(text[len], 511 - len, "rWybierz team^n"); len += format(text[len], 511 - len, "r1. wWiezniowie^n"); len += format(text[len], 511 - len, "r2. wStraznicy^n^n"); len += format(text[len], 511 - len, "r6. wWidzowie^n^n"); if(gTeam[id]) len += format(text[len], 511 - len, "^nr0. wWyjdz^n"); show_menu(id, gTeam[id]? 0x223: 0x23, text, -1, "mainmenu"); return PLUGIN_HANDLED; } public _menu_chooseteam(id, key) { switch(key) { case 0, 1, 5: GdzieDojsc(id, key+1); case 9: return; } } GdzieDojsc(id, team) { set_pdata_int(id, 125, get_pdata_int(id, 125) & ~(1<<8)); if(team == 6) { if(!is_user_alive(id)) { gTeam[id] = 0; engclient_cmd(id, "jointeam", "6"); } else client_print(id, print_center, "Nie mozesz byc obserwatorem"); return; } if(gTeam[id] == team) return; new ile_graczy[2]; for(new i=1; i<=32; i++) { if(!is_user_connected(i)) continue; switch(cs_get_user_team(i)) { case 1: ile_graczy[0]++; case 2: ile_graczy[1]++; } } if(czas_bronie && jail_day%7 && !gTeam[id] && ((team == 1 && ile_graczy[0]) || (team == 2 && ile_graczy[1]))) { ColorChat(id, GREEN, "[PrisonBreak]^x01 Mozesz dolaczyc dopiero jak sie skonczy runda!"); GdzieDojsc(id, 6); return; } new iRet; ExecuteForward(fJoinTeam, iRet, id, team, ile_graczy[0], ile_graczy[1]); switch(iRet) { case 9999: return; case 1,2: team = iRet; } if(gTeam[id] == team) return; new msg_blocke = get_msg_block(g_msgid[id]); set_msg_block(g_msgid[id], BLOCK_SET); engclient_cmd(id, "jointeam", team==2? "2": "1"); //set_msg_block(g_msgid[id], msg_blocke); //set_msg_block(g_msgid[id], BLOCK_SET); engclient_cmd(id, "joinclass", "1"); set_msg_block(g_msgid[id], msg_blocke); gTeam[id] = team; } public BlokujKomende() return PLUGIN_HANDLED; //cele menu public WczytajCele() { new szMap[32], szFile[128]; get_mapname(szMap, 31); formatex(szFile, 127, "addons/amxmodx/data/cele/%s.ini", szMap); if(file_exists(szFile)) { new dane_tablicy[4][32], tablica[256], txtlen; for(new i=0; i 1) break; read_file(szFile, i, tablica, 255, txtlen); parse(tablica, dane_tablicy[0], 31, dane_tablicy[1], 31, dane_tablicy[2], 31, dane_tablicy[3], 31); new Float:origin[3]; origin[0] = str_to_float(dane_tablicy[0]); origin[1] = str_to_float(dane_tablicy[1]); origin[2] = str_to_float(dane_tablicy[2]); new Float:fDistance = 9999.0, Float:fDistance2, ent; while((ent = find_ent_by_class(ent, dane_tablicy[3]))) { new Float:gOrigin[3]; get_brush_entity_origin(ent, gOrigin); fDistance2 = vector_distance(gOrigin, origin); if(fDistance2 < fDistance) { fDistance = fDistance2; g_Buttons[i] = ent; } } } } else setup_buttons(); AddMenuItem("Dodanie Cel", "jail_cele", ADMIN_RCON, PLUGIN); } public MenuUstwianiaCel(id) { if(!(get_user_flags(id) & ADMIN_RCON)) return PLUGIN_HANDLED; new menu = menu_create("Ustaw przycisk do cel:", "Handel_Cele"); menu_additem(menu, "Przycisk 1"); menu_additem(menu, "Przycisk 2 (jak sa 2 przyciski do cel)"); menu_additem(menu, "Usun Przyciski"); menu_setprop(menu, MPROP_EXITNAME, "Wyjdz"); menu_display(id, menu); return PLUGIN_HANDLED; } public Handel_Cele(id, menu, item) { if(item == MENU_EXIT) { return PLUGIN_CONTINUE; } switch(item) { case 0: ZapiszIdCel(id, 0); case 1: ZapiszIdCel(id, 1); case 2:{ if(g_Buttons[0]) { new szMap[32], szFile[128]; get_mapname(szMap, 31); formatex(szFile, 127, "addons/amxmodx/data/cele/%s.ini", szMap); delete_file(szFile); g_Buttons[0] = 0; client_print(id, 3, "[Cele] Usunieto przyciski"); } if(g_Buttons[1]) g_Buttons[1] = 0; } } menu_display(id, menu); return PLUGIN_CONTINUE; } ZapiszIdCel(id, linia) { new ent, body; get_user_aiming(id, ent, body); if(!pev_valid(ent)) return; g_Buttons[linia] = ent; new Float:origin[3], name[32]; get_brush_entity_origin(ent, origin); pev(ent, pev_classname, name, 31); new szMap[32], szFile[128], szTemp[128]; get_mapname(szMap, 31); formatex(szTemp, 127, "%f %f %f %s", origin[0], origin[1], origin[2], name); formatex(szFile, 127, "addons/amxmodx/data/cele/%s.ini", szMap); write_file(szFile, szTemp, linia); client_print(id, 3, "[Cele] Dodano przycisk %i", linia+1); } //cele auto public setup_buttons() { new ent[3], class[32], i, Float:origin[3]; while((i < sizeof(g_Buttons)) && (ent[0] = engfunc(EngFunc_FindEntityByString, ent[0], "classname", "info_player_deathmatch"))) { pev(ent[0], pev_origin, origin) while((ent[1] = engfunc(EngFunc_FindEntityInSphere, ent[1], origin, 300.0))) { if(!pev_valid(ent[1])) continue; pev(ent[1], pev_classname, class, 31); if(!equal(class, "func_door")) continue; pev(ent[1], pev_targetname, class, 31) ent[2] = engfunc(EngFunc_FindEntityByString, 0, "target", class); if(pev_valid(ent[2]) && (in_array(ent[2], g_Buttons, sizeof(g_Buttons)) < 0)) { g_Buttons[i++] = ent[2]; ent[1] = 0; ent[2] = 0; break; } } } } stock in_array(needle, data[], size) { for(new i = 0; i < size; i++) { if(data[i] == needle) return i; } return -1; } public OtworzCele() { for(new i=0; i= glosy[0]) { for(new i=1; i<=MAX;i++) g_bPlayerZaglosowal[i] = false; OtworzCele(); ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x01Wiezniowie sie zbuntowali i otworzyli sobie cele!"); return PLUGIN_HANDLED; } ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Zaglosowales na otworzenie cel. Glosow %d/%d!", glosy[1], glosy[0]); return PLUGIN_HANDLED; } new CzasHudOdliczanie = 0, szMessage_JB_CYPIS[64]; #define TASK_ID_HUD 2761234 new hud_data[6]; public jail_set_game_hud_p(plugin, params) { CzasHudOdliczanie = get_param(1); get_string(2, szMessage_JB_CYPIS, 63); hud_data[0] = clamp(get_param(3), 0, 255); hud_data[1] = clamp(get_param(4), 0, 255); hud_data[2] = clamp(get_param(5), 0, 255); hud_data[3] = floatround(get_param_f(6)*100) hud_data[4] = floatround(get_param_f(7)*100) hud_data[5] = plugin; if(!hud_data[0] && !hud_data[1] && !hud_data[2]) { hud_data[0] = 0; hud_data[1] = 127; hud_data[2] = 255; } if(!hud_data[3] && !hud_data[4]) { hud_data[3] = 50; hud_data[4] = 70; } remove_task(TASK_ID_HUD, 1); TimesHud(); } public TimesHud() { new iRet; if(--CzasHudOdliczanie > 0) { new szTime[32], iFwdHandle = CreateOneForward(hud_data[5], "OnGameHudTick", FP_CELL, FP_CELL); ExecuteForward(iFwdHandle, iRet, id_zabawa, CzasHudOdliczanie); DestroyForward(iFwdHandle); format_time(szTime, 31, "%M:%S", CzasHudOdliczanie); set_hudmessage(hud_data[0], hud_data[1], hud_data[2], hud_data[3]/100.0, hud_data[4]/100.0, 0, 0.01, 1.0); show_hudmessage(0, "%s [%s]", szMessage_JB_CYPIS, szTime); if(CzasHudOdliczanie <= 10) { new word[6]; num_to_word(CzasHudOdliczanie, word, 5); client_cmd(0, "spk ^"%s^"", word); } set_task(1.0, "TimesHud", TASK_ID_HUD); } else { new iFwdHandle = CreateOneForward(hud_data[5], "OnGameHudEnd", FP_CELL); ExecuteForward(iFwdHandle, iRet, id_zabawa); DestroyForward(iFwdHandle); } }