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 nową rundą JailBreak


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

#1 Anonymuss

    Profesjonalista

  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:194
  • Imię:Anonimowy
  • Lokalizacja:Polska
Offline

Napisano 21.04.2018 19:44

Witam. Posiadam paczkę JailBreak na starym silniku by Cypis 1.0.6a. Problem polega na tym, że gdy czas rundy dobiegnie do końca następuje kolejna rundy. Powinno być zatrzymanie się licznika na 0:00 i poczekanie aż TT wybierze życzenie lub dopóki nie zginą wszyscy TT/CT. Nie wiem czym może być to spowodowane bo kiedyś na tym silniku miałem serwer i wszystko działało jak należy. Zostawiam + za szybką pomoc


  • +
  • -
  • 0

#2 Robiin

    Godlike

  • Support Team

Reputacja: 1 106
Super Hero

  • Postów:2 049
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 21.04.2018 20:11

Wyłącz dodatkowe pluginy poza silnikiem i daj znać, czy problem leży w samym silniku.


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#3 Anonymuss

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:194
  • Imię:Anonimowy
  • Lokalizacja:Polska
Offline

Napisano 21.04.2018 20:59

Wyłącz dodatkowe pluginy poza silnikiem i daj znać, czy problem leży w samym silniku.

Wyłączyłem reszte, zostawiłem tylko silnik i pluginy do niego (menu itd..) a problem dalej jest. Dodam też że wszystko testuje na mapie de_dust chociaż to nie powinno mieć znaczenia.


  • +
  • -
  • 0

#4 Robiin

    Godlike

  • Support Team

Reputacja: 1 106
Super Hero

  • Postów:2 049
  • Imię:Robert
  • Lokalizacja:Wrocław
Offline

Napisano 21.04.2018 21:08

Podrzuć sma silnika w pliku / na wklejce, albo funkcję, która miała za zadanie blokować koniec rundy.

Mapa nie ma nic do tego.


  • +
  • -
  • 0

Nie dołączam do żadnej sieci, nie pomagam z tworzeniem paczek, nie napisze pluginów za zero.


#5 Anonymuss

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:194
  • Imię:Anonimowy
  • Lokalizacja:Polska
Offline

Napisano 21.04.2018 21:25

#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 bool:g_bPlayerZaglosowal[MAX+1];

new szInfo[257], szInfoPosz[513], dane_dnia[11], gTimeStart, id_zabawa;
new fLastPrisonerShowWish, fLastPrisonerTakeWish, fRemoveData, fDayStartPre, fDayStartPost, fJoinTeam;
new ProwadzacyMenu;

new pCvarMikro;

new Float:user_speed[MAX+1];

new g_RoundTime, g_FreezeTime;

new g_Buttons[10];

public plugin_init() 
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "plugin_init pre");
#endif
	register_plugin(PLUGIN, VERSION, AUTHOR);
	
	RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
	RegisterHam(Ham_TakeDamage, "player", "TakeDamage");
	RegisterHam(Ham_TraceAttack, "player", "TraceAttack");
	RegisterHam(Ham_Killed, "player", "SmiercGraczaPost", 1);
	
	RegisterHam(Ham_Item_Deploy, "weapon_knife", "WeaponKnife", 1);
	RegisterHam(Ham_TraceAttack, "func_button", "ButtonTraceAttack");
	
	RegisterHam(Ham_Touch, "armoury_entity", "DotykBroni");
	RegisterHam(Ham_Touch, "weapon_shield", "DotykBroni");
	RegisterHam(Ham_Touch, "weaponbox", "DotykBroni");
	RegisterHam(Ham_Use, "game_player_equip", "BlokowanieUse");
	RegisterHam(Ham_Use, "player_weaponstrip", "BlokowanieUse");
	RegisterHam(Ham_Use, "func_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("jointeam 2", "BlokujKomende");
	register_clcmd("vote", "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 /cele", "MenuVoteCele");	
	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("\dPozwol 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_anonymuss/v_palka.mdl";
	SzModels[P_PALKA] = "models/jb_anonymuss/p_palka.mdl";
	SzModels[V_PIESCI] = "models/jb_anonymuss/v_piesci.mdl";
	SzModels[P_PIESCI] = "models/jb_anonymuss/p_piesci.mdl";
	SzModels[V_REKAWICE] = "models/jb_anonymuss/v_rekawice.mdl";
	SzModels[P_REKAWICE] = "models/jb_anonymuss/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/new_wiezien/new_wiezien.mdl");
	precache_model("models/player/CT_Psiak/CT_Psiak.mdl");
	
	
         precache_model("models/player/perfect_vector_vip_ct/perfect_vector_vip_ct.mdl");
         precache_model("models/player/mudzinttvip/mudzinttvip.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_anonymuss/uciekinier.wav");
	
	precache_generic("sprites/weapon_piesci.txt");  
	precache_generic("sprites/weapon_palka.txt");  
	precache_generic("sprites/640hud41.spr");  
}

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

new Array:gZabawyName;
new Array:gZyczeniaName;
public plugin_natives()
{
	gZabawyName = ArrayCreate(32);
	gZyczeniaName = ArrayCreate(32);
	
	register_native("jail_register_game", "ZarejstrujZabawe", 1);
	register_native("jail_register_wish", "ZarejstrujZyczenie", 1);

	register_native("jail_set_game_hud", "jail_set_game_hud_p", 0);
	
	register_native("jail_get_prisoners_micro", "PobierzMikrofon", 1);
	register_native("jail_get_prisoners_fight", "PobierzWalke", 1);
	register_native("jail_get_prisoner_free", "PobierzFreeday", 1);
	register_native("jail_get_prisoner_ghost", "PobierzDuszka", 1);
	register_native("jail_get_prisoner_last", "PobierzOstatniego", 1);
	register_native("jail_get_prowadzacy", "PobierProwadzacego", 1);
	register_native("jail_get_poszukiwany", "PobierzPoszukiwany", 1);
	register_native("jail_get_user_block", "PobierzPojedynek", 1);
	register_native("jail_get_play_game_id", "PobierzIdZabawy", 1);
	register_native("jail_get_days", "PobierzDni", 1);
	
	register_native("jail_set_prisoners_micro", "UstawMikrofon", 1);
	register_native("jail_set_prisoners_fight", "UstawWalke", 1);
	register_native("jail_set_prisoner_free", "UstawFreeday", 1);
	register_native("jail_set_prisoner_ghost", "UstawDuszka", 1);
	register_native("jail_set_prowadzacy", "UstawProwadzacego", 1);
	register_native("jail_set_god_tt", "UstawTTGod", 1);
	register_native("jail_set_god_ct", "UstawCTGod", 1);
	register_native("jail_set_ct_hit_tt", "UstawCTHitTT", 1);
	register_native("jail_set_tt_hit_ct", "UstawTTHitCT", 1);
	register_native("jail_set_user_block", "UstawBlokade", 1);
	register_native("jail_set_play_game", "UstawZabawe", 1);
	register_native("jail_set_user_menuweapons", "UstawMenuWeapon", 1);
	register_native("jail_set_user_speed", "UstawPredkosc", 1);
	
	register_native("jail_open_cele", "OtworzCele", 1);
}

public ZarejstrujZyczenie(nazwa_zyczenia[])
{
	param_convert(1);
	ArrayPushString(gZyczeniaName, nazwa_zyczenia);
	static ilosc; ilosc++;
	return ilosc;
}

new bool:zyczenie_wybrane;
public OnLastPrisonerShowWish(id)
{
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "OnLastPrisonerShowWish pre");
#endif
	MenuZyczen(id);
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "OnLastPrisonerShowWish post");
#endif
}

public MenuZyczen(id)
{
	if(gTeam[id] != 1 || ostatni_wiezien != id || zyczenie_wybrane || !obsluga_dala)
		return PLUGIN_HANDLED;
		
#if defined DEBUG
	log_to_file("jail_api_jailbreak.log", "MenuZyczen pre");
#endif
	if(!ArraySize(gZyczeniaName))
	{
		ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Nie ma zadnych zyczen na serwerze!");
		return PLUGIN_HANDLED;
	}
		
	new szZyczenia[32], szID[32], menu = menu_create("\dWybierz 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, "\d| \rWyjdz \d|");
	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("\dMenu 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, "\d| \rWyjdz \d|");
	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) & ADMIN_LEVEL_B)
		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("\dWybierz Bronie:", "Handel_Bronie");

	new aktywna=menu_makecallback("aktywna_func");
	new nieaktywna=menu_makecallback("nieaktywna_func");

	if(!(bronie_bitsum[id][0] & (1<<CSW_M4A1)))
		if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_B) menu_additem(menu, "\d[\yM4A1\d] \y[\rVIP\d|\rSVIP\y]", "22", aktywna);
		else menu_additem(menu, "[M4A1] [VIP|SVIP]", "22", nieaktywna)
	if(!(bronie_bitsum[id][0] & (1<<CSW_AK47)))
		if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_B) menu_additem(menu, "\d[\yAK47\d] \y[\rVIP\d|\rSVIP\y]", "28", aktywna);
		else menu_additem(menu, "[AK47] [VIP|SVIP]", "28", nieaktywna)
	if(!(bronie_bitsum[id][0] & (1<<CSW_AWP)))
		menu_additem(menu, "\d[\yAWP\d]", "18");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SCOUT)))
		menu_additem(menu, "\d[\yScout\d]", "3");
	if(!(bronie_bitsum[id][0] & (1<<CSW_AUG)))
		menu_additem(menu, "\d[\yAUG\d]", "8");
	if(!(bronie_bitsum[id][0] & (1<<CSW_SG550)))
		menu_additem(menu, "\d[\yKrieg 550\d]", "13");
	if(!(bronie_bitsum[id][0] & (1<<CSW_M249)))
		menu_additem(menu, "\d[\yM249\d]", "20");
	if(!(bronie_bitsum[id][0] & (1<<CSW_MP5NAVY)))
		menu_additem(menu, "\d[\yMP5\d]", "19");
	if(!(bronie_bitsum[id][0] & (1<<CSW_UMP45)))
		menu_additem(menu, "\d[\yUMP45\d]", "12");
	if(!(bronie_bitsum[id][0] & (1<<CSW_FAMAS)))
		menu_additem(menu, "\d[\yFamas\d]", "15");
	if(!(bronie_bitsum[id][0] & (1<<CSW_GALIL)))
		menu_additem(menu, "\d[\yGalil\d]", "14");
	if(!(bronie_bitsum[id][0] & (1<<CSW_M3)))
		menu_additem(menu, "\d[\yM3\d]", "21");
	if(!(bronie_bitsum[id][0] & (1<<CSW_XM1014)))
		menu_additem(menu, "\d[\yXM1014\d]", "5");
	if(!(bronie_bitsum[id][0] & (1<<CSW_MAC10)))
		menu_additem(menu, "\d[\yMac10\d]", "7");
	if(!(bronie_bitsum[id][0] & (1<<CSW_TMP)))
		menu_additem(menu, "\d[\yTMP\d]", "23");
	if(!(bronie_bitsum[id][0] & (1<<CSW_P90)))
		menu_additem(menu, "\d[\yP90\d]", "30");
	if(!(bronie_bitsum[id][0] & (1<<CSW_G3SG1)))
		if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_B) menu_additem(menu, "\d[\yG3SG1 (autokampa)\d] \y[\rVIP\d|\rSVIP\y]", "24", aktywna);
		else menu_additem(menu, "[G3SG1 (autokampa)] [VIP|SVIP]", "24", nieaktywna)
	if(!(bronie_bitsum[id][0] & (1<<CSW_SG552)))
		if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_B) menu_additem(menu, "\d[\yKrieg 552 (autokampa)\d] \y[\rVIP\d|\rSVIP\y]", "27", aktywna);
		else menu_additem(menu, "[Krieg 552 (autokampa)] [VIP|SVIP]", "13", nieaktywna)
		
	menu_setprop(menu, MPROP_EXITNAME, "\d| \rWyjdz \d|");
	menu_setprop(menu, MPROP_BACKNAME, "\d| \y<<< \d|");
	menu_setprop(menu, MPROP_NEXTNAME, "\d| \y>>> \d|");
	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("\dWybierz Pistolet:", "Handel_Pistolety");

	new aktywna=menu_makecallback("aktywna_func");
	new nieaktywna=menu_makecallback("nieaktywna_func");

	if(!(bronie_bitsum[id][1] & (1<<CSW_USP)))
		menu_additem(menu, "\d[\yUSP\d]",	"16");
	if(!(bronie_bitsum[id][1] & (1<<CSW_GLOCK18)))
		menu_additem(menu, "\d[\yGlock\d]", 	"17");
	if(!(bronie_bitsum[id][1] & (1<<CSW_DEAGLE)))
		if(get_user_flags(id) & ADMIN_LEVEL_H || get_user_flags(id) & ADMIN_LEVEL_B) menu_additem(menu, "\d[\yDeagle\d] \y[\rVIP\d|\rSVIP\y]", "26", aktywna);
		else menu_additem(menu, "[Deagle] [VIP|SVIP]", "26", nieaktywna)
	if(!(bronie_bitsum[id][1] & (1<<CSW_P228)))
		menu_additem(menu, "\d[\yP228\d]",	"1");
	if(!(bronie_bitsum[id][1] & (1<<CSW_FIVESEVEN)))
		menu_additem(menu, "\d[\yFiveSeven\d]", "11");
	if(!(bronie_bitsum[id][1] & (1<<CSW_ELITE)))
		menu_additem(menu, "\d[\yDual\d]", 	"10");
	
	menu_setprop(menu, MPROP_EXITNAME, "\d| \rWyjdz \d|");
	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, "mudzinttvip"); /////////////////////////////////////////////////////////////////////
			}else{
			cs_set_player_model(id, "new_wiezien");
			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, "perfect_vector_vip_ct");
			}else{
			cs_set_player_model(id, "CT_Psiak"); //////////////////////////////////////////////////////////////
			}
			
		}
	}
	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("\dOddaj 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, "\d| \rWyjdz \d|");
	menu_setprop(menu, MPROP_BACKNAME, "\d| \y<<< \d|");
	menu_setprop(menu, MPROP_NEXTNAME, "\d| \y>>> \d|");
	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_KICK))
		return PLUGIN_HANDLED;

	if(AdminVoice)
		return PLUGIN_HANDLED;

	AdminVoice = id;

	ColorChat(0,GREEN,"**JailBreak** ^x01 Cisza! Admin ^x03%s ^x01przemawia. Kazdy TT zostal zmutowany.", nazwa_gracza[id]);
	client_cmd(id, "+voicerecord");
	return PLUGIN_HANDLED;
}

public AdminVoiceOff(id)
{
	if(!(get_user_flags(id) & ADMIN_KICK))
		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("\dMenu 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, " \d[\yZmutowany\d]");
			
		menu_additem(menu, szName, num);
	}
	
	menu_setprop(menu, MPROP_EXITNAME, "\d| \rWyjdz \d|");
	menu_setprop(menu, MPROP_BACKNAME, "\d| \y<<< \d|");
	menu_setprop(menu, MPROP_NEXTNAME, "\d| \y>>> \d|");
	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()
{
	
	usuwanie_ustawien = true;
	end_usun = true;
	UsuwanieWydarzen();
}
 
public RoundEnd()
{
	
	end_usun = true;
	czas_bronie = false;
	UsuwanieWydarzen();
}
 
 
 
public PreRoundStart()
{	
	end_usun = true;
	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] = bool:get_pcvar_num(pCvarMikro);
	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);
	
	if(task_exists(2761234, 1))
		remove_task(2761234, 1);
	
	for(new i=0; i<=10; i++)
		dane_dnia[i] = 0;
	
	if(usuwanie_ustawien)
	{
		jail_day = 0;
		usuwanie_ustawien = false;
	}
	else
		jail_day++;
	
	if(jail_day)
	{
		gTimeStart = get_systime();
		ForwardDayStartPre(jail_day%7);
	}
	
}
 
UsuwanieWydarzen()
{
for(new i=1; i<=32; i++)
{
	if(is_user_connected(i))
		cs_reset_user_model(i);
		
		pojedynek[i] = false;
		
		user_speed[i] = 0.0;
		array_graczy[WSZYSCY][i] = 0;
		array_graczy[ZYWI][i] = 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 Return_F
	if(fRemoveData)
		ExecuteForward(fRemoveData, Return_F, id_zabawa);
}
 
public PostRoundStart()
{
	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);
}
 
ForwardDayStartPre(zabawa)
{
new iRet
new is_frezz = g_FreezeTime-(get_systime()-gTimeStart);
new czas = g_RoundTime+min(is_frezz, 0);
 
ExecuteForward(fDayStartPre, iRet, zabawa, PrepareArray(szInfo, 256, 1), PrepareArray(szInfoPosz, 512, 1), PrepareArray(dane_dnia, 10, 1), czas);
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);
	
}

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! ^x03Kara:^x04 5HP");
						ExecuteHam(Ham_TakeDamage, id, 0, 0, 5.0, (1<<14));
					} 
					else if(TimeAfk[id] == 18) 
					{
						ColorChat(id, TEAM_COLOR, "^x04**JailBreak**  ^x01Przestan Kampic! ^x03Kara:^x04 10HP");
						ExecuteHam(Ham_TakeDamage, id, 0, 0, 10.0, (1<<14));
					}
					else if(TimeAfk[id] >= 20)
					{
						ColorChat(id, TEAM_COLOR, "^x04**JailBreak**  ^x01Przestan Kampic! ^x03Kara:^x04 20HP");
						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 | Prowadzacy: Brak^nTyp dnia: Normalny | Wiezniow: %i/%i", jail_day, dni_tygodnia[jail_day%7], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
		set_hudmessage(0, 150, 255, 0.18, 0.01, 2, 0.1, 3.0, 0.01, 2.0);
	}
	if(prowadzacy && !szInfo[0])
	{	
		set_hudmessage(0, 150, 255, 0.18, 0.01, 2, 0.1, 3.0, 0.01, 2.0);
		formatex(szDay, 200, "Dzien %i - %s | Prowadzacy: %s^nTyp dnia: Normalny | Wiezniow: %i/%i", jail_day, dni_tygodnia[jail_day%7], nazwa_gracza[prowadzacy], ilosc_graczy[ZYWI], ilosc_graczy[WSZYSCY]);
	}
	else if(szInfo[0])
	{
		set_hudmessage(0, 150, 255, 0.18, 0.01, 2, 0.1, 3.0, 0.01, 2.0);
		formatex(szDay, 200, "Dzien %i - %s | Typ 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(0, 150, 255, 0.18, 0.01, 2, 0.1, 3.0, 0.01, 2.0);
		formatex(szDay, 200, "Dzien %i - %s | Prowadzacy: %s^nTyp dnia: Normalny | Ostatni wiezien: %s", jail_day, dni_tygodnia[jail_day%7], nazwa_gracza[prowadzacy], nick);
	}
	else if(szInfo[0] && ostatni_wiezien) 
	{
		new nick[33];
		get_user_name(ostatni_wiezien, nick, 31);
		set_hudmessage(0, 150, 255, 0.18, 0.01, 2, 0.1, 3.0, 0.01, 2.0);
		formatex(szDay, 200, "Dzien %i - %s | Prowadzacy: Brak^nTyp dnia: %s | Ostatni wiezien: %s", jail_day, dni_tygodnia[jail_day%7], szInfo, 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, "\wBilans: 1 CT = 6 TT^n^n");
	len += format(text[len], 511 - len, "\dWybierz druzyne:^n");
	len += format(text[len], 511 - len, "\y[\w1\y] \d| \r[\dTT\r] \yWiezniowie \d| : \r%i^n", playersInTeam(CS_TEAM_T));
	len += format(text[len], 511 - len, "\y[\w2\y] \d| \r[\dCT\r] \yStraznicy \d| : \r%i^n^n", playersInTeam(CS_TEAM_CT));
	len += format(text[len], 511 - len, "\y[\w6\y] \d| \r[\dSpect | AFK\r] \yWidzowie \d| : \r%i^n^n", playersInTeam(CS_TEAM_SPECTATOR));
	
	if(gTeam[id])
		len += format(text[len], 511 - len, "\y[\w0\y] \d| \rWyjdz \d|");
	
	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("\dUstaw przycisk do cel:", "Handel_Cele");

	menu_additem(menu, "Przycisk 1^n\d~ Jesli sa dwa przyciski do cel, uzyj Przycisk 2");
	menu_additem(menu, "Przycisk 2");
	menu_additem(menu, "\rUsun Przyciski");
	
	menu_setprop(menu, MPROP_EXITNAME, "\d| \rWyjdz \d|");
	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_anonymuss/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;
}
public MenuVoteCele(id)
{
	if(!is_user_alive(id) || gTeam[id] != 1 || g_bPlayerZaglosowal[id])
	return PLUGIN_HANDLED;
	
	if(!czas_bronie)
	{
		ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Za wczesnie aby zaglosowac na otwarcie cel!");
		return PLUGIN_HANDLED;
	}
	
	if(zabawa_wybrana)
	{
		ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Nie mozesz glosowac na zabawie!");
		return PLUGIN_HANDLED;
	}

	g_bPlayerZaglosowal[id] = true;
	new glosy[2];
	for(new i=1; i<=MAX; i++)
	{
		if(!is_user_alive(i) || gTeam[i] != 1)
		continue;
		
		glosy[0]++;
		if(!g_bPlayerZaglosowal[i])
		continue;
		
		glosy[1]++;
	}
		
	if(glosy[1] >= glosy[0])
	{
		for(new i=1; i<=MAX;i++)
		g_bPlayerZaglosowal[i] = false;
		
		OtworzCele();
		ColorChat(0, TEAM_COLOR,"^x04**JailBreak** ^x01Wiezniowie sie zbuntowali i otworzyli sobie cele!");
		return PLUGIN_HANDLED;
	}
	
	ColorChat(id, TEAM_COLOR,"^x04**JailBreak** ^x01Zaglosowales na otworzenie cel. Glosow %d/%d!", glosy[1], glosy[0]);
	return PLUGIN_HANDLED;
}

new CzasHudOdliczanie = 0, szMessage_JB_CYPIS[64];
#define TASK_ID_HUD 2761234
new hud_data[6];

public jail_set_game_hud_p(plugin, params) 
{	
	CzasHudOdliczanie = get_param(1);
	get_string(2, szMessage_JB_CYPIS, 63);
	hud_data[0] = clamp(get_param(3), 0, 255);
	hud_data[1] = clamp(get_param(4), 0, 255);
	hud_data[2] = clamp(get_param(5), 0, 255);
	hud_data[3] = floatround(get_param_f(6)*100)
	hud_data[4] = floatround(get_param_f(7)*100)
	hud_data[5] = plugin;
	
	
	if(!hud_data[0] && !hud_data[1] && !hud_data[2])
	{
		hud_data[0] = 0;
		hud_data[1] = 127;
		hud_data[2] = 255;
	}
	
	if(!hud_data[3] && !hud_data[4])
	{
		hud_data[3] = 50;
		hud_data[4] = 70;
	}
	
	remove_task(TASK_ID_HUD, 1);
	TimesHud();
}

public TimesHud()
{
	new iRet;

	if(--CzasHudOdliczanie > 0)
	{
		new szTime[32], iFwdHandle = CreateOneForward(hud_data[5], "OnGameHudTick", FP_CELL, FP_CELL);
		ExecuteForward(iFwdHandle, iRet, id_zabawa, CzasHudOdliczanie);
		DestroyForward(iFwdHandle);
		
		format_time(szTime, 31, "%M:%S", CzasHudOdliczanie);
		
		set_hudmessage(hud_data[0], hud_data[1], hud_data[2], hud_data[3]/100.0, hud_data[4]/100.0, 0, 0.01, 1.0);
		show_hudmessage(0, "%s [%s]", szMessage_JB_CYPIS, szTime);
		
		if(CzasHudOdliczanie <= 10)
		{
			new word[6];
			num_to_word(CzasHudOdliczanie, word, 5);
			client_cmd(0, "spk ^"%s^"", word);
		}
		set_task(1.0, "TimesHud", TASK_ID_HUD);
	}
	else 
	{
		new iFwdHandle = CreateOneForward(hud_data[5], "OnGameHudEnd", FP_CELL);
		ExecuteForward(iFwdHandle, iRet, id_zabawa);
		DestroyForward(iFwdHandle);
	}
}

public aktywna_func(id, menu, item){
	return ITEM_ENABLED;
}

public nieaktywna_func(id, menu, item){
	return ITEM_DISABLED;
}

cały jail_api_jailbreak


  • +
  • -
  • 0

#6 Anonymuss

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:194
  • Imię:Anonimowy
  • Lokalizacja:Polska
Offline

Napisano 22.04.2018 19:24

Znalazłem plugin, który usuwa licznik czasu do końca rundy całkowicie z serwera ale pomoc dalej potrzebna bo mogą być z tym pluginem jakieś nieprzewidziane bugi i nie chce zapychać paczki dodatkowym badziewiem


  • +
  • -
  • 0

#7 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 22.04.2018 19:28

Dlaczego nie spróbujesz z innymi silnikami np. 1.0.7...

PS: Jak możesz daj ten kod wyżej w spoiler.


  • +
  • -
  • 0

#8 Anonymuss

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:194
  • Imię:Anonimowy
  • Lokalizacja:Polska
Offline

Napisano 22.04.2018 20:17

Dlaczego nie spróbujesz z innymi silnikami np. 1.0.7...
PS: Jak możesz daj ten kod wyżej w spoiler.

W 1.0.7p nie działają bany na CT i czasami buguje się ograniczenie x CT na x TT i pchają się dzieci po 6-7 w CT a w tym silniku jak kiedyś używałem wszystko działało prawidłowo
  • +
  • -
  • 0

#9 Toldi

    Czempion

  • Power User

Reputacja: 259
Wszechwidzący

  • Postów:841
  • Imię:Mateusz
  • Lokalizacja:wies
Offline

Napisano 23.04.2018 16:09

Jak sam piszesz posiadasz paczkę na silniku 1.0.6. Może autor tej paczki zmieniał coś w tym silniku. Próbowałeś pobrać sam silnik cypisa z neta bądź znaleźć inną paczkę z tym silnikiem i sprawdzać? Masz zainstalowanego najnowszego metamoda, hlds lub rehlds?


  • +
  • -
  • 0

#10 Anonymuss

    Profesjonalista

  • Autor tematu
  • Użytkownik

Reputacja: 55
Pomocny

  • Postów:194
  • Imię:Anonimowy
  • Lokalizacja:Polska
Offline

Napisano 23.04.2018 20:36

Na najnowszym silniku 1.0.7p działa ten licznik ale nie działają te nędzne bany na CT. Stary silnik, który wysłałem, testowałem już na hlds i rehlds (ciągle amxx 1.8.2, na 1.8.3 nie ma sensu tak starego silnika wgrywać na rehlds). Problem dalej był ale na razie mam tymczasowe rozwiązanie czyli plugin, który całkowicie usuwa licznik do końca rundy z serwera. Może ktoś by tu coś wykombinował połączyć wersje silnika 1.0.6a z 1.0.7p aby działał licznik, bany na CT i ograniczenie się nie bugowało 1CT / xTT. Postaram się też coś z tym pomajstrować ale zostanę na razie przy tym pluginie do usuwania licznika

Autorem paczki jestem ja, dodałem tam jakieś edycje pluginów z neta i swoje pluginy a silnik sam lekko edytowałem jak widać w kodzie wyżej (ta edycja jest nieistotna bo i tak powinno wszystko działać jak kiedyś)


Użytkownik Anonymuss edytował ten post 23.04.2018 20:38

  • +
  • -
  • 0




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

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