Cerere Plugin /misiuni pentru furien

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

Forum rules
Accesează link-ul pentru a putea vedea regulile forumului

Daca doriti sa vi se modifice un plugin, va rugam postati aici .
Post Reply
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

05 Mar 2020, 16:50

Plugin Cerut: Plugin Misiuni pentru Furien
Descriere (adica ce face el mai exact): las mai jos descrierea.
Serverul impune conditii strict HLDS/REHLDS?: nu
Ai cautat pluginul?(daca da, precizeaza cum): nu
Necesita mod special?: Furien

DESCRIERE:

Cand scrii /misiuni sa iti apara urmatoarele

Code: Select all

Misiuni Furieni (astea sa apara cand esti la echipa Terro)

[1] Ucide 5 Anti-furieni (premiu 3k XP si 30 Credite)
[2] Ucide 2 Anti-Furieni folosind  Grenada (premiu 10k XP si 100 Credite)
[3] Planteaza BOMBA (premiu 2k XP si 20 Credite)
[4] Ucide 3 Anti-Furieni prin HeadShot (premiu 3k XP si 30 Credite)

Misiuni Anti-Furieni (astea sa apara cand esti la echipa CT)

[1] Ucide 2 Furieni folosind Knife (premiu 4k XP si 40 Credite)
[2] Ucide 5 Furieni (Premiu 3k XP si 30 Credite) 
[3] Dezamorseaza Bomba (premiu 5k XP si 50 Credite)
[4] Ucide 2 Furieni folosind Grenada (premiu 10k XP si 100 Credite)
[5] Ucide 3 Furieni prin HeadShot (premiu 5k XP si 50 Credite)

Misiunile sa se reseteze o data cu schimbarea mapei sau printr-un cvar,
Dupa ce termini o misiune sa iti apara in chat un text "FELICITARI AI COMPLETAT MISIUNEA "x" SI AI PRIMIT CA PREMIU "x XP si x credite".

nativele pentru xp si credite

Code: Select all

	register_native ( "get_user_xp", "get_user_xp", 1 );
	register_native ( "set_user_xp", "set_user_xp", 1 );
	
        register_native ( "set_user_credits", "set_user_credits", 1 );
	register_native ( "get_user_credits", "get_user_credits", 1 );
Image
RoyalServer 2
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

06 Mar 2020, 18:35

CatalinACS wrote:
05 Mar 2020, 16:50
Plugin Cerut: Plugin Misiuni pentru Furien
Descriere (adica ce face el mai exact): las mai jos descrierea.
Serverul impune conditii strict HLDS/REHLDS?: nu
Ai cautat pluginul?(daca da, precizeaza cum): nu
Necesita mod special?: Furien

DESCRIERE:

Cand scrii /misiuni sa iti apara urmatoarele

Code: Select all

Misiuni Furieni (astea sa apara cand esti la echipa Terro)

[1] Ucide 5 Anti-furieni (premiu 3k XP si 30 Credite)
[2] Ucide 2 Anti-Furieni folosind  Grenada (premiu 10k XP si 100 Credite)
[3] Planteaza BOMBA (premiu 2k XP si 20 Credite)
[4] Ucide 3 Anti-Furieni prin HeadShot (premiu 3k XP si 30 Credite)

Misiuni Anti-Furieni (astea sa apara cand esti la echipa CT)

[1] Ucide 2 Furieni folosind Knife (premiu 4k XP si 40 Credite)
[2] Ucide 5 Furieni (Premiu 3k XP si 30 Credite) 
[3] Dezamorseaza Bomba (premiu 5k XP si 50 Credite)
[4] Ucide 2 Furieni folosind Grenada (premiu 10k XP si 100 Credite)
[5] Ucide 3 Furieni prin HeadShot (premiu 5k XP si 50 Credite)

Misiunile sa se reseteze o data cu schimbarea mapei sau printr-un cvar,
Dupa ce termini o misiune sa iti apara in chat un text "FELICITARI AI COMPLETAT MISIUNEA "x" SI AI PRIMIT CA PREMIU "x XP si x credite".

nativele pentru xp si credite

Code: Select all

	register_native ( "get_user_xp", "get_user_xp", 1 );
	register_native ( "set_user_xp", "set_user_xp", 1 );
	
        register_native ( "set_user_credits", "set_user_credits", 1 );
	register_native ( "get_user_credits", "get_user_credits", 1 );
BUMP!
Image
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

07 Mar 2020, 18:34

Bump. Careva?
Image
User avatar
kidd0x
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 1054
Joined: 06 Oct 2018, 14:41
Detinator Steam: Da
SteamID: /id/kidd0x/
Reputatie: Utilizator neserios (tepar!)
Fond eXtream: 0
Location: Constangeles
Discord: kidd0x
Has thanked: 172 times
Been thanked: 81 times

07 Mar 2020, 21:27

Vezi asa :

Code: Select all

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <csx>

#pragma compress 1

#define PLUGIN_NAME "[AMXX] Misiuni"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"


#define ULTIMA_MODIFICARE "10.02.2019"


// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
#define TAG	"[AMXX]"
#define MIN_JUCATORI	2
#define ACCES_ADMIN	ADMIN_IMMUNITY
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

/*
	se_desfasoara:
	1 = misiunea se desfasoara
	0 = misiunea nu se desfasoara
*/

new misiune_ct, misiune_t, bool:se_desfasoara, bool:misiune_completa_t, bool:misiune_completa_ct, misiune_aleasa_ct, misiune_aleasa_t, castigator_t, castigator_ct, jucatori;
new max_players, g_sync_hudmessage, g_sync_hudmessage2;
new bmb_plant[33], bmb_def[33], nume_admin[33], kills_t[33], kills_ct[33], runde[33], text_potentiali[512], text_misiune[128],
nume_castigator_ct[32], nume_castigator_t[32];

enum datas_
{
	str[32],
	info
};

new const misiuni_t[][datas_] =
{
	{ "Rezista # de runde fara sa mori", 3 },
	{ "Ucide # anti-furieni cu cutitul", 4 },
	{ "Planteaza # bombe", 2 },
	{ "Omoara # anti-furieni", 10 }
};

new const misiuni_ct[][datas_] =
{
	{ "Omoara # furieni prin headshot", 4 },
	{ "Ucide # furieni cu lama", 2 },
	{ "Dezamorseaza # bombe", 8 },
	{ "Omoara # furieni", 3 }
};

// 93.114.82.92:27015

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
	register_cvar("misiuni_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("misiuni_", PLUGIN_VERSION);

	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPre", 1);
	register_logevent("round_end", 2, "1=Round_End");
	register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in");

	register_clcmd("say", "cmd_say");
	register_clcmd("say_team", "cmd_say");

	se_desfasoara = false;
	misiune_t = -1;
	misiune_ct = -1;
	misiune_aleasa_t = -1;
	misiune_aleasa_ct = -1;
	max_players = get_maxplayers();

	// alegem misiunea imediat dupa ce s-a dat restart la server/schimbat harta
	set_task(5.0, "task_alege_misiune");

	g_sync_hudmessage = CreateHudSyncObj();
	g_sync_hudmessage2 = CreateHudSyncObj();
}

public client_putinserver(id)
{
	jucatori++;
	set_task(3.0, "task_verifica_inceput");
}

public client_disconnect(id)
{
	jucatori--;
	set_task(3.0, "task_verifica_inceput");
}

public task_verifica_inceput()
{
	se_desfasoara = (jucatori >= MIN_JUCATORI) ? true : false;
	
	if(se_desfasoara)
        {
		/*
		Misiune in desfasurare...
		
		Fii primul care termina misiunea
		si vei fi rasplatit cu un premiu
		*/
		
		new jucatori2[32], numar = 0, id, i;
		if(!misiune_completa_ct)
		{
			if(0 <= misiune_ct <= sizeof(misiuni_ct))
			{
				get_players(jucatori2, numar, "e", "CT");
				for(i = 0; i < numar; i++)
				{
					id = jucatori2[i];
					if(!is_user_connected(id))	continue;
						
					set_hudmessage(255, 255, 255, 0.2, 0.40, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage2, "Misiune in desfasurare...^n^nFii primul care termina misiunea^nsi vei fi rasplatit cu un premiu", MIN_JUCATORI - jucatori);
				}
			}
			return;
		}
		if(!misiune_completa_t)
		{
			if(0 <= misiune_t <= sizeof(misiuni_t))
			{
				get_players(jucatori2, numar, "e", "TERRORIST");
				for(i = 0; i < numar; i++)
				{
					id = jucatori2[i];
					if(!is_user_connected(id))	continue;
						
					set_hudmessage(255, 255, 255, 0.2, 0.40, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage2, "Misiune in desfasurare...^n^nFii primul care termina misiunea^nsi vei fi rasplatit cu un premiu", MIN_JUCATORI - jucatori);
				}
			}
			return;
		}
	}				
}

// sa prevenim aparitia bugurilor la noile misiuni
public event_textmsg()
{
	if(misiune_aleasa_ct != -1)
	{
		arrayset(bmb_def, 0, charsmax(bmb_def));
		arrayset(kills_ct, 0, charsmax(kills_ct));
		castigator_ct = -1;
		misiune_completa_ct = false;
	}
	if(misiune_aleasa_t != -1)
	{
		arrayset(bmb_plant, 0, charsmax(bmb_plant));
		arrayset(kills_t, 0, charsmax(kills_t));
		arrayset(runde, 0, charsmax(runde));
		castigator_t = -1;
		misiune_completa_t = false;
	}
	//reseteaza_tot();
}

// s-ar putea sa apara bug aici
// neconcludent
public task_alege_misiune()
{
	if(misiune_aleasa_t == -1)	if(misiune_t == -1)	misiune_t = random_num(0, charsmax(misiuni_t));
	if(misiune_aleasa_t == -1)	if(misiune_ct == -1)	misiune_ct = random_num(0, charsmax(misiuni_ct));

	reseteaza_tot();
}

public fw_PlayerSpawnPre(id)
{
	if(!is_user_alive(id))	return HAM_HANDLED;
		
	if(misiune_aleasa_ct != -1)
	{
		misiune_ct = misiune_aleasa_ct;
		misiune_aleasa_ct = -1;
		
		task_alege_misiune();
		if(cs_get_user_team(id) == CS_TEAM_CT)
		{
			format_misiune_ct(misiune_ct, text_misiune);
			ColorChat(id, "!4%s!1 O NOUA MISIUNE A FOST ALEASA PENTRU VOI.", TAG);
			ColorChat(id, "!4%s!1 Adminul!3 %s!1 a ales misiunea!3 %s", TAG, nume_admin, text_misiune);
		}
		return HAM_HANDLED;
	}
	if(misiune_aleasa_t != -1)
	{
		misiune_t = misiune_aleasa_t;
		misiune_aleasa_t = -1;

		task_alege_misiune();
		if(cs_get_user_team(id) == CS_TEAM_T)
		{
			format_misiune_t(misiune_t, text_misiune);
			ColorChat(id, "!4%s!1 O NOUA MISIUNE A FOST ALEASA PENTRU VOI.", TAG);
			ColorChat(id, "!4%s!1 Adminul!3 %s!1 a ales misiunea!3 %s", TAG, nume_admin, text_misiune);
		}
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

/*
Pot fi mai multi jucatori care au supravietuit x runde,
asadar, pentru a alege un castigator, alegem unul random
din toti cei care au supravietuit.
*/

public round_end()
{
	if(se_desfasoara && misiune_t == 0 && !misiune_completa_t)
	{
		new players[32], numar, i, id, total = 0, id_supravietuitori[32];
		cauta_id_jucatori(players, numar);
		for(i = 0; i < numar; i++)
		{
			id = players[i];
			if(!is_user_connected(id))	continue;

			if(cs_get_user_team(id) != CS_TEAM_T)	continue;

			if(is_user_alive(id))
			{
				if(++runde[id] == misiuni_t[misiune_t][info])
				{
					// numaram toti jucatorii care au supravietuti x runde si le retinem id-ul
					id_supravietuitori[total++] = id;
					misiune_completa_t = true;
				}
			}
			else runde[id] = 0;
		}

		if(misiune_completa_t)
		{
			// am gasit id-ul castigatorului, astfel putem sa ii dam un premiu pe restul rundelor
			castigator_t = id_supravietuitori[random_num(0, total-1)];
			get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
			set_task(1.0, "task_anunta_castigator");
		}
	}
}

public task_anunta_castigator()
{
	new players[32], numar = 0, i, id, nume_castigator[32];
	if(misiune_completa_ct)
	{
		format_misiune_ct(misiune_ct, text_misiune);
		get_players(players, numar, "e", "CT");
		for(i = 0; i < numar; i++)
		{
			id = players[i];
			if(!is_user_connected(id))	continue;
				
			get_user_name(id, nume_castigator, charsmax(nume_castigator));
			
			if(id == castigator_ct && equal(nume_castigator_ct, nume_castigator))
			{
				ColorChat(id, "!4%s!1 FELICITARI!4 %s!1!!! Ai terminat primul misiunea!3 %s!1.", TAG, nume_castigator, text_misiune);
				set_task(0.25, "adauga_efecte", id, _, _, "a", 12);
			}
			else	ColorChat(id, "!4%s!1 Jucatorul!4 %s!1 a terminat primul misiunea!3 %s!1.", TAG, nume_castigator_ct, text_misiune);
		}
		return;
	}
	if(misiune_completa_t)
	{
		format_misiune_t(misiune_t, text_misiune);
		get_players(players, numar, "e", "TERRORIST");
		for(i = 0; i < numar; i++)
		{
			id = players[i];
			if(!is_user_connected(id))	continue;
				
			get_user_name(id, nume_castigator, charsmax(nume_castigator));
			
			if(id == castigator_t && equal(nume_castigator_t, nume_castigator))
			{
				ColorChat(id, "!4%s!1 FELICITARI!4 %s!1!!! Ai terminat primul misiunea!3 %s!1.", TAG, nume_castigator, text_misiune);
				set_task(0.25, "adauga_efecte", id, _, _, "a", 12);
			}
			else	ColorChat(id, "!4%s!1 Jucatorul!4 %s!1 a terminat primul misiunea!3 %s!1.", TAG, nume_castigator_t, text_misiune);
		}
	}
}

public adauga_efecte(castigator)
{
	if(!is_user_connected(castigator))	return;
		
	static g_msg_screenshake = 0;
	if(!g_msg_screenshake)	g_msg_screenshake = get_user_msgid("ScreenShake");
	
	message_begin(MSG_ONE, g_msg_screenshake, _, castigator);
	write_short(1<<14);
	write_short(1<<14);
	write_short(1<<14);
	message_end();

	static g_msg_screenfade = 0;
	if(!g_msg_screenfade)	g_msg_screenfade = get_user_msgid("ScreenFade");
		
	message_begin(MSG_ONE_UNRELIABLE, g_msg_screenfade, _, castigator);
	write_short(1<<10);
	write_short(1<<10);
	write_short(1<<12);
	write_byte(random_num(0, 255));
	write_byte(random_num(0, 255));
	write_byte(random_num(0, 255));
	write_byte(100);
	message_end();	
}

public cmd_say(id)
{
	static chat[192];
	read_args(chat, charsmax(chat));
	remove_quotes(chat);
    
	if(equali(chat, ""))	return PLUGIN_HANDLED_MAIN;

	new CsTeams:echipa = cs_get_user_team(id);
	
	if(echipa == CS_TEAM_CT)	if(misiune_ct != -1)	format_misiune_ct(misiune_aleasa_ct != -1 ? misiune_aleasa_ct : misiune_ct, text_misiune);
	else	if(misiune_t != -1)	format_misiune_t(misiune_aleasa_t != -1 ? misiune_aleasa_t : misiune_t, text_misiune);

	new comanda[32];
	strbreak(chat, comanda, charsmax(comanda), chat, charsmax(chat));

	if(equali(comanda, "misiune", 7) || equali(comanda, "/misiune", 7))
	{
		if(equali(chat[0], "help"))
		{
			meniu_statistici(id);
			return PLUGIN_CONTINUE;
		}
		if(equali(chat[0], "alege"))
		{
			if(!(get_user_flags(id) & ACCES_ADMIN))
			{
				ColorChat(id, "!4%s!1 Doar adminii au dreptul sa aleaga o misiune.", TAG);
				return PLUGIN_CONTINUE;
			}
			if(misiune_aleasa_ct != -1 || misiune_aleasa_t != -1)
			{
				ColorChat(id, "!4%s!3 A fost aleasa deja o misiune de catre adminul!1 %s!3. Te rugam sa astepti pana la urmatorul spawn.", TAG, nume_admin);
				ColorChat(id, "!4%s!1 Urmatoarea misiune:!3 %s", TAG, text_misiune);
			}
			else
			{
				static menu, text[128], tasta[2], i;
				if(echipa == CS_TEAM_CT)
				{
					formatex(text, charsmax(text), "\wAlege o misiune^nMisiunea curenta:\y %s", text_misiune);
					menu = menu_create(text, "alege_handler");
					
					for(i = 0; i < sizeof misiuni_ct; i++)
					{
						format_misiune_ct(i, text_misiune);
						formatex(text, charsmax(text), "%s%s", (i == misiune_ct) ? "\d" : "", text_misiune);
						tasta[0] = i;
						tasta[1] = 0;
						menu_additem(menu, text, tasta);
					}
				}
				else
				{
					formatex(text, charsmax(text), "\wAlege o misiune^nMisiunea curenta:\y %s", text_misiune);
					menu = menu_create(text, "alege_handler");
					
					for(i = 0; i < sizeof misiuni_t; i++)
					{
						format_misiune_t(i, text_misiune);
						formatex(text, charsmax(text), "%s%s", (i == misiune_t) ? "\d" : "", text_misiune);
						tasta[0] = i;
						tasta[1] = 0;
						menu_additem(menu, text, tasta);
					}
				}
				menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
				menu_display(id, menu, 0);
			}
			return PLUGIN_CONTINUE;
		}
		if(se_desfasoara)
		{
			if(echipa == CS_TEAM_CT)
			{
				// COMPLETA
				if(misiune_completa_ct)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_ct);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// IN DESFASURARE
					ColorChat(id, "!4%s!1 In acest moment se desfasoara misiunea:!3 %s!1 (!4%d!1).", TAG, text_misiune, misiune_ct);
					if(calculeaza(id, CS_TEAM_CT, misiune_ct, 1, text_potentiali) == 1.0)	// 1.0 succes
						ColorChat(id, "!4%s!1 Potentiali castigatori:!3 %s", TAG, text_potentiali);
		
					set_hudmessage(42, 255, 42, 0.1, 0.6, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage, "Misiunea numarul %d^n^nDescriere: %s", misiune_ct, text_misiune);
				}
			}
			else
			{
				// COMPLETA
				if(misiune_completa_t)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_t);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// IN DESFASURARE
					ColorChat(id, "!4%s!1 In acest moment se desfasoara misiunea:!3 %s!1 (!4%d!1).", TAG, text_misiune, misiune_t);
					if(calculeaza(id, CS_TEAM_T, misiune_t, 1, text_potentiali) == 1.0)	ColorChat(id, "!4%s!1 Potentiali castigatori:!3 %s", TAG, text_potentiali);
		
					set_hudmessage(42, 255, 42, 0.1, 0.6, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage, "Misiunea numarul %d^n^nDescriere: %s", misiune_t, text_misiune);
				}
			}
			meniu_statistici(id);
			return PLUGIN_CONTINUE;
		}
		else
		{
			if(echipa == CS_TEAM_CT)
			{
				// COMPLETA
				if(misiune_completa_ct)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_ct);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// SUSPENDATA
					if(misiune_ct != -1)
					{
						ColorChat(id, "!4%s!1 Misiunea!3 '%s'!1 a fost suspendata.", TAG, text_misiune);
						if(MIN_JUCATORI - jucatori > 0)
						{
							ColorChat(id, "!4%s!1 Nu sunt suficienti jucatori pe server pentru a continua.", TAG);
						
							set_hudmessage(42, 255, 42, 0.1, 0.60, 0, _, 2.0, _, _);
							ShowSyncHudMsg(id, g_sync_hudmessage, "JUCATORI NECESARI: inca %d", MIN_JUCATORI - jucatori);
						}
					}
					else
					{
						// NU EXISTA MISIUNE
						ColorChat(id, "!4%s!1 Momentan nu ruleaza nicio misiune pe server.", TAG);
						return PLUGIN_CONTINUE;
					}
				}
			}
			else
			{
				// COMPLETA
				if(misiune_completa_t)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_t);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// SUSPENDATA
					if(misiune_t != -1)
					{
						ColorChat(id, "!4%s!1 Misiunea!3 '%s'!1 a fost suspendata.", TAG, text_misiune);
						if(MIN_JUCATORI - jucatori > 0)
						{
							ColorChat(id, "!4%s!1 Nu sunt suficienti jucatori pe server pentru a continua. Necesari:!4 %d", TAG, MIN_JUCATORI - jucatori);
						
							set_hudmessage(42, 255, 42, 0.1, 0.60, 0, _, 2.0, _, _);
							ShowSyncHudMsg(id, g_sync_hudmessage, "JUCATORI NECESARI: inca %d", MIN_JUCATORI - jucatori);
						}
					}
					else
					{
						// NU EXISTA MISIUNE
						ColorChat(id, "!4%s!1 Momentan nu ruleaza nicio misiune pe server.", TAG);
						return PLUGIN_CONTINUE;
					}
				}
			}
			meniu_statistici(id);
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

/*
Status misiune:
COMPLETA
SUSPENDATA
IN DESFASURARE
*/

public meniu_statistici(id)
{
	new CsTeams:echipa = cs_get_user_team(id);
	static menu, text[128], Float:progres;
	menu = menu_create("\rStatisticile mele", "statistici_handler");
	
	progres = 0.0;
	if(echipa == CS_TEAM_CT)
	{
		format_misiune_ct(misiune_ct, text_misiune);
		formatex(text, charsmax(text), "Misiune curenta: %s", text_misiune);
		menu_additem(menu, text, "1");
	
		if(!misiune_completa_ct)
		{
			if(misiune_ct != -1 && se_desfasoara)	formatex(text, charsmax(text), "Status misiune: \yIN DESFASURARE");
			else	formatex(text, charsmax(text), "Status misiune: \dSUSPENDATA");
			menu_additem(menu, text, "2");
			
			switch(misiune_ct)
			{
				case 0:
				{
					progres = (kills_ct[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_ct[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
				case 1:
				{
					progres = (kills_ct[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_ct[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
				case 2:
				{
					progres = (bmb_def[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Bombe dezamorsate:\r %d/%d", bmb_def[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
				case 3:
				{
					progres = (kills_ct[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_ct[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
			}

			formatex(text, charsmax(text), "Sansa de a castiga premiul:\r %.2f%%", calculeaza(id, CS_TEAM_CT, misiune_ct, 0, text_potentiali));
			menu_additem(menu, text, "5");
		}
		else
		{
			new bool:gasit = false, i, players[32], numar, player, nume_jucator[32];
			cauta_id_jucatori(players, numar);
			
			for(i = 0; i < numar; i++)
			{
				player = players[i];
				if(!is_user_connected(player))	continue;
					
				get_user_name(player, nume_jucator, charsmax(nume_jucator));
				if(equal(nume_castigator_ct, nume_jucator))
				{
					gasit = true;
					break;
				}
			}
			formatex(text, charsmax(text), "Castigator: \r%s%s (%sconectat)", nume_castigator_ct, gasit ? "\w" : "\d", gasit ? "" : "de");
			menu_additem(menu, text, "2");
		}
	}
	else
	{
		format_misiune_t(misiune_t, text_misiune);
		formatex(text, charsmax(text), "Misiune curenta: %s", text_misiune);
		menu_additem(menu, text, "1");
	
		if(!misiune_completa_t)
		{
			if(misiune_t != -1 && se_desfasoara)	formatex(text, charsmax(text), "Status misiune: \yIN DESFASURARE");
			else	formatex(text, charsmax(text), "Status misiune: \dSUSPENDATA");
			menu_additem(menu, text, "2");
			
			switch(misiune_t)
			{
				case 0:
				{
					progres = (runde[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Runde supravietuite:\r %d/%d", runde[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
				case 1:
				{
					progres = (kills_t[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_t[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
				case 2:
				{
					progres = (bmb_plant[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Bombe plantate:\r %d/%d", bmb_plant[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
				case 3:
				{
					progres = (kills_t[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_t[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
			}
			
			formatex(text, charsmax(text), "Sansa de a castiga premiul:\r %.2f%%", calculeaza(id, CS_TEAM_T, misiune_t, 0, text_potentiali));
			menu_additem(menu, text, "5");
		}
		else
		{
			new bool:gasit = false, i, players[32], numar, player, nume_jucator[32];
			cauta_id_jucatori(players, numar);
			
			for(i = 0; i < numar; i++)
			{
				player = players[i];
				if(!is_user_connected(player))	continue;
					
				get_user_name(player, nume_jucator, charsmax(nume_jucator));
				if(equal(nume_castigator_t, nume_jucator))
				{
					gasit = true;
					break;
				}
			}
			formatex(text, charsmax(text), "Castigator: \r%s%s (%sconectat)", nume_castigator_t, gasit ? "\w" : "\d", gasit ? "" : "de");
			menu_additem(menu, text, "2");
		}
	}

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
}

public statistici_handler(id, menu, item)
{
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public alege_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	new CsTeams:echipa = cs_get_user_team(id);
	if(echipa == CS_TEAM_CT)
	{
		if(item != misiune_ct)
		{
			misiune_aleasa_ct = item;
			//format_misiune_ct(misiune_aleasa_ct, text_misiune);
		}
		else
		{
			ColorChat(id, "!4%s!3 Nu poti alege misiunea curenta. Alege alta misiune.", TAG);
			menu_destroy(menu);
			return PLUGIN_HANDLED;
		}
	}
	else
	{
		if(item != misiune_t)
		{
			misiune_aleasa_t = item;
			//format_misiune_t(misiune_aleasa_t, text_misiune);
		}
		else
		{	
			ColorChat(id, "!4%s!3 Nu poti alege misiunea curenta. Alege alta misiune.", TAG);
			menu_destroy(menu);
			return PLUGIN_HANDLED;
		}
	}
	get_user_name(id, nume_admin, charsmax(nume_admin));
	ColorChat(id, "!4%s!1 Misiunea!3 %s!1 va fi activata la urmatorul spawn.", TAG, text_misiune);
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public client_death(killer, victim, wpnindex, hitplace, tk)
{
	if(!is_user_alive(killer))	return;

	if(killer == victim)	return;

	if(!se_desfasoara)	return;

	new CsTeams:echipa = cs_get_user_team(killer);
	if(echipa == CS_TEAM_CT)
	{
		if(misiune_completa_ct)	return;
			
		switch(misiune_ct)
		{
			case 0:
			{
				if(hitplace != HIT_HEAD)	return;

				if(++kills_ct[killer] == misiuni_ct[misiune_ct][info])
				{
					castigator_ct = killer;
					misiune_completa_ct = true;
					get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			case 1:
			{
				if(wpnindex != CSW_KNIFE)	return;

				if(++kills_ct[killer] == misiuni_ct[misiune_ct][info])
				{
					castigator_ct = killer;
					misiune_completa_ct = true;
					get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			case 3:
			{
				if(++kills_ct[killer] == misiuni_ct[misiune_ct][info])
				{
					castigator_ct = killer;
					misiune_completa_ct = true;
					get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			//default: {}
		}
	}
	else
	{
		if(misiune_completa_t)	return;
			
		switch(misiune_t)
		{
			case 0: runde[victim] = 0;
			case 1:
			{
				if(wpnindex != CSW_KNIFE)	return;

				if(++kills_t[killer] == misiuni_t[misiune_t][info])
				{
					castigator_t = killer;
					misiune_completa_t = true;
					get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			case 3:
			{
				if(++kills_t[killer] == misiuni_t[misiune_t][info])
				{
					castigator_t = killer;
					misiune_completa_t = true;
					get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			//default: {}
		}
	}
}

public bomb_planted(id)
{
	if(se_desfasoara && misiune_t == 2 && !misiune_completa_t)
	{
		ColorChat(id, "!4%s!1 Felicitari!!! Ai plantat o bomba. Planteaza in continuare bombe si termina primul misiunea.", TAG);
		ColorChat(id, "!4%s!1 Urmareste-ti progresul, tastand in chat!3 /misiune!1.", TAG);

		if(++bmb_plant[id] == misiuni_t[misiune_t][info])
		{
			castigator_t = id;
			misiune_completa_t = true;
			get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
			set_task(1.0, "task_anunta_castigator");
		}
	}
}

public bomb_defused(id)
{
	if(se_desfasoara && misiune_ct == 2 && !misiune_completa_ct)
	{
		ColorChat(id, "!4%s!1 Felicitari!!! Ai dezamorsat o bomba. Dezamorseaza in continuare bombe si termina primul misiunea.", TAG);
		ColorChat(id, "!4%s!1 Urmareste-ti progresul, tastand in chat!3 /misiune!1.", TAG);

		if(++bmb_def[id] == misiuni_ct[misiune_ct][info])
		{
			castigator_ct = id;
			misiune_completa_ct = true;
			get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
			set_task(1.0, "task_anunta_castigator");
		}
	}
}

stock cauta_id_jucatori(players[32], &numar)
{
	numar = 0;
	new player;
	for(player = 1; player <= max_players; player++)
	{
		if(!is_user_connected(player))	continue;
			
		players[numar++] = player;
	}
}

/*
	Ce calculez?
	0 = sansa
	1 = potentiali castigatori
*/

stock Float:calculeaza(id, const CsTeams:echipa, const misiune, const ce_calculez, text[512])
{
	// retinem id-ul tuturor jucatorilor de pe server (numar = total de id-uri)
	new players[32], numar, i, player;
	cauta_id_jucatori(players, numar);
	
	new progres[33], maxim = 0;
	arrayset(progres, 0, charsmax(progres));
	
	for(i = 0; i < numar; i++)
	{
		player = players[i];
		if(!is_user_connected(player))	continue;
		
		if(cs_get_user_team(player) != echipa)	continue;

		if(echipa == CS_TEAM_CT)
		{
			switch(misiune)
			{
				case 0,1,3: progres[player] = kills_ct[player];
				case 2: progres[player] = bmb_def[player];
				default: progres[player] = 0;
			}
		}
		else
		{
			switch(misiune)
			{
				case 0: progres[player] = runde[player];
				case 1,3: progres[player] = kills_t[player];
				case 2: progres[player] = bmb_plant[player];
				default: progres[player] = 0;
			}
		}
		
		// calcularea maximului
		if(maxim <= progres[player])	maxim = progres[player];
	}

	if(ce_calculez == 0)
	{
		// algoritm: statisticile tale intr-o misiune raportate la numarul total maxim de statistici
		// nu se poate imparti la 0, deci daca maximul este 0, inseamna ca exista sanse de 100.0% ca un jucator sa castige premiul
		return (maxim == 0) ? 100.0 : (float(progres[id])/float(maxim))*100.0;
	}
	
	new len = 0, nume[32];
	if(!maxim)	len += format(text[len], charsmax(text)-len, "!3toti jucatorii!1.");
	else
	{
		for(i = 0; i < numar; i++)
		{
			player = players[i];
			if(!is_user_connected(player))	continue;
					
			if(progres[player] == maxim)
			{
				get_user_name(player, nume, charsmax(nume));
				len += format(text[len], charsmax(text)-len, "!3%s!1 | ", nume);
			}
		}
		// sa nu mai apara dupa ultimul nume caracterul '|'
		text[strlen(text)-2] = 0;
	}

	///*	debug
	console_print(id, "MAXIM jucatori: %d", maxim);
	for(i = 0; i < numar; i++)
	{
		player = players[i];
		if(!is_user_connected(player))	continue;

		if(cs_get_user_team(player) != echipa)	continue;

		get_user_name(player, nume, charsmax(nume));
		client_print(id, print_console, "--> %s	Progres: %d", nume, progres[player]);
	}
	//*/
	
	// p.l.m...
	return 1.0;
}

stock reseteaza_tot()
{
	// reset
	arrayset(bmb_plant, 0, charsmax(bmb_plant));
	arrayset(bmb_def, 0, charsmax(bmb_def));
	arrayset(kills_t, 0, charsmax(kills_t));
	arrayset(kills_ct, 0, charsmax(kills_ct));
	arrayset(runde, 0, charsmax(runde));
	
	castigator_t = -1;
	castigator_ct = -1;
	misiune_completa_t = false;
	misiune_completa_ct = false;
	nume_castigator_t[0] = EOS;
	nume_castigator_ct[0] = EOS;
}

stock format_misiune_ct(const misiune, string[128])
{
	string[0] = EOS;
	static str_to_rpl[3];
	num_to_str(misiuni_ct[misiune][info], str_to_rpl, charsmax(str_to_rpl));
	copy(string, charsmax(string), misiuni_ct[misiune][str]);
	replace(string, charsmax(string), "#", str_to_rpl);
	//client_print(id, print_chat, "%d. %s", misiune, string);
}

stock format_misiune_t(const misiune, string[128])
{
	string[0] = EOS;
	static str_to_rpl[3];
	num_to_str(misiuni_t[misiune][info], str_to_rpl, charsmax(str_to_rpl));
	copy(string, charsmax(string), misiuni_t[misiune][str]);
	replace(string, charsmax(string), "#", str_to_rpl);
	//client_print(id, print_chat, "%d. %s", misiune, string);
}

stock ColorChat(id, String[], any:...) 
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	static g_msg_SayText = 0;
	if(!g_msg_SayText)	g_msg_SayText = get_user_msgid("SayText");
	
	new Players[32], iNum = 1, i;

 	if(id) Players[0] = id;
	else get_players(Players, iNum, "ch");
	
	for(--iNum; iNum >= 0; iNum--) 
	{
		i = Players[iNum];
		
		message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i);
		write_byte(i);
		write_string(szMesage);
		message_end();
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

08 Mar 2020, 20:02

N3v3rM1nd wrote:
07 Mar 2020, 21:27
Vezi asa :

Code: Select all

#include <amxmodx>
#include <hamsandwich>
#include <cstrike>
#include <csx>

#pragma compress 1

#define PLUGIN_NAME "[AMXX] Misiuni"
#define PLUGIN_VERSION "1.0"
#define PLUGIN_AUTHOR "YONTU"


#define ULTIMA_MODIFICARE "10.02.2019"


// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------
#define TAG	"[AMXX]"
#define MIN_JUCATORI	2
#define ACCES_ADMIN	ADMIN_IMMUNITY
// --------------------------------------------
//   ------------- DE EDITAT ---------------
// --------------------------------------------

/*
	se_desfasoara:
	1 = misiunea se desfasoara
	0 = misiunea nu se desfasoara
*/

new misiune_ct, misiune_t, bool:se_desfasoara, bool:misiune_completa_t, bool:misiune_completa_ct, misiune_aleasa_ct, misiune_aleasa_t, castigator_t, castigator_ct, jucatori;
new max_players, g_sync_hudmessage, g_sync_hudmessage2;
new bmb_plant[33], bmb_def[33], nume_admin[33], kills_t[33], kills_ct[33], runde[33], text_potentiali[512], text_misiune[128],
nume_castigator_ct[32], nume_castigator_t[32];

enum datas_
{
	str[32],
	info
};

new const misiuni_t[][datas_] =
{
	{ "Rezista # de runde fara sa mori", 3 },
	{ "Ucide # anti-furieni cu cutitul", 4 },
	{ "Planteaza # bombe", 2 },
	{ "Omoara # anti-furieni", 10 }
};

new const misiuni_ct[][datas_] =
{
	{ "Omoara # furieni prin headshot", 4 },
	{ "Ucide # furieni cu lama", 2 },
	{ "Dezamorseaza # bombe", 8 },
	{ "Omoara # furieni", 3 }
};

// 93.114.82.92:27015

public plugin_init()
{
	register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR);
	register_cvar("misiuni_", PLUGIN_VERSION, FCVAR_SPONLY|FCVAR_SERVER);
	set_cvar_string("misiuni_", PLUGIN_VERSION);

	RegisterHam(Ham_Spawn, "player", "fw_PlayerSpawnPre", 1);
	register_logevent("round_end", 2, "1=Round_End");
	register_event("TextMsg", "event_textmsg", "a", "2=#Game_will_restart_in");

	register_clcmd("say", "cmd_say");
	register_clcmd("say_team", "cmd_say");

	se_desfasoara = false;
	misiune_t = -1;
	misiune_ct = -1;
	misiune_aleasa_t = -1;
	misiune_aleasa_ct = -1;
	max_players = get_maxplayers();

	// alegem misiunea imediat dupa ce s-a dat restart la server/schimbat harta
	set_task(5.0, "task_alege_misiune");

	g_sync_hudmessage = CreateHudSyncObj();
	g_sync_hudmessage2 = CreateHudSyncObj();
}

public client_putinserver(id)
{
	jucatori++;
	set_task(3.0, "task_verifica_inceput");
}

public client_disconnect(id)
{
	jucatori--;
	set_task(3.0, "task_verifica_inceput");
}

public task_verifica_inceput()
{
	se_desfasoara = (jucatori >= MIN_JUCATORI) ? true : false;
	
	if(se_desfasoara)
        {
		/*
		Misiune in desfasurare...
		
		Fii primul care termina misiunea
		si vei fi rasplatit cu un premiu
		*/
		
		new jucatori2[32], numar = 0, id, i;
		if(!misiune_completa_ct)
		{
			if(0 <= misiune_ct <= sizeof(misiuni_ct))
			{
				get_players(jucatori2, numar, "e", "CT");
				for(i = 0; i < numar; i++)
				{
					id = jucatori2[i];
					if(!is_user_connected(id))	continue;
						
					set_hudmessage(255, 255, 255, 0.2, 0.40, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage2, "Misiune in desfasurare...^n^nFii primul care termina misiunea^nsi vei fi rasplatit cu un premiu", MIN_JUCATORI - jucatori);
				}
			}
			return;
		}
		if(!misiune_completa_t)
		{
			if(0 <= misiune_t <= sizeof(misiuni_t))
			{
				get_players(jucatori2, numar, "e", "TERRORIST");
				for(i = 0; i < numar; i++)
				{
					id = jucatori2[i];
					if(!is_user_connected(id))	continue;
						
					set_hudmessage(255, 255, 255, 0.2, 0.40, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage2, "Misiune in desfasurare...^n^nFii primul care termina misiunea^nsi vei fi rasplatit cu un premiu", MIN_JUCATORI - jucatori);
				}
			}
			return;
		}
	}				
}

// sa prevenim aparitia bugurilor la noile misiuni
public event_textmsg()
{
	if(misiune_aleasa_ct != -1)
	{
		arrayset(bmb_def, 0, charsmax(bmb_def));
		arrayset(kills_ct, 0, charsmax(kills_ct));
		castigator_ct = -1;
		misiune_completa_ct = false;
	}
	if(misiune_aleasa_t != -1)
	{
		arrayset(bmb_plant, 0, charsmax(bmb_plant));
		arrayset(kills_t, 0, charsmax(kills_t));
		arrayset(runde, 0, charsmax(runde));
		castigator_t = -1;
		misiune_completa_t = false;
	}
	//reseteaza_tot();
}

// s-ar putea sa apara bug aici
// neconcludent
public task_alege_misiune()
{
	if(misiune_aleasa_t == -1)	if(misiune_t == -1)	misiune_t = random_num(0, charsmax(misiuni_t));
	if(misiune_aleasa_t == -1)	if(misiune_ct == -1)	misiune_ct = random_num(0, charsmax(misiuni_ct));

	reseteaza_tot();
}

public fw_PlayerSpawnPre(id)
{
	if(!is_user_alive(id))	return HAM_HANDLED;
		
	if(misiune_aleasa_ct != -1)
	{
		misiune_ct = misiune_aleasa_ct;
		misiune_aleasa_ct = -1;
		
		task_alege_misiune();
		if(cs_get_user_team(id) == CS_TEAM_CT)
		{
			format_misiune_ct(misiune_ct, text_misiune);
			ColorChat(id, "!4%s!1 O NOUA MISIUNE A FOST ALEASA PENTRU VOI.", TAG);
			ColorChat(id, "!4%s!1 Adminul!3 %s!1 a ales misiunea!3 %s", TAG, nume_admin, text_misiune);
		}
		return HAM_HANDLED;
	}
	if(misiune_aleasa_t != -1)
	{
		misiune_t = misiune_aleasa_t;
		misiune_aleasa_t = -1;

		task_alege_misiune();
		if(cs_get_user_team(id) == CS_TEAM_T)
		{
			format_misiune_t(misiune_t, text_misiune);
			ColorChat(id, "!4%s!1 O NOUA MISIUNE A FOST ALEASA PENTRU VOI.", TAG);
			ColorChat(id, "!4%s!1 Adminul!3 %s!1 a ales misiunea!3 %s", TAG, nume_admin, text_misiune);
		}
		return HAM_HANDLED;
	}
	
	return HAM_IGNORED;
}

/*
Pot fi mai multi jucatori care au supravietuit x runde,
asadar, pentru a alege un castigator, alegem unul random
din toti cei care au supravietuit.
*/

public round_end()
{
	if(se_desfasoara && misiune_t == 0 && !misiune_completa_t)
	{
		new players[32], numar, i, id, total = 0, id_supravietuitori[32];
		cauta_id_jucatori(players, numar);
		for(i = 0; i < numar; i++)
		{
			id = players[i];
			if(!is_user_connected(id))	continue;

			if(cs_get_user_team(id) != CS_TEAM_T)	continue;

			if(is_user_alive(id))
			{
				if(++runde[id] == misiuni_t[misiune_t][info])
				{
					// numaram toti jucatorii care au supravietuti x runde si le retinem id-ul
					id_supravietuitori[total++] = id;
					misiune_completa_t = true;
				}
			}
			else runde[id] = 0;
		}

		if(misiune_completa_t)
		{
			// am gasit id-ul castigatorului, astfel putem sa ii dam un premiu pe restul rundelor
			castigator_t = id_supravietuitori[random_num(0, total-1)];
			get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
			set_task(1.0, "task_anunta_castigator");
		}
	}
}

public task_anunta_castigator()
{
	new players[32], numar = 0, i, id, nume_castigator[32];
	if(misiune_completa_ct)
	{
		format_misiune_ct(misiune_ct, text_misiune);
		get_players(players, numar, "e", "CT");
		for(i = 0; i < numar; i++)
		{
			id = players[i];
			if(!is_user_connected(id))	continue;
				
			get_user_name(id, nume_castigator, charsmax(nume_castigator));
			
			if(id == castigator_ct && equal(nume_castigator_ct, nume_castigator))
			{
				ColorChat(id, "!4%s!1 FELICITARI!4 %s!1!!! Ai terminat primul misiunea!3 %s!1.", TAG, nume_castigator, text_misiune);
				set_task(0.25, "adauga_efecte", id, _, _, "a", 12);
			}
			else	ColorChat(id, "!4%s!1 Jucatorul!4 %s!1 a terminat primul misiunea!3 %s!1.", TAG, nume_castigator_ct, text_misiune);
		}
		return;
	}
	if(misiune_completa_t)
	{
		format_misiune_t(misiune_t, text_misiune);
		get_players(players, numar, "e", "TERRORIST");
		for(i = 0; i < numar; i++)
		{
			id = players[i];
			if(!is_user_connected(id))	continue;
				
			get_user_name(id, nume_castigator, charsmax(nume_castigator));
			
			if(id == castigator_t && equal(nume_castigator_t, nume_castigator))
			{
				ColorChat(id, "!4%s!1 FELICITARI!4 %s!1!!! Ai terminat primul misiunea!3 %s!1.", TAG, nume_castigator, text_misiune);
				set_task(0.25, "adauga_efecte", id, _, _, "a", 12);
			}
			else	ColorChat(id, "!4%s!1 Jucatorul!4 %s!1 a terminat primul misiunea!3 %s!1.", TAG, nume_castigator_t, text_misiune);
		}
	}
}

public adauga_efecte(castigator)
{
	if(!is_user_connected(castigator))	return;
		
	static g_msg_screenshake = 0;
	if(!g_msg_screenshake)	g_msg_screenshake = get_user_msgid("ScreenShake");
	
	message_begin(MSG_ONE, g_msg_screenshake, _, castigator);
	write_short(1<<14);
	write_short(1<<14);
	write_short(1<<14);
	message_end();

	static g_msg_screenfade = 0;
	if(!g_msg_screenfade)	g_msg_screenfade = get_user_msgid("ScreenFade");
		
	message_begin(MSG_ONE_UNRELIABLE, g_msg_screenfade, _, castigator);
	write_short(1<<10);
	write_short(1<<10);
	write_short(1<<12);
	write_byte(random_num(0, 255));
	write_byte(random_num(0, 255));
	write_byte(random_num(0, 255));
	write_byte(100);
	message_end();	
}

public cmd_say(id)
{
	static chat[192];
	read_args(chat, charsmax(chat));
	remove_quotes(chat);
    
	if(equali(chat, ""))	return PLUGIN_HANDLED_MAIN;

	new CsTeams:echipa = cs_get_user_team(id);
	
	if(echipa == CS_TEAM_CT)	if(misiune_ct != -1)	format_misiune_ct(misiune_aleasa_ct != -1 ? misiune_aleasa_ct : misiune_ct, text_misiune);
	else	if(misiune_t != -1)	format_misiune_t(misiune_aleasa_t != -1 ? misiune_aleasa_t : misiune_t, text_misiune);

	new comanda[32];
	strbreak(chat, comanda, charsmax(comanda), chat, charsmax(chat));

	if(equali(comanda, "misiune", 7) || equali(comanda, "/misiune", 7))
	{
		if(equali(chat[0], "help"))
		{
			meniu_statistici(id);
			return PLUGIN_CONTINUE;
		}
		if(equali(chat[0], "alege"))
		{
			if(!(get_user_flags(id) & ACCES_ADMIN))
			{
				ColorChat(id, "!4%s!1 Doar adminii au dreptul sa aleaga o misiune.", TAG);
				return PLUGIN_CONTINUE;
			}
			if(misiune_aleasa_ct != -1 || misiune_aleasa_t != -1)
			{
				ColorChat(id, "!4%s!3 A fost aleasa deja o misiune de catre adminul!1 %s!3. Te rugam sa astepti pana la urmatorul spawn.", TAG, nume_admin);
				ColorChat(id, "!4%s!1 Urmatoarea misiune:!3 %s", TAG, text_misiune);
			}
			else
			{
				static menu, text[128], tasta[2], i;
				if(echipa == CS_TEAM_CT)
				{
					formatex(text, charsmax(text), "\wAlege o misiune^nMisiunea curenta:\y %s", text_misiune);
					menu = menu_create(text, "alege_handler");
					
					for(i = 0; i < sizeof misiuni_ct; i++)
					{
						format_misiune_ct(i, text_misiune);
						formatex(text, charsmax(text), "%s%s", (i == misiune_ct) ? "\d" : "", text_misiune);
						tasta[0] = i;
						tasta[1] = 0;
						menu_additem(menu, text, tasta);
					}
				}
				else
				{
					formatex(text, charsmax(text), "\wAlege o misiune^nMisiunea curenta:\y %s", text_misiune);
					menu = menu_create(text, "alege_handler");
					
					for(i = 0; i < sizeof misiuni_t; i++)
					{
						format_misiune_t(i, text_misiune);
						formatex(text, charsmax(text), "%s%s", (i == misiune_t) ? "\d" : "", text_misiune);
						tasta[0] = i;
						tasta[1] = 0;
						menu_additem(menu, text, tasta);
					}
				}
				menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
				menu_display(id, menu, 0);
			}
			return PLUGIN_CONTINUE;
		}
		if(se_desfasoara)
		{
			if(echipa == CS_TEAM_CT)
			{
				// COMPLETA
				if(misiune_completa_ct)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_ct);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// IN DESFASURARE
					ColorChat(id, "!4%s!1 In acest moment se desfasoara misiunea:!3 %s!1 (!4%d!1).", TAG, text_misiune, misiune_ct);
					if(calculeaza(id, CS_TEAM_CT, misiune_ct, 1, text_potentiali) == 1.0)	// 1.0 succes
						ColorChat(id, "!4%s!1 Potentiali castigatori:!3 %s", TAG, text_potentiali);
		
					set_hudmessage(42, 255, 42, 0.1, 0.6, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage, "Misiunea numarul %d^n^nDescriere: %s", misiune_ct, text_misiune);
				}
			}
			else
			{
				// COMPLETA
				if(misiune_completa_t)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_t);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// IN DESFASURARE
					ColorChat(id, "!4%s!1 In acest moment se desfasoara misiunea:!3 %s!1 (!4%d!1).", TAG, text_misiune, misiune_t);
					if(calculeaza(id, CS_TEAM_T, misiune_t, 1, text_potentiali) == 1.0)	ColorChat(id, "!4%s!1 Potentiali castigatori:!3 %s", TAG, text_potentiali);
		
					set_hudmessage(42, 255, 42, 0.1, 0.6, 2, _, 2.0, _, _);
					ShowSyncHudMsg(id, g_sync_hudmessage, "Misiunea numarul %d^n^nDescriere: %s", misiune_t, text_misiune);
				}
			}
			meniu_statistici(id);
			return PLUGIN_CONTINUE;
		}
		else
		{
			if(echipa == CS_TEAM_CT)
			{
				// COMPLETA
				if(misiune_completa_ct)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_ct);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// SUSPENDATA
					if(misiune_ct != -1)
					{
						ColorChat(id, "!4%s!1 Misiunea!3 '%s'!1 a fost suspendata.", TAG, text_misiune);
						if(MIN_JUCATORI - jucatori > 0)
						{
							ColorChat(id, "!4%s!1 Nu sunt suficienti jucatori pe server pentru a continua.", TAG);
						
							set_hudmessage(42, 255, 42, 0.1, 0.60, 0, _, 2.0, _, _);
							ShowSyncHudMsg(id, g_sync_hudmessage, "JUCATORI NECESARI: inca %d", MIN_JUCATORI - jucatori);
						}
					}
					else
					{
						// NU EXISTA MISIUNE
						ColorChat(id, "!4%s!1 Momentan nu ruleaza nicio misiune pe server.", TAG);
						return PLUGIN_CONTINUE;
					}
				}
			}
			else
			{
				// COMPLETA
				if(misiune_completa_t)
				{
					ColorChat(id, "!4%s!1 Misiunea!3 %s!1 a fost castigata de!4 %s!1.", TAG, text_misiune, nume_castigator_t);
					ColorChat(id, "!4%s!1 Harta urmatoare alegem o noua misiune. Fii alaturi de noi.", TAG);
				}
				else
				{
					// SUSPENDATA
					if(misiune_t != -1)
					{
						ColorChat(id, "!4%s!1 Misiunea!3 '%s'!1 a fost suspendata.", TAG, text_misiune);
						if(MIN_JUCATORI - jucatori > 0)
						{
							ColorChat(id, "!4%s!1 Nu sunt suficienti jucatori pe server pentru a continua. Necesari:!4 %d", TAG, MIN_JUCATORI - jucatori);
						
							set_hudmessage(42, 255, 42, 0.1, 0.60, 0, _, 2.0, _, _);
							ShowSyncHudMsg(id, g_sync_hudmessage, "JUCATORI NECESARI: inca %d", MIN_JUCATORI - jucatori);
						}
					}
					else
					{
						// NU EXISTA MISIUNE
						ColorChat(id, "!4%s!1 Momentan nu ruleaza nicio misiune pe server.", TAG);
						return PLUGIN_CONTINUE;
					}
				}
			}
			meniu_statistici(id);
			return PLUGIN_CONTINUE;
		}
	}
	return PLUGIN_CONTINUE;
}

/*
Status misiune:
COMPLETA
SUSPENDATA
IN DESFASURARE
*/

public meniu_statistici(id)
{
	new CsTeams:echipa = cs_get_user_team(id);
	static menu, text[128], Float:progres;
	menu = menu_create("\rStatisticile mele", "statistici_handler");
	
	progres = 0.0;
	if(echipa == CS_TEAM_CT)
	{
		format_misiune_ct(misiune_ct, text_misiune);
		formatex(text, charsmax(text), "Misiune curenta: %s", text_misiune);
		menu_additem(menu, text, "1");
	
		if(!misiune_completa_ct)
		{
			if(misiune_ct != -1 && se_desfasoara)	formatex(text, charsmax(text), "Status misiune: \yIN DESFASURARE");
			else	formatex(text, charsmax(text), "Status misiune: \dSUSPENDATA");
			menu_additem(menu, text, "2");
			
			switch(misiune_ct)
			{
				case 0:
				{
					progres = (kills_ct[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_ct[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
				case 1:
				{
					progres = (kills_ct[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_ct[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
				case 2:
				{
					progres = (bmb_def[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Bombe dezamorsate:\r %d/%d", bmb_def[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
				case 3:
				{
					progres = (kills_ct[id] * 100.0)/float(misiuni_ct[misiune_ct][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_ct[id], misiuni_ct[misiune_ct][info]);
					menu_additem(menu, text, "4");
				}
			}

			formatex(text, charsmax(text), "Sansa de a castiga premiul:\r %.2f%%", calculeaza(id, CS_TEAM_CT, misiune_ct, 0, text_potentiali));
			menu_additem(menu, text, "5");
		}
		else
		{
			new bool:gasit = false, i, players[32], numar, player, nume_jucator[32];
			cauta_id_jucatori(players, numar);
			
			for(i = 0; i < numar; i++)
			{
				player = players[i];
				if(!is_user_connected(player))	continue;
					
				get_user_name(player, nume_jucator, charsmax(nume_jucator));
				if(equal(nume_castigator_ct, nume_jucator))
				{
					gasit = true;
					break;
				}
			}
			formatex(text, charsmax(text), "Castigator: \r%s%s (%sconectat)", nume_castigator_ct, gasit ? "\w" : "\d", gasit ? "" : "de");
			menu_additem(menu, text, "2");
		}
	}
	else
	{
		format_misiune_t(misiune_t, text_misiune);
		formatex(text, charsmax(text), "Misiune curenta: %s", text_misiune);
		menu_additem(menu, text, "1");
	
		if(!misiune_completa_t)
		{
			if(misiune_t != -1 && se_desfasoara)	formatex(text, charsmax(text), "Status misiune: \yIN DESFASURARE");
			else	formatex(text, charsmax(text), "Status misiune: \dSUSPENDATA");
			menu_additem(menu, text, "2");
			
			switch(misiune_t)
			{
				case 0:
				{
					progres = (runde[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Runde supravietuite:\r %d/%d", runde[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
				case 1:
				{
					progres = (kills_t[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_t[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
				case 2:
				{
					progres = (bmb_plant[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Bombe plantate:\r %d/%d", bmb_plant[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
				case 3:
				{
					progres = (kills_t[id] * 100.0)/float(misiuni_t[misiune_t][info]);
					formatex(text, charsmax(text), "Progresul tau:\r %.1f%%", progres);
					menu_additem(menu, text, "3");
					
					formatex(text, charsmax(text), "Kill-uri facute:\r %d/%d", kills_t[id], misiuni_t[misiune_t][info]);
					menu_additem(menu, text, "4");
				}
			}
			
			formatex(text, charsmax(text), "Sansa de a castiga premiul:\r %.2f%%", calculeaza(id, CS_TEAM_T, misiune_t, 0, text_potentiali));
			menu_additem(menu, text, "5");
		}
		else
		{
			new bool:gasit = false, i, players[32], numar, player, nume_jucator[32];
			cauta_id_jucatori(players, numar);
			
			for(i = 0; i < numar; i++)
			{
				player = players[i];
				if(!is_user_connected(player))	continue;
					
				get_user_name(player, nume_jucator, charsmax(nume_jucator));
				if(equal(nume_castigator_t, nume_jucator))
				{
					gasit = true;
					break;
				}
			}
			formatex(text, charsmax(text), "Castigator: \r%s%s (%sconectat)", nume_castigator_t, gasit ? "\w" : "\d", gasit ? "" : "de");
			menu_additem(menu, text, "2");
		}
	}

	menu_setprop(menu, MPROP_EXIT, MEXIT_ALL);
	menu_display(id, menu, 0);
}

public statistici_handler(id, menu, item)
{
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public alege_handler(id, menu, item)
{
	if(item == MENU_EXIT)
	{
		menu_destroy(menu);
		return PLUGIN_HANDLED;
	}

	new CsTeams:echipa = cs_get_user_team(id);
	if(echipa == CS_TEAM_CT)
	{
		if(item != misiune_ct)
		{
			misiune_aleasa_ct = item;
			//format_misiune_ct(misiune_aleasa_ct, text_misiune);
		}
		else
		{
			ColorChat(id, "!4%s!3 Nu poti alege misiunea curenta. Alege alta misiune.", TAG);
			menu_destroy(menu);
			return PLUGIN_HANDLED;
		}
	}
	else
	{
		if(item != misiune_t)
		{
			misiune_aleasa_t = item;
			//format_misiune_t(misiune_aleasa_t, text_misiune);
		}
		else
		{	
			ColorChat(id, "!4%s!3 Nu poti alege misiunea curenta. Alege alta misiune.", TAG);
			menu_destroy(menu);
			return PLUGIN_HANDLED;
		}
	}
	get_user_name(id, nume_admin, charsmax(nume_admin));
	ColorChat(id, "!4%s!1 Misiunea!3 %s!1 va fi activata la urmatorul spawn.", TAG, text_misiune);
	menu_destroy(menu);
	return PLUGIN_HANDLED;
}

public client_death(killer, victim, wpnindex, hitplace, tk)
{
	if(!is_user_alive(killer))	return;

	if(killer == victim)	return;

	if(!se_desfasoara)	return;

	new CsTeams:echipa = cs_get_user_team(killer);
	if(echipa == CS_TEAM_CT)
	{
		if(misiune_completa_ct)	return;
			
		switch(misiune_ct)
		{
			case 0:
			{
				if(hitplace != HIT_HEAD)	return;

				if(++kills_ct[killer] == misiuni_ct[misiune_ct][info])
				{
					castigator_ct = killer;
					misiune_completa_ct = true;
					get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			case 1:
			{
				if(wpnindex != CSW_KNIFE)	return;

				if(++kills_ct[killer] == misiuni_ct[misiune_ct][info])
				{
					castigator_ct = killer;
					misiune_completa_ct = true;
					get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			case 3:
			{
				if(++kills_ct[killer] == misiuni_ct[misiune_ct][info])
				{
					castigator_ct = killer;
					misiune_completa_ct = true;
					get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			//default: {}
		}
	}
	else
	{
		if(misiune_completa_t)	return;
			
		switch(misiune_t)
		{
			case 0: runde[victim] = 0;
			case 1:
			{
				if(wpnindex != CSW_KNIFE)	return;

				if(++kills_t[killer] == misiuni_t[misiune_t][info])
				{
					castigator_t = killer;
					misiune_completa_t = true;
					get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			case 3:
			{
				if(++kills_t[killer] == misiuni_t[misiune_t][info])
				{
					castigator_t = killer;
					misiune_completa_t = true;
					get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
					set_task(1.0, "task_anunta_castigator");
				}
			}
			//default: {}
		}
	}
}

public bomb_planted(id)
{
	if(se_desfasoara && misiune_t == 2 && !misiune_completa_t)
	{
		ColorChat(id, "!4%s!1 Felicitari!!! Ai plantat o bomba. Planteaza in continuare bombe si termina primul misiunea.", TAG);
		ColorChat(id, "!4%s!1 Urmareste-ti progresul, tastand in chat!3 /misiune!1.", TAG);

		if(++bmb_plant[id] == misiuni_t[misiune_t][info])
		{
			castigator_t = id;
			misiune_completa_t = true;
			get_user_name(castigator_t, nume_castigator_t, charsmax(nume_castigator_t));
			set_task(1.0, "task_anunta_castigator");
		}
	}
}

public bomb_defused(id)
{
	if(se_desfasoara && misiune_ct == 2 && !misiune_completa_ct)
	{
		ColorChat(id, "!4%s!1 Felicitari!!! Ai dezamorsat o bomba. Dezamorseaza in continuare bombe si termina primul misiunea.", TAG);
		ColorChat(id, "!4%s!1 Urmareste-ti progresul, tastand in chat!3 /misiune!1.", TAG);

		if(++bmb_def[id] == misiuni_ct[misiune_ct][info])
		{
			castigator_ct = id;
			misiune_completa_ct = true;
			get_user_name(castigator_ct, nume_castigator_ct, charsmax(nume_castigator_ct));
			set_task(1.0, "task_anunta_castigator");
		}
	}
}

stock cauta_id_jucatori(players[32], &numar)
{
	numar = 0;
	new player;
	for(player = 1; player <= max_players; player++)
	{
		if(!is_user_connected(player))	continue;
			
		players[numar++] = player;
	}
}

/*
	Ce calculez?
	0 = sansa
	1 = potentiali castigatori
*/

stock Float:calculeaza(id, const CsTeams:echipa, const misiune, const ce_calculez, text[512])
{
	// retinem id-ul tuturor jucatorilor de pe server (numar = total de id-uri)
	new players[32], numar, i, player;
	cauta_id_jucatori(players, numar);
	
	new progres[33], maxim = 0;
	arrayset(progres, 0, charsmax(progres));
	
	for(i = 0; i < numar; i++)
	{
		player = players[i];
		if(!is_user_connected(player))	continue;
		
		if(cs_get_user_team(player) != echipa)	continue;

		if(echipa == CS_TEAM_CT)
		{
			switch(misiune)
			{
				case 0,1,3: progres[player] = kills_ct[player];
				case 2: progres[player] = bmb_def[player];
				default: progres[player] = 0;
			}
		}
		else
		{
			switch(misiune)
			{
				case 0: progres[player] = runde[player];
				case 1,3: progres[player] = kills_t[player];
				case 2: progres[player] = bmb_plant[player];
				default: progres[player] = 0;
			}
		}
		
		// calcularea maximului
		if(maxim <= progres[player])	maxim = progres[player];
	}

	if(ce_calculez == 0)
	{
		// algoritm: statisticile tale intr-o misiune raportate la numarul total maxim de statistici
		// nu se poate imparti la 0, deci daca maximul este 0, inseamna ca exista sanse de 100.0% ca un jucator sa castige premiul
		return (maxim == 0) ? 100.0 : (float(progres[id])/float(maxim))*100.0;
	}
	
	new len = 0, nume[32];
	if(!maxim)	len += format(text[len], charsmax(text)-len, "!3toti jucatorii!1.");
	else
	{
		for(i = 0; i < numar; i++)
		{
			player = players[i];
			if(!is_user_connected(player))	continue;
					
			if(progres[player] == maxim)
			{
				get_user_name(player, nume, charsmax(nume));
				len += format(text[len], charsmax(text)-len, "!3%s!1 | ", nume);
			}
		}
		// sa nu mai apara dupa ultimul nume caracterul '|'
		text[strlen(text)-2] = 0;
	}

	///*	debug
	console_print(id, "MAXIM jucatori: %d", maxim);
	for(i = 0; i < numar; i++)
	{
		player = players[i];
		if(!is_user_connected(player))	continue;

		if(cs_get_user_team(player) != echipa)	continue;

		get_user_name(player, nume, charsmax(nume));
		client_print(id, print_console, "--> %s	Progres: %d", nume, progres[player]);
	}
	//*/
	
	// p.l.m...
	return 1.0;
}

stock reseteaza_tot()
{
	// reset
	arrayset(bmb_plant, 0, charsmax(bmb_plant));
	arrayset(bmb_def, 0, charsmax(bmb_def));
	arrayset(kills_t, 0, charsmax(kills_t));
	arrayset(kills_ct, 0, charsmax(kills_ct));
	arrayset(runde, 0, charsmax(runde));
	
	castigator_t = -1;
	castigator_ct = -1;
	misiune_completa_t = false;
	misiune_completa_ct = false;
	nume_castigator_t[0] = EOS;
	nume_castigator_ct[0] = EOS;
}

stock format_misiune_ct(const misiune, string[128])
{
	string[0] = EOS;
	static str_to_rpl[3];
	num_to_str(misiuni_ct[misiune][info], str_to_rpl, charsmax(str_to_rpl));
	copy(string, charsmax(string), misiuni_ct[misiune][str]);
	replace(string, charsmax(string), "#", str_to_rpl);
	//client_print(id, print_chat, "%d. %s", misiune, string);
}

stock format_misiune_t(const misiune, string[128])
{
	string[0] = EOS;
	static str_to_rpl[3];
	num_to_str(misiuni_t[misiune][info], str_to_rpl, charsmax(str_to_rpl));
	copy(string, charsmax(string), misiuni_t[misiune][str]);
	replace(string, charsmax(string), "#", str_to_rpl);
	//client_print(id, print_chat, "%d. %s", misiune, string);
}

stock ColorChat(id, String[], any:...) 
{
	static szMesage[192];
	vformat(szMesage, charsmax(szMesage), String, 3);
	
	replace_all(szMesage, charsmax(szMesage), "!1", "^1");
	replace_all(szMesage, charsmax(szMesage), "!3", "^3");
	replace_all(szMesage, charsmax(szMesage), "!4", "^4");
	
	static g_msg_SayText = 0;
	if(!g_msg_SayText)	g_msg_SayText = get_user_msgid("SayText");
	
	new Players[32], iNum = 1, i;

 	if(id) Players[0] = id;
	else get_players(Players, iNum, "ch");
	
	for(--iNum; iNum >= 0; iNum--) 
	{
		i = Players[iNum];
		
		message_begin(MSG_ONE_UNRELIABLE, g_msg_SayText, _, i);
		write_byte(i);
		write_string(szMesage);
		message_end();
	}
}
/* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
*{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par }
*/
nu e ce am cerut eu, ,,,, bump
Image
User avatar
levin
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 3844
Joined: 24 Aug 2011, 12:24
Detinator Steam: Da
CS Status:
Detinator server CS: ☯∴
SteamID: riseofevo
Reputatie: Scripter eXtreamCS
Nume anterior: Adryyy
Location: ҳ̸Ҳ̸ҳ
Discord: devilclass
Has thanked: 36 times
Been thanked: 594 times
Contact:

08 Mar 2020, 21:48

Pentru ajutor, faceți cerere bine detaliată, completând și respectând modelul corespunzător.
Nu-mi mai dați cereri doar pentru a mă avea în lista de prieteni.
Dacă te ajut, și mă ignori/etc > te adaug în „foe”.
Aveți grijă la cei ce încearcă să mă copieze sau să dea drept mine..Puteți lua legătura cu mine prin STEAM dacă aveți o problemă/nelămurire în acest caz! Cont de forum am doar aici.
În cazul în care utilizați ceva din ce am postat(ex: aici), e bine să fiți la curent cu modificările aduse și de aici, iar dacă sunt ceva probleme nu ezitați să luați legătura cu mine. Actualizarea unor coduri nu se vor afișa public, doar dacă se găsește ceva critic/urgent de remediat, unele fiind coduri vechi iar unele refăcute chiar recent dar private.
* Nume pe cs1.6: eVoLuTiOn \ Nume vechi: eVo
* Atelierul meu - post2819572.html#p2819572 (închis, click link ca să vedeți de ce)
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

09 Mar 2020, 19:03

nu functioneaza, il compilez si il pun pe sv , schimb mapa sa se activeze dar tot nu se activeaza!
Image
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

10 Mar 2020, 20:20

Bump
Image
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

13 Mar 2020, 15:04

bump, cineva?
Image
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 86
Joined: 06 Jun 2017, 13:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

20 Mar 2020, 00:09

CatalinACS wrote:
05 Mar 2020, 16:50
Plugin Cerut: Plugin Misiuni pentru Furien
Descriere (adica ce face el mai exact): las mai jos descrierea.
Serverul impune conditii strict HLDS/REHLDS?: nu
Ai cautat pluginul?(daca da, precizeaza cum): nu
Necesita mod special?: Furien

DESCRIERE:

Cand scrii /misiuni sa iti apara urmatoarele

Code: Select all

Misiuni Furieni (astea sa apara cand esti la echipa Terro)

[1] Ucide 5 Anti-furieni (premiu 3k XP si 30 Credite)
[2] Ucide 2 Anti-Furieni folosind  Grenada (premiu 10k XP si 100 Credite)
[3] Planteaza BOMBA (premiu 2k XP si 20 Credite)
[4] Ucide 3 Anti-Furieni prin HeadShot (premiu 3k XP si 30 Credite)

Misiuni Anti-Furieni (astea sa apara cand esti la echipa CT)

[1] Ucide 2 Furieni folosind Knife (premiu 4k XP si 40 Credite)
[2] Ucide 5 Furieni (Premiu 3k XP si 30 Credite) 
[3] Dezamorseaza Bomba (premiu 5k XP si 50 Credite)
[4] Ucide 2 Furieni folosind Grenada (premiu 10k XP si 100 Credite)
[5] Ucide 3 Furieni prin HeadShot (premiu 5k XP si 50 Credite)

Misiunile sa se reseteze o data cu schimbarea mapei sau printr-un cvar,
Dupa ce termini o misiune sa iti apara in chat un text "FELICITARI AI COMPLETAT MISIUNEA "x" SI AI PRIMIT CA PREMIU "x XP si x credite".

nativele pentru xp si credite

Code: Select all

	register_native ( "get_user_xp", "get_user_xp", 1 );
	register_native ( "set_user_xp", "set_user_xp", 1 );
	
        register_native ( "set_user_credits", "set_user_credits", 1 );
	register_native ( "get_user_credits", "get_user_credits", 1 );
bump?
Image
BiNECUVANTAT
Membru, skill 0
Membru, skill 0
Posts: 30
Joined: 04 Nov 2018, 16:40
Detinator Steam: Nu
CS Status: Citesc forumul eXtreamCS.com...!
Fond eXtream: 0
Has thanked: 2 times
Contact:

21 Mar 2020, 15:09

Code: Select all

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

#define PLUGIN "Misiuni AlphaCS"
#define VERSION "1.0"
#define AUTHOR "KillerElite aka BiNECUVANTAT"

//---------Misiuni-------
new eFurienKill[33];
new eFurienKillG[33];
new FurienKillHS[33];
new eBomba[33];
new eBombaD[33];
new eAFurienKillK[33];
new eAFurienKill[33];
new eAFurienKillHS[33];
new eAFurienKillG[33];
//----------------------


public plugin_init() 
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
	register_clcmd ( "say /misiuni", "cmdMisiuni" );
	register_clcmd ( "say_team /misiuni", "cmdMisiuni" );
	register_event("TextMsg", "bomb_planted", "a", "2&%!MRAD_BOMBPL")
	register_event("TextMsg", "bomb_defused", "a", "2&%!MRAD_BOMBDEF")
	register_event ( "DeathMsg", "eDeath", "a" );

}


public cmdMisiuni ( id ) {
    
    if (cs_get_user_team(id) == CS_TEAM_T)
    {
		new menu = menu_create ( "\r[\yFURY.ALPHACS.RO\r]\yMisiuni:", "give_cmdMisiuniT" );
		menu_additem ( menu, "\yUcide 5 Anti-furieni \r[\yPremiu: 3k XP si 30 Credite\r]", "1", 0 );
		menu_additem ( menu, "\yUcide 2 Anti-Furieni folosind  Grenada \r[\yPremiu: 10k XP si 100 Credite\r]", "2", 0 );
		menu_additem ( menu, "\yPlanteaza BOMBA \r[\yPremiu: 2k XP si 20 Credite\r]", "3", 0 );
		menu_additem ( menu, "\yUcide 3 Anti-Furieni prin HeadShot \r[\yPremiu: 3k XP si 30 Credite\r]", "4", 0 );
    
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
	
		return 1;
	}

    if (cs_get_user_team(id) == CS_TEAM_CT)
    {
		new menu = menu_create ( "\r[\yFURY.ALPHACS.RO\r]\yMisiuni:", "give_cmdMisiuniCT" );
		menu_additem ( menu, "\yUcide 2 Furieni folosind Knife \r[\yPremiu: 4k XP si 40 Credite\r]", "1", 0 );
		menu_additem ( menu, "\yUcide 5 Furieni \r[\yPremiu: 3k XP si 30 Credite\r]", "2", 0 );
		menu_additem ( menu, "\yDezamorseaza BOMBA \r[\yPremiu: 5k XP si 50 Credite\r]", "3", 0 );
		menu_additem ( menu, "\yUcide 3 Furieni prin HeadShot \r[\yPremiu: 5k XP si 50 Credite\r]", "4", 0 );
		menu_additem ( menu, "\yUcide 2 Furieni folosind Grenada \r[\yPremiu: 10k XP si 100 Credite\r]", "5", 0 );
    
		menu_setprop ( menu, MPROP_EXIT, MEXIT_ALL );
		menu_display ( id, menu, 0 );
	
		return 1;
	}

	return 0;
}

public give_cmdMisiuniT ( id, menu, item ) 
{
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
    
	new data [ 6 ], szName [ 64 ];
	new access, callback; 
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
    
	switch ( key )
	{
		case 1:
		{
			if ( eFurienKill[id] < 5 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eFurienKill[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 2:
		{
			if ( eFurienKillG[id] < 2 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eFurienKillG[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 3:
		{
			if ( eBomba[id] < 1 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eBomba[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 4:
		{
			if ( FurienKillHS[id] < 3 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				FurienKillHS[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}
	}

	return PLUGIN_HANDLED;
}

public give_cmdMisiuniCT ( id, menu, item ) 
{
	
	if( item == MENU_EXIT )
	{
		return 1;
	}
    
	new data [ 6 ], szName [ 64 ];
	new access, callback; 
	menu_item_getinfo ( menu, item, access, data,charsmax ( data ), szName,charsmax ( szName ), callback );
	new key = str_to_num ( data );
    
	switch ( key )
	{
		case 1:
		{
			if ( eAFurienKillK[id] < 2 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eAFurienKillK[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 2:
		{
			if ( eAFurienKill[id] < 5 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eAFurienKill[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 3:
		{
			if ( eBombaD[id] < 1 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eBombaD[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 4:
		{
			if ( eAFurienKillHS[id] < 3 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eAFurienKillHS[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}

		case 5:
		{
			if ( eAFurienKillG[id] < 2 )
				client_print(id, print_chat, "Nu ai terminat misiunea.");

			else
			{
				eAFurienKillG[id] = 0;
				client_print(id, print_chat, "Felicitari! Ai terminat misiunea.")
				// ...adauga aici premiul
				menu_destroy ( menu );
				return 1;
			}
		}
	}

	return PLUGIN_HANDLED;
}

public bomb_planted(id)
{
	eBomba[id] = eBomba[id] +1;
	client_print(id, print_chat, "Felicitari! Ai plantat bomba cu succes.")
}

public bomb_defused(id)
{
	eBombaD[id] = eBombaD[id] +1;
	client_print(id, print_chat, "Felicitari! Ai dezamorsat bomba cu succes.")
}


public eDeath ( ) {
	
	new iKiller = read_data ( 1 );
	new iVictim = read_data ( 2 );
	new Headshot = read_data ( 3 );
	
	new weapon [ 32 ];
	read_data ( 4, weapon, sizeof ( weapon ) -1 );
	if ( iKiller == iVictim )
	{
		return 1;
	}
	
	if ( cs_get_user_team(iKiller) == CS_TEAM_CT )
	{
		if (Headshot)
		{
			eAFurienKillHS[iKiller] = eAFurienKillHS[iKiller] + 1;
		}

		else if ( get_user_weapon ( iKiller ) == CSW_KNIFE )
		{
			eAFurienKillK[iKiller] = eAFurienKillK[iKiller] + 1;
		}

		else if ( equali ( weapon, "grenade" ) )
		{
			eAFurienKillG[iKiller] = eAFurienKillG[iKiller];
		}

		else
		{
			eAFurienKill[iKiller] = eAFurienKill[iKiller] + 1;
		}
	}

	else if ( cs_get_user_team(iKiller) == CS_TEAM_T )
	{
		if (Headshot)
		{
			FurienKillHS[iKiller] = FurienKillHS[iKiller] + 1;
		}

		else if ( equali ( weapon, "grenade" ) )
		{
			eFurienKillG[iKiller] = eFurienKillG[iKiller];
		}

		else
		{
			eFurienKill[iKiller] = eFurienKill[iKiller] + 1;
		}
	}
	return 1;
}
Iti mai adaugi tu nativele..nu am mai avut timp.
BB.ALPHACS.RO
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 18 guests