Page 1 of 1

Simple MIX 1.0

Posted: 21 May 2019, 02:02
by LondoN eXtream
Descriere: Este un plugin simplu de mix. Contine: warm, restart, knife, chat, start, stop, score.

Descarcare:
| Afiseaza codul
#include <amxmodx>
#include <amxmisc>
#include <cstrike>

new const PLUGIN[] = "MIX by LondoN";
new const VERSION[] = "1.0";
new const AUTHOR[] = "LondoN eXtream";

enum _:ScoreData
{
	TERO = 0,
	CT,
	TERO_PART_TWO,
	CT_PART_TWO
};

new g_Score[ScoreData];
new bool: g_MixStarted, bool: g_KnifeRound, bool: g_Chat, bool: g_PartTwo, g_RoundNum;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_clcmd("say /warm", "_func_warm", ADMIN_KICK);
	register_clcmd("say /restart", "_func_restart", ADMIN_KICK);
	register_clcmd("say /knife", "_func_knife", ADMIN_KICK);
	register_clcmd("say /chat", "_func_chat", ADMIN_KICK);
	register_clcmd("say /start", "_func_start", ADMIN_KICK);
	register_clcmd("say /stop", "_func_stop", ADMIN_KICK);
	register_clcmd("say /score", "_func_score", ADMIN_KICK);
	register_clcmd("say", "_func_say", ADMIN_KICK);

	register_event("SendAudio", "EVENT_TWIN", "a", "2&%!MRAD_terwin");
	register_event("SendAudio", "EVENT_CTWIN", "a", "2&%!MRAD_ctwin");
	register_event("CurWeapon", "EVENT_CurWeap", "be", "1=1");
	register_event("HLTV", "EVENT_NewRound", "a");

	register_logevent("LOG_RoundEnd", 2, "1=RoundEnd");
}

public _func_warm(Player)
{
	server_cmd("sv_restart 2");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");

	g_MixStarted = false;
	g_KnifeRound = false;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_restart(Player)
{
	server_cmd("sv_restart 1");
	
	g_MixStarted = true;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_knife(Player)
{
	server_cmd("sv_restart 2");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");

	g_MixStarted = false;
	g_KnifeRound = true;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_chat(Player)
{
	if(g_Chat)
		g_Chat = false;
	else
		g_Chat = true;
}

public _func_start(Player)
{
	server_cmd("sv_restart 5");
	server_cmd("mp_freezetime 9");
	server_cmd("mp_startmoney 800");
	server_cmd("mp_friendlyfire 1");
	server_cmd("mp_buytime .25");

	g_MixStarted = true;
	g_Chat = true;
	g_KnifeRound = false;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO];
}

public _func_stop(Player)
{
	server_cmd("sv_restart 1");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");
	server_cmd("mp_friendlyfire 0");

	g_MixStarted = false;
	g_KnifeRound = false;
	g_Chat = false;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_score(Player)
{
	client_print(Player, print_chat, "------ Score ------");
	client_print(Player, print_chat, "TERO: %d", g_PartTwo ? g_Score[TERO_PART_TWO] : g_Score[TERO]);
	client_print(Player, print_chat, "CT: %d", g_PartTwo ? g_Score[CT_PART_TWO] : g_Score[CT]);
	client_print(Player, print_chat, "------ Score ------");
	return;
}

public _func_say(Player)
{
	new Args[192];
	read_args(Args, charsmax(Args));
	remove_quotes(Args);

	if(g_Chat)
		return;

	new g_szPassCmd[16], g_szPass[16];
	parse(Args, g_szPassCmd, charsmax(g_szPassCmd), g_szPass, charsmax(g_szPass))

	if(equal(g_szPassCmd, "/pass") && strlen(g_szPass))
		server_cmd("sv_password ^"%s^"", g_szPass);
}

public EVENT_TWIN()
{
	switch(g_PartTwo)
	{
		case true:	g_Score[TERO_PART_TWO] += 1;
		case false:	g_Score[TERO] += 1;
	}
}

public EVENT_CTWIN()
{
	switch(g_PartTwo)
	{
		case true:	g_Score[CT_PART_TWO] += 1;
		case false:	g_Score[CT] += 1;
	}
}

public EVENT_CurWeap(Player)
{
	if(g_KnifeRound)
		engclient_cmd(Player, "weapon_knife");
}

public EVENT_NewRound()
{
	if(g_MixStarted)
	{
		switch(g_PartTwo)
		{
			case false:
			{
				if(g_Score[TERO] > g_Score[CT])
					client_print(0, print_chat, "Scorul este %d - %d pentru TERO", g_Score[TERO], g_Score[CT]);
				if(g_Score[CT] > g_Score[TERO])
					client_print(0, print_chat, "Scorul este %d - %d pentru CT", g_Score[CT], g_Score[TERO]);
				if(g_Score[TERO] == g_Score[CT])
					client_print(0, print_chat, "Scorul este %d - %d (egalitate)", g_Score[TERO], g_Score[CT]);
				
			}

			case true:
			{
				new T = g_Score[TERO] + g_Score[TERO_PART_TWO];
				new CTS = g_Score[CT] + g_Score[CT_PART_TWO];

				if(T == 16 || CTS == 16)
				{
					if(T > CTS)
					{
						client_print(0, print_chat, "Meciul a fost castigat de TERO");
						client_print(0, print_chat, "SCOR: %d - %d", T, CTS);

						CMD_Settings();
					}

					if(CTS > T)
					{
						client_print(0, print_chat, "Meciul a fost castigat de CT");
						client_print(0, print_chat, "SCOR: %d - %d", CTS, T);

						CMD_Settings();
					}
				}
				else
				{
					if(T > CTS)
						client_print(0, print_chat, "Scorul este %d - %d pentru TERO", T, CTS);
					if(CTS > T)
						client_print(0, print_chat, "Scorul este %d - %d pentru CT", CTS, T);
					if(T == CTS)
						client_print(0, print_chat, "Scorul este %d - %d (egalitate)", T, CTS);
				}
			}
		}
	}
}

public CMD_Settings()
{
	g_MixStarted = false;
	g_PartTwo = false;
	g_Score[CT] = g_Score[TERO] = g_Score[CT_PART_TWO] = g_Score[TERO_PART_TWO] = 0;
		
	server_cmd("sv_restart 1");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");
	server_cmd("mp_friendlyfire 0");
}

public LOG_RoundEnd()
{
	g_RoundNum++;

	if(g_PartTwo && g_RoundNum == 31)
	{
		client_print(0, print_chat, "MIX-ul s-a terminat la egalitate");

		CMD_Settings();
	}
	else if(g_RoundNum >= 15)
	{
		new Players[32], iNum;
		get_players(Players, iNum);
		
		for(new i; i < iNum; i++)
			_func_delay(Players);
	}
}

public _func_delay(Player)
{
	switch(Player)
	{
		case 1..7:	set_task(0.1, "_func_swap", Player);
		case 8..15:	set_task(0.2, "_func_swap", Player);
		case 16..23:	set_task(0.3, "_func_swap", Player);
		case 24..32:	set_task(0.4, "_func_swap", Player);
	}
}

public _func_swap(Player)
{
	switch(cs_get_user_team(Player))
	{
		case CS_TEAM_CT:	cs_set_user_team(Player, CS_TEAM_T);
		case CS_TEAM_T:		cs_set_user_team(Player, CS_TEAM_CT);
	}

	g_RoundNum = 0;
	g_PartTwo = true;

	server_cmd("sv_restart 1");
}

Nume: Simple Mix
Versiune: 1.0

Instalare:
1. Fisierul nume_plugin.sma il puneti in addons/amxmodx/scripting
2. Fisierul nume_plugin.amxx il puneti in addons/amxmodx/plugins
3. Intrati in fisierul addons/amxmodx/configs/plugins.ini si adaugati la urma:

Code: Select all

nume_plugin.amxx

Re: Simple MIX 1.0

Posted: 30 Mar 2020, 14:07
by Freezy.
Hai că da :))

Code: Select all

/tmp/textXB2ZXa.sma(242) : error 035: argument type mismatch (argument 1)
/tmp/textXB2ZXa.sma(269) : error 010: invalid function or declaration
/tmp/textXB2ZXa.sma(273) : error 021: symbol already defined: "PLUGIN"
/tmp/textXB2ZXa.sma(274) : error 021: symbol already defined: "VERSION"
/tmp/textXB2ZXa.sma(275) : error 021: symbol already defined: "AUTHOR"
/tmp/textXB2ZXa.sma(278) : warning 201: redefinition of constant/macro (symbol "ScoreData")
/tmp/textXB2ZXa.sma(285) : error 021: symbol already defined: "g_Score"
/tmp/textXB2ZXa.sma(286) : error 021: symbol already defined: "g_MixStarted"
/tmp/textXB2ZXa.sma(289) : error 021: symbol already defined: "plugin_init"
/tmp/textXB2ZXa.sma(310) : error 021: symbol already defined: "_func_warm"
/tmp/textXB2ZXa.sma(322) : error 021: symbol already defined: "_func_restart"
/tmp/textXB2ZXa.sma(331) : error 021: symbol already defined: "_func_knife"
/tmp/textXB2ZXa.sma(343) : error 021: symbol already defined: "_func_chat"
/tmp/textXB2ZXa.sma(351) : error 021: symbol already defined: "_func_start"
/tmp/textXB2ZXa.sma(366) : error 021: symbol already defined: "_func_stop"
/tmp/textXB2ZXa.sma(380) : error 021: symbol already defined: "_func_score"
/tmp/textXB2ZXa.sma(389) : error 021: symbol already defined: "_func_say"
/tmp/textXB2ZXa.sma(405) : error 021: symbol already defined: "EVENT_TWIN"
/tmp/textXB2ZXa.sma(414) : error 021: symbol already defined: "EVENT_CTWIN"
/tmp/textXB2ZXa.sma(423) : error 021: symbol already defined: "EVENT_CurWeap"
/tmp/textXB2ZXa.sma(429) : error 021: symbol already defined: "EVENT_NewRound"
/tmp/textXB2ZXa.sma(483) : error 021: symbol already defined: "CMD_Settings"
/tmp/textXB2ZXa.sma(495) : error 021: symbol already defined: "LOG_RoundEnd"
/tmp/textXB2ZXa.sma(510) : error 035: argument type mismatch (argument 1)
/tmp/textXB2ZXa.sma(515) : error 021: symbol already defined: "_func_delay"
/tmp/textXB2ZXa.sma(526) : error 021: symbol already defined: "_func_swap"

25 Errors.
Could not locate output file /home/groups/amxmodx/public_html/websc3/textXB2ZXa.amx (compile failed).

Re: Simple MIX 1.0

Posted: 30 Mar 2020, 15:36
by levin

Code: Select all

#include <amxmodx>
#include <amxmisc>
#include <cstrike>

new const PLUGIN[] = "MIX by LondoN";
new const VERSION[] = "1.0";
new const AUTHOR[] = "LondoN eXtream";

enum _:ScoreData
{
	TERO = 0,
	CT,
	TERO_PART_TWO,
	CT_PART_TWO
};

new g_Score[ScoreData];
new bool: g_MixStarted, bool: g_KnifeRound, bool: g_Chat, bool: g_PartTwo, g_RoundNum;

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR);

	register_clcmd("say /warm", "_func_warm", ADMIN_KICK);
	register_clcmd("say /restart", "_func_restart", ADMIN_KICK);
	register_clcmd("say /knife", "_func_knife", ADMIN_KICK);
	register_clcmd("say /chat", "_func_chat", ADMIN_KICK);
	register_clcmd("say /start", "_func_start", ADMIN_KICK);
	register_clcmd("say /stop", "_func_stop", ADMIN_KICK);
	register_clcmd("say /score", "_func_score", ADMIN_KICK);
	register_clcmd("say", "_func_say", ADMIN_KICK);

	register_event("SendAudio", "EVENT_TWIN", "a", "2&%!MRAD_terwin");
	register_event("SendAudio", "EVENT_CTWIN", "a", "2&%!MRAD_ctwin");
	register_event("CurWeapon", "EVENT_CurWeap", "be", "1=1");
	register_event("HLTV", "EVENT_NewRound", "a");

	register_logevent("LOG_RoundEnd", 2, "1=RoundEnd");
}

public _func_warm(Player)
{
	server_cmd("sv_restart 2");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");

	g_MixStarted = false;
	g_KnifeRound = false;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_restart(Player)
{
	server_cmd("sv_restart 1");
	
	g_MixStarted = true;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_knife(Player)
{
	server_cmd("sv_restart 2");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");

	g_MixStarted = false;
	g_KnifeRound = true;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_chat(Player)
{
	if(g_Chat)
		g_Chat = false;
	else
		g_Chat = true;
}

public _func_start(Player)
{
	server_cmd("sv_restart 5");
	server_cmd("mp_freezetime 9");
	server_cmd("mp_startmoney 800");
	server_cmd("mp_friendlyfire 1");
	server_cmd("mp_buytime .25");

	g_MixStarted = true;
	g_Chat = true;
	g_KnifeRound = false;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO];
}

public _func_stop(Player)
{
	server_cmd("sv_restart 1");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");
	server_cmd("mp_friendlyfire 0");

	g_MixStarted = false;
	g_KnifeRound = false;
	g_Chat = false;
	g_RoundNum = 0;
	g_Score[TERO] = g_Score[CT] = g_Score[TERO_PART_TWO] = g_Score[CT_PART_TWO] = 0;
}

public _func_score(Player)
{
	client_print(Player, print_chat, "------ Score ------");
	client_print(Player, print_chat, "TERO: %d", g_PartTwo ? g_Score[TERO_PART_TWO] : g_Score[TERO]);
	client_print(Player, print_chat, "CT: %d", g_PartTwo ? g_Score[CT_PART_TWO] : g_Score[CT]);
	client_print(Player, print_chat, "------ Score ------");
	return;
}

public _func_say(Player)
{
	new Args[192];
	read_args(Args, charsmax(Args));
	remove_quotes(Args);

	if(g_Chat)
		return;

	new g_szPassCmd[16], g_szPass[16];
	parse(Args, g_szPassCmd, charsmax(g_szPassCmd), g_szPass, charsmax(g_szPass))

	if(equal(g_szPassCmd, "/pass") && strlen(g_szPass))
		server_cmd("sv_password ^"%s^"", g_szPass);
}

public EVENT_TWIN()
{
	switch(g_PartTwo)
	{
		case true:	g_Score[TERO_PART_TWO] += 1;
		case false:	g_Score[TERO] += 1;
	}
}

public EVENT_CTWIN()
{
	switch(g_PartTwo)
	{
		case true:	g_Score[CT_PART_TWO] += 1;
		case false:	g_Score[CT] += 1;
	}
}

public EVENT_CurWeap(Player)
{
	if(g_KnifeRound)
		engclient_cmd(Player, "weapon_knife");
}

public EVENT_NewRound()
{
	if(g_MixStarted)
	{
		switch(g_PartTwo)
		{
			case false:
			{
				if(g_Score[TERO] > g_Score[CT])
					client_print(0, print_chat, "Scorul este %d - %d pentru TERO", g_Score[TERO], g_Score[CT]);
				if(g_Score[CT] > g_Score[TERO])
					client_print(0, print_chat, "Scorul este %d - %d pentru CT", g_Score[CT], g_Score[TERO]);
				if(g_Score[TERO] == g_Score[CT])
					client_print(0, print_chat, "Scorul este %d - %d (egalitate)", g_Score[TERO], g_Score[CT]);
				
			}

			case true:
			{
				new T = g_Score[TERO] + g_Score[TERO_PART_TWO];
				new CTS = g_Score[CT] + g_Score[CT_PART_TWO];

				if(T == 16 || CTS == 16)
				{
					if(T > CTS)
					{
						client_print(0, print_chat, "Meciul a fost castigat de TERO");
						client_print(0, print_chat, "SCOR: %d - %d", T, CTS);

						CMD_Settings();
					}

					if(CTS > T)
					{
						client_print(0, print_chat, "Meciul a fost castigat de CT");
						client_print(0, print_chat, "SCOR: %d - %d", CTS, T);

						CMD_Settings();
					}
				}
				else
				{
					if(T > CTS)
						client_print(0, print_chat, "Scorul este %d - %d pentru TERO", T, CTS);
					if(CTS > T)
						client_print(0, print_chat, "Scorul este %d - %d pentru CT", CTS, T);
					if(T == CTS)
						client_print(0, print_chat, "Scorul este %d - %d (egalitate)", T, CTS);
				}
			}
		}
	}
}

public CMD_Settings()
{
	g_MixStarted = false;
	g_PartTwo = false;
	g_Score[CT] = g_Score[TERO] = g_Score[CT_PART_TWO] = g_Score[TERO_PART_TWO] = 0;
		
	server_cmd("sv_restart 1");
	server_cmd("mp_freezetime 0");
	server_cmd("mp_startmoney 16000");
	server_cmd("mp_friendlyfire 0");
}

public LOG_RoundEnd()
{
	g_RoundNum++;

	if(g_PartTwo && g_RoundNum == 31)
	{
		client_print(0, print_chat, "MIX-ul s-a terminat la egalitate");

		CMD_Settings();
	}
	else if(g_RoundNum >= 15)
	{
		new Players[32], iNum;
		get_players(Players, iNum);
		
		for(new i; i < iNum; i++)
			_func_delay(Players[i]);
	}
}

public _func_delay(Player)
{
	switch(Player)
	{
		case 1..7:	set_task(0.1, "_func_swap", Player);
		case 8..15:	set_task(0.2, "_func_swap", Player);
		case 16..23:	set_task(0.3, "_func_swap", Player);
		case 24..32:	set_task(0.4, "_func_swap", Player);
	}
}

public _func_swap(Player)
{
	switch(cs_get_user_team(Player))
	{
		case CS_TEAM_CT:	cs_set_user_team(Player, CS_TEAM_T);
		case CS_TEAM_T:		cs_set_user_team(Player, CS_TEAM_CT);
	}

	g_RoundNum = 0;
	g_PartTwo = true;

	server_cmd("sv_restart 1");
}

Re: Simple MIX 1.0

Posted: 30 Mar 2020, 15:59
by Freezy.
În mare parte pluginul e ok, îi lipsesc câteva chestii, are nevoie de nişte mesaje pentru fiecare comandă în parte, pentru că nu apare nimic.
Comanda de /specall lafel ar fi fost utilă şi cea de t/ct/spec.

Dacă doreşti să discutăm levin şi să-l faci aşa cum mi-ar plăcea să fie, te pot plătii, mersi.