Skocz do zawartości

  • Zaloguj korzystając z Facebooka Zaloguj korzystając z Twittera Zaloguj przez Steam Zaloguj poprzez Google      Logowanie »   
  • Rejestracja

Witamy w Nieoficjalnym polskim support'cie AMX Mod X

Witamy w Nieoficjalnym polskim support'cie AMX Mod X, jak w większości społeczności internetowych musisz się zarejestrować aby móc odpowiadać lub zakładać nowe tematy, ale nie bój się to jest prosty proces w którym wymagamy minimalnych informacji.

  • Rozpoczynaj nowe tematy i odpowiedaj na inne
  • Zapisz się do tematów i for, aby otrzymywać automatyczne uaktualnienia
  • Dodawaj wydarzenia do kalendarza społecznościowego
  • Stwórz swój własny profil i zdobywaj nowych znajomych
  • Zdobywaj nowe doświadczenia

Dołączona grafika Dołączona grafika

Guest Message by DevFuse
 

Zdjęcie

Pytanie kick


  • Zamknięty Temat jest zamknięty
2 odpowiedzi w tym temacie

#1 ` ManieK

    Profesjonalista

  • Zbanowany

Reputacja: 7
Nowy

  • Postów:194
  • GG:
  • Lokalizacja:Ciechanów
Offline

Napisano 26.04.2009 09:52

Witam mam pytanie gdzie i jak edytować plik by podczas kicku taki napis:

wyświetlał się na zielono i do tego dodatkowo było napisany powód. tzn chodzi mi o coś takiego:

Dołączona grafika

ADMIN ` ManieK: wykopal Agent007 za slowa
ocywiście ` Maniek- to admin
Agent gracz
a slowa to powód ;F

jeszcze dodatkowa opcja do tego że w konsoli gracza wyświetli się w konsoli od kogo, za co, gdzie to zgłosić oraz steam_id gracza oraz admina

#2 grankee

    Godlike

  • Support Team

Reputacja: 507
Wszechwiedzący

  • Postów:1500
  • Lokalizacja:Radom
Offline

Napisano 26.04.2009 10:10

daj tu kod z addons/amxmodx/scripting/admincmd.sma to przerobię.
  • +
  • -
  • 0

#3 ` ManieK

    Profesjonalista

  • Autor tematu
  • Zbanowany

Reputacja: 7
Nowy

  • Postów:194
  • GG:
  • Lokalizacja:Ciechanów
Offline

Napisano 26.04.2009 10:15

/* AMX Mod X

*   Admin Commands Plugin

*

* by the AMX Mod X Development Team

*  originally developed by OLO

*

* This file is part of AMX Mod X.

*

*

*  This program is free software; you can redistribute it and/or modify it

*  under the terms of the GNU General Public License as published by the

*  Free Software Foundation; either version 2 of the License, or (at

*  your option) any later version.

*

*  This program is distributed in the hope that it will be useful, but

*  WITHOUT ANY WARRANTY; without even the implied warranty of

*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU

*  General Public License for more details.

*

*  You should have received a copy of the GNU General Public License

*  along with this program; if not, write to the Free Software Foundation, 

*  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

*

*  In addition, as a special exception, the author gives permission to

*  link the code of this program with the Half-Life Game Engine ("HL

*  Engine") and Modified Game Libraries ("MODs") developed by Valve, 

*  L.L.C ("Valve"). You must obey the GNU General Public License in all

*  respects for all of the code used other than the HL Engine and MODs

*  from Valve. If you modify this file, you may extend this exception

*  to your version of the file, but you are not obligated to do so. If

*  you do not wish to do so, delete this exception statement from your

*  version.

*/



#include <amxmodx>

#include <amxmisc>



// This is not a dynamic array because it would be bad for 24/7 map servers.

#define OLD_CONNECTION_QUEUE 10



new g_pauseCon

new Float:g_pausAble

new bool:g_Paused

new bool:g_PauseAllowed = false

new g_addCvar[] = "amx_cvar add %s"



new pausable;

new rcon_password;



// Old connection queue

new g_Names[OLD_CONNECTION_QUEUE][32];

new g_SteamIDs[OLD_CONNECTION_QUEUE][32];

new g_IPs[OLD_CONNECTION_QUEUE][32];

new g_Access[OLD_CONNECTION_QUEUE];

new g_Tracker;

new g_Size;



stock InsertInfo(id)

{

	

	// Scan to see if this entry is the last entry in the list

	// If it is, then update the name and access

	// If it is not, then insert it again.



	if (g_Size > 0)

	{

		new ip[32]

		new auth[32];



		get_user_authid(id, auth, charsmax(auth));

		get_user_ip(id, ip, charsmax(ip), 1/*no port*/);



		new last = 0;

		

		if (g_Size < sizeof(g_SteamIDs))

		{

			last = g_Size - 1;

		}

		else

		{

			last = g_Tracker - 1;

			

			if (last < 0)

			{

				last = g_Size - 1;

			}

		}

		

		if (equal(auth, g_SteamIDs[last]) &&

			equal(ip, g_IPs[last])) // need to check ip too, or all the nosteams will while it doesn't work with their illegitimate server

		{

			get_user_name(id, g_Names[last], charsmax(g_Names[]));

			g_Access[last] = get_user_flags(id);

			

			return;

		}

	}

	

	// Need to insert the entry

	

	new target = 0;  // the slot to save the info at



	// Queue is not yet full

	if (g_Size < sizeof(g_SteamIDs))

	{

		target = g_Size;

		

		++g_Size;

		

	}

	else

	{

		target = g_Tracker;

		

		++g_Tracker;

		// If we reached the end of the array, then move to the front

		if (g_Tracker == sizeof(g_SteamIDs))

		{

			g_Tracker = 0;

		}

	}

	

	get_user_authid(id, g_SteamIDs[target], charsmax(g_SteamIDs[]));

	get_user_name(id, g_Names[target], charsmax(g_Names[]));

	get_user_ip(id, g_IPs[target], charsmax(g_IPs[]), 1/*no port*/);

	

	g_Access[target] = get_user_flags(id);



}

stock GetInfo(i, name[], namesize, auth[], authsize, ip[], ipsize, &access)

{

	if (i >= g_Size)

	{

		abort(AMX_ERR_NATIVE, "GetInfo: Out of bounds (%d:%d)", i, g_Size);

	}

	

	new target = (g_Tracker + i) % sizeof(g_SteamIDs);

	

	copy(name, namesize, g_Names[target]);

	copy(auth, authsize, g_SteamIDs[target]);

	copy(ip,   ipsize,   g_IPs[target]);

	access = g_Access[target];

	

}

public client_disconnect(id)

{

	if (!is_user_bot(id))

	{

		InsertInfo(id);

	}

}



public plugin_init()

{

	register_plugin("Admin Commands", AMXX_VERSION_STR, "AMXX Dev Team")



	register_dictionary("admincmd.txt")

	register_dictionary("common.txt")

	register_dictionary("adminhelp.txt")

	

	

	register_concmd("amx_kick", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")

	register_concmd("kk", "cmdKick", ADMIN_KICK, "<name or #userid> [reason]")

	register_concmd("amx_ban", "cmdBan", ADMIN_BAN, "<name or #userid> <minutes> [reason]")

	register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")

	register_concmd("amx_addban", "cmdAddBan", ADMIN_BAN, "<^"authid^" or ip> <minutes> [reason]")

	register_concmd("amx_unban", "cmdUnban", ADMIN_BAN, "<^"authid^" or ip>")

	register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")

	register_concmd("sss", "cmdSlay", ADMIN_SLAY, "<name or #userid>")

	register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")

	register_concmd("ss", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")

	register_concmd("amx_leave", "cmdLeave", ADMIN_KICK, "<tag> [tag] [tag] [tag]")

	register_concmd("amx_pause", "cmdPause", ADMIN_CVAR, "- pause or unpause the game")

	register_concmd("amx_who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")

	register_concmd("who", "cmdWho", ADMIN_ADMIN, "- displays who is on server")

	register_concmd("amx_cvar", "cmdCvar", ADMIN_CVAR, "<cvar> [value]")

	register_concmd("amx_plugins", "cmdPlugins", ADMIN_ADMIN)

	register_concmd("amx_modules", "cmdModules", ADMIN_ADMIN)

	register_concmd("amx_map", "cmdMap", ADMIN_MAP, "<mapname>")

	register_concmd("mm", "cmdMap", ADMIN_MAP, "<mapname>")

	register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")

	register_concmd("amx_nick", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>")

	register_concmd("nn", "cmdNick", ADMIN_SLAY, "<name or #userid> <new nick>")

	register_concmd("amx_last", "cmdLast", ADMIN_BAN, "- list the last few disconnected clients info");

	register_concmd("last", "cmdLast", ADMIN_BAN, "- list the last few disconnected clients info");

	register_clcmd("amx_rcon", "cmdRcon", ADMIN_RCON, "<command line>")

	register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_RCON, "<command line>")

	register_clcmd("pauseAck", "cmdLBack")





	rcon_password=get_cvar_pointer("rcon_password");

	pausable=get_cvar_pointer("pausable");

	

	

}



public plugin_cfg()

{

	// Cvars which can be changed only with rcon access

	server_cmd(g_addCvar, "rcon_password")

	server_cmd(g_addCvar, "amx_show_activity")

	server_cmd(g_addCvar, "amx_mode")

	server_cmd(g_addCvar, "amx_password_field")

	server_cmd(g_addCvar, "amx_default_access")

	server_cmd(g_addCvar, "amx_reserved_slots")

	server_cmd(g_addCvar, "amx_reservation")

	server_cmd(g_addCvar, "amx_sql_table");

	server_cmd(g_addCvar, "amx_sql_host");

	server_cmd(g_addCvar, "amx_sql_user");

	server_cmd(g_addCvar, "amx_sql_pass");

	server_cmd(g_addCvar, "amx_sql_db");

	server_cmd(g_addCvar, "amx_sql_type");



}



public cmdKick(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED



	new arg[32]

	read_argv(1, arg, 31)

	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

	

	if (!player)

		return PLUGIN_HANDLED

	

	new authid[32], authid2[32], name2[32], name[32], userid2, reason[32]

	

	get_user_authid(id, authid, 31)

	get_user_authid(player, authid2, 31)

	get_user_name(player, name2, 31)

	get_user_name(id, name, 31)

	userid2 = get_user_userid(player)

	read_argv(2, reason, 31)

	remove_quotes(reason)

	

	log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^" (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, reason)



	show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);



	if (is_user_bot(player))

		server_cmd("kick #%d", userid2)

	else

	{

		if (reason[0])

			server_cmd("kick #%d ^"%s^"", userid2, reason)

		else

			server_cmd("kick #%d", userid2)

	}

	

	console_print(id, "[AMXX] Client ^"%s^" kicked", name2)

	

	return PLUGIN_HANDLED

}



public cmdUnban(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

	

	new arg[32], authid[32], name[32]

	

	read_argv(1, arg, 31)

	

	if (contain(arg, ".") != -1)

	{

		server_cmd("removeip ^"%s^";writeip", arg)

		console_print(id, "[AMXX] %L", id, "IP_REMOVED", arg)

	} else {

		server_cmd("removeid %s;writeid", arg)

		console_print(id, "[AMXX] %L", id, "AUTHID_REMOVED", arg)

	}



	get_user_name(id, name, 31)



	show_activity_key("ADMIN_UNBAN_1", "ADMIN_UNBAN_2", name, arg);



	get_user_authid(id, authid, 31)

	log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)

	

	return PLUGIN_HANDLED

}



/* amx_addban is a special command now.

 * If a user with rcon uses it, it bans the user.  No questions asked.

 * If a user without rcon but with ADMIN_BAN uses it, it will scan the old

 * connection queue, and if it finds the info for a player in it, it will

 * check their old access.  If they have immunity, it will not ban.

 * If they do not have immunity, it will ban.  If the user is not found,

 * it will refuse to ban the target.

 */

 

public cmdAddBan(id, level, cid)

{

	if (!cmd_access(id, level, cid, 3, true)) // check for ADMIN_BAN access

	{

		if (get_user_flags(id) & level) // Getting here means they didn't input enough args

		{

			return PLUGIN_HANDLED;

		}

		if (!cmd_access(id, ADMIN_RCON, cid, 3)) // If somehow they have ADMIN_RCON without ADMIN_BAN, continue

		{

			return PLUGIN_HANDLED;

		}

	}



	new arg[32], authid[32], name[32], minutes[32], reason[32]

	

	read_argv(1, arg, 31)

	read_argv(2, minutes, 31)

	read_argv(3, reason, 31)

	

	

	if (!(get_user_flags(id) & ADMIN_RCON))

	{

		new bool:canban = false;

		new bool:isip = false;

		// Limited access to this command

		if (equali(arg, "STEAM_ID_PENDING") ||

			equali(arg, "STEAM_ID_LAN") ||

			equali(arg, "HLTV") ||

			equali(arg, "4294967295") ||

			equali(arg, "VALVE_ID_LAN") ||

			equali(arg, "VALVE_ID_PENDING"))

		{

			// Hopefully we never get here, so ML shouldn't be needed

			console_print(id, "Cannot ban %s", arg);

			return PLUGIN_HANDLED;

		}

		

		if (contain(arg, ".") != -1)

		{

			isip = true;

		}

		

		// Scan the disconnection queue

		if (isip)

		{

			new IP[32];

			new Name[32];

			new dummy[1];

			new Access;

			for (new i = 0; i < g_Size; i++)

			{

				GetInfo(i, Name, charsmax(Name), dummy, 0, IP, charsmax(IP), Access);

				

				if (equal(IP, arg))

				{

					if (Access & ADMIN_IMMUNITY)

					{

						console_print(id, "[AMXX] %s : %L", IP, id, "CLIENT_IMM", Name);

						

						return PLUGIN_HANDLED;

					}

					// User did not have immunity

					canban = true;

				}

			}

		}

		else

		{

			new Auth[32];

			new Name[32];

			new dummy[1];

			new Access;

			for (new i = 0; i < g_Size; i++)

			{

				GetInfo(i, Name, charsmax(Name), Auth, charsmax(Auth), dummy, 0, Access);

				

				if (equal(Auth, arg))

				{

					if (Access & ADMIN_IMMUNITY)

					{

						console_print(id, "[AMXX] %s : %L", Auth, id, "CLIENT_IMM", Name);

						

						return PLUGIN_HANDLED;

					}

					// User did not have immunity

					canban = true;

				}

			}

		}

		

		if (!canban)

		{

			console_print(id, "[AMXX] You may only ban recently disconnected clients.  Use ^"amx_last^" to view.");

			

			return PLUGIN_HANDLED;

		}

		

	}

	

	// User has access to ban their target

	if (contain(arg, ".") != -1)

	{

		server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)

		console_print(id, "[AMXX] Ip ^"%s^" added to ban list", arg)

	} else {

		server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)

		console_print(id, "[AMXX] Authid ^"%s^" added to ban list", arg)

	}



	get_user_name(id, name, 31)



	show_activity_key("ADMIN_ADDBAN_1", "ADMIN_ADDBAN_2", name, arg);



	get_user_authid(id, authid, 31)

	log_amx("Cmd: ^"%s<%d><%s><>^" ban ^"%s^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, arg, minutes, reason)



	return PLUGIN_HANDLED

}



public cmdBan(id, level, cid)

{

	if (!cmd_access(id, level, cid, 3))

		return PLUGIN_HANDLED



	new target[32], minutes[8], reason[64]

	

	read_argv(1, target, 31)

	read_argv(2, minutes, 7)

	read_argv(3, reason, 63)

	

	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)

	

	if (!player)

		return PLUGIN_HANDLED



	new authid[32], name2[32], authid2[32], name[32]

	new userid2 = get_user_userid(player)



	get_user_authid(player, authid2, 31)

	get_user_authid(id, authid, 31)

	get_user_name(player, name2, 31)

	get_user_name(id, name, 31)

	

	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)

	

	new temp[64], banned[16], nNum = str_to_num(minutes)

	if (nNum)

		format(temp, 63, "%L", player, "FOR_MIN", minutes)

	else

		format(temp, 63, "%L", player, "PERM")



	format(banned, 15, "%L", player, "BANNED")



	if (reason[0])

		server_cmd("kick #%d ^"%s (%s %s)^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, reason, banned, temp, minutes, authid2)

	else

		server_cmd("kick #%d ^"%s %s^";wait;banid ^"%s^" ^"%s^";wait;writeid", userid2, banned, temp, minutes, authid2)



	

	// Display the message to all clients



	new msg[256];

	new len;

	new maxpl = get_maxplayers();

	for (new i = 1; i <= maxpl; i++)

	{

		if (is_user_connected(i) && !is_user_bot(i))

		{

			len = formatex(msg, charsmax(msg), "%L", i, "BAN");

			len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);

			if (nNum)

			{

				len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);

			}

			else

			{

				len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");

			}

			if (strlen(reason) > 0)

			{

				formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);

			}

			show_activity_id(i, id, name, msg);

		}

	}

	

	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)

	

	return PLUGIN_HANDLED

}



public cmdBanIP(id, level, cid)

{

	if (!cmd_access(id, level, cid, 3))

		return PLUGIN_HANDLED

	

	new target[32], minutes[8], reason[64]

	

	read_argv(1, target, 31)

	read_argv(2, minutes, 7)

	read_argv(3, reason, 63)

	

	new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_NO_BOTS | CMDTARGET_ALLOW_SELF)

	

	if (!player)

	{

		// why is this here?

		// no idea

		// player = cmd_target(id, target, 9);

		return PLUGIN_HANDLED

	}

	

	new authid[32], name2[32], authid2[32], name[32]

	new userid2 = get_user_userid(player)

	

	get_user_authid(player, authid2, 31)

	get_user_authid(id, authid, 31)

	get_user_name(player, name2, 31)

	get_user_name(id, name, 31)

	

	log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%s^") (reason ^"%s^")", name, get_user_userid(id), authid, name2, userid2, authid2, minutes, reason)



	new temp[64], banned[16], nNum = str_to_num(minutes)

	if (nNum)

		format(temp, 63, "%L", player, "FOR_MIN", minutes)

	else

		format(temp, 63, "%L", player, "PERM")

	format(banned, 15, "%L", player, "BANNED")



	new address[32]

	get_user_ip(player, address, 31, 1)



	if (reason[0])

		server_cmd("kick #%d ^"%s (%s %s)^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, reason, banned, temp, minutes, address)

	else

		server_cmd("kick #%d ^"%s %s^";wait;addip ^"%s^" ^"%s^";wait;writeip", userid2, banned, temp, minutes, address)



	// Display the message to all clients



	new msg[256];

	new len;

	new maxpl = get_maxplayers();

	for (new i = 1; i <= maxpl; i++)

	{

		if (is_user_connected(i) && !is_user_bot(i))

		{

			len = formatex(msg, charsmax(msg), "%L", i, "BAN");

			len += formatex(msg[len], charsmax(msg) - len, " %s ", name2);

			if (nNum)

			{

				formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes);

			}

			else

			{

				formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM");

			}

			if (strlen(reason) > 0)

			{

				formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason);

			}

			show_activity_id(i, id, name, msg);

		}

	}



	console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)

	

	return PLUGIN_HANDLED

}



public cmdSlay(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

	

	new arg[32]

	

	read_argv(1, arg, 31)

	

	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)

	

	if (!player)

		return PLUGIN_HANDLED

	

	user_kill(player)

	

	new authid[32], name2[32], authid2[32], name[32]

	

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	get_user_authid(player, authid2, 31)

	get_user_name(player, name2, 31)

	

	log_amx("Cmd: ^"%s<%d><%s><>^" slay ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2)



	show_activity_key("ADMIN_SLAY_1", "ADMIN_SLAY_2", name, name2);



	console_print(id, "[AMXX] %L", id, "CLIENT_SLAYED", name2)

	

	return PLUGIN_HANDLED

}



public cmdSlap(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED



	new arg[32]

	

	read_argv(1, arg, 31)

	new player = cmd_target(id, arg, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF | CMDTARGET_ONLY_ALIVE)

	

	if (!player)

		return PLUGIN_HANDLED



	new spower[32], authid[32], name2[32], authid2[32], name[32]

	

	read_argv(2, spower, 31)

	

	new damage = str_to_num(spower)

	

	user_slap(player, damage)

	

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	get_user_authid(player, authid2, 31)

	get_user_name(player, name2, 31)

	

	log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, damage, name2, get_user_userid(player), authid2)



	show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, damage);



	console_print(id, "[AMXX] %L", id, "CLIENT_SLAPED", name2, damage)

	

	return PLUGIN_HANDLED

}



public chMap(map[])

{

	server_cmd("changelevel %s", map)

}



public cmdMap(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED



	new arg[32]

	new arglen = read_argv(1, arg, 31)

	

	if (!is_map_valid(arg))

	{

		console_print(id, "[AMXX] %L", id, "MAP_NOT_FOUND")

		return PLUGIN_HANDLED

	}



	new authid[32], name[32]

	

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	

	show_activity_key("ADMIN_MAP_1", "ADMIN_MAP_2", name, arg);

	

	log_amx("Cmd: ^"%s<%d><%s><>^" changelevel ^"%s^"", name, get_user_userid(id), authid, arg)

	

	new _modName[10]

	get_modname(_modName, 9)

	

	if (!equal(_modName, "zp"))

	{

		message_begin(MSG_ALL, SVC_INTERMISSION)

		message_end()

	}

	

	set_task(2.0, "chMap", 0, arg, arglen + 1)

	

	return PLUGIN_HANDLED

}



stock bool:onlyRcon(const name[])

{

	new ptr=get_cvar_pointer(name);

	if (ptr && get_pcvar_flags(ptr) & FCVAR_PROTECTED)

	{

		return true;

	}

	return false;

}



public cmdCvar(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

	

	new arg[32], arg2[64]

	

	read_argv(1, arg, 31)

	read_argv(2, arg2, 63)

	

	new pointer;

	

	if (equal(arg, "add") && (get_user_flags(id) & ADMIN_RCON))

	{

		if ((pointer=get_cvar_pointer(arg2))!=0)

		{

			new flags=get_pcvar_flags(pointer);

			

			if (!(flags & FCVAR_PROTECTED))

			{

				set_pcvar_flags(pointer,flags | FCVAR_PROTECTED);

			}

		}

		return PLUGIN_HANDLED

	}

	

	if ((pointer=get_cvar_pointer(arg))==0)

	{

		console_print(id, "[AMXX] %L", id, "UNKNOWN_CVAR", arg)

		return PLUGIN_HANDLED

	}

	

	if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))

	{

		// Exception for the new onlyRcon rules:

		//   sv_password is allowed to be modified by ADMIN_PASSWORD

		if (!(equali(arg,"sv_password") && (get_user_flags(id) & ADMIN_PASSWORD)))

		{

			console_print(id, "[AMXX] %L", id, "CVAR_NO_ACC")

			return PLUGIN_HANDLED

		}

	}

	

	if (read_argc() < 3)

	{

		get_pcvar_string(pointer, arg2, 63)

		console_print(id, "[AMXX] %L", id, "CVAR_IS", arg, arg2)

		return PLUGIN_HANDLED

	}



	new authid[32], name[32]

	

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	

	log_amx("Cmd: ^"%s<%d><%s><>^" set cvar (name ^"%s^") (value ^"%s^")", name, get_user_userid(id), authid, arg, arg2)

	set_cvar_string(arg, arg2)

	

	

	// Display the message to all clients



	new cvar_val[64];

	new maxpl = get_maxplayers();

	for (new i = 1; i <= maxpl; i++)

	{

		if (is_user_connected(i) && !is_user_bot(i))

		{

			if (get_pcvar_flags(pointer) & FCVAR_PROTECTED || equali(arg, "rcon_password"))

			{

				formatex(cvar_val, charsmax(cvar_val), "*** %L ***", i, "PROTECTED");

			}

			else

			{

				copy(cvar_val, charsmax(cvar_val), arg2);

			}

			show_activity_id(i, id, name, "%L", i, "SET_CVAR_TO", "", arg, cvar_val);

		}

	}



	console_print(id, "[AMXX] %L", id, "CVAR_CHANGED", arg, arg2)

	

	return PLUGIN_HANDLED

}



public cmdPlugins(id, level, cid)

{

	if (!cmd_access(id, level, cid, 1))

		return PLUGIN_HANDLED

		

	if (id==0) // If server executes redirect this to "amxx plugins" for more in depth output

	{

		server_cmd("amxx plugins");

		server_exec();

		return PLUGIN_HANDLED;

	}



	new name[32], version[32], author[32], filename[32], status[32]

	new lName[32], lVersion[32], lAuthor[32], lFile[32], lStatus[32]



	format(lName, 31, "%L", id, "NAME")

	format(lVersion, 31, "%L", id, "VERSION")

	format(lAuthor, 31, "%L", id, "AUTHOR")

	format(lFile, 31, "%L", id, "FILE")

	format(lStatus, 31, "%L", id, "STATUS")



	new StartPLID=0;

	new EndPLID;



	new Temp[96]



	new num = get_pluginsnum()

	

	if (read_argc() > 1)

	{

		read_argv(1,Temp,sizeof(Temp)-1);

		StartPLID=str_to_num(Temp)-1; // zero-based

	}



	EndPLID=min(StartPLID + 10, num);

	

	new running = 0

	

	console_print(id, "----- %L -----", id, "LOADED_PLUGINS")

	console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", lName, lVersion, lAuthor, lFile, lStatus)



	new i=StartPLID;

	while (i <EndPLID)

	{

		get_plugin(i++, filename, 31, name, 31, version, 31, author, 31, status, 31)

		console_print(id, "%-18.17s %-11.10s %-17.16s %-16.15s %-9.8s", name, version, author, filename, status)

		

		if (status[0]=='d' || status[0]=='r') // "debug" or "running"

			running++

	}

	console_print(id, "%L", id, "PLUGINS_RUN", EndPLID-StartPLID, running)

	console_print(id, "----- %L -----",id,"HELP_ENTRIES",StartPLID + 1,EndPLID,num);

	

	if (EndPLID < num)

	{

		formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_MORE", EndPLID + 1);

		replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");

		console_print(id,"%s",Temp);

	}

	else

	{

		formatex(Temp,sizeof(Temp)-1,"----- %L -----",id,"HELP_USE_BEGIN");

		replace_all(Temp,sizeof(Temp)-1,"amx_help","amx_plugins");

		console_print(id,"%s",Temp);

	}



	return PLUGIN_HANDLED

}



public cmdModules(id, level, cid)

{

	if (!cmd_access(id, level, cid, 1))

		return PLUGIN_HANDLED



	new name[32], version[32], author[32], status, sStatus[16]

	new lName[32], lVersion[32], lAuthor[32], lStatus[32];



	format(lName, 31, "%L", id, "NAME")

	format(lVersion, 31, "%L", id, "VERSION")

	format(lAuthor, 31, "%L", id, "AUTHOR")

	format(lStatus, charsmax(lStatus), "%L", id, "STATUS")



	new num = get_modulesnum()

	

	console_print(id, "%L:", id, "LOADED_MODULES")

	console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", lName, lVersion, lAuthor, lStatus)

	

	for (new i = 0; i < num; i++)

	{

		get_module(i, name, 31, author, 31, version, 31, status)

		

		switch (status)

		{

			case module_loaded: copy(sStatus, 15, "running")

			default: 

			{

				copy(sStatus, 15, "bad load");

				copy(name, charsmax(name), "unknown");

				copy(author, charsmax(author), "unknown");

				copy(version, charsmax(version), "unknown");

			}

		}

		

		console_print(id, "%-23.22s %-11.10s %-20.19s %-11.10s", name, version, author, sStatus)

	}

	console_print(id, "%L", id, "NUM_MODULES", num)



	return PLUGIN_HANDLED

}



public cmdCfg(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

	

	new arg[128]

	read_argv(1, arg, 127)

	

	if (!file_exists(arg))

	{

		console_print(id, "[AMXX] %L", id, "FILE_NOT_FOUND", arg)

		return PLUGIN_HANDLED

	}

	

	new authid[32], name[32]

	

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	

	log_amx("Cmd: ^"%s<%d><%s><>^" execute cfg (file ^"%s^")", name, get_user_userid(id), authid, arg)

	

	console_print(id, "[AMXX] Executing file ^"%s^"", arg)

	server_cmd("exec %s", arg)



	show_activity_key("ADMIN_CONF_1", "ADMIN_CONF_2", name, arg);



	return PLUGIN_HANDLED

}



public cmdLBack()

{

	if (!g_PauseAllowed)

		return PLUGIN_CONTINUE	



	new paused[25]

	

	format(paused, 24, "%L", g_pauseCon, g_Paused ? "UNPAUSED" : "PAUSED")

	set_cvar_float("pausable", g_pausAble)

	console_print(g_pauseCon, "[AMXX] Server %s", paused)

	g_PauseAllowed = false

	

	if (g_Paused)

		g_Paused = false

	else 

		g_Paused = true

	

	return PLUGIN_HANDLED

}



public cmdPause(id, level, cid)

{

	if (!cmd_access(id, level, cid, 1))

		return PLUGIN_HANDLED 

	

	new authid[32], name[32], slayer = id

	

	get_user_authid(id, authid, 31) 

	get_user_name(id, name, 31) 

	if (pausable!=0)

	{

		g_pausAble = get_pcvar_float(pausable)

	}

	

	if (!slayer)

		slayer = find_player("h") 

	

	if (!slayer)

	{ 

		console_print(id, "[AMXX] %L", id, "UNABLE_PAUSE") 

		return PLUGIN_HANDLED

	}



	set_cvar_float("pausable", 1.0)

	g_PauseAllowed = true

	client_cmd(slayer, "pause;pauseAck")

	

	log_amx("Cmd: ^"%s<%d><%s><>^" %s server", name, get_user_userid(id), authid, g_Paused ? "unpause" : "pause")

	

	console_print(id, "[AMXX] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")



	// Display the message to all clients



	new maxpl = get_maxplayers();

	for (new i = 1; i <= maxpl; i++)

	{

		if (is_user_connected(i) && !is_user_bot(i))

		{

			show_activity_id(i, id, name, "%L server", i, g_Paused ? "UNPAUSE" : "PAUSE");

		}

	}



	g_pauseCon = id

	

	return PLUGIN_HANDLED

} 



public cmdShowRcon(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

		

	new password[64]

	

	get_pcvar_string(rcon_password, password, 63)

	

	if (!password[0])

	{

		cmdRcon(id, level, cid)

	} else {

		new args[128]

		

		read_args(args, 127)

		client_cmd(id, "rcon_password %s", password)

		client_cmd(id, "rcon %s", args)

	}

	

	return PLUGIN_HANDLED

}



public cmdRcon(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

	

	new arg[128], authid[32], name[32]

	

	read_args(arg, 127)

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	

	log_amx("Cmd: ^"%s<%d><%s><>^" server console (cmdline ^"%s^")", name, get_user_userid(id), authid, arg)

	

	console_print(id, "[AMXX] %L", id, "COM_SENT_SERVER", arg)

	server_cmd("%s", arg)

	

	return PLUGIN_HANDLED

}



public cmdWho(id, level, cid)

{

	if (!cmd_access(id, level, cid, 1))

		return PLUGIN_HANDLED



	new players[32], inum, cl_on_server[64], authid[32], name[32], flags, sflags[32]

	new lImm[16], lRes[16], lAccess[16], lYes[16], lNo[16]

	

	format(lImm, 15, "%L", id, "IMMU")

	format(lRes, 15, "%L", id, "RESERV")

	format(lAccess, 15, "%L", id, "ACCESS")

	format(lYes, 15, "%L", id, "YES")

	format(lNo, 15, "%L", id, "NO")

	

	get_players(players, inum)

	format(cl_on_server, 63, "%L", id, "CLIENTS_ON_SERVER")

	console_print(id, "^n%s:^n #  %-16.15s %-20s %-8s %-4.3s %-4.3s %s", cl_on_server, "nick", "authid", "userid", lImm, lRes, lAccess)

	

	for (new a = 0; a < inum; ++a)

	{

		get_user_authid(players[a], authid, 31)

		get_user_name(players[a], name, 31)

		flags = get_user_flags(players[a])

		get_flags(flags, sflags, 31)

		console_print(id, "%2d  %-16.15s %-20s %-8d %-6.5s %-6.5s %s", players[a], name, authid, 

		get_user_userid(players[a]), (flags&ADMIN_IMMUNITY) ? lYes : lNo, (flags&ADMIN_RESERVATION) ? lYes : lNo, sflags)

	}

	

	console_print(id, "%L", id, "TOTAL_NUM", inum)

	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	log_amx("Cmd: ^"%s<%d><%s><>^" ask for players list", name, get_user_userid(id), authid) 

	

	return PLUGIN_HANDLED

}



hasTag(name[], tags[4][32], tagsNum)

{

	for (new a = 0; a < tagsNum; ++a)

		if (contain(name, tags[a]) != -1)

			return a

	return -1

}



public cmdLeave(id, level, cid)

{

	if (!cmd_access(id, level, cid, 2))

		return PLUGIN_HANDLED

	

	new argnum = read_argc()

	new ltags[4][32]

	new ltagsnum = 0

	

	for (new a = 1; a < 5; ++a)

	{

		if (a < argnum)

			read_argv(a, ltags[ltagsnum++], 31)

		else

			ltags[ltagsnum++][0] = 0

	}

	

	new nick[32], ires, pnum = get_maxplayers() + 1, count = 0, lReason[128]

	

	for (new b = 1; b < pnum; ++<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />

	{

		if (!is_user_connected(<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> && !is_user_connecting(<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />) continue



		get_user_name(b, nick, 31)

		ires = hasTag(nick, ltags, ltagsnum)

		

		if (ires != -1)

		{

			console_print(id, "[AMXX] %L", id, "SKIP_MATCH", nick, ltags[ires])

			continue

		}

		

		if (get_user_flags(<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' /> & ADMIN_IMMUNITY)

		{

			console_print(id, "[AMXX] %L", id, "SKIP_IMM", nick)

			continue

		}

		

		console_print(id, "[AMXX] %L", id, "KICK_PL", nick)

		

		if (is_user_bot(<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />)

			server_cmd("kick #%d", get_user_userid(<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />)

		else

		{

			format(lReason, 127, "%L", b, "YOU_DROPPED")

			server_cmd("kick #%d ^"%s^"", get_user_userid(<img src='http://amxx.pl/public/style_emoticons/<#EMO_DIR#>/cool.gif' class='bbc_emoticon' alt='B)' />, lReason)

		}

		count++

	}

	

	console_print(id, "[AMXX] %L", id, "KICKED_CLIENTS", count)

	

	new authid[32], name[32]



	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	log_amx("Kick: ^"%s<%d><%s><>^" leave some group (tag1 ^"%s^") (tag2 ^"%s^") (tag3 ^"%s^") (tag4 ^"%s^")", name, get_user_userid(id), authid, ltags[0], ltags[1], ltags[2], ltags[3])



	show_activity_key("ADMIN_LEAVE_1", "ADMIN_LEAVE_2", name, ltags[0], ltags[1], ltags[2], ltags[3]);



	return PLUGIN_HANDLED

}



public cmdNick(id, level, cid)

{

	if (!cmd_access(id, level, cid, 3))

		return PLUGIN_HANDLED



	new arg1[32], arg2[32], authid[32], name[32], authid2[32], name2[32]



	read_argv(1, arg1, 31)

	read_argv(2, arg2, 31)



	new player = cmd_target(id, arg1, CMDTARGET_OBEY_IMMUNITY | CMDTARGET_ALLOW_SELF)

	

	if (!player)

		return PLUGIN_HANDLED



	get_user_authid(id, authid, 31)

	get_user_name(id, name, 31)

	get_user_authid(player, authid2, 31)

	get_user_name(player, name2, 31)



	client_cmd(player, "name ^"%s^"", arg2)



	log_amx("Cmd: ^"%s<%d><%s><>^" change nick to ^"%s^" ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, arg2, name2, get_user_userid(player), authid2)



	show_activity_key("ADMIN_NICK_1", "ADMIN_NICK_2", name, name2, arg2);



	console_print(id, "[AMXX] %L", id, "CHANGED_NICK", name2, arg2)



	return PLUGIN_HANDLED

}



public cmdLast(id, level, cid)

{

	if (!cmd_access(id, level, cid, 1))

	{

		return PLUGIN_HANDLED;

	}

	

	new name[32];

	new authid[32];

	new ip[32];

	new flags[32];

	new access;

	

	

	// This alignment is a bit weird (it should grow if the name is larger)

	// but otherwise for the more common shorter name, it'll wrap in server console

	// Steam client display is all skewed anyway because of the non fixed font.

	console_print(id, "%19s %20s %15s %s", "name", "authid", "ip", "access");

	

	for (new i = 0; i < g_Size; i++)

	{

		GetInfo(i, name, charsmax(name), authid, charsmax(authid), ip, charsmax(ip), access);

		

		get_flags(access, flags, charsmax(flags));

		

		console_print(id, "%19s %20s %15s %s", name, authid, ip, flags);

	}

	

	console_print(id, "%d old connections saved.", g_Size);

	

	return PLUGIN_HANDLED;

}

proszę




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych