Skocz do zawartości

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.
  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Problem z tarcza do jailbreak z silnikiem Cypis'a


  • Nie możesz napisać tematu
  • Zaloguj się, aby dodać odpowiedź
5 odpowiedzi w tym temacie

#1 Ken U DZ

    Życzliwy

  • Użytkownik

Reputacja: 1
Nowy

  • Postów:28
  • GG:
  • Imię:Dominik
Offline

Napisano 03.07.2015 13:08

Witam mam problem z pewną zabawą na silniku cypis'a a mianowicie chcę  dodać tarcze do zabawy tylko dla TT

Proszę o edytowanie silnika jailbreak by cypis i co mam dopisac do zabaw by dodać tarcze dla TT lub udzielić mi wskazówek ;)


  • +
  • -
  • 0

Pomogłem ? Daj +


#2 DMNINI

    Życzliwy

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:27
Offline

Napisano 03.07.2015 13:40

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <colorchat>

#include <engine> //tylko uzyte do zablokowania latarki

#define PLUGIN "Jail Mod"
#define VERSION "1.0.6a"
#define AUTHOR "Cypis"

//#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 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, "weaponbox", "DotykBroni");
	RegisterHam(Ham_Use, "game_player_equip", "BlokowanieUse");
	RegisterHam(Ham_Use, "player_weaponstrip", "BlokowanieUse");
	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(106, BLOCK_SET); //block info player
	set_msg_block(145, BLOCK_SET); //block dhud
	set_msg_block(122, 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("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 /mute", "MenuMutowania");
	
	register_message(77 ,"msg_TextMsg");
	register_message(96, "msg_show_menu");
	register_impulse(100, "msg_FlashLight");
	register_message(107, "msg_StatusIcon");
	register_message(114, "msg_vgui_menu");
	
	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();
	//SyncHudObj2 = 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_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<ArraySize(gZyczeniaName); i++)
	{
		ArrayGetString(gZyczeniaName, i, szZyczenia, 31);
		num_to_str(i+1, szID, 31);
		menu_additem(menu, szZyczenia, szID);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZyczen post");
#endif
	return PLUGIN_HANDLED;
}

public Handel_Zyczenie(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || ostatni_wiezien != id)
		return;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie pre");
#endif
	new acces, szZyczenie[32], szID[32];
	menu_item_getinfo(menu, item, acces, szID, 31, szZyczenie, 31, acces);
	
	new iRet;
	ExecuteForward(fLastPrisonerTakeWish, iRet, id, str_to_num(szID))
	if(iRet == -1)
	{
		menu_display(id, menu);
		ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Nie mozesz wybrac tego zyczenia!");
		return;
	}
	
	ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x03%s ^x01wybral^x03 %s", nazwa_gracza[id], szZyczenie);
	zyczenie_wybrane = true;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie post");
#endif
}
////////////////////

public ZarejstrujZabawe(nazwa_zabawy[])
{
	param_convert(1);
	ArrayPushString(gZabawyName, nazwa_zabawy);
	
	static ilosc = 8; ilosc++;
	return ilosc;
}

new bool:zabawa_wybrana;
public MenuZabaw(id)
{
	if(gTeam[id] != 2 || prowadzacy != id)
		return PLUGIN_CONTINUE;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZabaw pre");
#endif
	if(!ArraySize(gZabawyName))
	{
		ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Nie ma zadnych zabaw na serwerze!");
		return PLUGIN_CONTINUE;
	}
	
	if(zabawa_wybrana)
	{
		ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Juz wybrales dzisiaj zabawe");
		return PLUGIN_CONTINUE;
	}
	
	new szZabawa[32], szID[32], menu = menu_create("Menu Zabaw:", "Handel_Menu_Zabaw");
	for(new i=0; i<ArraySize(gZabawyName); i++)
	{
		ArrayGetString(gZabawyName, i, szZabawa, 31);
		num_to_str(i+9, szID, 31);
		menu_additem(menu, szZabawa, szID);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZabaw post");
#endif
	return PLUGIN_HANDLED;
}

public Handel_Menu_Zabaw(id, menu, item)
{
	if(item == MENU_EXIT || zabawa_wybrana || prowadzacy != id)
		return;

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw pre");
#endif
	new acces, szZabawa[32], szID[32];
	menu_item_getinfo(menu, item, acces, szID, 31, szZabawa, 31, acces);
	ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01%s%s", UstawZabawe(str_to_num(szID), false)? "wlaczyles ": "juz jest za pozno, aby wlaczyc ", szZabawa);
	
	zabawa_wybrana = true;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw post");
#endif
}

public UstawPredkosc(id, Float:speed)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawPredkosc pre");
#endif
	user_speed[id] = speed;
	if(end_usun)
	{
		new data[1];
		data[0] = id;
		set_task(g_FreezeTime-(get_systime()-gTimeStart)+0.1, "taskUstawPredkosc", ID_SPEED_FZ, data, 1);
	}
	else
		set_user_maxspeed(id, speed);
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawPredkosc post");
#endif
}

public taskUstawPredkosc(data[1])
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc pre");
#endif
	set_user_maxspeed(data[0], user_speed[data[0]]);
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc post");
#endif
}

public PobierzIdZabawy()
{
	return id_zabawa;
}

public bool:PobierzPojedynek(id)
{
	return pojedynek[id];
}

public bool:PobierzPoszukiwany(id)
{
	return (contain(szPoszukiwani, nazwa_gracza[id]) != -1)? true: false;
}

public bool:PobierzMikrofon()
{
	return bool:mode_gracza[MIKRO];
}

public bool:PobierzWalke()
{
	return bool:mode_gracza[WALKA];
}

public bool:PobierzFreeday(id)
{
	return free_day[id];
}

public bool:PobierzDuszka(id)
{
	return user_duszek[id];
}

public PobierzOstatniego()
{
	return ostatni_wiezien;
}

public PobierProwadzacego()
{
	return prowadzacy;
}

public PobierzDni()
{
	return jail_day%7;
}

public UstawMikrofon(bool:wartosc, bool:info)
{
	if(ostatni_wiezien || dane_dnia[1])
		return;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawMikrofon pre");
#endif
	mode_gracza[MIKRO] = wartosc;
	
	if(info)
		ColorChat(0, TEAM_COLOR, "^x04[PrisonBreak] ^x01Status mikro dla wiezniow: ^x03%s!", mode_gracza[MIKRO]? "wlaczone": "wylaczone");
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawMikrofon post");
#endif
}

public UstawWalke(bool:wartosc, bool:modele, bool:info)
{
	if(ostatni_wiezien || (dane_dnia[1] && modele))
		return;
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawWalke pre");
#endif
	mode_gracza[WALKA] = modele;
	mode_gracza[FF_TT] = wartosc;
	
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 1 || get_user_weapon(i) != CSW_KNIFE || free_day[i] || user_duszek[i])
			continue;
	
		set_user_health(i, 100);
		set_pev(i, pev_viewmodel2, modele? SzModels[V_REKAWICE]: SzModels[V_PIESCI]);
		set_pev(i, pev_weaponmodel2, modele? SzModels[P_REKAWICE]: SzModels[P_PIESCI]);
	}
	if(info)
		ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x01Walka %s!", mode_gracza[WALKA]? "wlaczona": "wylaczona");

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawWalke post");
#endif
}

public UstawFreeday(id, bool:wartosc, bool:nextround)
{
	if(!id || (dane_dnia[1] && !nextround))
		return 0;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawFreeday pre");
#endif
	if(!nextround && wartosc)
	{
		new podlicz = 0;
		for(new i=1; i<=MAX; i++)
		{
			if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
				podlicz++;
		}
		if(podlicz == 1)
			return 0;
	}
	
	if(wartosc)
	{
		DelArray(id, WSZYSCY);
		DelArray(id, ZYWI);
	}
	
	free_day[id] = wartosc;
	ustaw_freeday[id] = nextround;
	
	if(!wartosc)
	{
		AddArray(id, WSZYSCY);
		AddArray(id, ZYWI);
	}
	
	set_pev(id, pev_body, wartosc? 3: random(3));
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawFreeday post");
#endif
	return 1;
}

public UstawDuszka(id, bool:wartosc, bool:nextround)
{
	if(!id || (dane_dnia[1] && !nextround))
		return 0;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawDuszka pre");
#endif
	if(!nextround && wartosc)
	{
		new podlicz = 0;
		for(new i=1; i<=MAX; i++)
		{
			if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
				podlicz++;
		}
		if(podlicz == 1)
			return 0;
	}
	
	if(wartosc)
	{
		DelArray(id, WSZYSCY);
		DelArray(id, ZYWI);
	}
	
	user_duszek[id] = wartosc;
	ustaw_duszka[id] = nextround;
	
	if(!wartosc)
	{
		AddArray(id, WSZYSCY);
		AddArray(id, ZYWI);
	}
	set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, wartosc? 0: 255);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawDuszka post");
#endif
	return 1;
}

public UstawTTGod(bool:wartosc)
{
	mode_gracza[TT_GOD] = wartosc;
}

public UstawCTGod(bool:wartosc)
{
	mode_gracza[CT_GOD] = wartosc;
}

public UstawCTHitTT(bool:wartosc)
{
	mode_gracza[CT_NIE_MOZE_TT] = wartosc;
}

public UstawTTHitCT(bool:wartosc)
{
	mode_gracza[TT_NIE_MOZE_CT] = wartosc;
}

public UstawBlokade(id, bool:wartosc)
{
	pojedynek[id] = wartosc;
}

public UstawProwadzacego(id)
{
	if(!dane_dnia[1])
	{
		if(prowadzacy != id && prowadzacy)
			set_pev(prowadzacy, pev_body, 0);
			
		prowadzacy = id;
		if(id)
		{
			if(task_exists(ID_LOS_PROWADZACY))
				remove_task(ID_LOS_PROWADZACY);
				
			set_pev(id, pev_body, 1);
		}
	}
}

public UstawZabawe(zabawa, bool:fast)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawZabawe pre");
#endif	
	if(!fast)
	{
		if(czas_bronie || ilosc_graczy[WSZYSCY] != ilosc_graczy[ZYWI])
			return 0;
		
		if(mode_gracza[WALKA] || mode_gracza[FF_TT])
			UstawWalke(false, false, false);
	}
	ForwardDayStartPre(zabawa);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawZabawe post");
#endif	
	return 1;
}

public MenuBroni(id)
{
	if(!is_user_alive(id) || gTeam[id] != 2 || czas_bronie)
		return PLUGIN_HANDLED;
		
	UstawMenuWeapon(id, true, true, 0, 0);
	return PLUGIN_HANDLED;
}

new bool:bronie_menu[MAX+1][2];
new bronie_bitsum[MAX+1][2];
new bronie_gracza[MAX+1][2];
public UstawMenuWeapon(id, bool:bronie, bool:pistolety, bitsum_bronie, bitsum_pistolety)
{
	if(!bronie && !pistolety)
		return;
	
	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<<CSW_M4A1)))
		menu_additem(menu, "M4A1", "22");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AK47)))
		menu_additem(menu, "AK47", "28");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AWP)))
		menu_additem(menu, "AWP", "18");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SCOUT)))
		menu_additem(menu, "Scout", "3");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AUG)))
		menu_additem(menu, "AUG", "8");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SG550)))
		menu_additem(menu, "Krieg 550", "13");
	if(!(bronie_bitsum[id][0] & (1<<CSW_M249)))
		menu_additem(menu, "M249", "20");
	if(!(bronie_bitsum[id][0] & (1<<CSW_MP5NAVY)))
		menu_additem(menu, "MP5", "19");
	if(!(bronie_bitsum[id][0] & (1<<CSW_UMP45)))
		menu_additem(menu, "UMP45", "12");
	if(!(bronie_bitsum[id][0] & (1<<CSW_FAMAS)))
		menu_additem(menu, "Famas", "15");
	if(!(bronie_bitsum[id][0] & (1<<CSW_GALIL)))
		menu_additem(menu, "Galil", "14");
	if(!(bronie_bitsum[id][0] & (1<<CSW_M3)))
		menu_additem(menu, "M3", "21");
	if(!(bronie_bitsum[id][0] & (1<<CSW_XM1014)))
		menu_additem(menu, "XM1014", "5");
	if(!(bronie_bitsum[id][0] & (1<<CSW_MAC10)))
		menu_additem(menu, "Mac10", "7");
	if(!(bronie_bitsum[id][0] & (1<<CSW_TMP)))
		menu_additem(menu, "TMP", "23");
	if(!(bronie_bitsum[id][0] & (1<<CSW_P90)))
		menu_additem(menu, "P90", "30");
	if(!(bronie_bitsum[id][0] & (1<<CSW_G3SG1)))
		menu_additem(menu, "G3SG1 (autokampa)", "24");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SG552)))
		menu_additem(menu, "Krieg 552 (autokampa)", "27");
		
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuBronie post");
#endif
}

public Handel_Bronie(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][0])
		return;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Bronie pre");
#endif

	new weaponname[24], data[3], weapon, callback;
	menu_item_getinfo(menu, item, weapon, data, 2, _, _, callback);
	
	if((callback = Jaki_Pistolet(id)) > 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<<CSW_USP)))
		menu_additem(menu, "USP",	"16");
	if(!(bronie_bitsum[id][1] & (1<<CSW_GLOCK18)))
		menu_additem(menu, "Glock", 	"17");
	if(!(bronie_bitsum[id][1] & (1<<CSW_DEAGLE)))
		menu_additem(menu, "Deagle", 	"26");
	if(!(bronie_bitsum[id][1] & (1<<CSW_P228)))
		menu_additem(menu, "P228",	"1");
	if(!(bronie_bitsum[id][1] & (1<<CSW_FIVESEVEN)))
		menu_additem(menu, "FiveSeven", "11");
	if(!(bronie_bitsum[id][1] & (1<<CSW_ELITE)))
		menu_additem(menu, "Dual", 	"10");
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuPistolety post");
#endif	
}

public Handel_Pistolety(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][1])
		return;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Pistolety pre");
#endif

	new weaponname[24], data[3], weapon, callback;
	menu_item_getinfo(menu, item, weapon, data, 2, _, _, 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][1] = weapon;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Pistolety post");
#endif
}

/********** - Koniec Native - ************/

public ButtonTraceAttack(ent, id, Float:damage, Float:direction[3], tracehandle, damagebits)
{
	if(pev_valid(ent) && prowadzacy == id)
	{
		ExecuteHam(Ham_Use, ent, id, 0, 2, 1.0);
		set_pev(ent, pev_frame, 0.0);
	}
	return HAM_IGNORED;
}

public TakeDamage(id, ent, attacker, Float:damage, damagebits)
	return vAttackDamagePlayer(id, attacker, damage, damagebits, true);

public TraceAttack(id, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
	return vAttackDamagePlayer(id, attacker);

vAttackDamagePlayer(id, attacker, Float:damage=0.0, damagebits=0, bool:dmg=false)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
	
	if(gTeam[id] == 1 && mode_gracza[TT_GOD])
		return HAM_SUPERCEDE;
	
	if(gTeam[id] == 2 && mode_gracza[CT_GOD])
		return HAM_SUPERCEDE;
	
	if(is_user_connected(attacker))
	{
		if(gTeam[id] == 1 && gTeam[attacker] == 1 && !mode_gracza[FF_TT])
			return HAM_SUPERCEDE;
		
		if(gTeam[id] == 2 && gTeam[attacker] == 2)
			return HAM_SUPERCEDE;
			
		if(gTeam[id] == 1 && gTeam[attacker] == 2 && mode_gracza[CT_NIE_MOZE_TT])
			return HAM_SUPERCEDE;
	
		if(gTeam[id] == 2 && gTeam[attacker] == 1 && mode_gracza[TT_NIE_MOZE_CT])
			return HAM_SUPERCEDE;
		
		if(free_day[attacker] || gTeam[attacker] == 1 && free_day[id])
			return HAM_SUPERCEDE;
			
		if(user_duszek[id] && gTeam[attacker] == 1)
			return HAM_SUPERCEDE;

		if(user_duszek[attacker] && gTeam[id] == 2)
		{
#if defined DEBUG
			log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer pre");
#endif	
			user_duszek[attacker] = false;
			set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
			
			AddArray(attacker, WSZYSCY);
			AddArray(attacker, ZYWI);
#if defined DEBUG
			log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer post");
#endif	
			return HAM_IGNORED;
		}

		if(dmg)
		{
			if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
				SetHamParamFloat(4, damage*0.4);
		}
	}
	return HAM_IGNORED;
}

public Odrodzenie(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Odrodzenie pre");
#endif	
	set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0);
	strip_user_weapons2(id);
	
	switch(cs_get_user_team(id))
	{
		case CS_TEAM_T:
		{
			gTeam[id] = 1;
			
			cs_set_player_model(id, "wiezien_cypis");
			set_pev(id, pev_body, random(3));
			
			AddArray(id, WSZYSCY);
			AddArray(id, ZYWI);
		}
		case CS_TEAM_CT:
		{
			gTeam[id] = 2;
			
			cs_set_player_model(id, "klawisz_cypis");
				
			if(dane_dnia[4] < 2)
			{
				if(bronie_gracza[id][0] && bronie_gracza[id][1])
				{
					for(new i=0; i<2; i++)
					{
						new weaponname[24];
						get_weaponname(bronie_gracza[id][i], weaponname, 23);
						give_item(id, weaponname);
						cs_set_user_bpammo(id, bronie_gracza[id][i], maxAmmo[bronie_gracza[id][i]]);
					}
				}
				else if(!czas_bronie) {
					UstawMenuWeapon(id, true, true, 0, 0);
				}
			}
		}
	}
	give_item(id, "weapon_knife");
	
	if(free_day[id])
		set_pev(id, pev_body, 3);
	
	if(user_duszek[id])
		set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Odrodzenie post");
#endif	
}

public OddajProwadzenie(id)
{
	if(prowadzacy != id)
		return PLUGIN_HANDLED;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "OddajProwadzenie pre");
#endif
	new menu = menu_create("Oddaj Prowadzenie:", "Handel_Oddaj");
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 2 || prowadzacy == i)
			continue;
		new num[3];
		num_to_str(i, num, 2);
		menu_additem(menu, nazwa_gracza[i], num);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "OddajProwadzenie post");
#endif
	return PLUGIN_HANDLED;
}

public Handel_Oddaj(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || prowadzacy != id)
		return;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Oddaj pre");
#endif
	new data[3], acces, callback;
	menu_item_getinfo(menu, item, acces, data, 2, _, _, callback);
	prowadzacy = str_to_num(data);
	ColorChat(0, GREEN, "[PrisonBreak]^x01 Zmienil sie Prowadzacy!");
	
	set_pev(id, pev_body, 0);
	set_pev(prowadzacy, pev_body, 1);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Oddaj post");
#endif
}

public WeaponKnife(ent)
{
	new id = get_pdata_cbase(ent, 41, 4);
	
	if(!is_user_alive(id))
		return;

	
	if(gTeam[id] == 1 && !mode_gracza[WALKA])
	{
		set_pev(id, pev_viewmodel2, SzModels[V_PIESCI]);
		set_pev(id, pev_weaponmodel2, SzModels[P_PIESCI]);
	}
	else if(gTeam[id] == 1 && mode_gracza[WALKA])
	{
		set_pev(id, pev_viewmodel2, SzModels[V_REKAWICE]);
		set_pev(id, pev_weaponmodel2, SzModels[P_REKAWICE]);
	}
	else if(gTeam[id] == 2)
	{
		set_pev(id, pev_viewmodel2, SzModels[V_PALKA]);
		set_pev(id, pev_weaponmodel2, SzModels[P_PALKA]);
	}
}

public EmitSound(id, channel, sample[])
{	
	if(!is_user_alive(id) || !is_user_connected(id)) 
		return FMRES_IGNORED;

	if(equal(sample, "weapons/knife_", 14))
	{
		switch(sample[17])
		{
			case ('b'): emit_sound(id, CHAN_WEAPON, "weapons/prawy_przycisk.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
			case ('w'): emit_sound(id, CHAN_WEAPON, "weapons/uderzenie_mur.wav", 1.0, ATTN_NORM, 0, PITCH_LOW);
			case ('s'): emit_sound(id, CHAN_WEAPON, "weapons/machanie.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
			case ('1'): emit_sound(id, CHAN_WEAPON, "weapons/hit1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
			case ('2'): emit_sound(id, CHAN_WEAPON, "weapons/hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
		}
		return FMRES_SUPERCEDE;
	}
	if(equal(sample, "common/wpn_denyselect.wav"))
		return FMRES_SUPERCEDE;
	return FMRES_IGNORED;
}

public AdminVoiceOn(id)
{
	if(!(get_user_flags(id) & ADMIN_BAN))
		return PLUGIN_HANDLED;

	if(AdminVoice)
		return PLUGIN_HANDLED;

	AdminVoice = id;

	ColorChat(0,GREEN,"[PrisonBreak]^x01 Cisza! ^x03%s ^x01przemawia.", nazwa_gracza[id]);
	client_cmd(id, "+voicerecord");
	return PLUGIN_HANDLED;
}

public AdminVoiceOff(id)
{
	if(!(get_user_flags(id) & ADMIN_BAN))
		return PLUGIN_HANDLED;

	if(AdminVoice != id)
	{
		client_cmd(id, "-voicerecord");
		return PLUGIN_HANDLED;
	}
	client_cmd(id, "-voicerecord");
	AdminVoice = 0;
	return PLUGIN_HANDLED;
}

new bool:g_Muted[MAX+1][MAX+1];
public MenuMutowania(id)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuMutowania pre");
#endif
	new menu = menu_create("Menu mutowania:", "Handel_Mute");
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_connected(i) || is_user_hltv(i))
			continue;
		new num[3], szName[64];
		num_to_str(i, num, 2);
		szName = nazwa_gracza[i];
		if(g_Muted[id][i])
			add(szName, 63, " \r[MUTE]");
			
		menu_additem(menu, szName, num);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuMutowania post");
#endif
}

public Handel_Mute(id, menu, item)
{
	if(item == MENU_EXIT )
		return;

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Mute pre");
#endif
	new data[3], acces, id2;
	menu_item_getinfo(menu, item, acces, data, 2, _, _, id2);
	id2 = str_to_num(data);

	g_Muted[id][id2] = !g_Muted[id][id2];
	ColorChat(id, GREEN,"[PrisonBreak] ^x01%s gracza ^x03%s", g_Muted[id][id2]? "Zmutowales": "Odmutowales", nazwa_gracza[id2]);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Mute post");
#endif
}

public Voice_SetClientListening(odbiorca, nadawca, listen) 
{
	if(odbiorca == nadawca)
		return FMRES_IGNORED;
	
	if(g_Muted[odbiorca][nadawca])
	{
		engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
		return FMRES_SUPERCEDE;
	}
	if(AdminVoice)
	{
		if(AdminVoice == nadawca)
		{
			engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
			return FMRES_SUPERCEDE;
		}
		else if(gTeam[nadawca] == 1)
		{
			engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
			return FMRES_SUPERCEDE;
		}
	}
	
	if(gTeam[nadawca] == 1 && !mode_gracza[MIKRO])
	{
		engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
		return FMRES_SUPERCEDE;
	}
	
	if(is_user_alive(odbiorca))
	{
		if(is_user_alive(nadawca))
		{
			engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
			return FMRES_SUPERCEDE;
		}
		engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public BlokowanieUse(ent, id, activator, iType, Float:fValue)
{
	if(!is_user_connected(id) || id == activator)
		return HAM_IGNORED;

	if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id] || free_day[id])
		return HAM_SUPERCEDE;
		
	return HAM_IGNORED;
}

public BlokowanieLeczenie(ent, id, activator, iType, Float:fValue)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
		
	if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
		return HAM_SUPERCEDE;
		
	return HAM_IGNORED;
}

public DotykBroni(weapon, id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
		
	if(free_day[id] || dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
		return HAM_SUPERCEDE;

	return HAM_IGNORED;
}

public BlockDrop(id)
{
	if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
		return PLUGIN_HANDLED;
	return PLUGIN_CONTINUE;
}

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(id))
		return HAM_IGNORED;
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost pre");
#endif
	if(gTeam[id] == 1)
	{
		if(is_user_connected(attacker) && gTeam[attacker] == 1)
			set_user_frags(attacker, get_user_frags(attacker)+2);

		if(ostatni_wiezien == id)
		{
			for(new i=1; i<=MAX; i++)
			{
				if(is_user_alive(i) && is_user_connected(i) && (free_day[i] || user_duszek[i]))
				{	
					user_kill(i);
					free_day[i] = false;
					user_duszek[i] = false;
				}
			}
		}
		DelPoszukiwany(id);
		DelArray(id, ZYWI);
	}
	else if(gTeam[id] == 2)
	{	
		if(is_user_connected(attacker) && gTeam[attacker] == 1 && !obsluga_dala && !dane_dnia[2])
		{
			AddPoszukiwany(attacker);
		}
		if(prowadzacy == id)
		{
			prowadzacy = 0;
			if(!obsluga_dala && !dane_dnia[2])
				set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
		}
	}
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost post");
#endif
	return HAM_IGNORED;
}

public StatusShow(id)
{
	new pid = read_data(2), team = gTeam[pid]; 
	set_hudmessage(team == 1? 255: 0, 50, team == 1? 0: 255, -1.0, 0.9, 0, 0.01, 6.0);
	ShowSyncHudMsg(id, SyncHudObj1, "%s: %s [%i]", team == 1? "Wiezien": "Straznik", nazwa_gracza[pid], get_user_health(pid));
}

public StatusHide(id)
	ClearSyncHud(id, SyncHudObj1);
	
public msg_FlashLight(id)
{
	if(gTeam[id] == 1)
		return PLUGIN_HANDLED;	
	return PLUGIN_CONTINUE;
}

public msg_TextMsg()
{	
	new message[32];
	get_msg_arg_string(2, message, 31);
	
	if(equal(message, "#Game_teammate_attack") || equal(message, "#Killed_Teammate"))
		return PLUGIN_HANDLED;

	if(equal(message, "#Terrorists_Win"))
	{
		set_msg_arg_string(2, "Wiezniowie wygrali!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#CTs_Win"))
	{
		set_msg_arg_string(2, "Klawisze wygrali!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Round_Draw"))
	{
		set_msg_arg_string(2, "Runda remisowa!")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Only_1_Team_Change"))
	{
		set_msg_arg_string(2, "Dozwolona tylko 1 zmiana druzyny!")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_SemiAuto"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb pol-automatyczny")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_BurstFire"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb serii")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_FullAuto"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb automatyczny")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Game_Commencing"))
	{
		set_msg_arg_string(2, "Rozpoczecie Gry!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Cannot_Be_Spectator"))
	{
		set_msg_arg_string(2, "Nie mozesz byc obserwatorem");
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_HANDLED;
}	

public msg_StatusIcon(msgid, dest, id)
{
	new szIcon[8];
	get_msg_arg_string(2, szIcon, 7);
	 
	if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
	{
		set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public client_authorized(id)
{
	set_user_info(id, "_vgui_menus", "0");
	get_user_name(id, nazwa_gracza[id], 63);
}

public client_disconnect(id)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "client_disconnect pre");
#endif
	if(AdminVoice == id)
		AdminVoice = 0;
		
	if(prowadzacy == id)
	{
		prowadzacy = 0;
		set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
	}
	
	if(ostatni_wiezien == id)
		ostatni_wiezien = 0;
		
	user_speed[id] = 0.0;
	bronie_gracza[id][0] = 0;
	bronie_gracza[id][1] = 0;
	pojedynek[id] = false;
	free_day[id] = false;
	user_duszek[id] = false;
	ustaw_freeday[id] = false;
	ustaw_duszka[id] = false;
	
	for(new i=1; i<=MAX; i++)
		g_Muted[i][id] = false;
	
	DelPoszukiwany(id);
	if(gTeam[id] == 1)
	{
		DelArray(id, WSZYSCY);
		DelArray(id, ZYWI);
	}
	gTeam[id] = 0;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "client_disconnect post");
#endif
}

public client_infochanged(id) 
{
	get_user_info(id, "name", nazwa_gracza[id], 63);
}

public RoundRestart()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "RoundRestart");
#endif
	usuwanie_ustawien = true;
}

public RoundEnd()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "RoundEnd");
#endif
	end_usun = true;
	czas_bronie = false;
}

public PreRoundStart()
{	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PreRoundStart pre");
#endif
	UsuwanieWydarzen();
	if(usuwanie_ustawien)
	{
		jail_day = 0;
		usuwanie_ustawien = false;
	}
	else
		jail_day++;

	
	if(jail_day)
	{
		gTimeStart = get_systime();
		ForwardDayStartPre(jail_day%7);
	}
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PreRoundStart post");
#endif
}

UsuwanieWydarzen()
{
	//end_usun = true;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen pre");
#endif
	szInfo = "";
	szInfoPosz = "";
	szPoszukiwani = "";
	ostatni_wiezien = 0;
	prowadzacy = 0;
	
	obsluga_dala = false;
	pokaz_raz = false;
	czas_bronie = false;
	zabawa_wybrana = false;
	zyczenie_wybrane = false
		
	mode_gracza[WALKA] = false;

	mode_gracza[MIKRO] = (get_pcvar_num(pCvarMikro) == 1? true: false);
	
	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
	
	if(task_exists(ID_DZWIEK_POSZ))
		remove_task(ID_DZWIEK_POSZ);
	
	if(task_exists(ID_LOS_PROWADZACY))
		remove_task(ID_LOS_PROWADZACY);
		
	if(task_exists(ID_CZAS))
		remove_task(ID_CZAS);
	
	if(task_exists(ID_FREZZ))
		remove_task(ID_FREZZ);
	
	if(task_exists(ID_SPEED_FZ))
		remove_task(ID_SPEED_FZ);
	
	for(new i=0; i<sizeof dane_dnia; i++)
		dane_dnia[i] = 0;
	
	for(new i=1; i<=MAX; i++)
	{
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 0;
		
		user_speed[i] = 0.0;
		pojedynek[i] = false;
		
		bronie_menu[i][0] = false;
		bronie_menu[i][1] = false;
		
		if(ustaw_freeday[i])
		{
			ustaw_freeday[i] = false;
			free_day[i] = true;
		}
		else
			free_day[i] = false;
			
		if(ustaw_duszka[i])
		{
			ustaw_duszka[i] = false;
			user_duszek[i] = true;
		}
		else
			user_duszek[i] = false;
	}
	
	ilosc_graczy[WSZYSCY] = 0;
	ilosc_graczy[ZYWI] = 0;
	
	new iRet;
	ExecuteForward(fRemoveData, iRet, id_zabawa);
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen post");
#endif
}

public PostRoundStart()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PostRoundStart pre");
#endif
	end_usun = false;
	set_task(60.0, "koniec_czasu", ID_CZAS);
	
	if(!jail_day)
	{
		gTimeStart = get_systime()-g_FreezeTime;
		ForwardDayStartPre(jail_day%7);
	}
	if(!prowadzacy && !dane_dnia[1])
		set_task(15.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PostRoundStart post");
#endif
}

ForwardDayStartPre(zabawa)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre pre");
#endif
	new iRet, is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
	ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), g_RoundTime+min(is_frezz, 0));
	id_zabawa = zabawa;
	
	new dane[1]
	dane[0] = zabawa;
	if(is_frezz)
		set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
	else
		ForwardDayStartPost(dane);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre post");
#endif		
}

public ForwardDayStartPost(zabawa[1])
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost pre");
#endif
	new iRet;
	ExecuteForward(fDayStartPost, iRet, zabawa[0]);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost post");
#endif
}

public koniec_czasu()
{
	czas_bronie = true;
}

public LosujProwadzacego()
{
	if(!prowadzacy)
	{
		if(((prowadzacy = RandomCT()) > 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, "^n\r0. \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 -1: 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<file_size(szFile, 1); i++)
		{
			if(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, "Jail");
}

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<sizeof(g_Buttons); i++)
	{
		if(!pev_valid(g_Buttons[i]) || !g_Buttons[i])
			continue;
		ExecuteHam(Ham_Use, g_Buttons[i], 0, 0, 2, 1.0);
	}
}	

AddArray(id, ktore)
{
	if(free_day[id] || user_duszek[id])
		return;
	
	if(array_graczy[ktore][id])
		return;
		
	ostatni_wiezien = (ilosc_graczy[ktore]? 0: id);
	
	array_graczy[ktore][id] = id;
	ilosc_graczy[ktore]++;
}

DelArray(id, ktore)
{
	if(free_day[id] || user_duszek[id])
		return;
	
	if(!array_graczy[ktore][id])
		return;
		
	array_graczy[ktore][id] = 0;
	ilosc_graczy[ktore]--;
	
	if(jail_day%7 && ktore == ZYWI)
	{
		switch(ilosc_graczy[ktore])
		{
			case 1:{ 
				for(new i=1; i<=MAX; i++)
				{
					if(array_graczy[ktore][i])
					{
						ostatni_wiezien = array_graczy[ktore][i];
						break;
					}
				}
			}
			default: ostatni_wiezien = 0;
		}
	}
}

AddPoszukiwany(attacker)
{
	if(contain(szPoszukiwani, nazwa_gracza[attacker]) == -1)
	{
		new szTemp[512];
		formatex(szTemp, charsmax(szTemp), "^n  %s%s", nazwa_gracza[attacker], szPoszukiwani);
		copy(szPoszukiwani, charsmax(szPoszukiwani), szTemp);
		
		set_pev(attacker, pev_body, 4);
	}
	if(task_exists(ID_DZWIEK_POSZ))
		remove_task(ID_DZWIEK_POSZ);

	dzwiek_poszukiwany();
	set_task(1.0, "dzwiek_poszukiwany", ID_DZWIEK_POSZ, .flags="a", .repeat=9);	
}

public dzwiek_poszukiwany()
	client_cmd(0, "spk jb_cypis/uciekinier.wav");

DelPoszukiwany(id)
{
	if(contain(szPoszukiwani, nazwa_gracza[id]) != -1)
	{
		new szTemp[512];
		formatex(szTemp, charsmax(szTemp), "^n  %s", nazwa_gracza[id]);
		replace_all(szPoszukiwani, charsmax(szPoszukiwani), szTemp, "");
	}
}

stock ham_strip_weapon(id, wid)
{
	if(!wid) 
		return 0;
		
	new szName[24];
	get_weaponname(wid, szName, 23);
	
	new ent;
	while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", szName)) && pev(ent, pev_owner) != id) {}
	if(!ent)
		return 0;
	
	if(get_user_weapon(id) == wid) 
		ExecuteHam(Ham_Weapon_RetireWeapon, ent);
	
	if(ExecuteHam(Ham_RemovePlayerItem, id, ent)) 
	{
		ExecuteHam(Ham_Item_Kill, ent);
		set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wid));
	}
	return 1;
}

stock Jaki_Pistolet(id)
{
	if(!is_user_alive(id))
		return 0;
	
	new weapons[32], numweapons;
	get_user_weapons(id, weapons, numweapons);
	
	for(new i=0; i<numweapons; i++)
		if((1<<weapons[i]) & 0x50FCF1A8)
			return weapons[i];
	
	return 0;
}

  • +
  • -
  • 0

#3 DMNINI

    Życzliwy

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:27
Offline

Napisano 03.07.2015 13:40

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <colorchat>

#include <engine> //tylko uzyte do zablokowania latarki

#define PLUGIN "Jail Mod"
#define VERSION "1.0.6a"
#define AUTHOR "Cypis"

//#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 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, "weaponbox", "DotykBroni");
	RegisterHam(Ham_Use, "game_player_equip", "BlokowanieUse");
	RegisterHam(Ham_Use, "player_weaponstrip", "BlokowanieUse");
	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(106, BLOCK_SET); //block info player
	set_msg_block(145, BLOCK_SET); //block dhud
	set_msg_block(122, 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("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 /mute", "MenuMutowania");
	
	register_message(77 ,"msg_TextMsg");
	register_message(96, "msg_show_menu");
	register_impulse(100, "msg_FlashLight");
	register_message(107, "msg_StatusIcon");
	register_message(114, "msg_vgui_menu");
	
	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();
	//SyncHudObj2 = 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_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<ArraySize(gZyczeniaName); i++)
	{
		ArrayGetString(gZyczeniaName, i, szZyczenia, 31);
		num_to_str(i+1, szID, 31);
		menu_additem(menu, szZyczenia, szID);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZyczen post");
#endif
	return PLUGIN_HANDLED;
}

public Handel_Zyczenie(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || ostatni_wiezien != id)
		return;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie pre");
#endif
	new acces, szZyczenie[32], szID[32];
	menu_item_getinfo(menu, item, acces, szID, 31, szZyczenie, 31, acces);
	
	new iRet;
	ExecuteForward(fLastPrisonerTakeWish, iRet, id, str_to_num(szID))
	if(iRet == -1)
	{
		menu_display(id, menu);
		ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Nie mozesz wybrac tego zyczenia!");
		return;
	}
	
	ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x03%s ^x01wybral^x03 %s", nazwa_gracza[id], szZyczenie);
	zyczenie_wybrane = true;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie post");
#endif
}
////////////////////

public ZarejstrujZabawe(nazwa_zabawy[])
{
	param_convert(1);
	ArrayPushString(gZabawyName, nazwa_zabawy);
	
	static ilosc = 8; ilosc++;
	return ilosc;
}

new bool:zabawa_wybrana;
public MenuZabaw(id)
{
	if(gTeam[id] != 2 || prowadzacy != id)
		return PLUGIN_CONTINUE;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZabaw pre");
#endif
	if(!ArraySize(gZabawyName))
	{
		ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Nie ma zadnych zabaw na serwerze!");
		return PLUGIN_CONTINUE;
	}
	
	if(zabawa_wybrana)
	{
		ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01Juz wybrales dzisiaj zabawe");
		return PLUGIN_CONTINUE;
	}
	
	new szZabawa[32], szID[32], menu = menu_create("Menu Zabaw:", "Handel_Menu_Zabaw");
	for(new i=0; i<ArraySize(gZabawyName); i++)
	{
		ArrayGetString(gZabawyName, i, szZabawa, 31);
		num_to_str(i+9, szID, 31);
		menu_additem(menu, szZabawa, szID);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZabaw post");
#endif
	return PLUGIN_HANDLED;
}

public Handel_Menu_Zabaw(id, menu, item)
{
	if(item == MENU_EXIT || zabawa_wybrana || prowadzacy != id)
		return;

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw pre");
#endif
	new acces, szZabawa[32], szID[32];
	menu_item_getinfo(menu, item, acces, szID, 31, szZabawa, 31, acces);
	ColorChat(id, TEAM_COLOR,"^x04[PrisonBreak] ^x01%s%s", UstawZabawe(str_to_num(szID), false)? "wlaczyles ": "juz jest za pozno, aby wlaczyc ", szZabawa);
	
	zabawa_wybrana = true;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw post");
#endif
}

public UstawPredkosc(id, Float:speed)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawPredkosc pre");
#endif
	user_speed[id] = speed;
	if(end_usun)
	{
		new data[1];
		data[0] = id;
		set_task(g_FreezeTime-(get_systime()-gTimeStart)+0.1, "taskUstawPredkosc", ID_SPEED_FZ, data, 1);
	}
	else
		set_user_maxspeed(id, speed);
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawPredkosc post");
#endif
}

public taskUstawPredkosc(data[1])
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc pre");
#endif
	set_user_maxspeed(data[0], user_speed[data[0]]);
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc post");
#endif
}

public PobierzIdZabawy()
{
	return id_zabawa;
}

public bool:PobierzPojedynek(id)
{
	return pojedynek[id];
}

public bool:PobierzPoszukiwany(id)
{
	return (contain(szPoszukiwani, nazwa_gracza[id]) != -1)? true: false;
}

public bool:PobierzMikrofon()
{
	return bool:mode_gracza[MIKRO];
}

public bool:PobierzWalke()
{
	return bool:mode_gracza[WALKA];
}

public bool:PobierzFreeday(id)
{
	return free_day[id];
}

public bool:PobierzDuszka(id)
{
	return user_duszek[id];
}

public PobierzOstatniego()
{
	return ostatni_wiezien;
}

public PobierProwadzacego()
{
	return prowadzacy;
}

public PobierzDni()
{
	return jail_day%7;
}

public UstawMikrofon(bool:wartosc, bool:info)
{
	if(ostatni_wiezien || dane_dnia[1])
		return;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawMikrofon pre");
#endif
	mode_gracza[MIKRO] = wartosc;
	
	if(info)
		ColorChat(0, TEAM_COLOR, "^x04[PrisonBreak] ^x01Status mikro dla wiezniow: ^x03%s!", mode_gracza[MIKRO]? "wlaczone": "wylaczone");
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawMikrofon post");
#endif
}

public UstawWalke(bool:wartosc, bool:modele, bool:info)
{
	if(ostatni_wiezien || (dane_dnia[1] && modele))
		return;
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawWalke pre");
#endif
	mode_gracza[WALKA] = modele;
	mode_gracza[FF_TT] = wartosc;
	
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 1 || get_user_weapon(i) != CSW_KNIFE || free_day[i] || user_duszek[i])
			continue;
	
		set_user_health(i, 100);
		set_pev(i, pev_viewmodel2, modele? SzModels[V_REKAWICE]: SzModels[V_PIESCI]);
		set_pev(i, pev_weaponmodel2, modele? SzModels[P_REKAWICE]: SzModels[P_PIESCI]);
	}
	if(info)
		ColorChat(0, TEAM_COLOR,"^x04[PrisonBreak] ^x01Walka %s!", mode_gracza[WALKA]? "wlaczona": "wylaczona");

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawWalke post");
#endif
}

public UstawFreeday(id, bool:wartosc, bool:nextround)
{
	if(!id || (dane_dnia[1] && !nextround))
		return 0;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawFreeday pre");
#endif
	if(!nextround && wartosc)
	{
		new podlicz = 0;
		for(new i=1; i<=MAX; i++)
		{
			if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
				podlicz++;
		}
		if(podlicz == 1)
			return 0;
	}
	
	if(wartosc)
	{
		DelArray(id, WSZYSCY);
		DelArray(id, ZYWI);
	}
	
	free_day[id] = wartosc;
	ustaw_freeday[id] = nextround;
	
	if(!wartosc)
	{
		AddArray(id, WSZYSCY);
		AddArray(id, ZYWI);
	}
	
	set_pev(id, pev_body, wartosc? 3: random(3));
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawFreeday post");
#endif
	return 1;
}

public UstawDuszka(id, bool:wartosc, bool:nextround)
{
	if(!id || (dane_dnia[1] && !nextround))
		return 0;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawDuszka pre");
#endif
	if(!nextround && wartosc)
	{
		new podlicz = 0;
		for(new i=1; i<=MAX; i++)
		{
			if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
				podlicz++;
		}
		if(podlicz == 1)
			return 0;
	}
	
	if(wartosc)
	{
		DelArray(id, WSZYSCY);
		DelArray(id, ZYWI);
	}
	
	user_duszek[id] = wartosc;
	ustaw_duszka[id] = nextround;
	
	if(!wartosc)
	{
		AddArray(id, WSZYSCY);
		AddArray(id, ZYWI);
	}
	set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, wartosc? 0: 255);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawDuszka post");
#endif
	return 1;
}

public UstawTTGod(bool:wartosc)
{
	mode_gracza[TT_GOD] = wartosc;
}

public UstawCTGod(bool:wartosc)
{
	mode_gracza[CT_GOD] = wartosc;
}

public UstawCTHitTT(bool:wartosc)
{
	mode_gracza[CT_NIE_MOZE_TT] = wartosc;
}

public UstawTTHitCT(bool:wartosc)
{
	mode_gracza[TT_NIE_MOZE_CT] = wartosc;
}

public UstawBlokade(id, bool:wartosc)
{
	pojedynek[id] = wartosc;
}

public UstawProwadzacego(id)
{
	if(!dane_dnia[1])
	{
		if(prowadzacy != id && prowadzacy)
			set_pev(prowadzacy, pev_body, 0);
			
		prowadzacy = id;
		if(id)
		{
			if(task_exists(ID_LOS_PROWADZACY))
				remove_task(ID_LOS_PROWADZACY);
				
			set_pev(id, pev_body, 1);
		}
	}
}

public UstawZabawe(zabawa, bool:fast)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawZabawe pre");
#endif	
	if(!fast)
	{
		if(czas_bronie || ilosc_graczy[WSZYSCY] != ilosc_graczy[ZYWI])
			return 0;
		
		if(mode_gracza[WALKA] || mode_gracza[FF_TT])
			UstawWalke(false, false, false);
	}
	ForwardDayStartPre(zabawa);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UstawZabawe post");
#endif	
	return 1;
}

public MenuBroni(id)
{
	if(!is_user_alive(id) || gTeam[id] != 2 || czas_bronie)
		return PLUGIN_HANDLED;
		
	UstawMenuWeapon(id, true, true, 0, 0);
	return PLUGIN_HANDLED;
}

new bool:bronie_menu[MAX+1][2];
new bronie_bitsum[MAX+1][2];
new bronie_gracza[MAX+1][2];
public UstawMenuWeapon(id, bool:bronie, bool:pistolety, bitsum_bronie, bitsum_pistolety)
{
	if(!bronie && !pistolety)
		return;
	
	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<<CSW_M4A1)))
		menu_additem(menu, "M4A1", "22");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AK47)))
		menu_additem(menu, "AK47", "28");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AWP)))
		menu_additem(menu, "AWP", "18");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SCOUT)))
		menu_additem(menu, "Scout", "3");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AUG)))
		menu_additem(menu, "AUG", "8");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SG550)))
		menu_additem(menu, "Krieg 550", "13");
	if(!(bronie_bitsum[id][0] & (1<<CSW_M249)))
		menu_additem(menu, "M249", "20");
	if(!(bronie_bitsum[id][0] & (1<<CSW_MP5NAVY)))
		menu_additem(menu, "MP5", "19");
	if(!(bronie_bitsum[id][0] & (1<<CSW_UMP45)))
		menu_additem(menu, "UMP45", "12");
	if(!(bronie_bitsum[id][0] & (1<<CSW_FAMAS)))
		menu_additem(menu, "Famas", "15");
	if(!(bronie_bitsum[id][0] & (1<<CSW_GALIL)))
		menu_additem(menu, "Galil", "14");
	if(!(bronie_bitsum[id][0] & (1<<CSW_M3)))
		menu_additem(menu, "M3", "21");
	if(!(bronie_bitsum[id][0] & (1<<CSW_XM1014)))
		menu_additem(menu, "XM1014", "5");
	if(!(bronie_bitsum[id][0] & (1<<CSW_MAC10)))
		menu_additem(menu, "Mac10", "7");
	if(!(bronie_bitsum[id][0] & (1<<CSW_TMP)))
		menu_additem(menu, "TMP", "23");
	if(!(bronie_bitsum[id][0] & (1<<CSW_P90)))
		menu_additem(menu, "P90", "30");
	if(!(bronie_bitsum[id][0] & (1<<CSW_G3SG1)))
		menu_additem(menu, "G3SG1 (autokampa)", "24");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SG552)))
		menu_additem(menu, "Krieg 552 (autokampa)", "27");
		
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuBronie post");
#endif
}

public Handel_Bronie(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][0])
		return;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Bronie pre");
#endif

	new weaponname[24], data[3], weapon, callback;
	menu_item_getinfo(menu, item, weapon, data, 2, _, _, callback);
	
	if((callback = Jaki_Pistolet(id)) > 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<<CSW_USP)))
		menu_additem(menu, "USP",	"16");
	if(!(bronie_bitsum[id][1] & (1<<CSW_GLOCK18)))
		menu_additem(menu, "Glock", 	"17");
	if(!(bronie_bitsum[id][1] & (1<<CSW_DEAGLE)))
		menu_additem(menu, "Deagle", 	"26");
	if(!(bronie_bitsum[id][1] & (1<<CSW_P228)))
		menu_additem(menu, "P228",	"1");
	if(!(bronie_bitsum[id][1] & (1<<CSW_FIVESEVEN)))
		menu_additem(menu, "FiveSeven", "11");
	if(!(bronie_bitsum[id][1] & (1<<CSW_ELITE)))
		menu_additem(menu, "Dual", 	"10");
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_display(id, menu);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuPistolety post");
#endif	
}

public Handel_Pistolety(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][1])
		return;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Pistolety pre");
#endif

	new weaponname[24], data[3], weapon, callback;
	menu_item_getinfo(menu, item, weapon, data, 2, _, _, 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][1] = weapon;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Pistolety post");
#endif
}

/********** - Koniec Native - ************/

public ButtonTraceAttack(ent, id, Float:damage, Float:direction[3], tracehandle, damagebits)
{
	if(pev_valid(ent) && prowadzacy == id)
	{
		ExecuteHam(Ham_Use, ent, id, 0, 2, 1.0);
		set_pev(ent, pev_frame, 0.0);
	}
	return HAM_IGNORED;
}

public TakeDamage(id, ent, attacker, Float:damage, damagebits)
	return vAttackDamagePlayer(id, attacker, damage, damagebits, true);

public TraceAttack(id, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
	return vAttackDamagePlayer(id, attacker);

vAttackDamagePlayer(id, attacker, Float:damage=0.0, damagebits=0, bool:dmg=false)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
	
	if(gTeam[id] == 1 && mode_gracza[TT_GOD])
		return HAM_SUPERCEDE;
	
	if(gTeam[id] == 2 && mode_gracza[CT_GOD])
		return HAM_SUPERCEDE;
	
	if(is_user_connected(attacker))
	{
		if(gTeam[id] == 1 && gTeam[attacker] == 1 && !mode_gracza[FF_TT])
			return HAM_SUPERCEDE;
		
		if(gTeam[id] == 2 && gTeam[attacker] == 2)
			return HAM_SUPERCEDE;
			
		if(gTeam[id] == 1 && gTeam[attacker] == 2 && mode_gracza[CT_NIE_MOZE_TT])
			return HAM_SUPERCEDE;
	
		if(gTeam[id] == 2 && gTeam[attacker] == 1 && mode_gracza[TT_NIE_MOZE_CT])
			return HAM_SUPERCEDE;
		
		if(free_day[attacker] || gTeam[attacker] == 1 && free_day[id])
			return HAM_SUPERCEDE;
			
		if(user_duszek[id] && gTeam[attacker] == 1)
			return HAM_SUPERCEDE;

		if(user_duszek[attacker] && gTeam[id] == 2)
		{
#if defined DEBUG
			log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer pre");
#endif	
			user_duszek[attacker] = false;
			set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
			
			AddArray(attacker, WSZYSCY);
			AddArray(attacker, ZYWI);
#if defined DEBUG
			log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer post");
#endif	
			return HAM_IGNORED;
		}

		if(dmg)
		{
			if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
				SetHamParamFloat(4, damage*0.4);
		}
	}
	return HAM_IGNORED;
}

public Odrodzenie(id)
{
	if(!is_user_alive(id) || !is_user_connected(id))
		return;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Odrodzenie pre");
#endif	
	set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0);
	strip_user_weapons2(id);
	
	switch(cs_get_user_team(id))
	{
		case CS_TEAM_T:
		{
			gTeam[id] = 1;
			
			cs_set_player_model(id, "wiezien_cypis");
			set_pev(id, pev_body, random(3));
			
			AddArray(id, WSZYSCY);
			AddArray(id, ZYWI);
		}
		case CS_TEAM_CT:
		{
			gTeam[id] = 2;
			
			cs_set_player_model(id, "klawisz_cypis");
				
			if(dane_dnia[4] < 2)
			{
				if(bronie_gracza[id][0] && bronie_gracza[id][1])
				{
					for(new i=0; i<2; i++)
					{
						new weaponname[24];
						get_weaponname(bronie_gracza[id][i], weaponname, 23);
						give_item(id, weaponname);
						cs_set_user_bpammo(id, bronie_gracza[id][i], maxAmmo[bronie_gracza[id][i]]);
					}
				}
				else if(!czas_bronie) {
					UstawMenuWeapon(id, true, true, 0, 0);
				}
			}
		}
	}
	give_item(id, "weapon_knife");
	
	if(free_day[id])
		set_pev(id, pev_body, 3);
	
	if(user_duszek[id])
		set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Odrodzenie post");
#endif	
}

public OddajProwadzenie(id)
{
	if(prowadzacy != id)
		return PLUGIN_HANDLED;
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "OddajProwadzenie pre");
#endif
	new menu = menu_create("Oddaj Prowadzenie:", "Handel_Oddaj");
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 2 || prowadzacy == i)
			continue;
		new num[3];
		num_to_str(i, num, 2);
		menu_additem(menu, nazwa_gracza[i], num);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "OddajProwadzenie post");
#endif
	return PLUGIN_HANDLED;
}

public Handel_Oddaj(id, menu, item)
{
	if(item == MENU_EXIT || !is_user_alive(id) || prowadzacy != id)
		return;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Oddaj pre");
#endif
	new data[3], acces, callback;
	menu_item_getinfo(menu, item, acces, data, 2, _, _, callback);
	prowadzacy = str_to_num(data);
	ColorChat(0, GREEN, "[PrisonBreak]^x01 Zmienil sie Prowadzacy!");
	
	set_pev(id, pev_body, 0);
	set_pev(prowadzacy, pev_body, 1);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Oddaj post");
#endif
}

public WeaponKnife(ent)
{
	new id = get_pdata_cbase(ent, 41, 4);
	
	if(!is_user_alive(id))
		return;

	
	if(gTeam[id] == 1 && !mode_gracza[WALKA])
	{
		set_pev(id, pev_viewmodel2, SzModels[V_PIESCI]);
		set_pev(id, pev_weaponmodel2, SzModels[P_PIESCI]);
	}
	else if(gTeam[id] == 1 && mode_gracza[WALKA])
	{
		set_pev(id, pev_viewmodel2, SzModels[V_REKAWICE]);
		set_pev(id, pev_weaponmodel2, SzModels[P_REKAWICE]);
	}
	else if(gTeam[id] == 2)
	{
		set_pev(id, pev_viewmodel2, SzModels[V_PALKA]);
		set_pev(id, pev_weaponmodel2, SzModels[P_PALKA]);
	}
}

public EmitSound(id, channel, sample[])
{	
	if(!is_user_alive(id) || !is_user_connected(id)) 
		return FMRES_IGNORED;

	if(equal(sample, "weapons/knife_", 14))
	{
		switch(sample[17])
		{
			case ('b'): emit_sound(id, CHAN_WEAPON, "weapons/prawy_przycisk.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
			case ('w'): emit_sound(id, CHAN_WEAPON, "weapons/uderzenie_mur.wav", 1.0, ATTN_NORM, 0, PITCH_LOW);
			case ('s'): emit_sound(id, CHAN_WEAPON, "weapons/machanie.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
			case ('1'): emit_sound(id, CHAN_WEAPON, "weapons/hit1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
			case ('2'): emit_sound(id, CHAN_WEAPON, "weapons/hit2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
		}
		return FMRES_SUPERCEDE;
	}
	if(equal(sample, "common/wpn_denyselect.wav"))
		return FMRES_SUPERCEDE;
	return FMRES_IGNORED;
}

public AdminVoiceOn(id)
{
	if(!(get_user_flags(id) & ADMIN_BAN))
		return PLUGIN_HANDLED;

	if(AdminVoice)
		return PLUGIN_HANDLED;

	AdminVoice = id;

	ColorChat(0,GREEN,"[PrisonBreak]^x01 Cisza! ^x03%s ^x01przemawia.", nazwa_gracza[id]);
	client_cmd(id, "+voicerecord");
	return PLUGIN_HANDLED;
}

public AdminVoiceOff(id)
{
	if(!(get_user_flags(id) & ADMIN_BAN))
		return PLUGIN_HANDLED;

	if(AdminVoice != id)
	{
		client_cmd(id, "-voicerecord");
		return PLUGIN_HANDLED;
	}
	client_cmd(id, "-voicerecord");
	AdminVoice = 0;
	return PLUGIN_HANDLED;
}

new bool:g_Muted[MAX+1][MAX+1];
public MenuMutowania(id)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuMutowania pre");
#endif
	new menu = menu_create("Menu mutowania:", "Handel_Mute");
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_connected(i) || is_user_hltv(i))
			continue;
		new num[3], szName[64];
		num_to_str(i, num, 2);
		szName = nazwa_gracza[i];
		if(g_Muted[id][i])
			add(szName, 63, " \r[MUTE]");
			
		menu_additem(menu, szName, num);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
	menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
	menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
	menu_display(id, menu);	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuMutowania post");
#endif
}

public Handel_Mute(id, menu, item)
{
	if(item == MENU_EXIT )
		return;

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Mute pre");
#endif
	new data[3], acces, id2;
	menu_item_getinfo(menu, item, acces, data, 2, _, _, id2);
	id2 = str_to_num(data);

	g_Muted[id][id2] = !g_Muted[id][id2];
	ColorChat(id, GREEN,"[PrisonBreak] ^x01%s gracza ^x03%s", g_Muted[id][id2]? "Zmutowales": "Odmutowales", nazwa_gracza[id2]);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "Handel_Mute post");
#endif
}

public Voice_SetClientListening(odbiorca, nadawca, listen) 
{
	if(odbiorca == nadawca)
		return FMRES_IGNORED;
	
	if(g_Muted[odbiorca][nadawca])
	{
		engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
		return FMRES_SUPERCEDE;
	}
	if(AdminVoice)
	{
		if(AdminVoice == nadawca)
		{
			engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
			return FMRES_SUPERCEDE;
		}
		else if(gTeam[nadawca] == 1)
		{
			engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
			return FMRES_SUPERCEDE;
		}
	}
	
	if(gTeam[nadawca] == 1 && !mode_gracza[MIKRO])
	{
		engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
		return FMRES_SUPERCEDE;
	}
	
	if(is_user_alive(odbiorca))
	{
		if(is_user_alive(nadawca))
		{
			engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
			return FMRES_SUPERCEDE;
		}
		engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
		return FMRES_SUPERCEDE;
	}
	return FMRES_IGNORED;
}

public BlokowanieUse(ent, id, activator, iType, Float:fValue)
{
	if(!is_user_connected(id) || id == activator)
		return HAM_IGNORED;

	if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id] || free_day[id])
		return HAM_SUPERCEDE;
		
	return HAM_IGNORED;
}

public BlokowanieLeczenie(ent, id, activator, iType, Float:fValue)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
		
	if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
		return HAM_SUPERCEDE;
		
	return HAM_IGNORED;
}

public DotykBroni(weapon, id)
{
	if(!is_user_connected(id))
		return HAM_IGNORED;
		
	if(free_day[id] || dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
		return HAM_SUPERCEDE;

	return HAM_IGNORED;
}

public BlockDrop(id)
{
	if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
		return PLUGIN_HANDLED;
	return PLUGIN_CONTINUE;
}

public SmiercGraczaPost(id, attacker, shouldgib)
{	
	if(!is_user_connected(id))
		return HAM_IGNORED;
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost pre");
#endif
	if(gTeam[id] == 1)
	{
		if(is_user_connected(attacker) && gTeam[attacker] == 1)
			set_user_frags(attacker, get_user_frags(attacker)+2);

		if(ostatni_wiezien == id)
		{
			for(new i=1; i<=MAX; i++)
			{
				if(is_user_alive(i) && is_user_connected(i) && (free_day[i] || user_duszek[i]))
				{	
					user_kill(i);
					free_day[i] = false;
					user_duszek[i] = false;
				}
			}
		}
		DelPoszukiwany(id);
		DelArray(id, ZYWI);
	}
	else if(gTeam[id] == 2)
	{	
		if(is_user_connected(attacker) && gTeam[attacker] == 1 && !obsluga_dala && !dane_dnia[2])
		{
			AddPoszukiwany(attacker);
		}
		if(prowadzacy == id)
		{
			prowadzacy = 0;
			if(!obsluga_dala && !dane_dnia[2])
				set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
		}
	}
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost post");
#endif
	return HAM_IGNORED;
}

public StatusShow(id)
{
	new pid = read_data(2), team = gTeam[pid]; 
	set_hudmessage(team == 1? 255: 0, 50, team == 1? 0: 255, -1.0, 0.9, 0, 0.01, 6.0);
	ShowSyncHudMsg(id, SyncHudObj1, "%s: %s [%i]", team == 1? "Wiezien": "Straznik", nazwa_gracza[pid], get_user_health(pid));
}

public StatusHide(id)
	ClearSyncHud(id, SyncHudObj1);
	
public msg_FlashLight(id)
{
	if(gTeam[id] == 1)
		return PLUGIN_HANDLED;	
	return PLUGIN_CONTINUE;
}

public msg_TextMsg()
{	
	new message[32];
	get_msg_arg_string(2, message, 31);
	
	if(equal(message, "#Game_teammate_attack") || equal(message, "#Killed_Teammate"))
		return PLUGIN_HANDLED;

	if(equal(message, "#Terrorists_Win"))
	{
		set_msg_arg_string(2, "Wiezniowie wygrali!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#CTs_Win"))
	{
		set_msg_arg_string(2, "Klawisze wygrali!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Round_Draw"))
	{
		set_msg_arg_string(2, "Runda remisowa!")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Only_1_Team_Change"))
	{
		set_msg_arg_string(2, "Dozwolona tylko 1 zmiana druzyny!")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_SemiAuto"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb pol-automatyczny")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_BurstFire"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb serii")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Switch_To_FullAuto"))
	{
		set_msg_arg_string(2, "Zmieniono na tryb automatyczny")
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Game_Commencing"))
	{
		set_msg_arg_string(2, "Rozpoczecie Gry!");
		return PLUGIN_CONTINUE;
	}
	else if(equal(message, "#Cannot_Be_Spectator"))
	{
		set_msg_arg_string(2, "Nie mozesz byc obserwatorem");
		return PLUGIN_CONTINUE;
	}
	return PLUGIN_HANDLED;
}	

public msg_StatusIcon(msgid, dest, id)
{
	new szIcon[8];
	get_msg_arg_string(2, szIcon, 7);
	 
	if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
	{
		set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}

public client_authorized(id)
{
	set_user_info(id, "_vgui_menus", "0");
	get_user_name(id, nazwa_gracza[id], 63);
}

public client_disconnect(id)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "client_disconnect pre");
#endif
	if(AdminVoice == id)
		AdminVoice = 0;
		
	if(prowadzacy == id)
	{
		prowadzacy = 0;
		set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
	}
	
	if(ostatni_wiezien == id)
		ostatni_wiezien = 0;
		
	user_speed[id] = 0.0;
	bronie_gracza[id][0] = 0;
	bronie_gracza[id][1] = 0;
	pojedynek[id] = false;
	free_day[id] = false;
	user_duszek[id] = false;
	ustaw_freeday[id] = false;
	ustaw_duszka[id] = false;
	
	for(new i=1; i<=MAX; i++)
		g_Muted[i][id] = false;
	
	DelPoszukiwany(id);
	if(gTeam[id] == 1)
	{
		DelArray(id, WSZYSCY);
		DelArray(id, ZYWI);
	}
	gTeam[id] = 0;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "client_disconnect post");
#endif
}

public client_infochanged(id) 
{
	get_user_info(id, "name", nazwa_gracza[id], 63);
}

public RoundRestart()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "RoundRestart");
#endif
	usuwanie_ustawien = true;
}

public RoundEnd()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "RoundEnd");
#endif
	end_usun = true;
	czas_bronie = false;
}

public PreRoundStart()
{	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PreRoundStart pre");
#endif
	UsuwanieWydarzen();
	if(usuwanie_ustawien)
	{
		jail_day = 0;
		usuwanie_ustawien = false;
	}
	else
		jail_day++;

	
	if(jail_day)
	{
		gTimeStart = get_systime();
		ForwardDayStartPre(jail_day%7);
	}
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PreRoundStart post");
#endif
}

UsuwanieWydarzen()
{
	//end_usun = true;
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen pre");
#endif
	szInfo = "";
	szInfoPosz = "";
	szPoszukiwani = "";
	ostatni_wiezien = 0;
	prowadzacy = 0;
	
	obsluga_dala = false;
	pokaz_raz = false;
	czas_bronie = false;
	zabawa_wybrana = false;
	zyczenie_wybrane = false
		
	mode_gracza[WALKA] = false;

	mode_gracza[MIKRO] = (get_pcvar_num(pCvarMikro) == 1? true: false);
	
	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
	
	if(task_exists(ID_DZWIEK_POSZ))
		remove_task(ID_DZWIEK_POSZ);
	
	if(task_exists(ID_LOS_PROWADZACY))
		remove_task(ID_LOS_PROWADZACY);
		
	if(task_exists(ID_CZAS))
		remove_task(ID_CZAS);
	
	if(task_exists(ID_FREZZ))
		remove_task(ID_FREZZ);
	
	if(task_exists(ID_SPEED_FZ))
		remove_task(ID_SPEED_FZ);
	
	for(new i=0; i<sizeof dane_dnia; i++)
		dane_dnia[i] = 0;
	
	for(new i=1; i<=MAX; i++)
	{
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 0;
		
		user_speed[i] = 0.0;
		pojedynek[i] = false;
		
		bronie_menu[i][0] = false;
		bronie_menu[i][1] = false;
		
		if(ustaw_freeday[i])
		{
			ustaw_freeday[i] = false;
			free_day[i] = true;
		}
		else
			free_day[i] = false;
			
		if(ustaw_duszka[i])
		{
			ustaw_duszka[i] = false;
			user_duszek[i] = true;
		}
		else
			user_duszek[i] = false;
	}
	
	ilosc_graczy[WSZYSCY] = 0;
	ilosc_graczy[ZYWI] = 0;
	
	new iRet;
	ExecuteForward(fRemoveData, iRet, id_zabawa);
	
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen post");
#endif
}

public PostRoundStart()
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PostRoundStart pre");
#endif
	end_usun = false;
	set_task(60.0, "koniec_czasu", ID_CZAS);
	
	if(!jail_day)
	{
		gTimeStart = get_systime()-g_FreezeTime;
		ForwardDayStartPre(jail_day%7);
	}
	if(!prowadzacy && !dane_dnia[1])
		set_task(15.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "PostRoundStart post");
#endif
}

ForwardDayStartPre(zabawa)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre pre");
#endif
	new iRet, is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
	ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), g_RoundTime+min(is_frezz, 0));
	id_zabawa = zabawa;
	
	new dane[1]
	dane[0] = zabawa;
	if(is_frezz)
		set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
	else
		ForwardDayStartPost(dane);

#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre post");
#endif		
}

public ForwardDayStartPost(zabawa[1])
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost pre");
#endif
	new iRet;
	ExecuteForward(fDayStartPost, iRet, zabawa[0]);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost post");
#endif
}

public koniec_czasu()
{
	czas_bronie = true;
}

public LosujProwadzacego()
{
	if(!prowadzacy)
	{
		if(((prowadzacy = RandomCT()) > 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, "^n\r0. \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 -1: 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<file_size(szFile, 1); i++)
		{
			if(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, "Jail");
}

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<sizeof(g_Buttons); i++)
	{
		if(!pev_valid(g_Buttons[i]) || !g_Buttons[i])
			continue;
		ExecuteHam(Ham_Use, g_Buttons[i], 0, 0, 2, 1.0);
	}
}	

AddArray(id, ktore)
{
	if(free_day[id] || user_duszek[id])
		return;
	
	if(array_graczy[ktore][id])
		return;
		
	ostatni_wiezien = (ilosc_graczy[ktore]? 0: id);
	
	array_graczy[ktore][id] = id;
	ilosc_graczy[ktore]++;
}

DelArray(id, ktore)
{
	if(free_day[id] || user_duszek[id])
		return;
	
	if(!array_graczy[ktore][id])
		return;
		
	array_graczy[ktore][id] = 0;
	ilosc_graczy[ktore]--;
	
	if(jail_day%7 && ktore == ZYWI)
	{
		switch(ilosc_graczy[ktore])
		{
			case 1:{ 
				for(new i=1; i<=MAX; i++)
				{
					if(array_graczy[ktore][i])
					{
						ostatni_wiezien = array_graczy[ktore][i];
						break;
					}
				}
			}
			default: ostatni_wiezien = 0;
		}
	}
}

AddPoszukiwany(attacker)
{
	if(contain(szPoszukiwani, nazwa_gracza[attacker]) == -1)
	{
		new szTemp[512];
		formatex(szTemp, charsmax(szTemp), "^n  %s%s", nazwa_gracza[attacker], szPoszukiwani);
		copy(szPoszukiwani, charsmax(szPoszukiwani), szTemp);
		
		set_pev(attacker, pev_body, 4);
	}
	if(task_exists(ID_DZWIEK_POSZ))
		remove_task(ID_DZWIEK_POSZ);

	dzwiek_poszukiwany();
	set_task(1.0, "dzwiek_poszukiwany", ID_DZWIEK_POSZ, .flags="a", .repeat=9);	
}

public dzwiek_poszukiwany()
	client_cmd(0, "spk jb_cypis/uciekinier.wav");

DelPoszukiwany(id)
{
	if(contain(szPoszukiwani, nazwa_gracza[id]) != -1)
	{
		new szTemp[512];
		formatex(szTemp, charsmax(szTemp), "^n  %s", nazwa_gracza[id]);
		replace_all(szPoszukiwani, charsmax(szPoszukiwani), szTemp, "");
	}
}

stock ham_strip_weapon(id, wid)
{
	if(!wid) 
		return 0;
		
	new szName[24];
	get_weaponname(wid, szName, 23);
	
	new ent;
	while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", szName)) && pev(ent, pev_owner) != id) {}
	if(!ent)
		return 0;
	
	if(get_user_weapon(id) == wid) 
		ExecuteHam(Ham_Weapon_RetireWeapon, ent);
	
	if(ExecuteHam(Ham_RemovePlayerItem, id, ent)) 
	{
		ExecuteHam(Ham_Item_Kill, ent);
		set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wid));
	}
	return 1;
}

stock Jaki_Pistolet(id)
{
	if(!is_user_alive(id))
		return 0;
	
	new weapons[32], numweapons;
	get_user_weapons(id, weapons, numweapons);
	
	for(new i=0; i<numweapons; i++)
		if((1<<weapons[i]) & 0x50FCF1A8)
			return weapons[i];
	
	return 0;
}

  • +
  • -
  • 0

#4 Ken U DZ

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:28
  • GG:
  • Imię:Dominik
Offline

Napisano 03.07.2015 14:14

DAMINI Proszę o edytacje  tego silniku bo mi bardziej zależało aby ktoś mi napisał co mam zrobić bo ja mam już trochę po edytowany silnik cypis'a 

 

I od razu jak możesz napisz co będę musiał dopisać do zabawy aby więźniowie mieli tarcze podczas zabawy  

 

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <colorchat>
 
#include <engine> //tylko uzyte do zablokowania latarki
 
#define PLUGIN "Jail Mod"
#define VERSION "1.0.6a"
#define AUTHOR "Cypis"
 
//#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 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_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(106, BLOCK_SET); //block info player
set_msg_block(145, BLOCK_SET); //block dhud
set_msg_block(122, 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("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 /mute", "MenuMutowania");
 
register_message(77 ,"msg_TextMsg");
register_message(96, "msg_show_menu");
//register_impulse(100, "msg_FlashLight");
register_message(107, "msg_StatusIcon");
register_message(114, "msg_vgui_menu");
 
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();
//SyncHudObj2 = 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_ultra/v_palka.mdl";
SzModels[P_PALKA] = "models/jb_ultra/p_palka.mdl";
SzModels[V_PIESCI] = "models/jb_ultra/v_piesci.mdl";
SzModels[P_PIESCI] = "models/jb_ultra/p_piesci.mdl";
SzModels[V_REKAWICE] = "models/jb_ultra/v_rekawice.mdl";
SzModels[P_REKAWICE] = "models/jb_ultra/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_draxe/wiezien_draxe.mdl");
precache_model("models/player/klawisz_ultra/klawisz_ultra.mdl");
        precache_model("models/player/supervip/supervip.mdl");
        precache_model("models/player/supervipct/supervipct.mdl");
        precache_model("models/player/supervipct/supervipctT.mdl");
 
precache_sound("weapons/prawy_przycisk.wav");
precache_sound("weapons/uderzenie_mur_ultra.wav");
precache_sound("weapons/hit_ultra1.wav");
precache_sound("weapons/hit_ultra2.wav");
precache_sound("weapons/machanie_ultra.wav");
 
precache_sound("jb_ultra/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_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**JailBreak** ^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<ArraySize(gZyczeniaName); i++)
{
ArrayGetString(gZyczeniaName, i, szZyczenia, 31);
num_to_str(i+1, szID, 31);
menu_additem(menu, szZyczenia, szID);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuZyczen post");
#endif
return PLUGIN_HANDLED;
}
 
public Handel_Zyczenie(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || ostatni_wiezien != id)
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie pre");
#endif
new acces, szZyczenie[32], szID[32];
menu_item_getinfo(menu, item, acces, szID, 31, szZyczenie, 31, acces);
 
new iRet;
ExecuteForward(fLastPrisonerTakeWish, iRet, id, str_to_num(szID))
if(iRet == -1)
{
menu_display(id, menu);
ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Nie mozesz wybrac tego zyczenia!");
return;
}
 
ColorChat(0, TEAM_COLOR,"^x04**JailBreak**  ^x03%s ^x01wybral^x03 %s", nazwa_gracza[id], szZyczenie);
zyczenie_wybrane = true;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie post");
#endif
}
////////////////////
 
public ZarejstrujZabawe(nazwa_zabawy[])
{
param_convert(1);
ArrayPushString(gZabawyName, nazwa_zabawy);
 
static ilosc = 8; ilosc++;
return ilosc;
}
 
new bool:zabawa_wybrana;
public MenuZabaw(id)
{
if(gTeam[id] != 2 || prowadzacy != id)
return PLUGIN_CONTINUE;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuZabaw pre");
#endif
if(!ArraySize(gZabawyName))
{
ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Nie ma zadnych zabaw na serwerze!");
return PLUGIN_CONTINUE;
}
 
if(zabawa_wybrana)
{
ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Juz wybrales dzisiaj zabawe");
return PLUGIN_CONTINUE;
}
 
new szZabawa[32], szID[32], menu = menu_create("Menu Zabaw:", "Handel_Menu_Zabaw");
for(new i=0; i<ArraySize(gZabawyName); i++)
{
ArrayGetString(gZabawyName, i, szZabawa, 31);
num_to_str(i+9, szID, 31);
menu_additem(menu, szZabawa, szID);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuZabaw post");
#endif
return PLUGIN_HANDLED;
}
 
public Handel_Menu_Zabaw(id, menu, item)
{
if(item == MENU_EXIT || zabawa_wybrana || prowadzacy != id)
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw pre");
#endif
new acces, szZabawa[32], szID[32];
menu_item_getinfo(menu, item, acces, szID, 31, szZabawa, 31, acces);
ColorChat(id, TEAM_COLOR,"^x04**JailBreak**  ^x01%s%s", UstawZabawe(str_to_num(szID), false)? "wlaczyles ": "juz jest za pozno, aby wlaczyc ", szZabawa);
 
zabawa_wybrana = true;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw post");
#endif
}
 
public UstawPredkosc(id, Float:speed)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawPredkosc pre");
#endif
user_speed[id] = speed;
if(end_usun)
{
new data[1];
data[0] = id;
set_task(g_FreezeTime-(get_systime()-gTimeStart)+0.1, "taskUstawPredkosc", ID_SPEED_FZ, data, 1);
}
else
set_user_maxspeed(id, speed);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawPredkosc post");
#endif
}
 
public taskUstawPredkosc(data[1])
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc pre");
#endif
set_user_maxspeed(data[0], user_speed[data[0]]);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc post");
#endif
}
 
public PobierzIdZabawy()
{
return id_zabawa;
}
 
public bool:PobierzPojedynek(id)
{
return pojedynek[id];
}
 
public bool:PobierzPoszukiwany(id)
{
return (contain(szPoszukiwani, nazwa_gracza[id]) != -1)? true: false;
}
 
public bool:PobierzMikrofon()
{
return bool:mode_gracza[MIKRO];
}
 
public bool:PobierzWalke()
{
return bool:mode_gracza[WALKA];
}
 
public bool:PobierzFreeday(id)
{
return free_day[id];
}
 
public bool:PobierzDuszka(id)
{
return user_duszek[id];
}
 
public PobierzOstatniego()
{
return ostatni_wiezien;
}
 
public PobierProwadzacego()
{
return prowadzacy;
}
 
public PobierzDni()
{
return jail_day%7;
}
 
public UstawMikrofon(bool:wartosc, bool:info)
{
if(ostatni_wiezien || dane_dnia[1])
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawMikrofon pre");
#endif
mode_gracza[MIKRO] = wartosc;
 
if(info)
ColorChat(0, TEAM_COLOR, "^x04**JailBreak**  ^x01Status mikro dla wiezniow: ^x03%s!", mode_gracza[MIKRO]? "wlaczone": "wylaczone");
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawMikrofon post");
#endif
}
 
public UstawWalke(bool:wartosc, bool:modele, bool:info)
{
if(ostatni_wiezien || (dane_dnia[1] && modele))
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawWalke pre");
#endif
mode_gracza[WALKA] = modele;
mode_gracza[FF_TT] = wartosc;
 
for(new i=1; i<=MAX; i++)
{
if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 1 || get_user_weapon(i) != CSW_KNIFE || free_day[i] || user_duszek[i])
continue;
 
set_user_health(i, 100);
set_pev(i, pev_viewmodel2, modele? SzModels[V_REKAWICE]: SzModels[V_PIESCI]);
set_pev(i, pev_weaponmodel2, modele? SzModels[P_REKAWICE]: SzModels[P_PIESCI]);
}
if(info)
ColorChat(0, TEAM_COLOR,"^x04**JailBreak**  ^x01Walka %s!", mode_gracza[WALKA]? "wlaczona": "wylaczona");
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawWalke post");
#endif
}
 
public UstawFreeday(id, bool:wartosc, bool:nextround)
{
if(!id || (dane_dnia[1] && !nextround))
return 0;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawFreeday pre");
#endif
if(!nextround && wartosc)
{
new podlicz = 0;
for(new i=1; i<=MAX; i++)
{
if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
podlicz++;
}
if(podlicz == 1)
return 0;
}
 
if(wartosc)
{
DelArray(id, WSZYSCY);
DelArray(id, ZYWI);
}
 
free_day[id] = wartosc;
ustaw_freeday[id] = nextround;
 
if(!wartosc)
{
AddArray(id, WSZYSCY);
AddArray(id, ZYWI);
}
 
set_pev(id, pev_body, wartosc? 3: random(3));
if(get_user_flags(id) & 524288 == 524288)
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 30);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawFreeday post");
#endif
return 1;
}
 
public UstawDuszka(id, bool:wartosc, bool:nextround)
{
if(!id || (dane_dnia[1] && !nextround))
return 0;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawDuszka pre");
#endif
if(!nextround && wartosc)
{
new podlicz = 0;
for(new i=1; i<=MAX; i++)
{
if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
podlicz++;
}
if(podlicz == 1)
return 0;
}
 
if(wartosc)
{
DelArray(id, WSZYSCY);
DelArray(id, ZYWI);
}
 
user_duszek[id] = wartosc;
ustaw_duszka[id] = nextround;
 
if(!wartosc)
{
AddArray(id, WSZYSCY);
AddArray(id, ZYWI);
}
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, wartosc? 0: 255);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawDuszka post");
#endif
return 1;
}
 
public UstawTTGod(bool:wartosc)
{
mode_gracza[TT_GOD] = wartosc;
}
 
public UstawCTGod(bool:wartosc)
{
mode_gracza[CT_GOD] = wartosc;
}
 
public UstawCTHitTT(bool:wartosc)
{
mode_gracza[CT_NIE_MOZE_TT] = wartosc;
}
 
public UstawTTHitCT(bool:wartosc)
{
mode_gracza[TT_NIE_MOZE_CT] = wartosc;
}
 
public UstawBlokade(id, bool:wartosc)
{
pojedynek[id] = wartosc;
}
 
public UstawProwadzacego(id)
{
if(!dane_dnia[1])
{
if(prowadzacy != id && prowadzacy)
set_pev(prowadzacy, pev_body, 0);
 
prowadzacy = id;
if(id)
{
if(task_exists(ID_LOS_PROWADZACY))
remove_task(ID_LOS_PROWADZACY);
 
set_pev(id, pev_body, 1);
set_user_rendering(prowadzacy, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 15);
}
}
}
 
 
public UstawZabawe(zabawa, bool:fast)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawZabawe pre");
#endif
if(!fast)
{
if(czas_bronie || ilosc_graczy[WSZYSCY] != ilosc_graczy[ZYWI])
return 0;
 
if(mode_gracza[WALKA] || mode_gracza[FF_TT])
UstawWalke(false, false, false);
}
ForwardDayStartPre(zabawa);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawZabawe post");
#endif
return 1;
}
 
public MenuBroni(id)
{
if(!is_user_alive(id) || gTeam[id] != 2 || czas_bronie)
return PLUGIN_HANDLED;
 
UstawMenuWeapon(id, true, true, 0, 0);
return PLUGIN_HANDLED;
}
 
new bool:bronie_menu[MAX+1][2];
new bronie_bitsum[MAX+1][2];
new bronie_gracza[MAX+1][2];
public UstawMenuWeapon(id, bool:bronie, bool:pistolety, bitsum_bronie, bitsum_pistolety)
{
if(!bronie && !pistolety)
return;
 
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<<CSW_M4A1)))
menu_additem(menu, "M4A1", "22");
if(!(bronie_bitsum[id][0] & (1<<CSW_AK47)))
menu_additem(menu, "AK47", "28");
if(!(bronie_bitsum[id][0] & (1<<CSW_AWP)))
menu_additem(menu, "AWP", "18");
if(!(bronie_bitsum[id][0] & (1<<CSW_SCOUT)))
menu_additem(menu, "Scout", "3");
if(!(bronie_bitsum[id][0] & (1<<CSW_AUG)))
menu_additem(menu, "AUG", "8");
if(!(bronie_bitsum[id][0] & (1<<CSW_SG550)))
menu_additem(menu, "Krieg 550", "13");
if(!(bronie_bitsum[id][0] & (1<<CSW_M249)))
menu_additem(menu, "M249", "20");
if(!(bronie_bitsum[id][0] & (1<<CSW_MP5NAVY)))
menu_additem(menu, "MP5", "19");
if(!(bronie_bitsum[id][0] & (1<<CSW_UMP45)))
menu_additem(menu, "UMP45", "12");
if(!(bronie_bitsum[id][0] & (1<<CSW_FAMAS)))
menu_additem(menu, "Famas", "15");
if(!(bronie_bitsum[id][0] & (1<<CSW_GALIL)))
menu_additem(menu, "Galil", "14");
if(!(bronie_bitsum[id][0] & (1<<CSW_M3)))
menu_additem(menu, "M3", "21");
if(!(bronie_bitsum[id][0] & (1<<CSW_XM1014)))
menu_additem(menu, "XM1014", "5");
if(!(bronie_bitsum[id][0] & (1<<CSW_MAC10)))
menu_additem(menu, "Mac10", "7");
if(!(bronie_bitsum[id][0] & (1<<CSW_TMP)))
menu_additem(menu, "TMP", "23");
if(!(bronie_bitsum[id][0] & (1<<CSW_P90)))
menu_additem(menu, "P90", "30");
if(!(bronie_bitsum[id][0] & (1<<CSW_G3SG1)))
menu_additem(menu, "G3SG1 (autokampa)", "24");
if(!(bronie_bitsum[id][0] & (1<<CSW_SG552)))
menu_additem(menu, "Krieg 552 (autokampa)", "27");
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuBronie post");
#endif
}
 
public Handel_Bronie(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][0])
return;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Bronie pre");
#endif
 
new weaponname[24], data[3], weapon, callback;
menu_item_getinfo(menu, item, weapon, data, 2, _, _, callback);
 
if((callback = Jaki_Pistolet(id)) > 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<<CSW_USP)))
menu_additem(menu, "USP", "16");
if(!(bronie_bitsum[id][1] & (1<<CSW_GLOCK18)))
menu_additem(menu, "Glock", "17");
if(!(bronie_bitsum[id][1] & (1<<CSW_DEAGLE)))
menu_additem(menu, "Deagle", "26");
if(!(bronie_bitsum[id][1] & (1<<CSW_P228)))
menu_additem(menu, "P228", "1");
if(!(bronie_bitsum[id][1] & (1<<CSW_FIVESEVEN)))
menu_additem(menu, "FiveSeven", "11");
if(!(bronie_bitsum[id][1] & (1<<CSW_ELITE)))
menu_additem(menu, "Dual", "10");
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuPistolety post");
#endif
}
 
public Handel_Pistolety(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][1])
return;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Pistolety pre");
#endif
 
new weaponname[24], data[3], weapon, callback;
menu_item_getinfo(menu, item, weapon, data, 2, _, _, 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][1] = weapon;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Pistolety post");
#endif
}
 
/********** - Koniec Native - ************/
 
public ButtonTraceAttack(ent, id, Float:damage, Float:direction[3], tracehandle, damagebits)
{
if(pev_valid(ent) && prowadzacy == id)
{
ExecuteHam(Ham_Use, ent, id, 0, 2, 1.0);
set_pev(ent, pev_frame, 0.0);
}
return HAM_IGNORED;
}
 
public TakeDamage(id, ent, attacker, Float:damage, damagebits)
return vAttackDamagePlayer(id, attacker, damage, damagebits, true);
 
public TraceAttack(id, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
return vAttackDamagePlayer(id, attacker);
 
vAttackDamagePlayer(id, attacker, Float:damage=0.0, damagebits=0, bool:dmg=false)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
if(gTeam[id] == 1 && mode_gracza[TT_GOD])
return HAM_SUPERCEDE;
 
if(gTeam[id] == 2 && mode_gracza[CT_GOD])
return HAM_SUPERCEDE;
 
if(is_user_connected(attacker))
{
if(gTeam[id] == 1 && gTeam[attacker] == 1 && !mode_gracza[FF_TT])
return HAM_SUPERCEDE;
 
if(gTeam[id] == 2 && gTeam[attacker] == 2)
return HAM_SUPERCEDE;
 
if(gTeam[id] == 1 && gTeam[attacker] == 2 && mode_gracza[CT_NIE_MOZE_TT])
return HAM_SUPERCEDE;
 
if(gTeam[id] == 2 && gTeam[attacker] == 1 && mode_gracza[TT_NIE_MOZE_CT])
return HAM_SUPERCEDE;
 
if(free_day[attacker] || gTeam[attacker] == 1 && free_day[id])
return HAM_SUPERCEDE;
 
if(user_duszek[id] && gTeam[attacker] == 1)
return HAM_SUPERCEDE;
 
if(user_duszek[attacker] && gTeam[id] == 2)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer pre");
#endif
user_duszek[attacker] = false;
set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
 
AddArray(attacker, WSZYSCY);
AddArray(attacker, ZYWI);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer post");
#endif
return HAM_IGNORED;
}
 
if(dmg)
{
if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
SetHamParamFloat(4, damage*0.4);
}
}
return HAM_IGNORED;
}
 
public Odrodzenie(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Odrodzenie pre");
#endif
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0);
strip_user_weapons2(id);
 
switch(cs_get_user_team(id))
{
case CS_TEAM_T:
{
gTeam[id] = 1;
if(get_user_flags(id) & ADMIN_LEVEL_B){
cs_set_player_model(id, "supervip");
}else{
cs_set_player_model(id, "wiezien_draxe");
set_pev(id, pev_body, random(3));
}
AddArray(id, WSZYSCY);
AddArray(id, ZYWI);
}
case CS_TEAM_CT:
{
 
 
if(dane_dnia[4] < 2)
{
if(bronie_gracza[id][0] && bronie_gracza[id][1])
{
for(new i=0; i<2; i++)
{
new weaponname[24];
get_weaponname(bronie_gracza[id][i], weaponname, 23);
give_item(id, weaponname);
cs_set_user_bpammo(id, bronie_gracza[id][i], maxAmmo[bronie_gracza[id][i]]);
}
}
else if(!czas_bronie) {
UstawMenuWeapon(id, true, true, 0, 0);
}
}
gTeam[id] = 2;
if(get_user_flags(id) & ADMIN_LEVEL_B){
cs_set_player_model(id, "supervipct");
}else{
cs_set_player_model(id, "klawisz_ultra");
}
 
}
}
give_item(id, "weapon_knife");
 
if(free_day[id])
set_pev(id, pev_body, 3);
 
if(user_duszek[id])
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Odrodzenie post");
#endif
}
 
public OddajProwadzenie(id)
{
if(prowadzacy != id)
return PLUGIN_HANDLED;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "OddajProwadzenie pre");
#endif
new menu = menu_create("Oddaj Prowadzenie:", "Handel_Oddaj");
for(new i=1; i<=MAX; i++)
{
if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 2 || prowadzacy == i)
continue;
new num[3];
num_to_str(i, num, 2);
menu_additem(menu, nazwa_gracza[i], num);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "OddajProwadzenie post");
#endif
return PLUGIN_HANDLED;
}
 
public Handel_Oddaj(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || prowadzacy != id)
return;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Oddaj pre");
#endif
new data[3], acces, callback;
menu_item_getinfo(menu, item, acces, data, 2, _, _, callback);
prowadzacy = str_to_num(data);
ColorChat(0, GREEN, "**JailBreak** ^x01 Zmienil sie Prowadzacy - wszystkie dotychczasowe polecenia odwolane!");
 
set_pev(id, pev_body, 0);
set_pev(prowadzacy, pev_body, 1);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Oddaj post");
#endif
}
 
public WeaponKnife(ent)
{
new id = get_pdata_cbase(ent, 41, 4);
 
if(!is_user_alive(id))
return;
 
if(cs_get_user_shield(id))
return;
 
if(gTeam[id] == 1 && !mode_gracza[WALKA])
{
set_pev(id, pev_viewmodel2, SzModels[V_PIESCI]);
set_pev(id, pev_weaponmodel2, SzModels[P_PIESCI]);
}
else if(gTeam[id] == 1 && mode_gracza[WALKA])
{
set_pev(id, pev_viewmodel2, SzModels[V_REKAWICE]);
set_pev(id, pev_weaponmodel2, SzModels[P_REKAWICE]);
}
else if(gTeam[id] == 2)
{
set_pev(id, pev_viewmodel2, SzModels[V_PALKA]);
set_pev(id, pev_weaponmodel2, SzModels[P_PALKA]);
}
}
 
public EmitSound(id, channel, sample[])
{
if(!is_user_alive(id) || !is_user_connected(id)) 
return FMRES_IGNORED;
 
if(equal(sample, "weapons/knife_", 14))
{
switch(sample[17])
{
case ('b'): emit_sound(id, CHAN_WEAPON, "weapons/prawy_przycisk.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
case ('w'): emit_sound(id, CHAN_WEAPON, "weapons/uderzenie_mur_ultra.wav", 1.0, ATTN_NORM, 0, PITCH_LOW);
case ('s'): emit_sound(id, CHAN_WEAPON, "weapons/machanie_ultra.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
case ('1'): emit_sound(id, CHAN_WEAPON, "weapons/hit_ultra1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
case ('2'): emit_sound(id, CHAN_WEAPON, "weapons/hit_ultra2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
}
return FMRES_SUPERCEDE;
}
if(equal(sample, "common/wpn_denyselect.wav"))
return FMRES_SUPERCEDE;
return FMRES_IGNORED;
}
 
public AdminVoiceOn(id)
{
if(!(get_user_flags(id) & ADMIN_BAN))
return PLUGIN_HANDLED;
 
if(AdminVoice)
return PLUGIN_HANDLED;
 
AdminVoice = id;
 
ColorChat(0,GREEN,"**JailBreak** ^x01 Cisza! ^x03%s ^x01przemawia.", nazwa_gracza[id]);
client_cmd(id, "+voicerecord");
return PLUGIN_HANDLED;
}
 
public AdminVoiceOff(id)
{
if(!(get_user_flags(id) & ADMIN_BAN))
return PLUGIN_HANDLED;
 
if(AdminVoice != id)
{
client_cmd(id, "-voicerecord");
return PLUGIN_HANDLED;
}
client_cmd(id, "-voicerecord");
AdminVoice = 0;
return PLUGIN_HANDLED;
}
 
new bool:g_Muted[MAX+1][MAX+1];
public MenuMutowania(id)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuMutowania pre");
#endif
new menu = menu_create("Menu mutowania:", "Handel_Mute");
for(new i=1; i<=MAX; i++)
{
if(!is_user_connected(i) || is_user_hltv(i))
continue;
new num[3], szName[64];
num_to_str(i, num, 2);
szName = nazwa_gracza[i];
if(g_Muted[id][i])
add(szName, 63, " \r[MUTE]");
 
menu_additem(menu, szName, num);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuMutowania post");
#endif
}
 
public Handel_Mute(id, menu, item)
{
if(item == MENU_EXIT )
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Mute pre");
#endif
new data[3], acces, id2;
menu_item_getinfo(menu, item, acces, data, 2, _, _, id2);
id2 = str_to_num(data);
 
g_Muted[id][id2] = !g_Muted[id][id2];
ColorChat(id, GREEN,"**JailBreak**  ^x01%s gracza ^x03%s", g_Muted[id][id2]? "Zmutowales": "Odmutowales", nazwa_gracza[id2]);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Mute post");
#endif
}
 
public Voice_SetClientListening(odbiorca, nadawca, listen) 
{
if(odbiorca == nadawca)
return FMRES_IGNORED;
 
if(g_Muted[odbiorca][nadawca])
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
if(AdminVoice)
{
if(AdminVoice == nadawca)
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
return FMRES_SUPERCEDE;
}
else if(gTeam[nadawca] == 1)
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
}
 
if(gTeam[nadawca] == 1 && !mode_gracza[MIKRO])
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
 
if(is_user_alive(odbiorca))
{
if(is_user_alive(nadawca))
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
return FMRES_SUPERCEDE;
}
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
 
public BlokowanieUse(ent, id, activator, iType, Float:fValue)
{
if(!is_user_connected(id) || id == activator)
return HAM_IGNORED;
 
if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id] || free_day[id])
return HAM_SUPERCEDE;
 
return HAM_IGNORED;
}
 
public BlokowanieLeczenie(ent, id, activator, iType, Float:fValue)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
return HAM_SUPERCEDE;
 
return HAM_IGNORED;
}
 
public DotykBroni(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
if(free_day[id] || dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
return HAM_SUPERCEDE;
 
return HAM_IGNORED;
}
 
public BlockDrop(id)
{
if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
 
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost pre");
#endif
if(gTeam[id] == 1)
{
if(is_user_connected(attacker) && gTeam[attacker] == 1)
set_user_frags(attacker, get_user_frags(attacker)+2);
 
if(ostatni_wiezien == id)
{
for(new i=1; i<=MAX; i++)
{
if(is_user_alive(i) && is_user_connected(i) && (free_day[i] || user_duszek[i]))
{
user_kill(i);
free_day[i] = false;
user_duszek[i] = false;
}
}
}
DelPoszukiwany(id);
DelArray(id, ZYWI);
}
else if(gTeam[id] == 2)
{
if(is_user_connected(attacker) && gTeam[attacker] == 1 && !obsluga_dala && !dane_dnia[2])
{
AddPoszukiwany(attacker);
}
if(prowadzacy == id)
{
prowadzacy = 0;
if(!obsluga_dala && !dane_dnia[2])
set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
}
}
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost post");
#endif
return HAM_IGNORED;
}
 
public StatusShow(id)
{
new pid = read_data(2), team = gTeam[pid]; 
set_hudmessage(team == 1? 255: 0, 50, team == 1? 0: 255, -1.0, 0.9, 0, 0.01, 6.0);
ShowSyncHudMsg(id, SyncHudObj1, "%s: %s [%i]", team == 1? "Wiezien": "Straznik", nazwa_gracza[pid], get_user_health(pid));
}
 
public StatusHide(id)
ClearSyncHud(id, SyncHudObj1);
 
public msg_FlashLight(id)
{
if(gTeam[id] == 1)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
 
public msg_TextMsg()
{
new message[32];
get_msg_arg_string(2, message, 31);
 
if(equal(message, "#Game_teammate_attack") || equal(message, "#Killed_Teammate"))
return PLUGIN_HANDLED;
 
if(equal(message, "#Terrorists_Win"))
{
set_msg_arg_string(2, "Wiezniowie wygrali!");
return PLUGIN_CONTINUE;
}
else if(equal(message, "#CTs_Win"))
{
set_msg_arg_string(2, "Klawisze wygrali!");
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Round_Draw"))
{
set_msg_arg_string(2, "Runda remisowa!")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Only_1_Team_Change"))
{
set_msg_arg_string(2, "Dozwolona tylko 1 zmiana druzyny!")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Switch_To_SemiAuto"))
{
set_msg_arg_string(2, "Zmieniono na tryb pol-automatyczny")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Switch_To_BurstFire"))
{
set_msg_arg_string(2, "Zmieniono na tryb serii")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Switch_To_FullAuto"))
{
set_msg_arg_string(2, "Zmieniono na tryb automatyczny")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Game_Commencing"))
{
set_msg_arg_string(2, "Rozpoczecie Gry!");
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Cannot_Be_Spectator"))
{
set_msg_arg_string(2, "Nie mozesz byc obserwatorem");
return PLUGIN_CONTINUE;
}
return PLUGIN_HANDLED;
}
 
public msg_StatusIcon(msgid, dest, id)
{
new szIcon[8];
get_msg_arg_string(2, szIcon, 7);
 
if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
 
public client_authorized(id)
{
set_user_info(id, "_vgui_menus", "0");
get_user_name(id, nazwa_gracza[id], 63);
}
 
public client_disconnect(id)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "client_disconnect pre");
#endif
if(AdminVoice == id)
AdminVoice = 0;
 
if(prowadzacy == id)
{
prowadzacy = 0;
set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
}
 
if(ostatni_wiezien == id)
ostatni_wiezien = 0;
 
user_speed[id] = 0.0;
bronie_gracza[id][0] = 0;
bronie_gracza[id][1] = 0;
pojedynek[id] = false;
free_day[id] = false;
user_duszek[id] = false;
ustaw_freeday[id] = false;
ustaw_duszka[id] = false;
 
for(new i=1; i<=MAX; i++)
g_Muted[i][id] = false;
 
DelPoszukiwany(id);
if(gTeam[id] == 1)
{
DelArray(id, WSZYSCY);
DelArray(id, ZYWI);
}
gTeam[id] = 0;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "client_disconnect post");
#endif
}
 
public client_infochanged(id) 
{
get_user_info(id, "name", nazwa_gracza[id], 63);
}
 
public RoundRestart()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "RoundRestart");
#endif
usuwanie_ustawien = true;
}
 
public RoundEnd()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "RoundEnd");
#endif
end_usun = true;
czas_bronie = false;
}
 
public PreRoundStart()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PreRoundStart pre");
#endif
UsuwanieWydarzen();
if(usuwanie_ustawien)
{
jail_day = 0;
usuwanie_ustawien = false;
}
else
jail_day++;
 
 
if(jail_day)
{
gTimeStart = get_systime();
ForwardDayStartPre(jail_day%7);
}
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PreRoundStart post");
#endif
}
 
UsuwanieWydarzen()
{
//end_usun = true;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen pre");
#endif
szInfo = "";
szInfoPosz = "";
szPoszukiwani = "";
ostatni_wiezien = 0;
prowadzacy = 0;
 
obsluga_dala = false;
pokaz_raz = false;
czas_bronie = false;
zabawa_wybrana = false;
zyczenie_wybrane = false
 
mode_gracza[WALKA] = false;
 
mode_gracza[MIKRO] = (get_pcvar_num(pCvarMikro) == 1? true: false);
 
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
 
if(task_exists(ID_DZWIEK_POSZ))
remove_task(ID_DZWIEK_POSZ);
 
if(task_exists(ID_LOS_PROWADZACY))
remove_task(ID_LOS_PROWADZACY);
 
if(task_exists(ID_CZAS))
remove_task(ID_CZAS);
 
if(task_exists(ID_FREZZ))
remove_task(ID_FREZZ);
 
if(task_exists(ID_SPEED_FZ))
remove_task(ID_SPEED_FZ);
 
for(new i=0; i<sizeof dane_dnia; i++)
dane_dnia[i] = 0;
 
for(new i=1; i<=MAX; i++)
{
array_graczy[WSZYSCY][i] = 0;
array_graczy[ZYWI][i] = 0;
 
user_speed[i] = 0.0;
pojedynek[i] = false;
 
bronie_menu[i][0] = false;
bronie_menu[i][1] = false;
 
if(ustaw_freeday[i])
{
ustaw_freeday[i] = false;
free_day[i] = true;
}
else
free_day[i] = false;
 
if(ustaw_duszka[i])
{
ustaw_duszka[i] = false;
user_duszek[i] = true;
}
else
user_duszek[i] = false;
}
 
ilosc_graczy[WSZYSCY] = 0;
ilosc_graczy[ZYWI] = 0;
 
new iRet;
ExecuteForward(fRemoveData, iRet, id_zabawa);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen post");
#endif
}
 
public PostRoundStart()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PostRoundStart pre");
#endif
end_usun = false;
set_task(60.0, "koniec_czasu", ID_CZAS);
 
if(!jail_day)
{
gTimeStart = get_systime()-g_FreezeTime;
ForwardDayStartPre(jail_day%7);
}
if(!prowadzacy && !dane_dnia[1])
set_task(15.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PostRoundStart post");
#endif
}
 
ForwardDayStartPre(zabawa)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre pre");
#endif
new iRet, is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), g_RoundTime+min(is_frezz, 0));
id_zabawa = zabawa;
 
new dane[1]
dane[0] = zabawa;
if(is_frezz)
set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
else
ForwardDayStartPost(dane);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre post");
#endif
}
 
public ForwardDayStartPost(zabawa[1])
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost pre");
#endif
new iRet;
ExecuteForward(fDayStartPost, iRet, zabawa[0]);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost post");
#endif
}
 
public koniec_czasu()
{
czas_bronie = true;
}
 
public LosujProwadzacego()
{
if(!prowadzacy)
{
if(((prowadzacy = RandomCT()) > 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**JailBreak** ^x01Przestan Kampic!");
ExecuteHam(Ham_TakeDamage, id, 0, 0, 5.0, (1<<14));
else if(TimeAfk[id] == 18) 
{
ColorChat(id, TEAM_COLOR, "^x04**JailBreak**  ^x01Przestan Kampic!");
ExecuteHam(Ham_TakeDamage, id, 0, 0, 10.0, (1<<14));
}
else if(TimeAfk[id] >= 20)
{
ColorChat(id, TEAM_COLOR, "^x04**JailBreak**  ^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];
if(!prowadzacy && !szInfo[0])
{
formatex(szDay, 90, "Dzien %i - %s^nProwadzacy: Brak^n^n^nTyp dnia: Normalny^nWiezniow: %i/%i", jail_day, dni_tygodnia[jail_day%7], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
}
if(prowadzacy && !szInfo[0])
{
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: %s^n^n^nTyp dnia: Normalny^nWiezniow: %i/%i^nWiezniowie musza sie sluchac Prowadzacego", jail_day, dni_tygodnia[jail_day%7], nazwa_gracza[prowadzacy], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
}
else if(szInfo[0])
{
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: Brak^n^n^nTyp dnia: %s^nWiezniow: %i/%i", jail_day, dni_tygodnia[jail_day%7], szInfo, ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
}
if(prowadzacy && !szInfo[0] && ostatni_wiezien)
{
new nick[33];
get_user_name(ostatni_wiezien, nick, 31);
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: %s^n^n^nTyp dnia: Normalny^nWiezniow: %i/%i^nOstatni wiezien: %s ^nWiezniowie musza sie sluchac Prowadzacego", jail_day, dni_tygodnia[jail_day%7], nazwa_gracza[prowadzacy], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY], nick);
}
else if(szInfo[0] && ostatni_wiezien) 
{
new nick[33];
get_user_name(ostatni_wiezien, nick, 31);
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: Brak^n^n^nTyp dnia: %s^nWiezniow: %i/%i^nOstatni wiezien: %s ^n", jail_day, dni_tygodnia[jail_day%7], szInfo, ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY], nick);
}
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**JailBreak** ^x01 Obsluga wiezienia pozwolila wybrac zyczenie!");
obsluga_dala = true;
 
new iRet;
ExecuteForward(fLastPrisonerShowWish, iRet, ostatni_wiezien);
}
case 1:
ColorChat(0, TEAM_COLOR, "^x04**JailBreak** ^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. \w[\rTT\w] \yWiezniowie: \r%i^n", playersInTeam(CS_TEAM_T));
len += format(text[len], 511 - len, "\r2. \w[\rCT\w] \yStraznicy: \r%i^n^n", playersInTeam(CS_TEAM_CT));
len += format(text[len], 511 - len, "\r6. \w[\rSpect\w] \yWidzowie: \r%i^n^n", playersInTeam(CS_TEAM_SPECTATOR));
 
if(gTeam[id])
len += format(text[len], 511 - len, "\r0. \yWyjdz");
 
show_menu(id, gTeam[id]? 0x223: 0x23, text, -1, "mainmenu");
return PLUGIN_HANDLED;
}
 
stock playersInTeam(CsTeams:team)
{
new iIle = 0, i;
 
for(i = 1 ; i <= get_maxplayers() ; i++)
{
if(!is_user_connected(i))
continue;
       
if(cs_get_user_team(i) == team)
iIle++;
}
return iIle;
}
 
 
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, "[JailBreak]^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 -1: 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<file_size(szFile, 1); i++)
{
if(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, "Jail");
}
 
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<sizeof(g_Buttons); i++)
{
if(!pev_valid(g_Buttons[i]) || !g_Buttons[i])
continue;
ExecuteHam(Ham_Use, g_Buttons[i], 0, 0, 2, 1.0);
}
}
 
 
 
AddArray(id, ktore)
{
if(free_day[id] || user_duszek[id])
return;
 
if(array_graczy[ktore][id])
return;
 
ostatni_wiezien = (ilosc_graczy[ktore]? 0: id);
 
array_graczy[ktore][id] = id;
ilosc_graczy[ktore]++;
}
 
DelArray(id, ktore)
{
if(free_day[id] || user_duszek[id])
return;
 
if(!array_graczy[ktore][id])
return;
 
array_graczy[ktore][id] = 0;
ilosc_graczy[ktore]--;
 
if(jail_day%7 && ktore == ZYWI)
{
switch(ilosc_graczy[ktore])
{
case 1:{ 
for(new i=1; i<=MAX; i++)
{
if(array_graczy[ktore][i])
{
ostatni_wiezien = array_graczy[ktore][i];
break;
}
}
}
default: ostatni_wiezien = 0;
}
}
}
 
AddPoszukiwany(attacker)
{
if(contain(szPoszukiwani, nazwa_gracza[attacker]) == -1)
{
new szTemp[512];
formatex(szTemp, charsmax(szTemp), "^n  %s%s", nazwa_gracza[attacker], szPoszukiwani);
copy(szPoszukiwani, charsmax(szPoszukiwani), szTemp);
 
set_pev(attacker, pev_body, 4);
}
if(task_exists(ID_DZWIEK_POSZ))
remove_task(ID_DZWIEK_POSZ);
 
dzwiek_poszukiwany();
set_task(1.0, "dzwiek_poszukiwany", ID_DZWIEK_POSZ, .flags="a", .repeat=9);
}
 
public dzwiek_poszukiwany()
client_cmd(0, "spk jb_cypis/uciekinier.wav");
 
DelPoszukiwany(id)
{
if(contain(szPoszukiwani, nazwa_gracza[id]) != -1)
{
new szTemp[512];
formatex(szTemp, charsmax(szTemp), "^n  %s", nazwa_gracza[id]);
replace_all(szPoszukiwani, charsmax(szPoszukiwani), szTemp, "");
}
}
 
stock ham_strip_weapon(id, wid)
{
if(!wid) 
return 0;
 
new szName[24];
get_weaponname(wid, szName, 23);
 
new ent;
while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", szName)) && pev(ent, pev_owner) != id) {}
if(!ent)
return 0;
 
if(get_user_weapon(id) == wid) 
ExecuteHam(Ham_Weapon_RetireWeapon, ent);
 
if(ExecuteHam(Ham_RemovePlayerItem, id, ent)) 
{
ExecuteHam(Ham_Item_Kill, ent);
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wid));
}
return 1;
}
 
stock Jaki_Pistolet(id)
{
if(!is_user_alive(id))
return 0;
 
new weapons[32], numweapons;
get_user_weapons(id, weapons, numweapons);
 
for(new i=0; i<numweapons; i++)
if((1<<weapons[i]) & 0x50FCF1A8)
return weapons[i];
 
return 0;
}
 

  • +
  • -
  • 0

Pomogłem ? Daj +


#5 DMNINI

    Życzliwy

  • Użytkownik

Reputacja: 4
Nowy

  • Postów:27
Offline

Napisano 03.07.2015 15:01

#include <amxmodx>
#include <amxmisc>
#include <fakemeta_util>
#include <hamsandwich>
#include <fun>
#include <cstrike>
#include <colorchat>
 
#include <engine> //tylko uzyte do zablokowania latarki
 
#define PLUGIN "Jail Mod"
#define VERSION "1.0.6a"
#define AUTHOR "Cypis"
 
//#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 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, "weaponbox", "DotykBroni");
RegisterHam(Ham_Use, "game_player_equip", "BlokowanieUse");
RegisterHam(Ham_Use, "player_weaponstrip", "BlokowanieUse");
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(106, BLOCK_SET); //block info player
set_msg_block(145, BLOCK_SET); //block dhud
set_msg_block(122, 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("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 /mute", "MenuMutowania");
 
register_message(77 ,"msg_TextMsg");
register_message(96, "msg_show_menu");
//register_impulse(100, "msg_FlashLight");
register_message(107, "msg_StatusIcon");
register_message(114, "msg_vgui_menu");
 
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();
//SyncHudObj2 = 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_ultra/v_palka.mdl";
SzModels[P_PALKA] = "models/jb_ultra/p_palka.mdl";
SzModels[V_PIESCI] = "models/jb_ultra/v_piesci.mdl";
SzModels[P_PIESCI] = "models/jb_ultra/p_piesci.mdl";
SzModels[V_REKAWICE] = "models/jb_ultra/v_rekawice.mdl";
SzModels[P_REKAWICE] = "models/jb_ultra/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_draxe/wiezien_draxe.mdl");
precache_model("models/player/klawisz_ultra/klawisz_ultra.mdl");
        precache_model("models/player/supervip/supervip.mdl");
        precache_model("models/player/supervipct/supervipct.mdl");
        precache_model("models/player/supervipct/supervipctT.mdl");
 
precache_sound("weapons/prawy_przycisk.wav");
precache_sound("weapons/uderzenie_mur_ultra.wav");
precache_sound("weapons/hit_ultra1.wav");
precache_sound("weapons/hit_ultra2.wav");
precache_sound("weapons/machanie_ultra.wav");
 
precache_sound("jb_ultra/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_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**JailBreak** ^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<ArraySize(gZyczeniaName); i++)
{
ArrayGetString(gZyczeniaName, i, szZyczenia, 31);
num_to_str(i+1, szID, 31);
menu_additem(menu, szZyczenia, szID);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuZyczen post");
#endif
return PLUGIN_HANDLED;
}
 
public Handel_Zyczenie(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || ostatni_wiezien != id)
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie pre");
#endif
new acces, szZyczenie[32], szID[32];
menu_item_getinfo(menu, item, acces, szID, 31, szZyczenie, 31, acces);
 
new iRet;
ExecuteForward(fLastPrisonerTakeWish, iRet, id, str_to_num(szID))
if(iRet == -1)
{
menu_display(id, menu);
ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Nie mozesz wybrac tego zyczenia!");
return;
}
 
ColorChat(0, TEAM_COLOR,"^x04**JailBreak**  ^x03%s ^x01wybral^x03 %s", nazwa_gracza[id], szZyczenie);
zyczenie_wybrane = true;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Zyczenie post");
#endif
}
////////////////////
 
public ZarejstrujZabawe(nazwa_zabawy[])
{
param_convert(1);
ArrayPushString(gZabawyName, nazwa_zabawy);
 
static ilosc = 8; ilosc++;
return ilosc;
}
 
new bool:zabawa_wybrana;
public MenuZabaw(id)
{
if(gTeam[id] != 2 || prowadzacy != id)
return PLUGIN_CONTINUE;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuZabaw pre");
#endif
if(!ArraySize(gZabawyName))
{
ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Nie ma zadnych zabaw na serwerze!");
return PLUGIN_CONTINUE;
}
 
if(zabawa_wybrana)
{
ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Juz wybrales dzisiaj zabawe");
return PLUGIN_CONTINUE;
}
 
new szZabawa[32], szID[32], menu = menu_create("Menu Zabaw:", "Handel_Menu_Zabaw");
for(new i=0; i<ArraySize(gZabawyName); i++)
{
ArrayGetString(gZabawyName, i, szZabawa, 31);
num_to_str(i+9, szID, 31);
menu_additem(menu, szZabawa, szID);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuZabaw post");
#endif
return PLUGIN_HANDLED;
}
 
public Handel_Menu_Zabaw(id, menu, item)
{
if(item == MENU_EXIT || zabawa_wybrana || prowadzacy != id)
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw pre");
#endif
new acces, szZabawa[32], szID[32];
menu_item_getinfo(menu, item, acces, szID, 31, szZabawa, 31, acces);
ColorChat(id, TEAM_COLOR,"^x04**JailBreak**  ^x01%s%s", UstawZabawe(str_to_num(szID), false)? "wlaczyles ": "juz jest za pozno, aby wlaczyc ", szZabawa);
 
zabawa_wybrana = true;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Menu_Zabaw post");
#endif
}
 
public UstawPredkosc(id, Float:speed)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawPredkosc pre");
#endif
user_speed[id] = speed;
if(end_usun)
{
new data[1];
data[0] = id;
set_task(g_FreezeTime-(get_systime()-gTimeStart)+0.1, "taskUstawPredkosc", ID_SPEED_FZ, data, 1);
}
else
set_user_maxspeed(id, speed);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawPredkosc post");
#endif
}
 
public taskUstawPredkosc(data[1])
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc pre");
#endif
set_user_maxspeed(data[0], user_speed[data[0]]);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "taskUstawPredkosc post");
#endif
}
 
public PobierzIdZabawy()
{
return id_zabawa;
}
 
public bool:PobierzPojedynek(id)
{
return pojedynek[id];
}
 
public bool:PobierzPoszukiwany(id)
{
return (contain(szPoszukiwani, nazwa_gracza[id]) != -1)? true: false;
}
 
public bool:PobierzMikrofon()
{
return bool:mode_gracza[MIKRO];
}
 
public bool:PobierzWalke()
{
return bool:mode_gracza[WALKA];
}
 
public bool:PobierzFreeday(id)
{
return free_day[id];
}
 
public bool:PobierzDuszka(id)
{
return user_duszek[id];
}
 
public PobierzOstatniego()
{
return ostatni_wiezien;
}
 
public PobierProwadzacego()
{
return prowadzacy;
}
 
public PobierzDni()
{
return jail_day%7;
}
 
public UstawMikrofon(bool:wartosc, bool:info)
{
if(ostatni_wiezien || dane_dnia[1])
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawMikrofon pre");
#endif
mode_gracza[MIKRO] = wartosc;
 
if(info)
ColorChat(0, TEAM_COLOR, "^x04**JailBreak**  ^x01Status mikro dla wiezniow: ^x03%s!", mode_gracza[MIKRO]? "wlaczone": "wylaczone");
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawMikrofon post");
#endif
}
 
public UstawWalke(bool:wartosc, bool:modele, bool:info)
{
if(ostatni_wiezien || (dane_dnia[1] && modele))
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawWalke pre");
#endif
mode_gracza[WALKA] = modele;
mode_gracza[FF_TT] = wartosc;
 
for(new i=1; i<=MAX; i++)
{
if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 1 || get_user_weapon(i) != CSW_KNIFE || free_day[i] || user_duszek[i])
continue;
 
set_user_health(i, 100);
set_pev(i, pev_viewmodel2, modele? SzModels[V_REKAWICE]: SzModels[V_PIESCI]);
set_pev(i, pev_weaponmodel2, modele? SzModels[P_REKAWICE]: SzModels[P_PIESCI]);
}
if(info)
ColorChat(0, TEAM_COLOR,"^x04**JailBreak**  ^x01Walka %s!", mode_gracza[WALKA]? "wlaczona": "wylaczona");
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawWalke post");
#endif
}
 
public UstawFreeday(id, bool:wartosc, bool:nextround)
{
if(!id || (dane_dnia[1] && !nextround))
return 0;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawFreeday pre");
#endif
if(!nextround && wartosc)
{
new podlicz = 0;
for(new i=1; i<=MAX; i++)
{
if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
podlicz++;
}
if(podlicz == 1)
return 0;
}
 
if(wartosc)
{
DelArray(id, WSZYSCY);
DelArray(id, ZYWI);
}
 
free_day[id] = wartosc;
ustaw_freeday[id] = nextround;
 
if(!wartosc)
{
AddArray(id, WSZYSCY);
AddArray(id, ZYWI);
}
 
set_pev(id, pev_body, wartosc? 3: random(3));
if(get_user_flags(id) & 524288 == 524288)
set_user_rendering(id, kRenderFxGlowShell, 0, 255, 0, kRenderNormal, 30);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawFreeday post");
#endif
return 1;
}
 
public UstawDuszka(id, bool:wartosc, bool:nextround)
{
if(!id || (dane_dnia[1] && !nextround))
return 0;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawDuszka pre");
#endif
if(!nextround && wartosc)
{
new podlicz = 0;
for(new i=1; i<=MAX; i++)
{
if(is_user_alive(i) && is_user_connected(i) && gTeam[i] == 1 && !free_day[i] && !user_duszek[i])
podlicz++;
}
if(podlicz == 1)
return 0;
}
 
if(wartosc)
{
DelArray(id, WSZYSCY);
DelArray(id, ZYWI);
}
 
user_duszek[id] = wartosc;
ustaw_duszka[id] = nextround;
 
if(!wartosc)
{
AddArray(id, WSZYSCY);
AddArray(id, ZYWI);
}
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, wartosc? 0: 255);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawDuszka post");
#endif
return 1;
}
 
public UstawTTGod(bool:wartosc)
{
mode_gracza[TT_GOD] = wartosc;
}
 
public UstawCTGod(bool:wartosc)
{
mode_gracza[CT_GOD] = wartosc;
}
 
public UstawCTHitTT(bool:wartosc)
{
mode_gracza[CT_NIE_MOZE_TT] = wartosc;
}
 
public UstawTTHitCT(bool:wartosc)
{
mode_gracza[TT_NIE_MOZE_CT] = wartosc;
}
 
public UstawBlokade(id, bool:wartosc)
{
pojedynek[id] = wartosc;
}
 
public UstawProwadzacego(id)
{
if(!dane_dnia[1])
{
if(prowadzacy != id && prowadzacy)
set_pev(prowadzacy, pev_body, 0);
 
prowadzacy = id;
if(id)
{
if(task_exists(ID_LOS_PROWADZACY))
remove_task(ID_LOS_PROWADZACY);
 
set_pev(id, pev_body, 1);
set_user_rendering(prowadzacy, kRenderFxGlowShell, 255, 255, 0, kRenderNormal, 15);
}
}
}
 
 
public UstawZabawe(zabawa, bool:fast)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawZabawe pre");
#endif
if(!fast)
{
if(czas_bronie || ilosc_graczy[WSZYSCY] != ilosc_graczy[ZYWI])
return 0;
 
if(mode_gracza[WALKA] || mode_gracza[FF_TT])
UstawWalke(false, false, false);
}
ForwardDayStartPre(zabawa);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UstawZabawe post");
#endif
return 1;
}
 
public MenuBroni(id)
{
if(!is_user_alive(id) || gTeam[id] != 2 || czas_bronie)
return PLUGIN_HANDLED;
 
UstawMenuWeapon(id, true, true, 0, 0);
return PLUGIN_HANDLED;
}
 
new bool:bronie_menu[MAX+1][2];
new bronie_bitsum[MAX+1][2];
new bronie_gracza[MAX+1][2];
public UstawMenuWeapon(id, bool:bronie, bool:pistolety, bitsum_bronie, bitsum_pistolety)
{
if(!bronie && !pistolety)
return;
 
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<<CSW_M4A1)))
menu_additem(menu, "M4A1", "22");
if(!(bronie_bitsum[id][0] & (1<<CSW_AK47)))
menu_additem(menu, "AK47", "28");
if(!(bronie_bitsum[id][0] & (1<<CSW_AWP)))
menu_additem(menu, "AWP", "18");
if(!(bronie_bitsum[id][0] & (1<<CSW_SCOUT)))
menu_additem(menu, "Scout", "3");
if(!(bronie_bitsum[id][0] & (1<<CSW_AUG)))
menu_additem(menu, "AUG", "8");
if(!(bronie_bitsum[id][0] & (1<<CSW_SG550)))
menu_additem(menu, "Krieg 550", "13");
if(!(bronie_bitsum[id][0] & (1<<CSW_M249)))
menu_additem(menu, "M249", "20");
if(!(bronie_bitsum[id][0] & (1<<CSW_MP5NAVY)))
menu_additem(menu, "MP5", "19");
if(!(bronie_bitsum[id][0] & (1<<CSW_UMP45)))
menu_additem(menu, "UMP45", "12");
if(!(bronie_bitsum[id][0] & (1<<CSW_FAMAS)))
menu_additem(menu, "Famas", "15");
if(!(bronie_bitsum[id][0] & (1<<CSW_GALIL)))
menu_additem(menu, "Galil", "14");
if(!(bronie_bitsum[id][0] & (1<<CSW_M3)))
menu_additem(menu, "M3", "21");
if(!(bronie_bitsum[id][0] & (1<<CSW_XM1014)))
menu_additem(menu, "XM1014", "5");
if(!(bronie_bitsum[id][0] & (1<<CSW_MAC10)))
menu_additem(menu, "Mac10", "7");
if(!(bronie_bitsum[id][0] & (1<<CSW_TMP)))
menu_additem(menu, "TMP", "23");
if(!(bronie_bitsum[id][0] & (1<<CSW_P90)))
menu_additem(menu, "P90", "30");
if(!(bronie_bitsum[id][0] & (1<<CSW_G3SG1)))
menu_additem(menu, "G3SG1 (autokampa)", "24");
if(!(bronie_bitsum[id][0] & (1<<CSW_SG552)))
menu_additem(menu, "Krieg 552 (autokampa)", "27");
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuBronie post");
#endif
}
 
public Handel_Bronie(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][0])
return;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Bronie pre");
#endif
 
new weaponname[24], data[3], weapon, callback;
menu_item_getinfo(menu, item, weapon, data, 2, _, _, callback);
 
if((callback = Jaki_Pistolet(id)) > 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<<CSW_USP)))
menu_additem(menu, "USP", "16");
if(!(bronie_bitsum[id][1] & (1<<CSW_GLOCK18)))
menu_additem(menu, "Glock", "17");
if(!(bronie_bitsum[id][1] & (1<<CSW_DEAGLE)))
menu_additem(menu, "Deagle", "26");
if(!(bronie_bitsum[id][1] & (1<<CSW_P228)))
menu_additem(menu, "P228", "1");
if(!(bronie_bitsum[id][1] & (1<<CSW_FIVESEVEN)))
menu_additem(menu, "FiveSeven", "11");
if(!(bronie_bitsum[id][1] & (1<<CSW_ELITE)))
menu_additem(menu, "Dual", "10");
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_display(id, menu);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuPistolety post");
#endif
}
 
public Handel_Pistolety(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || !bronie_menu[id][1])
return;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Pistolety pre");
#endif
 
new weaponname[24], data[3], weapon, callback;
menu_item_getinfo(menu, item, weapon, data, 2, _, _, 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][1] = weapon;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Pistolety post");
#endif
}
 
/********** - Koniec Native - ************/
 
public ButtonTraceAttack(ent, id, Float:damage, Float:direction[3], tracehandle, damagebits)
{
if(pev_valid(ent) && prowadzacy == id)
{
ExecuteHam(Ham_Use, ent, id, 0, 2, 1.0);
set_pev(ent, pev_frame, 0.0);
}
return HAM_IGNORED;
}
 
public TakeDamage(id, ent, attacker, Float:damage, damagebits)
return vAttackDamagePlayer(id, attacker, damage, damagebits, true);
 
public TraceAttack(id, attacker, Float:damage, Float:direction[3], tracehandle, damagebits)
return vAttackDamagePlayer(id, attacker);
 
vAttackDamagePlayer(id, attacker, Float:damage=0.0, damagebits=0, bool:dmg=false)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
if(gTeam[id] == 1 && mode_gracza[TT_GOD])
return HAM_SUPERCEDE;
 
if(gTeam[id] == 2 && mode_gracza[CT_GOD])
return HAM_SUPERCEDE;
 
if(is_user_connected(attacker))
{
if(gTeam[id] == 1 && gTeam[attacker] == 1 && !mode_gracza[FF_TT])
return HAM_SUPERCEDE;
 
if(gTeam[id] == 2 && gTeam[attacker] == 2)
return HAM_SUPERCEDE;
 
if(gTeam[id] == 1 && gTeam[attacker] == 2 && mode_gracza[CT_NIE_MOZE_TT])
return HAM_SUPERCEDE;
 
if(gTeam[id] == 2 && gTeam[attacker] == 1 && mode_gracza[TT_NIE_MOZE_CT])
return HAM_SUPERCEDE;
 
if(free_day[attacker] || gTeam[attacker] == 1 && free_day[id])
return HAM_SUPERCEDE;
 
if(user_duszek[id] && gTeam[attacker] == 1)
return HAM_SUPERCEDE;
 
if(user_duszek[attacker] && gTeam[id] == 2)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer pre");
#endif
user_duszek[attacker] = false;
set_user_rendering(attacker, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 255);
 
AddArray(attacker, WSZYSCY);
AddArray(attacker, ZYWI);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "vAttackDamagePlayer post");
#endif
return HAM_IGNORED;
}
 
if(dmg)
{
if(get_user_weapon(attacker) == CSW_KNIFE && damagebits & DMG_BULLET)
SetHamParamFloat(4, damage*0.4);
}
}
return HAM_IGNORED;
}
 
public Odrodzenie(id)
{
if(!is_user_alive(id) || !is_user_connected(id))
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Odrodzenie pre");
#endif
set_user_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderNormal, 0);
strip_user_weapons2(id);
 
switch(cs_get_user_team(id))
{
case CS_TEAM_T:
{
gTeam[id] = 1;
if(get_user_flags(id) & ADMIN_LEVEL_B){
cs_set_player_model(id, "supervip");
}else{
cs_set_player_model(id, "wiezien_draxe");
set_pev(id, pev_body, random(3));
}
AddArray(id, WSZYSCY);
AddArray(id, ZYWI);
}
case CS_TEAM_CT:
{
 
 
if(dane_dnia[4] < 2)
{
if(bronie_gracza[id][0] && bronie_gracza[id][1])
{
for(new i=0; i<2; i++)
{
new weaponname[24];
get_weaponname(bronie_gracza[id][i], weaponname, 23);
give_item(id, weaponname);
cs_set_user_bpammo(id, bronie_gracza[id][i], maxAmmo[bronie_gracza[id][i]]);
}
}
else if(!czas_bronie) {
UstawMenuWeapon(id, true, true, 0, 0);
}
}
gTeam[id] = 2;
if(get_user_flags(id) & ADMIN_LEVEL_B){
cs_set_player_model(id, "supervipct");
}else{
cs_set_player_model(id, "klawisz_ultra");
}
 
}
}
give_item(id, "weapon_knife");
 
if(free_day[id])
set_pev(id, pev_body, 3);
 
if(user_duszek[id])
set_user_rendering(id, kRenderFxNone, 0, 0, 0, kRenderTransAlpha, 0);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Odrodzenie post");
#endif
}
 
public OddajProwadzenie(id)
{
if(prowadzacy != id)
return PLUGIN_HANDLED;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "OddajProwadzenie pre");
#endif
new menu = menu_create("Oddaj Prowadzenie:", "Handel_Oddaj");
for(new i=1; i<=MAX; i++)
{
if(!is_user_alive(i) || !is_user_connected(i) || gTeam[i] != 2 || prowadzacy == i)
continue;
new num[3];
num_to_str(i, num, 2);
menu_additem(menu, nazwa_gracza[i], num);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "OddajProwadzenie post");
#endif
return PLUGIN_HANDLED;
}
 
public Handel_Oddaj(id, menu, item)
{
if(item == MENU_EXIT || !is_user_alive(id) || prowadzacy != id)
return;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Oddaj pre");
#endif
new data[3], acces, callback;
menu_item_getinfo(menu, item, acces, data, 2, _, _, callback);
prowadzacy = str_to_num(data);
ColorChat(0, GREEN, "**JailBreak** ^x01 Zmienil sie Prowadzacy - wszystkie dotychczasowe polecenia odwolane!");
 
set_pev(id, pev_body, 0);
set_pev(prowadzacy, pev_body, 1);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Oddaj post");
#endif
}
 
public WeaponKnife(ent)
{
new id = get_pdata_cbase(ent, 41, 4);
 
if(!is_user_alive(id))
return;
 
if(gTeam[id] == 1 && !mode_gracza[WALKA])
{
set_pev(id, pev_viewmodel2, SzModels[V_PIESCI]);
set_pev(id, pev_weaponmodel2, SzModels[P_PIESCI]);
}
else if(gTeam[id] == 1 && mode_gracza[WALKA])
{
set_pev(id, pev_viewmodel2, SzModels[V_REKAWICE]);
set_pev(id, pev_weaponmodel2, SzModels[P_REKAWICE]);
}
else if(gTeam[id] == 2)
{
set_pev(id, pev_viewmodel2, SzModels[V_PALKA]);
set_pev(id, pev_weaponmodel2, SzModels[P_PALKA]);
}
}
 
public EmitSound(id, channel, sample[])
{
if(!is_user_alive(id) || !is_user_connected(id)) 
return FMRES_IGNORED;
 
if(equal(sample, "weapons/knife_", 14))
{
switch(sample[17])
{
case ('b'): emit_sound(id, CHAN_WEAPON, "weapons/prawy_przycisk.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
case ('w'): emit_sound(id, CHAN_WEAPON, "weapons/uderzenie_mur_ultra.wav", 1.0, ATTN_NORM, 0, PITCH_LOW);
case ('s'): emit_sound(id, CHAN_WEAPON, "weapons/machanie_ultra.wav", 1.0, ATTN_NORM, 0, PITCH_NORM);
case ('1'): emit_sound(id, CHAN_WEAPON, "weapons/hit_ultra1.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
case ('2'): emit_sound(id, CHAN_WEAPON, "weapons/hit_ultra2.wav", random_float(0.5, 1.0), ATTN_NORM, 0, PITCH_NORM);
}
return FMRES_SUPERCEDE;
}
if(equal(sample, "common/wpn_denyselect.wav"))
return FMRES_SUPERCEDE;
return FMRES_IGNORED;
}
 
public AdminVoiceOn(id)
{
if(!(get_user_flags(id) & ADMIN_BAN))
return PLUGIN_HANDLED;
 
if(AdminVoice)
return PLUGIN_HANDLED;
 
AdminVoice = id;
 
ColorChat(0,GREEN,"**JailBreak** ^x01 Cisza! ^x03%s ^x01przemawia.", nazwa_gracza[id]);
client_cmd(id, "+voicerecord");
return PLUGIN_HANDLED;
}
 
public AdminVoiceOff(id)
{
if(!(get_user_flags(id) & ADMIN_BAN))
return PLUGIN_HANDLED;
 
if(AdminVoice != id)
{
client_cmd(id, "-voicerecord");
return PLUGIN_HANDLED;
}
client_cmd(id, "-voicerecord");
AdminVoice = 0;
return PLUGIN_HANDLED;
}
 
new bool:g_Muted[MAX+1][MAX+1];
public MenuMutowania(id)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuMutowania pre");
#endif
new menu = menu_create("Menu mutowania:", "Handel_Mute");
for(new i=1; i<=MAX; i++)
{
if(!is_user_connected(i) || is_user_hltv(i))
continue;
new num[3], szName[64];
num_to_str(i, num, 2);
szName = nazwa_gracza[i];
if(g_Muted[id][i])
add(szName, 63, " \r[MUTE]");
 
menu_additem(menu, szName, num);
}
 
menu_setprop(menu, MPROP_EXITNAME, "Wyjdz");
menu_setprop(menu, MPROP_BACKNAME, "Poprzednia strona");
menu_setprop(menu, MPROP_NEXTNAME, "Nastepna strona");
menu_display(id, menu);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "MenuMutowania post");
#endif
}
 
public Handel_Mute(id, menu, item)
{
if(item == MENU_EXIT )
return;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Mute pre");
#endif
new data[3], acces, id2;
menu_item_getinfo(menu, item, acces, data, 2, _, _, id2);
id2 = str_to_num(data);
 
g_Muted[id][id2] = !g_Muted[id][id2];
ColorChat(id, GREEN,"**JailBreak**  ^x01%s gracza ^x03%s", g_Muted[id][id2]? "Zmutowales": "Odmutowales", nazwa_gracza[id2]);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "Handel_Mute post");
#endif
}
 
public Voice_SetClientListening(odbiorca, nadawca, listen) 
{
if(odbiorca == nadawca)
return FMRES_IGNORED;
 
if(g_Muted[odbiorca][nadawca])
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
if(AdminVoice)
{
if(AdminVoice == nadawca)
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
return FMRES_SUPERCEDE;
}
else if(gTeam[nadawca] == 1)
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
}
 
if(gTeam[nadawca] == 1 && !mode_gracza[MIKRO])
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
 
if(is_user_alive(odbiorca))
{
if(is_user_alive(nadawca))
{
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, true);
return FMRES_SUPERCEDE;
}
engfunc(EngFunc_SetClientListening, odbiorca, nadawca, false);
return FMRES_SUPERCEDE;
}
return FMRES_IGNORED;
}
 
public BlokowanieUse(ent, id, activator, iType, Float:fValue)
{
if(!is_user_connected(id) || id == activator)
return HAM_IGNORED;
 
if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id] || free_day[id])
return HAM_SUPERCEDE;
 
return HAM_IGNORED;
}
 
public BlokowanieLeczenie(ent, id, activator, iType, Float:fValue)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
return HAM_SUPERCEDE;
 
return HAM_IGNORED;
}
 
public DotykBroni(weapon, id)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
if(free_day[id] || dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
return HAM_SUPERCEDE;
 
return HAM_IGNORED;
}
 
public BlockDrop(id)
{
if(dane_dnia[4] == 3 || dane_dnia[4] == gTeam[id] || pojedynek[id])
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
 
public SmiercGraczaPost(id, attacker, shouldgib)
{
if(!is_user_connected(id))
return HAM_IGNORED;
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost pre");
#endif
if(gTeam[id] == 1)
{
if(is_user_connected(attacker) && gTeam[attacker] == 1)
set_user_frags(attacker, get_user_frags(attacker)+2);
 
if(ostatni_wiezien == id)
{
for(new i=1; i<=MAX; i++)
{
if(is_user_alive(i) && is_user_connected(i) && (free_day[i] || user_duszek[i]))
{
user_kill(i);
free_day[i] = false;
user_duszek[i] = false;
}
}
}
DelPoszukiwany(id);
DelArray(id, ZYWI);
}
else if(gTeam[id] == 2)
{
if(is_user_connected(attacker) && gTeam[attacker] == 1 && !obsluga_dala && !dane_dnia[2])
{
AddPoszukiwany(attacker);
}
if(prowadzacy == id)
{
prowadzacy = 0;
if(!obsluga_dala && !dane_dnia[2])
set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
}
}
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "SmiercGraczaPost post");
#endif
return HAM_IGNORED;
}
 
public StatusShow(id)
{
new pid = read_data(2), team = gTeam[pid]; 
set_hudmessage(team == 1? 255: 0, 50, team == 1? 0: 255, -1.0, 0.9, 0, 0.01, 6.0);
ShowSyncHudMsg(id, SyncHudObj1, "%s: %s [%i]", team == 1? "Wiezien": "Straznik", nazwa_gracza[pid], get_user_health(pid));
}
 
public StatusHide(id)
ClearSyncHud(id, SyncHudObj1);
 
public msg_FlashLight(id)
{
if(gTeam[id] == 1)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}
 
public msg_TextMsg()
{
new message[32];
get_msg_arg_string(2, message, 31);
 
if(equal(message, "#Game_teammate_attack") || equal(message, "#Killed_Teammate"))
return PLUGIN_HANDLED;
 
if(equal(message, "#Terrorists_Win"))
{
set_msg_arg_string(2, "Wiezniowie wygrali!");
return PLUGIN_CONTINUE;
}
else if(equal(message, "#CTs_Win"))
{
set_msg_arg_string(2, "Klawisze wygrali!");
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Round_Draw"))
{
set_msg_arg_string(2, "Runda remisowa!")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Only_1_Team_Change"))
{
set_msg_arg_string(2, "Dozwolona tylko 1 zmiana druzyny!")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Switch_To_SemiAuto"))
{
set_msg_arg_string(2, "Zmieniono na tryb pol-automatyczny")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Switch_To_BurstFire"))
{
set_msg_arg_string(2, "Zmieniono na tryb serii")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Switch_To_FullAuto"))
{
set_msg_arg_string(2, "Zmieniono na tryb automatyczny")
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Game_Commencing"))
{
set_msg_arg_string(2, "Rozpoczecie Gry!");
return PLUGIN_CONTINUE;
}
else if(equal(message, "#Cannot_Be_Spectator"))
{
set_msg_arg_string(2, "Nie mozesz byc obserwatorem");
return PLUGIN_CONTINUE;
}
return PLUGIN_HANDLED;
}
 
public msg_StatusIcon(msgid, dest, id)
{
new szIcon[8];
get_msg_arg_string(2, szIcon, 7);
 
if(equal(szIcon, "buyzone") && get_msg_arg_int(1))
{
set_pdata_int(id, 235, get_pdata_int(id, 235) & ~(1<<0));
return PLUGIN_HANDLED;
}
return PLUGIN_CONTINUE;
}
 
public client_authorized(id)
{
set_user_info(id, "_vgui_menus", "0");
get_user_name(id, nazwa_gracza[id], 63);
}
 
public client_disconnect(id)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "client_disconnect pre");
#endif
if(AdminVoice == id)
AdminVoice = 0;
 
if(prowadzacy == id)
{
prowadzacy = 0;
set_task(1.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
}
 
if(ostatni_wiezien == id)
ostatni_wiezien = 0;
 
user_speed[id] = 0.0;
bronie_gracza[id][0] = 0;
bronie_gracza[id][1] = 0;
pojedynek[id] = false;
free_day[id] = false;
user_duszek[id] = false;
ustaw_freeday[id] = false;
ustaw_duszka[id] = false;
 
for(new i=1; i<=MAX; i++)
g_Muted[i][id] = false;
 
DelPoszukiwany(id);
if(gTeam[id] == 1)
{
DelArray(id, WSZYSCY);
DelArray(id, ZYWI);
}
gTeam[id] = 0;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "client_disconnect post");
#endif
}
 
public client_infochanged(id) 
{
get_user_info(id, "name", nazwa_gracza[id], 63);
}
 
public RoundRestart()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "RoundRestart");
#endif
usuwanie_ustawien = true;
}
 
public RoundEnd()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "RoundEnd");
#endif
end_usun = true;
czas_bronie = false;
}
 
public PreRoundStart()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PreRoundStart pre");
#endif
UsuwanieWydarzen();
if(usuwanie_ustawien)
{
jail_day = 0;
usuwanie_ustawien = false;
}
else
jail_day++;
 
 
if(jail_day)
{
gTimeStart = get_systime();
ForwardDayStartPre(jail_day%7);
}
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PreRoundStart post");
#endif
}
 
UsuwanieWydarzen()
{
//end_usun = true;
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen pre");
#endif
szInfo = "";
szInfoPosz = "";
szPoszukiwani = "";
ostatni_wiezien = 0;
prowadzacy = 0;
 
obsluga_dala = false;
pokaz_raz = false;
czas_bronie = false;
zabawa_wybrana = false;
zyczenie_wybrane = false
 
mode_gracza[WALKA] = false;
 
mode_gracza[MIKRO] = (get_pcvar_num(pCvarMikro) == 1? true: false);
 
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
 
if(task_exists(ID_DZWIEK_POSZ))
remove_task(ID_DZWIEK_POSZ);
 
if(task_exists(ID_LOS_PROWADZACY))
remove_task(ID_LOS_PROWADZACY);
 
if(task_exists(ID_CZAS))
remove_task(ID_CZAS);
 
if(task_exists(ID_FREZZ))
remove_task(ID_FREZZ);
 
if(task_exists(ID_SPEED_FZ))
remove_task(ID_SPEED_FZ);
 
for(new i=0; i<sizeof dane_dnia; i++)
dane_dnia[i] = 0;
 
for(new i=1; i<=MAX; i++)
{
array_graczy[WSZYSCY][i] = 0;
array_graczy[ZYWI][i] = 0;
 
user_speed[i] = 0.0;
pojedynek[i] = false;
 
bronie_menu[i][0] = false;
bronie_menu[i][1] = false;
 
if(ustaw_freeday[i])
{
ustaw_freeday[i] = false;
free_day[i] = true;
}
else
free_day[i] = false;
 
if(ustaw_duszka[i])
{
ustaw_duszka[i] = false;
user_duszek[i] = true;
}
else
user_duszek[i] = false;
}
 
ilosc_graczy[WSZYSCY] = 0;
ilosc_graczy[ZYWI] = 0;
 
new iRet;
ExecuteForward(fRemoveData, iRet, id_zabawa);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "UsuwanieWydarzen post");
#endif
}
 
public PostRoundStart()
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PostRoundStart pre");
#endif
end_usun = false;
set_task(60.0, "koniec_czasu", ID_CZAS);
 
if(!jail_day)
{
gTimeStart = get_systime()-g_FreezeTime;
ForwardDayStartPre(jail_day%7);
}
if(!prowadzacy && !dane_dnia[1])
set_task(15.0, "LosujProwadzacego", ID_LOS_PROWADZACY);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "PostRoundStart post");
#endif
}
 
ForwardDayStartPre(zabawa)
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre pre");
#endif
new iRet, is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), g_RoundTime+min(is_frezz, 0));
id_zabawa = zabawa;
 
new dane[1]
dane[0] = zabawa;
if(is_frezz)
set_task(is_frezz+0.1, "ForwardDayStartPost", ID_FREZZ, dane, 1);
else
ForwardDayStartPost(dane);
 
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPre post");
#endif
}
 
public ForwardDayStartPost(zabawa[1])
{
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost pre");
#endif
new iRet;
ExecuteForward(fDayStartPost, iRet, zabawa[0]);
#if defined DEBUG
log_to_file("jail_api_jailbreak.log", "ForwardDayStartPost post");
#endif
}
 
public koniec_czasu()
{
czas_bronie = true;
}
 
public LosujProwadzacego()
{
if(!prowadzacy)
{
if(((prowadzacy = RandomCT()) > 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**JailBreak** ^x01Przestan Kampic!");
ExecuteHam(Ham_TakeDamage, id, 0, 0, 5.0, (1<<14));
} 
else if(TimeAfk[id] == 18) 
{
ColorChat(id, TEAM_COLOR, "^x04**JailBreak**  ^x01Przestan Kampic!");
ExecuteHam(Ham_TakeDamage, id, 0, 0, 10.0, (1<<14));
}
else if(TimeAfk[id] >= 20)
{
ColorChat(id, TEAM_COLOR, "^x04**JailBreak**  ^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];
if(!prowadzacy && !szInfo[0])
{
formatex(szDay, 90, "Dzien %i - %s^nProwadzacy: Brak^n^n^nTyp dnia: Normalny^nWiezniow: %i/%i", jail_day, dni_tygodnia[jail_day%7], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
}
if(prowadzacy && !szInfo[0])
{
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: %s^n^n^nTyp dnia: Normalny^nWiezniow: %i/%i^nWiezniowie musza sie sluchac Prowadzacego", jail_day, dni_tygodnia[jail_day%7], nazwa_gracza[prowadzacy], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
}
else if(szInfo[0])
{
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: Brak^n^n^nTyp dnia: %s^nWiezniow: %i/%i", jail_day, dni_tygodnia[jail_day%7], szInfo, ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
}
if(prowadzacy && !szInfo[0] && ostatni_wiezien)
{
new nick[33];
get_user_name(ostatni_wiezien, nick, 31);
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: %s^n^n^nTyp dnia: Normalny^nWiezniow: %i/%i^nOstatni wiezien: %s ^nWiezniowie musza sie sluchac Prowadzacego", jail_day, dni_tygodnia[jail_day%7], nazwa_gracza[prowadzacy], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY], nick);
}
else if(szInfo[0] && ostatni_wiezien) 
{
new nick[33];
get_user_name(ostatni_wiezien, nick, 31);
set_hudmessage(255, 255, 0, 0.10, 0.05, 0, 0.01, 1.0);
formatex(szDay, 200, "Dzien %i - %s^nProwadzacy: Brak^n^n^nTyp dnia: %s^nWiezniow: %i/%i^nOstatni wiezien: %s ^n", jail_day, dni_tygodnia[jail_day%7], szInfo, ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY], nick);
}
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**JailBreak** ^x01 Obsluga wiezienia pozwolila wybrac zyczenie!");
obsluga_dala = true;
 
new iRet;
ExecuteForward(fLastPrisonerShowWish, iRet, ostatni_wiezien);
}
case 1:
{ 
ColorChat(0, TEAM_COLOR, "^x04**JailBreak** ^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. \w[\rTT\w] \yWiezniowie: \r%i^n", playersInTeam(CS_TEAM_T));
len += format(text[len], 511 - len, "\r2. \w[\rCT\w] \yStraznicy: \r%i^n^n", playersInTeam(CS_TEAM_CT));
len += format(text[len], 511 - len, "\r6. \w[\rSpect\w] \yWidzowie: \r%i^n^n", playersInTeam(CS_TEAM_SPECTATOR));
 
if(gTeam[id])
len += format(text[len], 511 - len, "\r0. \yWyjdz");
 
show_menu(id, gTeam[id]? 0x223: 0x23, text, -1, "mainmenu");
return PLUGIN_HANDLED;
}
 
stock playersInTeam(CsTeams:team)
{
new iIle = 0, i;
 
for(i = 1 ; i <= get_maxplayers() ; i++)
{
if(!is_user_connected(i))
continue;
       
if(cs_get_user_team(i) == team)
iIle++;
}
return iIle;
}
 
 
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, "[JailBreak]^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 -1: 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<file_size(szFile, 1); i++)
{
if(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, "Jail");
}
 
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<sizeof(g_Buttons); i++)
{
if(!pev_valid(g_Buttons[i]) || !g_Buttons[i])
continue;
ExecuteHam(Ham_Use, g_Buttons[i], 0, 0, 2, 1.0);
}
}
 
 
 
AddArray(id, ktore)
{
if(free_day[id] || user_duszek[id])
return;
 
if(array_graczy[ktore][id])
return;
 
ostatni_wiezien = (ilosc_graczy[ktore]? 0: id);
 
array_graczy[ktore][id] = id;
ilosc_graczy[ktore]++;
}
 
DelArray(id, ktore)
{
if(free_day[id] || user_duszek[id])
return;
 
if(!array_graczy[ktore][id])
return;
 
array_graczy[ktore][id] = 0;
ilosc_graczy[ktore]--;
 
if(jail_day%7 && ktore == ZYWI)
{
switch(ilosc_graczy[ktore])
{
case 1:{ 
for(new i=1; i<=MAX; i++)
{
if(array_graczy[ktore][i])
{
ostatni_wiezien = array_graczy[ktore][i];
break;
}
}
}
default: ostatni_wiezien = 0;
}
}
}
 
AddPoszukiwany(attacker)
{
if(contain(szPoszukiwani, nazwa_gracza[attacker]) == -1)
{
new szTemp[512];
formatex(szTemp, charsmax(szTemp), "^n  %s%s", nazwa_gracza[attacker], szPoszukiwani);
copy(szPoszukiwani, charsmax(szPoszukiwani), szTemp);
 
set_pev(attacker, pev_body, 4);
}
if(task_exists(ID_DZWIEK_POSZ))
remove_task(ID_DZWIEK_POSZ);
 
dzwiek_poszukiwany();
set_task(1.0, "dzwiek_poszukiwany", ID_DZWIEK_POSZ, .flags="a", .repeat=9);
}
 
public dzwiek_poszukiwany()
client_cmd(0, "spk jb_cypis/uciekinier.wav");
 
DelPoszukiwany(id)
{
if(contain(szPoszukiwani, nazwa_gracza[id]) != -1)
{
new szTemp[512];
formatex(szTemp, charsmax(szTemp), "^n  %s", nazwa_gracza[id]);
replace_all(szPoszukiwani, charsmax(szPoszukiwani), szTemp, "");
}
}
 
stock ham_strip_weapon(id, wid)
{
if(!wid) 
return 0;
 
new szName[24];
get_weaponname(wid, szName, 23);
 
new ent;
while((ent = engfunc(EngFunc_FindEntityByString, ent, "classname", szName)) && pev(ent, pev_owner) != id) {}
if(!ent)
return 0;
 
if(get_user_weapon(id) == wid) 
ExecuteHam(Ham_Weapon_RetireWeapon, ent);
 
if(ExecuteHam(Ham_RemovePlayerItem, id, ent)) 
{
ExecuteHam(Ham_Item_Kill, ent);
set_pev(id, pev_weapons, pev(id, pev_weapons) & ~(1<<wid));
}
return 1;
}
 
stock Jaki_Pistolet(id)
{
if(!is_user_alive(id))
return 0;
 
new weapons[32], numweapons;
get_user_weapons(id, weapons, numweapons);
 
for(new i=0; i<numweapons; i++)
if((1<<weapons[i]) & 0x50FCF1A8)
return weapons[i];
 
return 0;
}


  • +
  • -
  • 1

#6 Ken U DZ

    Życzliwy

  • Autor tematu
  • Użytkownik

Reputacja: 1
Nowy

  • Postów:28
  • GG:
  • Imię:Dominik
Offline

Napisano 03.07.2015 15:38

Dzięki a wie ktoś co mam dopisać do zabawy aby TT otrzymywało tą tarcze ?


  • +
  • -
  • 0

Pomogłem ? Daj +





Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych