Cerere Plugin /misiuni pentru furien

Categoria cu cereri de pluginuri si nu numai.

Moderators: Moderatori ajutatori, Moderatori, Echipa eXtreamCS.com

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

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

05 Mar 2020, 16:50

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

DESCRIERE:

Cand scrii /misiuni sa iti apara urmatoarele

Code: Select all

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

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

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

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

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

nativele pentru xp si credite

Code: Select all

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

06 Mar 2020, 18:35

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

DESCRIERE:

Cand scrii /misiuni sa iti apara urmatoarele

Code: Select all

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

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

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

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

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

nativele pentru xp si credite

Code: Select all

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

07 Mar 2020, 18:34

Bump. Careva?
Image
User avatar
N3v3rM1nd
Membru, skill 0
Membru, skill 0
Posts: 91
Joined: 06 Oct 2018, 13:41
Detinator Steam: Da
CS Status: Just a simple guy :P
Detinator server CS: As vrea eu xD
SteamID: Da
Fond eXtream: 0
Location: Constanta
Has thanked: 16 times
Contact:

07 Mar 2020, 21:27

Vezi asa :

Code: Select all

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

#pragma compress 1

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


#define ULTIMA_MODIFICARE "10.02.2019"


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

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

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

enum datas_
{
	str[32],
	info
};

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

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

// 93.114.82.92:27015

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

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

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

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

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

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

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

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

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

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

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

	reseteaza_tot();
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/*
Status misiune:
COMPLETA
SUSPENDATA
IN DESFASURARE
*/

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

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

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

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

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

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

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

	if(killer == victim)	return;

	if(!se_desfasoara)	return;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

08 Mar 2020, 20:02

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

Code: Select all

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

#pragma compress 1

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


#define ULTIMA_MODIFICARE "10.02.2019"


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

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

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

enum datas_
{
	str[32],
	info
};

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

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

// 93.114.82.92:27015

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

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

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

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

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

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

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

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

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

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

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

	reseteaza_tot();
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/*
Status misiune:
COMPLETA
SUSPENDATA
IN DESFASURARE
*/

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

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

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

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

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

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

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

	if(killer == victim)	return;

	if(!se_desfasoara)	return;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

08 Mar 2020, 21:48

Nu fac nimic contra cost! Faceți cerere bine detaliată aici, pe forum. Nu-mi mai dați add pe Steam doar pentru a mă avea în lista de prieteni.
Am cont și activez doar aici! Aveți grijă la cei ce încearcă să mă copieze..Puteți lua legătura cu mine dacă aveți o problemă/nelămurire în acest caz.
În cazul în care utilizați ceva din addonsurile postate de mine aici, e bine să fiți la curent cu modificările aduse unor plugine, aici.
User avatar
CatalinACS
Membru, skill 0
Membru, skill 0
Posts: 83
Joined: 06 Jun 2017, 12:29
Detinator Steam: Da
Detinator server CS: FURY.ALPHACS.RO
SteamID: CatalinACS
Fond eXtream: 0
Been thanked: 1 time
Contact:

09 Mar 2020, 19:03

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

10 Mar 2020, 20:20

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

13 Mar 2020, 15:04

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

20 Mar 2020, 00:09

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

DESCRIERE:

Cand scrii /misiuni sa iti apara urmatoarele

Code: Select all

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

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

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

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

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

nativele pentru xp si credite

Code: Select all

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

21 Mar 2020, 15:09

Code: Select all

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

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

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


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

}


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

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

	return 0;
}

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

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

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

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

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

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

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

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

	return PLUGIN_HANDLED;
}

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

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

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

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

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

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

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

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

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

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

	return PLUGIN_HANDLED;
}

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

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


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

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

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

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

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

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

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

Return to “Cereri”

  • Information