Cerere plugin misiuni

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 .
User avatar
gaNNNja
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 152
Joined: 26 Jun 2014, 17:02
Detinator Steam: Da
CS Status: promns.ro
Detinator server CS: promns.ro
SteamID: Gollum_
Reputatie: Utilizator neserios (tepar)
Fond eXtream: 0
Location: Bucuresti
Has thanked: 3 times
Been thanked: 5 times
Contact:

04 Nov 2019, 23:45

Plugin Cerut: plugin misiuni furien
Descriere (adica ce face el mai exact):
Serverul ruleaza (HLDS/ReHLDS): rehlds
Versiune AMX Mod X: 1.8.2
Modul Serverului: furien remade

Imagini.
| Afiseaza codul
Image
Image
Image
Image
Image
Image
User avatar
gaNNNja
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 152
Joined: 26 Jun 2014, 17:02
Detinator Steam: Da
CS Status: promns.ro
Detinator server CS: promns.ro
SteamID: Gollum_
Reputatie: Utilizator neserios (tepar)
Fond eXtream: 0
Location: Bucuresti
Has thanked: 3 times
Been thanked: 5 times
Contact:

06 Nov 2019, 18:41

Cineva ?
Image
Image
User avatar
Jucator
Membru, skill +1
Membru, skill +1
Posts: 283
Joined: 15 Jul 2017, 21:38
Detinator Steam: Da
Fond eXtream: 0
Location: PornHUB
Has thanked: 36 times
Been thanked: 13 times
Contact:

06 Nov 2019, 22:46

gaNNNja wrote:
06 Nov 2019, 18:41
Cineva ?
Acel plugin este băgat în sistem Addons doar daca vb cu deținătorul serverului îl poți să ai contra cost
Unde stau +ss
| Afiseaza codul
MILSUGI?ai luat țeapă 
User avatar
gaNNNja
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 152
Joined: 26 Jun 2014, 17:02
Detinator Steam: Da
CS Status: promns.ro
Detinator server CS: promns.ro
SteamID: Gollum_
Reputatie: Utilizator neserios (tepar)
Fond eXtream: 0
Location: Bucuresti
Has thanked: 3 times
Been thanked: 5 times
Contact:

06 Nov 2019, 23:29

Acel plugin nu este integrat în modul de baza . Este un plugin separat care nu are treaba cu modul
Image
Image
User avatar
cyby
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 1777
Joined: 16 Jul 2011, 21:46
Detinator Steam: Da
Detinator server CS: Da
Reputatie: Scripter eXtreamCS
Fost Moderator ajutator
Has thanked: 146 times
Been thanked: 396 times

07 Nov 2019, 12:36

93.114.82.17:27015 - Monster Invasion CO-OP Mod
User avatar
-ToTo-
Membru, skill +2
Membru, skill +2
Posts: 502
Joined: 30 Jul 2016, 21:28
Detinator Steam: Da
CS Status: Muncă
SteamID: id/totooffices/
Fond eXtream: 0
Location: Botosani
Has thanked: 10 times
Been thanked: 5 times

08 Nov 2019, 19:42

Ia legatura cu YONTU daca il mai are, iam dat acu cateva luni sa mi-l faca, dar am inceput munca si nu am avut cum lua legatura cu el, cu ocazia asta imi cer si scuze ca l-am pus sa mi-l faca si nu iam mai dat nici un semn, dar pedeoparte am si uitat. 100lei parca era pluginu.
Aici era in testare, trebuia sa fie cu arme cso pentru anti-furieni si puteri pentru furieni ceva de genu din cate imi aduc aminte special pentru modu ala a lui cyby, si multe altele, dar nu imi mai aduc aminte bine.
Furien Remade Level || Class || Power || Quest || Event
IP : 188.212.100.219:27015

User avatar
YONTU
Scripter eXtreamCS
Scripter eXtreamCS
Posts: 2466
Joined: 10 May 2013, 14:25
Detinator Steam: Nu
CS Status: Everyone is looking at ur shoes
Reputatie: Moderator ajutator
Fost scripter eXtreamCS
Location: Gura Humorului
Has thanked: 256 times
Been thanked: 288 times
Contact:

24 Dec 2019, 10:13

misiuni.sma | Afiseaza codul
/*
LICENTA


DETALII PLUGIN:

System Misiuni pentru Furien si Anti-Furieni. Sa fie cate o  misiune random activa la fiecare echipa pe toata durata mapei.
Cand scrii "/misiune" sa arate ce misiune se desfasoara in acel moment.
Cand scrii "misiune alege" sa pot alege eu o misiune
Cine termina primul aceste misiuni sa scrie in chat: 
(Anti-Furien) Jucatoru Ionica a indeplinit misiunea si a primit 120 dolari si hook.
(Furien) Jucatoru Ionica a indeplinit misiunea si a primit 120 dolari si teleport.
( acesti dolari sa fie salavati ca baza nu salveaza :)) )
premiile dureaza toata harta

#Anti-Furieni
Omoara 10 Furieni prin HeadShot.
Ucide 6 furieni cu lama
Dezamorseaza 8 bombe.
Omoara 30 furieni.

#Furieni
Foloseste 140$ intr-o runda.
Fa 35 kill-uri cu knife-ul.
Planteaza 10 bombe.
Omoara 30 anti-furieni.

Acestea sa se activeze cand sunt peste 3 playeri.

Meniu statisticile tale:
1. Misiune curenta: X
2. Killurile tale:  (+ procentaj) (x% completat)
3. Bombe plantate: (+ procentaj)
4. Bombe dezamorsate


CE TREBUIE SA MAI FAC:
- modt despre misiuni
- daca s-a incheiat o misiune iar castigatorul trece de la o echipa la cealalta ce se intampla?
- de afisat mesaj hud cu castigatorul imediat dupa ce a finalizat misiunea (o singura data)
- cand dam premiul la castigator sa verificam daca e conectat si in viata
- de adaugat invartire ecran la castigator
- cvar-uri
- progresul facut intr-o runda (de ex. tre sa fac 10 killuri, iar eu am facut 3 => arat procentaj)
- bug: misiune castigata dar am ales alta misiune => mesajele
DACA APAR ERORI:
- mutam maxim pe static si il trecem prin referinta
- restart la pc -> memorie volatila
- de verifcat tasku-ul task_anunta_castigator() cand misiunea la t este prima (de verificat de mai multe ori)

*/

#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;
					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;
					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;
			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;
			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;
			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)	// 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_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;
				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;
				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;
		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;
			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;
		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 }
*/


uite aici ai pluginul. l am lasat exact asa dupa ultima modificare care a avut loc

Code: Select all

#define ULTIMA_MODIFICARE "10.02.2019"
=))))))
o sa mi fac timp si o sa mi postez toate pluginurile mele inclusiv addonsurile alea de biohazard pe care mi le ati cerut pe privat

edit: comenzi:
/misiune
/misiune help
/misiune alege

ca sa modifici valorile (numerele intregi) ai aici array-urile:
| Afiseaza codul
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 }
};
„Peste douăzeci de ani vei fi dezamăgit din cauza lucrurilor pe care nu le-ai făcut, nu din cauza celor pe care le-ai făcut.” - Mark Twain
„Asa e si in viata, hotii castiga, prostii care invata pierd.” - Mihai Nemeș


Bio.LeagueCs.Ro - Biohazard v4.4 Xmas Edition
discord: IonutC#5114

Experinta in: Java/Spring boot/Angular/C/C++/C#/Javascript/Python/HTML/CSS/Pawn/SQL
Ai nevoie de ajutorul meu? Ma poti gasi doar la adresa de discord de mai sus.
User avatar
gaNNNja
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 152
Joined: 26 Jun 2014, 17:02
Detinator Steam: Da
CS Status: promns.ro
Detinator server CS: promns.ro
SteamID: Gollum_
Reputatie: Utilizator neserios (tepar)
Fond eXtream: 0
Location: Bucuresti
Has thanked: 3 times
Been thanked: 5 times
Contact:

25 Dec 2019, 12:46

Mulțumesc frumos. Se poate inchide
Image
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:

05 Mar 2020, 16:01

YONTU wrote:
24 Dec 2019, 10:13
misiuni.sma | Afiseaza codul
/*
LICENTA


DETALII PLUGIN:

System Misiuni pentru Furien si Anti-Furieni. Sa fie cate o  misiune random activa la fiecare echipa pe toata durata mapei.
Cand scrii "/misiune" sa arate ce misiune se desfasoara in acel moment.
Cand scrii "misiune alege" sa pot alege eu o misiune
Cine termina primul aceste misiuni sa scrie in chat: 
(Anti-Furien) Jucatoru Ionica a indeplinit misiunea si a primit 120 dolari si hook.
(Furien) Jucatoru Ionica a indeplinit misiunea si a primit 120 dolari si teleport.
( acesti dolari sa fie salavati ca baza nu salveaza :)) )
premiile dureaza toata harta

#Anti-Furieni
Omoara 10 Furieni prin HeadShot.
Ucide 6 furieni cu lama
Dezamorseaza 8 bombe.
Omoara 30 furieni.

#Furieni
Foloseste 140$ intr-o runda.
Fa 35 kill-uri cu knife-ul.
Planteaza 10 bombe.
Omoara 30 anti-furieni.

Acestea sa se activeze cand sunt peste 3 playeri.

Meniu statisticile tale:
1. Misiune curenta: X
2. Killurile tale:  (+ procentaj) (x% completat)
3. Bombe plantate: (+ procentaj)
4. Bombe dezamorsate


CE TREBUIE SA MAI FAC:
- modt despre misiuni
- daca s-a incheiat o misiune iar castigatorul trece de la o echipa la cealalta ce se intampla?
- de afisat mesaj hud cu castigatorul imediat dupa ce a finalizat misiunea (o singura data)
- cand dam premiul la castigator sa verificam daca e conectat si in viata
- de adaugat invartire ecran la castigator
- cvar-uri
- progresul facut intr-o runda (de ex. tre sa fac 10 killuri, iar eu am facut 3 => arat procentaj)
- bug: misiune castigata dar am ales alta misiune => mesajele
DACA APAR ERORI:
- mutam maxim pe static si il trecem prin referinta
- restart la pc -> memorie volatila
- de verifcat tasku-ul task_anunta_castigator() cand misiunea la t este prima (de verificat de mai multe ori)

*/

#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;
					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;
					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;
			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;
			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;
			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)	// 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_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;
				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;
				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;
		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;
			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;
		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 }
*/


uite aici ai pluginul. l am lasat exact asa dupa ultima modificare care a avut loc

Code: Select all

#define ULTIMA_MODIFICARE "10.02.2019"
=))))))
o sa mi fac timp si o sa mi postez toate pluginurile mele inclusiv addonsurile alea de biohazard pe care mi le ati cerut pe privat

edit: comenzi:
/misiune
/misiune help
/misiune alege

ca sa modifici valorile (numerele intregi) ai aici array-urile:
| Afiseaza codul
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 }
};
nu se poate compila si il vreau si eu. poate rezolva cineva?
Image
User avatar
DaNNe.
Fost moderator
Fost moderator
Posts: 2811
Joined: 08 Nov 2013, 20:43
Detinator Steam: Da
CS Status: Activitate scăzută
SteamID: /id/FurienMaster
Reputatie: Nick anterior: DnD. Gold, Emrys
0.5/3
Fost moderator ajutator
Fost Membru Club eXtreamCS (doua luni)
Has thanked: 244 times
Been thanked: 129 times
Contact:

05 Mar 2020, 16:54

Ce eroare primești?
User avatar
mariusexeqt
Utilizator neserios (tepar)
Utilizator neserios (tepar)
Posts: 199
Joined: 01 Jan 2020, 22:55
Detinator Steam: Da
Fond eXtream: 0
Has thanked: 4 times
Been thanked: 4 times
Contact:

05 Mar 2020, 18:50

DaNNe. wrote:
05 Mar 2020, 16:54
Ce eroare primești?
| Afiseaza codul
128ca3a872998f5c9e6c27383b072f7c.sma(173) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(190) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(293) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(331) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(355) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(674) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(753) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(980) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(1026) : error 006: must be assigned to an array
128ca3a872998f5c9e6c27383b072f7c.sma(1044) : error 006: must be assigned to an array
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:

05 Mar 2020, 21:30

Code: Select all

/*
LICENTA


DETALII PLUGIN:

System Misiuni pentru Furien si Anti-Furieni. Sa fie cate o  misiune random activa la fiecare echipa pe toata durata mapei.
Cand scrii "/misiune" sa arate ce misiune se desfasoara in acel moment.
Cand scrii "misiune alege" sa pot alege eu o misiune
Cine termina primul aceste misiuni sa scrie in chat: 
(Anti-Furien) Jucatoru Ionica a indeplinit misiunea si a primit 120 dolari si hook.
(Furien) Jucatoru Ionica a indeplinit misiunea si a primit 120 dolari si teleport.
( acesti dolari sa fie salavati ca baza nu salveaza :)) )
premiile dureaza toata harta

#Anti-Furieni
Omoara 10 Furieni prin HeadShot.
Ucide 6 furieni cu lama
Dezamorseaza 8 bombe.
Omoara 30 furieni.

#Furieni
Foloseste 140$ intr-o runda.
Fa 35 kill-uri cu knife-ul.
Planteaza 10 bombe.
Omoara 30 anti-furieni.

Acestea sa se activeze cand sunt peste 3 playeri.

Meniu statisticile tale:
1. Misiune curenta: X
2. Killurile tale:  (+ procentaj) (x% completat)
3. Bombe plantate: (+ procentaj)
4. Bombe dezamorsate


CE TREBUIE SA MAI FAC:
- modt despre misiuni
- daca s-a incheiat o misiune iar castigatorul trece de la o echipa la cealalta ce se intampla?
- de afisat mesaj hud cu castigatorul imediat dupa ce a finalizat misiunea (o singura data)
- cand dam premiul la castigator sa verificam daca e conectat si in viata
- de adaugat invartire ecran la castigator
- cvar-uri
- progresul facut intr-o runda (de ex. tre sa fac 10 killuri, iar eu am facut 3 => arat procentaj)
- bug: misiune castigata dar am ales alta misiune => mesajele
DACA APAR ERORI:
- mutam maxim pe static si il trecem prin referinta
- restart la pc -> memorie volatila
- de verifcat tasku-ul task_anunta_castigator() cand misiunea la t este prima (de verificat de mai multe ori)

*/

#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 }
*/
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)
Post Reply

Return to “Cereri”

  • Information
  • Who is online

    Users browsing this forum: No registered users and 14 guests