Page 1 of 1

Jailbreak MOD

Posted: 12 Jan 2020, 16:07
by Filiq_
Nume plugin: Jailbreak
Descriere: Nu este tot modul in sine, este tot ce am facut in cateva ore, am zis sa va dau o "baza" pe care puteti incepe daca nu doriti sa folositi MyJailbreak.
Autor: Filiq
Versiune: 0.0.1

Instalare:
1. Fisierul "NumePlugin.sp" se adauga in "addons/sourcemod/scripting"
2. Fisierul "NumePlugin.smx" se adauga in "addons/sourcemod/plugins"
3. Fisierul "NumeFisier" se adauga in "addons/..."

Convar-uri: nu are
Comenzi publice:
sm_open
sm_simon
sm_fd
| Afiseaza codul
/*
	0.0.1:
		- Acum doar admini si CT pot vorbi
		- Acum se poate folosi comanda !simon
		- Daca vrei sa demisionezi poti folosi !simon a 2-a oara pentru a demisiona
		- Acum se alege random la inceput de runda un CT pentru a fi simon, acesta poate demisiona dupa aceasta.
		- Daca Simon iese de pe server sau moare se anunta pe server 
			* De bagat sunet * 
		- Am facut hud-ul, acum apare daca este un simon sau nu
		- Acum poti deschide sau inchide celulele cu comanda !open.
			* De bagat sunet *
		- Am rezolvat un bug la comanda !open
		- Am adaugat modele pentru Prizonieri si Gardieni, se aleg random la inceputul rundei
		- Acum cand un Prizonier ataca un gardien acesta va avea culoarea rosie si este anuntat in chat
			* De bagat sunet *
		- Rezolvat un bug la modele, nu vedeai nimic doar "ERROR"
		- Rezolvat un bug care facea ca atunci cand te spawnezi sa ai skinul negru
		- Am adaugat freeday, !fd poti da freeday all si freeday unui detinut
		- Rezolvat un bug care facea sa nu mearga sa dai freeday all
		-

Credite:
	Vaggelis - Open Cells
*/

#include <sourcemod>
#include <sdktools> 
#include <sdkhooks>
#include <basecomm>
#include <cstrike>

#define VERSION "1.0.0"  
 
public Plugin:myinfo = {
	name = "JailBreak Reborne",
	author = "Filiq_",
	description = "",
	version = VERSION
}

int gSimon = -1
int openDoors = 0

bool pFreeday[MAXPLAYERS]

float g_Min = 300.0

bool gFreeday = false

Handle g_DoorList
Handle:freeday_timer = INVALID_HANDLE
//char Name[MaxClients + 1][MAX_NAME_LENGTH]  

char Models[][] = {
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5.mdl", 
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4.mdl",


	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5.mdl", 
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4.mdl",

	"materials/models/player/kuristaja/jailbreak/guard1/hair01_ao_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard1/hair01_ao_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard1/hair01_ao_d2.vmt",
	"materials/models/player/kuristaja/jailbreak/guard1/hair01_ao_normal.vtf",
	"materials/models/player/kuristaja/jailbreak/guard1/sewell01_head01_au_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard1/sewell01_head01_au_normal.vtf",
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1.phy",
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1.vvd",
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard1/guard1_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/guard2/npc_ryall_head_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard2/npc_ryall_head_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard2/npc_ryall_head_normal.vtf",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2.phy",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2.vvd",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard2/guard2_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/guard3/policeman_ai_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard3/policeman_ai_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard3/policeman_ai_normal.vtf",
	"materials/models/player/kuristaja/jailbreak/guard3/policeman_head_ai_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard3/policeman_head_ai_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard3/policeman_head_ai_normal.vtf",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3.phy",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3.vvd",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard3/guard3_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/guard4/eyes.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/eyes.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/eyes_normal.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_1_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_1_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_1_normal.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_2_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_2_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_2_normal.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_3_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_badge.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_eyelashes.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_eyelashes.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_hair_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_hair_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_hair2_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_head_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_head_d.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_head_normal.vtf",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_head2_d.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_metal.vmt",
	"materials/models/player/kuristaja/jailbreak/guard4/femalecop_shoes.vmt",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4.phy",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4.vvd",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard4/guard4_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/guard5/guard_head_a6_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_head_a6_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_head_a6_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_hs_body_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_hs_body_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_hs_body_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_hs_head_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_hs_head_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/guard5/guard_hs_head_normal.vtf", 
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5.phy",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5.vvd",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/guard5/guard5_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/prisoner1/eye_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/eye_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_bottom_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_bottom_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_bottom_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_head_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_head_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_head_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_top_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_top_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoner_lt_top_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoners_torso_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner1/prisoners_torso_d.vtf", 
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1.phy",
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1.vvd",
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner1/prisoner1_arms.vvd",


	"materials/models/player/kuristaja/jailbreak/prisoner2/charles01_body01_au_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/charles01_body01_au_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/charles01_body01_au_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/charles01_head01_au_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/charles01_head01_au_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/charles01_head01_au_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/hair01_au_d.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/hair01_au_d.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/hair01_au_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner2/hair02_au_d.vmt", 
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2.phy",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2.vvd",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner2/prisoner2_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/prisoner3/eyes.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/eyes.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/gi_head_14.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/gi_head_14.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/gi_head_nml.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/m_white_13_co.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/m_white_13_co.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner3/m_white_13_n.vtf", 
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3.phy",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3.vvd",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner3/prisoner3_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/prisoner4/1.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/1.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/1_normal.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/eye.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/eye.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/gi_head_1.vmt", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/gi_head_1.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/gi_head_nml.vtf", 
	"materials/models/player/kuristaja/jailbreak/prisoner4/skin_detail.vtf", 
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4.phy",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4.vvd",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4_arms.dx90.vtx",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4_arms.mdl",
	"models/player/custom_player/kuristaja/jailbreak/prisoner4/prisoner4_arms.vvd",

	"materials/models/player/kuristaja/jailbreak/shared/brown_eye_normal.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/brown_eye01_an_d.vmt",  
	"materials/models/player/kuristaja/jailbreak/shared/brown_eye01_an_d.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/police_body_d.vmt",  
	"materials/models/player/kuristaja/jailbreak/shared/police_body_d.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/police_body_normal.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/prisoner1_body.vmt",  
	"materials/models/player/kuristaja/jailbreak/shared/prisoner1_body.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/prisoner1_body_normal.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/tex_0086_0.vmt",  
	"materials/models/player/kuristaja/jailbreak/shared/tex_0086_0.vtf",  
	"materials/models/player/kuristaja/jailbreak/shared/tex_0086_1.vtf",   
}

public OnPluginStart() {  
	LoadTranslations ("jailbreak.phrases") 

	RegConsoleCmd("sm_simon", SimonFunc)
	RegConsoleCmd("sm_open", SimonOpenDoors)
	RegConsoleCmd("sm_fd", FreedayMenu)
	
	HookEvent("round_start", Event_RoundStart)
	HookEvent("player_spawn", Event_PlayerSpawn)
	HookEvent("player_death", Event_PlayerDeath)
	HookEvent("player_hurt", Event_TakeDamage, EventHookMode_Post)


	CreateTimer(0.2, ShowHUD, _, TIMER_REPEAT)

	g_DoorList = CreateArray()
}   

public OnMapStart() {

	char gString[256]

	for(new i = 0; i < sizeof Models; i++) {
		FormatEx(gString, sizeof gString, "%s", Models)
		if(i > 8) AddFileToDownloadsTable(gString) 
		else PrecacheModel(gString)
	}
	
	CacheDoors()
}
public void OnMapEnd() {
	ClearArray(g_DoorList) 
}

public OnClientPutInServer(int client) {
	//GetClientName(client, Name[client], MAX_NAME_LENGTH)
	SDKHook(client, SDKHook_OnTakeDamage, Hook_OnTakeDamage)
}

public OnClientDisconnect(int client) {
	if(gSimon == client) {
		gSimon = -1
		PrintToChatAll("\x04[JailBreak] \x03%t", "Simon s-a deconectat", client)
	}
}

public Action Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast) {
	gSimon = -1
	openDoors = 0
	gFreeday = false

	if(freeday_timer != INVALID_HANDLE)
		KillTimer(freeday_timer) 
	
	freeday_timer = INVALID_HANDLE

	new client = GetRandomPlayer(CS_TEAM_CT)
	if(client > 0) FakeClientCommand(client, "sm_simon")
}

public Action Event_PlayerSpawn(Handle:event, const String:name[], bool:dontBroadcast) {
	new client = GetClientOfUserId(GetEventInt(event, "userid")) 

	if(GetClientTeam(client) != CS_TEAM_CT && GetUserAdmin(client) == INVALID_ADMIN_ID) BaseComm_SetClientMute(client, true)
	else BaseComm_SetClientMute(client, false)

	if(!IsPlayerAlive(client))
		return Plugin_Handled

	switch(GetClientTeam(client)) {
		case CS_TEAM_CT: {
			int num = GetRandomInt(0, 4)
			SetEntityModel(client, Models[num])
		}
		case CS_TEAM_T: {
			int num = GetRandomInt(5, 8)
			SetEntityModel(client, Models[num])
		}
	}

	SetEntityRenderMode(client, RENDER_NORMAL)

	return Plugin_Handled
}

public Action Event_PlayerDeath(Handle:event, const String:name[], bool:dontBroadcast) {
	new client = GetClientOfUserId(GetEventInt(event, "userid"))

	if(gSimon != client)
		return Plugin_Handled  

	gSimon = -1
	PrintToChatAll("\x04[JailBreak] \x03%t", "Simon a fost asasinat!", client)

	return Plugin_Handled
}

public Action Event_TakeDamage(Handle:event, const String:name[], bool:dontBroadcast) {
	new victim = GetClientOfUserId(GetEventInt(event, "userid"))
	new attacker = GetClientOfUserId(GetEventInt(event, "attacker"))

	if(GetClientTeam(attacker) == CS_TEAM_T) {
		if(gSimon == victim)
			PrintToChatAll("\x04[JailBreak] \x03%t", "Simon a fost atacat!", victim, attacker) 
	
		SetEntityRenderColor(attacker, 255, 0, 0) 
	}
}

public Action Hook_OnTakeDamage(victim, &attacker, &inflictor, &Float:damage, &damagetype) {
	//if(pFreeday[victim] == true || pFreeday[attacker] == true) { 
	//	return Plugin_Stop
	//}

	return Plugin_Continue
}
 
public OnClientPostAdminCheck(int client) {
	if(GetUserAdmin(client) == INVALID_ADMIN_ID) BaseComm_SetClientMute(client, true)
	else BaseComm_SetClientMute(client, false)
}

public Action SimonFunc(int client, int args) {
	if(!client) {
		//return Plugin_Handled 
	}

	if(gSimon == client) {
		gSimon = -1
		PrintToChatAll("\x04[JailBreak] \x03%t", "Simon a demisionat", client)
	}

	if(!IsPlayerAlive(client) || GetClientTeam(client) != CS_TEAM_CT || gSimon != -1 || gFreeday == true) PrintToChat(client, " \x04[JailBreak] \x03%t", "Trebuie sa fii in viata si la CT pentru a putea fii simon!")
	else gSimon = client

	//return Plugin_Handled
} 

public Action SimonOpenDoors(int client, int args) {

	if(gSimon != client) {
		PrintToChat(client, " \x04[JailBreak] \x03%t", "Trebuie sa fii simon pentru a face acest lucru!")
		return Plugin_Handled
	}

	switch(openDoors) {
		case 0: {
			for(int i = 0; i < GetArraySize(g_DoorList); i++) {
				int door = GetArrayCell(g_DoorList, i)
				
				AcceptEntityInput(door, "Open")
			}
			openDoors = 1
			PrintToChatAll(" \x04[JailBreak] \x03%t", "Simon a deschis celulele!", client)
		}
		case 1: {
			for(int i = 0; i < GetArraySize(g_DoorList); i++) {
				int door = GetArrayCell(g_DoorList, i)
				
				AcceptEntityInput(door, "Close")
			}
			openDoors = 0
			PrintToChatAll(" \x04[JailBreak] \x03%t", "Simon a inchis celulele!", client)
		}
	}

	return Plugin_Handled
}

public Action FreedayMenu(int client, int args) {
	if(GetClientTeam(client) != CS_TEAM_CT || !(GetUserFlagBits(client) & ADMFLAG_KICK)) {
		//return Plugin_Handled
	}

	new Handle:menu = CreateMenu(FreedayMenu_handler, MenuAction_Select | MenuAction_End)
	SetMenuTitle(menu, "Freeday Menu:")
	
	AddMenuItem(menu, "fdall", "Freeday ALL")
	AddMenuItem(menu, "player", "Select player")

	DisplayMenu(menu, client, MENU_TIME_FOREVER)

	//return Plugin_Handled
}

public FreedayMenu_handler(Handle:menu, MenuAction:action, client, param2) {
	switch(action) {
		case MenuAction_Select: {
			char item[10]
			GetMenuItem(menu, param2, item, sizeof(item))

			if(StrEqual(item, "fdall")) Freeday(0)  
			else if(StrEqual(item, "player")) PlayerFreeday(client) 
		}
		case MenuAction_End: CloseHandle(menu) 
	}
}

public PlayerFreeday(client) {
	char szName[MAX_NAME_LENGTH],
		szUserID[10]
	
	new Handle:menu = CreateMenu(PlayerFreeday_Handler, MenuAction_Select | MenuAction_End)
	SetMenuTitle(menu, "Select Player:")
	
	for(new i = 1; i <= MaxClients; i++)
	{
		if(IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i))
		{
			GetClientName(i, szName, sizeof(szName))
			IntToString(GetClientUserId(i), szUserID, sizeof(szUserID))
			AddMenuItem(menu, szUserID, szName)
		}
	}

	DisplayMenu(menu, client, MENU_TIME_FOREVER)
}

public PlayerFreeday_Handler(Handle:menu, MenuAction:action, client, param2) {
	switch(action) {
		case MenuAction_Select: {
			char item[15]
			GetMenuItem(menu, param2, item, sizeof(item))
			 
			new user_id = GetClientOfUserId(StringToInt(item))
			
			if(IsClientConnected(user_id) && IsPlayerAlive(user_id)) {
				Freeday(user_id)

				PrintHintText(user_id, "You got Freeday")
				PrintToChatAll("[Jailbreak] %N gave Freeday to %N", client, user_id)
			}
			else 
				PlayerFreeday(client) 
		}
		case MenuAction_End: CloseHandle(menu) 
	}
}

public Freeday(int client) { 
	
	if(client == 0) {
		gFreeday = true
		//special_day = true
		
		gSimon = -1
		//RemoveSimon()
		//EmitSoundToAllAny("jailbreak/bell.mp3")
		
		for(new i = 1; i <= MaxClients; i++) {
			if(IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) {
				SetEntityRenderColor(i, 0, 255, 0, 255)
			}
		}
		
		freeday_timer = CreateTimer(120.0, FreedayEnd) 
	}
	else {
		if(IsClientInGame(client) && GetClientTeam(client) == 2 && IsPlayerAlive(client)) {
			pFreeday[client] = true
			SetEntityRenderColor(client, 0, 255, 0, 255)
		}
	}  
}

public Action:FreedayEnd(Handle:timer) {
	gFreeday = false
	
	for(new i = 1; i <= MaxClients; i++) {
		if(IsClientInGame(i) && GetClientTeam(i) == 2 && IsPlayerAlive(i)) {
			SetEntityRenderMode(i, RENDER_NORMAL)
		}
	}
	
	if(freeday_timer != INVALID_HANDLE)
		KillTimer(freeday_timer) 
	
	freeday_timer = INVALID_HANDLE

	//EmitSoundToAllAny("jailbreak/bell.mp3")
	PrintToChatAll("[Jailbreak] The Freeday has ended")
}

public Action ShowHUD(Handle:timer) {
	
	char gString[150]
	if(gSimon != -1) FormatEx(gString, 150, "Simon este: %N, ascultati-l !", gSimon)
	else FormatEx(gString, 150, "Nu este nici un simon.")

	if(gFreeday == true)
		FormatEx(gString, 150, "Freeday, astazi puteti face ce vreti.\nNu aveti voie la arme!")

	for (new i = 1; i < MaxClients; i++)
		if(IsClientInGame(i))
			PrintHintText(i, "%s\nYour credits: 0", gString)
}

GetRandomPlayer(team) {
	new clients[MaxClients + 1], 
		clientCount

	for(new i = 1; i <= MaxClients; i++)
		if(IsClientInGame(i) && GetClientTeam(i) == team) 
			clients[clientCount++] = i
		
	return (clientCount == 0) ? -1 : clients[GetRandomInt(0, clientCount-1)]
}

void CacheDoors() {
	int ent = -1
	int door = -1
	
	while((ent = FindEntityByClassname(ent, "info_player_terrorist")) != -1) {
		float prisoner_pos[3]
		GetEntPropVector(ent, Prop_Data, "m_vecOrigin", prisoner_pos)
		
		while((door = FindEntityByClassname(door, "func_door")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				g_Min = GetVectorDistance(door_pos, prisoner_pos)
			}
		}
		
		while((door = FindEntityByClassname(door, "func_door_rotating")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				g_Min = GetVectorDistance(door_pos, prisoner_pos)
			}
		}
		
		while((door = FindEntityByClassname(door, "func_movelinear")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				g_Min = GetVectorDistance(door_pos, prisoner_pos)
			}
		}
		
		while((door = FindEntityByClassname(door, "prop_door_rotating")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				g_Min = GetVectorDistance(door_pos, prisoner_pos)
			}
		}
	}
	
	g_Min += 100
	
	while((ent = FindEntityByClassname(ent, "info_player_terrorist")) != -1) {
		float prisoner_pos[3]
		GetEntPropVector(ent, Prop_Data, "m_vecOrigin", prisoner_pos)
		
		while((door = FindEntityByClassname(door, "func_door")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				PushArrayCell(g_DoorList, door)
			}
		}
		
		while((door = FindEntityByClassname(door, "func_door_rotating")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				PushArrayCell(g_DoorList, door)
			}
		}
		
		while((door = FindEntityByClassname(door, "func_movelinear")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				PushArrayCell(g_DoorList, door)
			}
		}
		
		while((door = FindEntityByClassname(door, "prop_door_rotating")) != -1) {
			float door_pos[3]
			GetEntPropVector(door, Prop_Data, "m_vecOrigin", door_pos)
			
			if(GetVectorDistance(door_pos, prisoner_pos) <= g_Min) {
				PushArrayCell(g_DoorList, door)
			}
		}
	}
}

| Afiseaza codul
"Phrases"
{
	"Simon s-a deconectat"
	{
		"#format"	"{1:N}"
		"en" "Simon {1} has disconnect from server!"
		"ro" "Simon {1} s-a deconectat de pe server!"
	}
	"Simon a fost asasinat!" 
	{
		"#format"	"{1:N}"
		"en" "Simon {1} a fost asasinat!"
		"ro" "Simon {1} a fost asasinat!"
	}
	"Simon a demisionat!" 
	{
		"#format"	"{1:N}"
		"en" "Simon {1} a demisionat!"
		"ro" "Simon {1} a demisionat!"
	}
	"Simon a deschis celulele!" 
	{
		"#format"	"{1:N}"
		"en" "Simon {1} a deschis celulele!"
		"ro" "Simon {1} a deschis celulele!"
	}
	"Simon a inchis celulele!"
	{
		"#format"	"{1:N}"
		"en" "Simon {1} a inchis celulele!"
		"ro" "Simon {1} a inchis celulele!"
	} 
	"Simon a fost atacat!"
	{
		"#format"	"{1:N},{2:N}"
		"en" "Simon {1} a fost atacat de {2}"
		"ro" "Simon {1} a fost atacat de {2}"
	}
	"Trebuie sa fii simon pentru a face acest lucru!" 
	{ 
		"en" "Trebuie sa fii simon pentru a face acest lucru!"
		"ro" "Trebuie sa fii simon pentru a face acest lucru!"
	}
}

Re: Jailbreak MOD

Posted: 17 Feb 2020, 09:17
by eMeKa.eXe
Ciudat am mai vazut sursa asta si oe github ?
Nu crezi ca este copiata?