Имунитет само от банове
-
EMOTO2.COM
Извън линия - Потребител
- Мнения: 345
- Регистриран на: 11 Яну 2018, 17:02
- Се отблагодари: 26 пъти
- Получена благодарност: 31 пъти
- Обратна връзка:
Имунитет само от банове
Мисля, че съм дал абсолютно точните кодове който трябва да се редактират. Незнам защо изобщо ти е целият код на плугините но ще ги кача и тях... Проверката на ип-та за защита от бан трябва да се добави САМО на amx_banip и amx_banmenu командите!
- Прикачени файлове
-
- plmenu.sma
- (20.63 KiB) Свалено 38 пъти
- plmenu.sma
- (20.63 KiB) Свалено 38 пъти
-
- admincmd.sma
- (32.27 KiB) Свалено 36 пъти
- admincmd.sma
- (32.27 KiB) Свалено 36 пъти
Присъедини се към най-доброто място за игра!
https://emoto2.com/
https://emoto2.com/
-
devilchy
Извън линия - Потребител
- Мнения: 223
- Регистриран на: 03 Фев 2017, 14:08
- Местоположение: Burgas
- Се отблагодари: 3 пъти
- Получена благодарност: 6 пъти
- Обратна връзка:
Имунитет само от банове
Admincmd 497 ред където пише 127.0.0 там поставяш ип то който не искаш да бъде баннат
Plmenu 195 ред... успех
Plmenu 195 ред... успех
- Прикачени файлове
-
- admincmd.sma
- (32.37 KiB) Свалено 32 пъти
- admincmd.sma
- (32.37 KiB) Свалено 32 пъти
-
- plmenu.sma
- (20.75 KiB) Свалено 36 пъти
- plmenu.sma
- (20.75 KiB) Свалено 36 пъти
-
EMOTO2.COM
Извън линия - Потребител
- Мнения: 345
- Регистриран на: 11 Яну 2018, 17:02
- Се отблагодари: 26 пъти
- Получена благодарност: 31 пъти
- Обратна връзка:
Имунитет само от банове
Пробвах това което си дал но без никакъв ефект... отново щом играча е без имунитет може да бъде баннат...
Присъедини се към най-доброто място за игра!
https://emoto2.com/
https://emoto2.com/
-
Radeon
Извън линия - Потребител
- Мнения: 143
- Регистриран на: 04 Апр 2021, 11:30
- Се отблагодари: 2 пъти
- Получена благодарност: 34 пъти
- Обратна връзка:
Имунитет само от банове
Тествай така. За сега е сложено само 1 име да не може да се банва. Намираш и в двата плъгина nameimunity и след него в кавички пиеше ime. Замени го с името на играча който да не може да бъде баннат.
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define AMXMODX_NOAUTOLOAD
#include <cstrike>
new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_menuOption[33]
new g_menuSettings[33]
new g_menuSelect[33][64]
new g_menuSelectNum[33]
#define MAX_CLCMDS 24
new g_clcmdName[MAX_CLCMDS][32]
new g_clcmdCmd[MAX_CLCMDS][64]
new g_clcmdMisc[MAX_CLCMDS][2]
new g_clcmdNum
new g_coloredMenus
new g_cstrike = 0
new Array:g_bantimes;
new Array:g_slapsettings;
new g_CSTeamNames[3][] = {
"TERRORIST",
"CT",
"SPECTATOR"
}
new g_CSTeamNumbers[3][] = {
"1",
"2",
"6"
}
new g_CSTeamiNumbers[3] = {
1,
2,
6
}
public plugin_natives()
{
set_module_filter("module_filter")
set_native_filter("native_filter")
}
public plugin_init()
{
register_plugin("Players menu",AMXX_VERSION_STR,"AMXX Dev Team")
register_dictionary("common.txt")
register_dictionary("admincmd.txt")
register_dictionary("plmenu.txt")
register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")
register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")
register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_D, "- displays team menu")
register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_CFG, "- displays client cmds menu")
register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu")
register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")
register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")
register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")
register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")
g_bantimes = ArrayCreate();
ArrayPushCell(g_bantimes, 0);
ArrayPushCell(g_bantimes, 5);
ArrayPushCell(g_bantimes, 10);
ArrayPushCell(g_bantimes, 15);
ArrayPushCell(g_bantimes, 30);
ArrayPushCell(g_bantimes, 45);
ArrayPushCell(g_bantimes, 60);
g_slapsettings = ArrayCreate();
ArrayPushCell(g_slapsettings, 0);
ArrayPushCell(g_slapsettings, 0);
ArrayPushCell(g_slapsettings, 1);
ArrayPushCell(g_slapsettings, 5);
register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes");
register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");
g_coloredMenus = colored_menus()
new clcmds_ini_file[64]
get_configsdir(clcmds_ini_file, 63)
format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)
load_settings(clcmds_ini_file)
if (module_exists("cstrike"))
g_cstrike = 1
}
public plmenu_setbantimes()
{
new buff[32];
new args = read_argc();
if (args <= 1)
{
server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");
server_print(" use time of 0 for permanent.");
return;
}
ArrayClear(g_bantimes);
for (new i = 1; i < args; i++)
{
read_argv(i, buff, charsmax(buff));
ArrayPushCell(g_bantimes, str_to_num(buff));
}
}
public plmenu_setslapdmg()
{
new buff[32];
new args = read_argc();
if (args <= 1)
{
server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");
server_print(" slay is automatically set for the first value.");
return;
}
ArrayClear(g_slapsettings);
ArrayPushCell(g_slapsettings, 0);
for (new i = 1; i < args; i++)
{
read_argv(i, buff, charsmax(buff));
ArrayPushCell(g_slapsettings, str_to_num(buff));
}
}
public module_filter(const module[])
{
if (equali(module, "cstrike"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public native_filter(const name[], index, trap)
{
if (!trap)
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public actionBanMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes);
g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
displayBanMenu(id, g_menuPosition[id])
}
case 8: displayBanMenu(id, ++g_menuPosition[id])
case 9: displayBanMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new name[32], name2[32], authid[32], authid2[32]
get_user_name(player, name2, 31)
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
new userid2 = get_user_userid(player)
log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])
if (g_menuSettings[id]==0)
{
new maxpl = get_maxplayers();
for (new i = 1; i <= maxpl; i++)
{
show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");
}
}
else
{
new tempTime[32];
formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
new maxpl = get_maxplayers();
for (new i = 1; i <= maxpl; i++)
{
show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);
}
}
if (equal("4294967295", authid2)
|| equal("HLTV", authid2)
|| equal("STEAM_ID_LAN", authid2)
|| equali("VALVE_ID_LAN", authid2))
{
new ipa[32]
get_user_ip(player, ipa, 31, 1)
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)
}
else
{
new ipa[32]
get_user_ip(player, ipa, 31, 1)
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)
}
server_exec()
displayBanMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayBanMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
new nameimunity[32] = "ime"
if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id) || equal(nameimunity, name))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
else
len += format(menuBody[len], 511-len, "#. %s^n", name)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}
if (g_menuSettings[id])
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])
else
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Ban Menu")
}
public cmdBanMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuOption[id] = 0
if (ArraySize(g_bantimes) > 0)
{
g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
}
else
{
g_menuSettings[id] = 0
}
displayBanMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionSlapMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_slapsettings);
g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
displaySlapMenu(id, g_menuPosition[id]);
}
case 8: displaySlapMenu(id, ++g_menuPosition[id])
case 9: displaySlapMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new name2[32]
get_user_name(player, name2, 31)
if (!is_user_alive(player))
{
client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)
displaySlapMenu(id, g_menuPosition[id])
return PLUGIN_HANDLED
}
new authid[32], authid2[32], name[32]
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
if (g_menuOption[id])
{
log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)
show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);
} else {
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);
}
if (g_menuOption[id])
user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)
else
user_kill(player)
displaySlapMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displaySlapMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32], team[4]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (g_cstrike)
{
if (cs_get_user_team(i) == CS_TEAM_T)
{
copy(team, 3, "TE")
}
else if (cs_get_user_team(i) == CS_TEAM_CT)
{
copy(team, 3, "CT")
} else {
get_user_team(i, team, 3)
}
} else {
get_user_team(i, team, 3)
}
if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
else
len += format(menuBody[len], 511-len, "#. %s %s^n", name, team)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team)
else
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team)
}
}
if (g_menuOption[id])
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])
else
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")
}
public cmdSlapMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuOption[id] = 0
if (ArraySize(g_slapsettings) > 0)
{
g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
}
else
{
g_menuSettings[id] = 0
}
displaySlapMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionKickMenu(id, key)
{
switch (key)
{
case 8: displayKickMenu(id, ++g_menuPosition[id])
case 9: displayKickMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]
new authid[32], authid2[32], name[32], name2[32]
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
new userid2 = get_user_userid(player)
log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)
show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);
server_cmd("kick #%d", userid2)
server_exec()
displayKickMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayKickMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32]
new start = pos * 8
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
new end = start + 8
new keys = MENU_KEY_0
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (access(i, ADMIN_IMMUNITY) && i != id)
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
else
len += format(menuBody[len], 511-len, "#. %s^n", name)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Kick Menu")
}
public cmdKickMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
displayKickMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionTeamMenu(id, key)
{
switch (key)
{
case 7:
{
g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);
displayTeamMenu(id, g_menuPosition[id])
}
case 8: displayTeamMenu(id, ++g_menuPosition[id])
case 9: displayTeamMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new authid[32], authid2[32], name[32], name2[32]
get_user_name(player, name2, 31)
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")
show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);
if (g_cstrike)
{
if (is_user_alive(player))
{
new deaths = cs_get_user_deaths(player)
user_kill(player, 1)
cs_set_user_deaths(player, deaths)
}
cs_set_user_team(player, (g_menuOption[id] % 3) + 1)
cs_reset_user_model(player)
} else {
new limit_setting = get_cvar_num("mp_limitteams")
set_cvar_num("mp_limitteams", 0)
engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])
engclient_cmd(player, "joinclass", "1")
set_cvar_num("mp_limitteams", limit_setting)
}
displayTeamMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayTeamMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i, iteam
new name[32], team[4]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (g_cstrike)
{
iteam = _:cs_get_user_team(i)
if (iteam == 1)
{
copy(team, 3, "TE")
}
else if (iteam == 2)
{
copy(team, 3, "CT")
}
else if (iteam == 3)
{
copy(team, 3, "SPE");
iteam = 6;
} else {
iteam = get_user_team(i, team, 3)
}
} else {
iteam = get_user_team(i, team, 3)
}
if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
else
len += format(menuBody[len], 511-len, "#. %s %s^n", name, team)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team)
else
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team)
}
}
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Team Menu")
}
public cmdTeamMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuOption[id] = 0
displayTeamMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionClcmdMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= g_menuSelectNum[id]
displayClcmdMenu(id, g_menuPosition[id])
}
case 8: displayClcmdMenu(id, ++g_menuPosition[id])
case 9: displayClcmdMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]
if (is_user_connected(player))
{
new command[512], authid[32], name[32], userid[32]
copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])
get_user_authid(player, authid, 31)
get_user_name(player, name, 31)
num_to_str(get_user_userid(player), userid, 31)
replace(command, charsmax(command), "%userid%", userid)
replace(command, charsmax(command), "%authid%", authid)
replace(command, charsmax(command), "%name%", name)
if (flags & 1)
{
server_cmd("%s", command)
server_exec()
} else if (flags & 2)
client_cmd(id, "%s", command)
else if (flags & 4)
client_cmd(player, "%s", command)
}
if (flags & 8)
displayClcmdMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayClcmdMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
else
len += format(menuBody[len], 511-len, "#. %s^n", name)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}
if (g_menuSelectNum[id])
len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])
else
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Client Cmds Menu")
}
public cmdClcmdMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuSelectNum[id] = 0
for (new a = 0; a < g_clcmdNum; ++a)
if (access(id, g_clcmdMisc[a][0]))
g_menuSelect[id][g_menuSelectNum[id]++] = a
g_menuOption[id] = 0
displayClcmdMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
load_settings(szFilename[])
{
if (!file_exists(szFilename))
return 0
new text[256], szFlags[32], szAccess[32]
new a, pos = 0
while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))
{
if (text[0] == ';') continue
if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)
{
while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))
{
}
g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)
g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)
g_clcmdNum++
}
}
return 1
}
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#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;
new HudSync, gMsgSayText;
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)
{
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]))
{
get_user_name(id, g_Names[last], charsmax(g_Names[]));
g_Access[last] = get_user_flags(id);
return;
}
}
new target = 0;
if (g_Size < sizeof(g_SteamIDs))
{
target = g_Size;
++g_Size;
}
else
{
target = g_Tracker;
++g_Tracker;
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_disconnected(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("amx_ban", "cmdBan", ADMIN_CFG, "<name or #userid> <minutes> [reason]")
register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_addban", "cmdAddBan", ADMIN_CFG, "<^"authid^" or ip> <minutes> [reason]")
register_concmd("amx_unban", "cmdUnban", ADMIN_CFG, "<^"authid^" or ip>")
register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
register_concmd("amx_leave", "cmdLeave", ADMIN_CFG, "<tag> [tag] [tag] [tag]")
register_concmd("amx_pause", "cmdPause", ADMIN_CFG, "- pause or unpause the game")
register_concmd("amx_who", "cmdWho", ADMIN_CFG, "- displays who is on server")
register_concmd("amx_cvar", "cmdCvar", ADMIN_CFG, "<cvar> [value]")
register_concmd("amx_plugins", "cmdPlugins", ADMIN_CFG)
register_concmd("amx_modules", "cmdModules", ADMIN_CFG)
register_concmd("amx_map", "cmdMap", ADMIN_CFG, "<mapname>")
register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")
register_concmd("amx_nick", "cmdNick", ADMIN_LEVEL_D, "<name or #userid> <new nick>")
register_concmd("amx_last", "cmdLast", ADMIN_CFG, "- list the last few disconnected clients info");
register_clcmd("amx_rcon", "cmdRcon", ADMIN_CFG, "<command line>")
register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_CFG, "<command line>")
register_clcmd("pauseAck", "cmdLBack")
rcon_password=get_cvar_pointer("rcon_password");
pausable=get_cvar_pointer("pausable");
HudSync = CreateHudSyncObj();
gMsgSayText = get_user_msgid("SayText");
}
public plugin_cfg()
{
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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been kicked by an admin.", name2)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been kicked by^x03 %s^x01.", name2, name)
}
}
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, "[EMOTO2.COM] 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, "[EMOTO2.COM] %L", id, "IP_REMOVED", arg)
} else {
server_cmd("removeid %s;writeid", arg)
console_print(id, "[EMOTO2.COM] %L", id, "AUTHID_REMOVED", arg)
}
get_user_name(id, name, 31)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been unbanned by an admin.", arg)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been unbanned by^x03 %s^x01.", arg, name)
}
}
get_user_authid(id, authid, 31)
log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)
return PLUGIN_HANDLED
}
public cmdAddBan(id, level, cid)
{
if (!cmd_access(id, level, cid, 3, true))
{
if (get_user_flags(id) & level)
{
return PLUGIN_HANDLED;
}
if (!cmd_access(id, ADMIN_RCON, cid, 3))
{
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;
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"))
{
console_print(id, "Cannot ban %s", arg);
return PLUGIN_HANDLED;
}
if (contain(arg, ".") != -1)
{
isip = true;
}
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, "[EMOTO2.COM] %s : %L", IP, id, "CLIENT_IMM", Name);
return PLUGIN_HANDLED;
}
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, "[EMOTO2.COM] %s : %L", Auth, id, "CLIENT_IMM", Name);
return PLUGIN_HANDLED;
}
canban = true;
}
}
}
if (!canban)
{
console_print(id, "[EMOTO2.COM] You may only ban recently disconnected clients. Use ^"amx_last^" to view.");
return PLUGIN_HANDLED;
}
}
if (contain(arg, ".") != -1)
{
server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
console_print(id, "[EMOTO2.COM] Ip ^"%s^" added to ban list", arg)
} else {
server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)
console_print(id, "[EMOTO2.COM] 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], hostname[64], ip[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)
get_user_name(0, hostname, 63)
get_user_ip(player, ip, 31)
new timer[64]
get_time("%H:%M:%S Date: %d/%m/%Y", timer, 63)
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)
client_cmd(player, "echo ^n")
client_cmd(player, "echo ======================================================")
client_cmd(player, "echo |EMOTO2.COM| Banned from: ^"%s^"", hostname)
client_cmd(player, "echo |EMOTO2.COM| Nick: ^"%s^" | IP: %s", name2, ip)
client_cmd(player, "echo |EMOTO2.COM| Ban from admin: ^"%s^"", name)
client_cmd(player, "echo |EMOTO2.COM| Time: %s", timer)
if (strlen(reason) > 0)
{
client_cmd(player, "echo |EMOTO2.COM| Reason: ^"%s^"", reason)
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
else
{
client_cmd(player, "echo |EMOTO2.COM| Reason: No reason typed")
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
client_cmd(player,"echo |EMOTO2.COM| For unban write in skype: emoto2.com")
client_cmd(player,"echo ======================================================^n")
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been banned by an admin.", name2)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nReason: %s", name2, temp, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nWithout reason.", name2, temp)
}
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 Player^x03 %s^x01 has been banned by^x03 %s^x01.", name2, name)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin: %s.^nReason: %s", name2, temp, name, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin %s.^nWithout reason.", name2, temp, name)
}
}
}
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)
new nameimunity[32] = "ime"
new imeto[32]
get_user_name(player, imeto, 31)
if (!player || equal(nameimunity, imeto))
{
return PLUGIN_HANDLED
}
new authid[32], name2[32], authid2[32], name[32], hostname[64], ip[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)
get_user_name(0, hostname, 63)
get_user_ip(player, ip, 31)
new timer[64]
get_time("%H:%M:%S Date: %d/%m/%Y", timer, 63)
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)
client_cmd(player, "echo ^n")
client_cmd(player, "echo ======================================================")
client_cmd(player, "echo |EMOTO2.COM| Banned from: ^"%s^"", hostname)
client_cmd(player, "echo |EMOTO2.COM| Nick: ^"%s^" | IP: %s", name2, ip)
client_cmd(player, "echo |EMOTO2.COM| Ban from admin: ^"%s^"", name)
client_cmd(player, "echo |EMOTO2.COM| Time: %s", timer)
if (strlen(reason) > 0)
{
client_cmd(player, "echo |EMOTO2.COM| Reason: ^"%s^"", reason)
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
else
{
client_cmd(player, "echo |EMOTO2.COM| Reason: No reason typed")
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
client_cmd(player,"echo |EMOTO2.COM| For unban write in skype: emoto2.com")
client_cmd(player,"echo ======================================================^n")
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 Player^x03 %s^x01 has been banned by an admin.", name2)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nReason: %s", name2, temp, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nWithout reason.", name2, temp)
}
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 Player^x03 %s^x01 has been banned by^x03 %s^x01.", name2, name)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin: %s.^nReason: %s", name2, temp, name, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin: %s.^nWithout reason.", name2, temp, name)
}
}
}
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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slayed by an admin.", name2)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slayed by^x03 %s^x01.", name2, name)
}
}
console_print(id, "[EMOTO2.COM] %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_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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slapped with^x04 %d^x01 DMG by an admin.", name2, damage)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slapped with^x04 %d^x01 DMG by^x03 %s^x01.", name2, damage, name)
}
}
console_print(id, "[EMOTO2.COM] %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, "[EMOTO2.COM] %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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 The map has been changed to^x03 %s^x01 by an admin.", arg)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has changed the map to^x04 %s^x01.", 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, "[EMOTO2.COM] %L", id, "UNKNOWN_CVAR", arg)
return PLUGIN_HANDLED
}
if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))
{
if (!(equali(arg,"sv_password") && (get_user_flags(id) & ADMIN_PASSWORD)))
{
console_print(id, "[EMOTO2.COM] %L", id, "CVAR_NO_ACC")
return PLUGIN_HANDLED
}
}
if (read_argc() < 3)
{
get_pcvar_string(pointer, arg2, 63)
console_print(id, "[EMOTO2.COM] %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)
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, "[EMOTO2.COM] %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)
{
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;
}
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')
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, "[EMOTO2.COM] %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, "[EMOTO2.COM] Executing file ^"%s^"", arg)
server_cmd("exec %s", arg)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 CFG^x03 %s^x01 has been execed by an admin.", arg)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 execed CFG^x04 %s^x01.", 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, "[EMOTO2.COM] 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, "[EMOTO2.COM] %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, "[EMOTO2.COM] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")
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, "[EMOTO2.COM] %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; ++b)
{
if (!is_user_connected(b) && !is_user_connecting(b)) continue
get_user_name(b, nick, 31)
ires = hasTag(nick, ltags, ltagsnum)
if (ires != -1)
{
console_print(id, "[EMOTO2.COM] %L", id, "SKIP_MATCH", nick, ltags[ires])
continue
}
if (get_user_flags(b) & ADMIN_IMMUNITY)
{
console_print(id, "[EMOTO2.COM] %L", id, "SKIP_IMM", nick)
continue
}
console_print(id, "[EMOTO2.COM] %L", id, "KICK_PL", nick)
if (is_user_bot(b))
server_cmd("kick #%d", get_user_userid(b))
else
{
format(lReason, 127, "%L", b, "YOU_DROPPED")
server_cmd("kick #%d ^"%s^"", get_user_userid(b), lReason)
}
count++
}
console_print(id, "[EMOTO2.COM] %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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01^'s nick has been changed to^x03 %s^x01 by an admin.", name2, arg2)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 changed^x04 %s^x01^'s nick to^x03 %s^x01.", name, name2, arg2)
}
}
console_print(id, "[EMOTO2.COM] %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;
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;
}
stock ColorMessage(const id, const input[], any:...){
new count = 1, players[32];
static msg[ 191 ];
vformat(msg, 190, input, 3);
if (id) players[0] = id; else get_players(players , count , "ch"); {
for (new i = 0; i < count; i++){
if (is_user_connected(players[i])){
message_begin(MSG_ONE_UNRELIABLE , gMsgSayText, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();}}}
}
-
EMOTO2.COM
Извън линия - Потребител
- Мнения: 345
- Регистриран на: 11 Яну 2018, 17:02
- Се отблагодари: 26 пъти
- Получена благодарност: 31 пъти
- Обратна връзка:
Имунитет само от банове
Мда, сега работи както трябва и защитава определения ник и при 2те команди. В моя случай в момента ще ми е нужно за защита на 2 ип адреса.
Присъедини се към най-доброто място за игра!
https://emoto2.com/
https://emoto2.com/
-
Radeon
Извън линия - Потребител
- Мнения: 143
- Регистриран на: 04 Апр 2021, 11:30
- Се отблагодари: 2 пъти
- Получена благодарност: 34 пъти
- Обратна връзка:
Имунитет само от банове
Не знам дали ще сравнява ип-то правилно , но тествай. Заменяш "ip1" и "ip2" с твоите ип-та
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#define AMXMODX_NOAUTOLOAD
#include <cstrike>
new g_menuPosition[33]
new g_menuPlayers[33][32]
new g_menuPlayersNum[33]
new g_menuOption[33]
new g_menuSettings[33]
new g_menuSelect[33][64]
new g_menuSelectNum[33]
#define MAX_CLCMDS 24
new g_clcmdName[MAX_CLCMDS][32]
new g_clcmdCmd[MAX_CLCMDS][64]
new g_clcmdMisc[MAX_CLCMDS][2]
new g_clcmdNum
new g_coloredMenus
new g_cstrike = 0
new Array:g_bantimes;
new Array:g_slapsettings;
new g_CSTeamNames[3][] = {
"TERRORIST",
"CT",
"SPECTATOR"
}
new g_CSTeamNumbers[3][] = {
"1",
"2",
"6"
}
new g_CSTeamiNumbers[3] = {
1,
2,
6
}
public plugin_natives()
{
set_module_filter("module_filter")
set_native_filter("native_filter")
}
public plugin_init()
{
register_plugin("Players menu",AMXX_VERSION_STR,"AMXX Dev Team")
register_dictionary("common.txt")
register_dictionary("admincmd.txt")
register_dictionary("plmenu.txt")
register_clcmd("amx_kickmenu", "cmdKickMenu", ADMIN_KICK, "- displays kick menu")
register_clcmd("amx_banmenu", "cmdBanMenu", ADMIN_BAN, "- displays ban menu")
register_clcmd("amx_slapmenu", "cmdSlapMenu", ADMIN_SLAY, "- displays slap/slay menu")
register_clcmd("amx_teammenu", "cmdTeamMenu", ADMIN_LEVEL_D, "- displays team menu")
register_clcmd("amx_clcmdmenu", "cmdClcmdMenu", ADMIN_CFG, "- displays client cmds menu")
register_menucmd(register_menuid("Ban Menu"), 1023, "actionBanMenu")
register_menucmd(register_menuid("Kick Menu"), 1023, "actionKickMenu")
register_menucmd(register_menuid("Slap/Slay Menu"), 1023, "actionSlapMenu")
register_menucmd(register_menuid("Team Menu"), 1023, "actionTeamMenu")
register_menucmd(register_menuid("Client Cmds Menu"), 1023, "actionClcmdMenu")
g_bantimes = ArrayCreate();
ArrayPushCell(g_bantimes, 0);
ArrayPushCell(g_bantimes, 5);
ArrayPushCell(g_bantimes, 10);
ArrayPushCell(g_bantimes, 15);
ArrayPushCell(g_bantimes, 30);
ArrayPushCell(g_bantimes, 45);
ArrayPushCell(g_bantimes, 60);
g_slapsettings = ArrayCreate();
ArrayPushCell(g_slapsettings, 0);
ArrayPushCell(g_slapsettings, 0);
ArrayPushCell(g_slapsettings, 1);
ArrayPushCell(g_slapsettings, 5);
register_srvcmd("amx_plmenu_bantimes", "plmenu_setbantimes");
register_srvcmd("amx_plmenu_slapdmg", "plmenu_setslapdmg");
g_coloredMenus = colored_menus()
new clcmds_ini_file[64]
get_configsdir(clcmds_ini_file, 63)
format(clcmds_ini_file, 63, "%s/clcmds.ini", clcmds_ini_file)
load_settings(clcmds_ini_file)
if (module_exists("cstrike"))
g_cstrike = 1
}
public plmenu_setbantimes()
{
new buff[32];
new args = read_argc();
if (args <= 1)
{
server_print("usage: amx_plmenu_bantimes <time1> [time2] [time3] ...");
server_print(" use time of 0 for permanent.");
return;
}
ArrayClear(g_bantimes);
for (new i = 1; i < args; i++)
{
read_argv(i, buff, charsmax(buff));
ArrayPushCell(g_bantimes, str_to_num(buff));
}
}
public plmenu_setslapdmg()
{
new buff[32];
new args = read_argc();
if (args <= 1)
{
server_print("usage: amx_plmenu_slapdmg <dmg1> [dmg2] [dmg3] ...");
server_print(" slay is automatically set for the first value.");
return;
}
ArrayClear(g_slapsettings);
ArrayPushCell(g_slapsettings, 0);
for (new i = 1; i < args; i++)
{
read_argv(i, buff, charsmax(buff));
ArrayPushCell(g_slapsettings, str_to_num(buff));
}
}
public module_filter(const module[])
{
if (equali(module, "cstrike"))
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public native_filter(const name[], index, trap)
{
if (!trap)
return PLUGIN_HANDLED
return PLUGIN_CONTINUE
}
public actionBanMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes);
g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
displayBanMenu(id, g_menuPosition[id])
}
case 8: displayBanMenu(id, ++g_menuPosition[id])
case 9: displayBanMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new name[32], name2[32], authid[32], authid2[32]
get_user_name(player, name2, 31)
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
new userid2 = get_user_userid(player)
log_amx("Ban: ^"%s<%d><%s><>^" ban and kick ^"%s<%d><%s><>^" (minutes ^"%d^")", name, get_user_userid(id), authid, name2, userid2, authid2, g_menuSettings[id])
if (g_menuSettings[id]==0)
{
new maxpl = get_maxplayers();
for (new i = 1; i <= maxpl; i++)
{
show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "PERM");
}
}
else
{
new tempTime[32];
formatex(tempTime,sizeof(tempTime)-1,"%d",g_menuSettings[id]);
new maxpl = get_maxplayers();
for (new i = 1; i <= maxpl; i++)
{
show_activity_id(i, id, name, "%L %s %L", i, "BAN", name2, i, "FOR_MIN", tempTime);
}
}
if (equal("4294967295", authid2)
|| equal("HLTV", authid2)
|| equal("STEAM_ID_LAN", authid2)
|| equali("VALVE_ID_LAN", authid2))
{
new ipa[32]
get_user_ip(player, ipa, 31, 1)
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)
}
else
{
new ipa[32]
get_user_ip(player, ipa, 31, 1)
server_cmd("addip %d %s;writeip", g_menuSettings[id], ipa)
}
server_exec()
displayBanMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayBanMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "BAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
new ipadmin[17]
get_user_ip(i, ipadmin, 16)
new ipprotection[16] = "ip1"
new ipprotection2[16] = "ip2"
if (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id) || equal(ipprotection, ipadmin) || equal(ipprotection2, ipadmin))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
else
len += format(menuBody[len], 511-len, "#. %s^n", name)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}
if (g_menuSettings[id])
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_FOR_MIN", g_menuSettings[id])
else
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "BAN_PERM")
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Ban Menu")
}
public cmdBanMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuOption[id] = 0
if (ArraySize(g_bantimes) > 0)
{
g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id]);
}
else
{
g_menuSettings[id] = 0
}
displayBanMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionSlapMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_slapsettings);
g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
displaySlapMenu(id, g_menuPosition[id]);
}
case 8: displaySlapMenu(id, ++g_menuPosition[id])
case 9: displaySlapMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new name2[32]
get_user_name(player, name2, 31)
if (!is_user_alive(player))
{
client_print(id, print_chat, "%L", id, "CANT_PERF_DEAD", name2)
displaySlapMenu(id, g_menuPosition[id])
return PLUGIN_HANDLED
}
new authid[32], authid2[32], name[32]
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
if (g_menuOption[id])
{
log_amx("Cmd: ^"%s<%d><%s><>^" slap with %d damage ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, g_menuSettings[id], name2, get_user_userid(player), authid2)
show_activity_key("ADMIN_SLAP_1", "ADMIN_SLAP_2", name, name2, g_menuSettings[id]);
} else {
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);
}
if (g_menuOption[id])
user_slap(player, (get_user_health(player) > g_menuSettings[id]) ? g_menuSettings[id] : 0)
else
user_kill(player)
displaySlapMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displaySlapMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32], team[4]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "SLAP_SLAY_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (g_cstrike)
{
if (cs_get_user_team(i) == CS_TEAM_T)
{
copy(team, 3, "TE")
}
else if (cs_get_user_team(i) == CS_TEAM_CT)
{
copy(team, 3, "CT")
} else {
get_user_team(i, team, 3)
}
} else {
get_user_team(i, team, 3)
}
if (!is_user_alive(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
else
len += format(menuBody[len], 511-len, "#. %s %s^n", name, team)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team)
else
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team)
}
}
if (g_menuOption[id])
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAP_WITH_DMG", g_menuSettings[id])
else
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "SLAY")
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Slap/Slay Menu")
}
public cmdSlapMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuOption[id] = 0
if (ArraySize(g_slapsettings) > 0)
{
g_menuSettings[id] = ArrayGetCell(g_slapsettings, g_menuOption[id]);
}
else
{
g_menuSettings[id] = 0
}
displaySlapMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionKickMenu(id, key)
{
switch (key)
{
case 8: displayKickMenu(id, ++g_menuPosition[id])
case 9: displayKickMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 8 + key]
new authid[32], authid2[32], name[32], name2[32]
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
new userid2 = get_user_userid(player)
log_amx("Kick: ^"%s<%d><%s><>^" kick ^"%s<%d><%s><>^"", name, get_user_userid(id), authid, name2, userid2, authid2)
show_activity_key("ADMIN_KICK_1", "ADMIN_KICK_2", name, name2);
server_cmd("kick #%d", userid2)
server_exec()
displayKickMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayKickMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32]
new start = pos * 8
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "KICK_MENU", pos + 1, (g_menuPlayersNum[id] / 8 + ((g_menuPlayersNum[id] % 8) ? 1 : 0)))
new end = start + 8
new keys = MENU_KEY_0
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (access(i, ADMIN_IMMUNITY) && i != id)
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
else
len += format(menuBody[len], 511-len, "#. %s^n", name)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Kick Menu")
}
public cmdKickMenu(id, level, cid)
{
if (cmd_access(id, level, cid, 1))
displayKickMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionTeamMenu(id, key)
{
switch (key)
{
case 7:
{
g_menuOption[id] = (g_menuOption[id] + 1) % (g_cstrike ? 3 : 2);
displayTeamMenu(id, g_menuPosition[id])
}
case 8: displayTeamMenu(id, ++g_menuPosition[id])
case 9: displayTeamMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new authid[32], authid2[32], name[32], name2[32]
get_user_name(player, name2, 31)
get_user_authid(id, authid, 31)
get_user_authid(player, authid2, 31)
get_user_name(id, name, 31)
log_amx("Cmd: ^"%s<%d><%s><>^" transfer ^"%s<%d><%s><>^" (team ^"%s^")", name, get_user_userid(id), authid, name2, get_user_userid(player), authid2, g_menuOption[id] ? "TERRORIST" : "CT")
show_activity_key("ADMIN_TRANSF_1", "ADMIN_TRANSF_2", name, name2, g_CSTeamNames[g_menuOption[id] % 3]);
if (g_cstrike)
{
if (is_user_alive(player))
{
new deaths = cs_get_user_deaths(player)
user_kill(player, 1)
cs_set_user_deaths(player, deaths)
}
cs_set_user_team(player, (g_menuOption[id] % 3) + 1)
cs_reset_user_model(player)
} else {
new limit_setting = get_cvar_num("mp_limitteams")
set_cvar_num("mp_limitteams", 0)
engclient_cmd(player, "jointeam", g_CSTeamNumbers[g_menuOption[id] % 2])
engclient_cmd(player, "joinclass", "1")
set_cvar_num("mp_limitteams", limit_setting)
}
displayTeamMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayTeamMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i, iteam
new name[32], team[4]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "TEAM_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (g_cstrike)
{
iteam = _:cs_get_user_team(i)
if (iteam == 1)
{
copy(team, 3, "TE")
}
else if (iteam == 2)
{
copy(team, 3, "CT")
}
else if (iteam == 3)
{
copy(team, 3, "SPE");
iteam = 6;
} else {
iteam = get_user_team(i, team, 3)
}
} else {
iteam = get_user_team(i, team, 3)
}
if ((iteam == g_CSTeamiNumbers[g_menuOption[id] % (g_cstrike ? 3 : 2)]) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s\R%s^n\w", b, name, team)
else
len += format(menuBody[len], 511-len, "#. %s %s^n", name, team)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*\y\R%s^n\w" : "%d. %s * %s^n", ++b, name, team)
else
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s\y\R%s^n\w" : "%d. %s %s^n", ++b, name, team)
}
}
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "TRANSF_TO", g_CSTeamNames[g_menuOption[id] % (g_cstrike ? 3 : 2)])
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Team Menu")
}
public cmdTeamMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuOption[id] = 0
displayTeamMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
public actionClcmdMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= g_menuSelectNum[id]
displayClcmdMenu(id, g_menuPosition[id])
}
case 8: displayClcmdMenu(id, ++g_menuPosition[id])
case 9: displayClcmdMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]
new flags = g_clcmdMisc[g_menuSelect[id][g_menuOption[id]]][1]
if (is_user_connected(player))
{
new command[512], authid[32], name[32], userid[32]
copy(command, charsmax(command), g_clcmdCmd[g_menuSelect[id][g_menuOption[id]]])
get_user_authid(player, authid, 31)
get_user_name(player, name, 31)
num_to_str(get_user_userid(player), userid, 31)
replace(command, charsmax(command), "%userid%", userid)
replace(command, charsmax(command), "%authid%", authid)
replace(command, charsmax(command), "%name%", name)
if (flags & 1)
{
server_cmd("%s", command)
server_exec()
} else if (flags & 2)
client_cmd(id, "%s", command)
else if (flags & 4)
client_cmd(player, "%s", command)
}
if (flags & 8)
displayClcmdMenu(id, g_menuPosition[id])
}
}
return PLUGIN_HANDLED
}
displayClcmdMenu(id, pos)
{
if (pos < 0)
return
get_players(g_menuPlayers[id], g_menuPlayersNum[id])
new menuBody[512]
new b = 0
new i
new name[32]
new start = pos * 7
if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0
new len = format(menuBody, 511, g_coloredMenus ? "\y%L\R%d/%d^n\w^n" : "%L %d/%d^n^n", id, "CL_CMD_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))
new end = start + 7
new keys = MENU_KEY_0|MENU_KEY_8
if (end > g_menuPlayersNum[id])
end = g_menuPlayersNum[id]
for (new a = start; a < end; ++a)
{
i = g_menuPlayers[id][a]
get_user_name(i, name, 31)
if (!g_menuSelectNum[id] || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b
if (g_coloredMenus)
len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
else
len += format(menuBody[len], 511-len, "#. %s^n", name)
} else {
keys |= (1<<b)
if (is_user_admin(i))
len += format(menuBody[len], 511-len, g_coloredMenus ? "%d. %s \r*^n\w" : "%d. %s *^n", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}
if (g_menuSelectNum[id])
len += format(menuBody[len], 511-len, "^n8. %s^n", g_clcmdName[g_menuSelect[id][g_menuOption[id]]])
else
len += format(menuBody[len], 511-len, "^n8. %L^n", id, "NO_CMDS")
if (end != g_menuPlayersNum[id])
{
format(menuBody[len], 511-len, "^n9. %L...^n0. %L", id, "MORE", id, pos ? "BACK" : "EXIT")
keys |= MENU_KEY_9
}
else
format(menuBody[len], 511-len, "^n0. %L", id, pos ? "BACK" : "EXIT")
show_menu(id, keys, menuBody, -1, "Client Cmds Menu")
}
public cmdClcmdMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
g_menuSelectNum[id] = 0
for (new a = 0; a < g_clcmdNum; ++a)
if (access(id, g_clcmdMisc[a][0]))
g_menuSelect[id][g_menuSelectNum[id]++] = a
g_menuOption[id] = 0
displayClcmdMenu(id, g_menuPosition[id] = 0)
return PLUGIN_HANDLED
}
load_settings(szFilename[])
{
if (!file_exists(szFilename))
return 0
new text[256], szFlags[32], szAccess[32]
new a, pos = 0
while (g_clcmdNum < MAX_CLCMDS && read_file(szFilename, pos++, text, 255, a))
{
if (text[0] == ';') continue
if (parse(text, g_clcmdName[g_clcmdNum], 31, g_clcmdCmd[g_clcmdNum], 63, szFlags, 31, szAccess, 31) > 3)
{
while (replace(g_clcmdCmd[g_clcmdNum], 63, "\'", "^""))
{
}
g_clcmdMisc[g_clcmdNum][1] = read_flags(szFlags)
g_clcmdMisc[g_clcmdNum][0] = read_flags(szAccess)
g_clcmdNum++
}
}
return 1
}
Код за потвърждение: Избери целия код
#include <amxmodx>
#include <amxmisc>
#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;
new HudSync, gMsgSayText;
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)
{
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]))
{
get_user_name(id, g_Names[last], charsmax(g_Names[]));
g_Access[last] = get_user_flags(id);
return;
}
}
new target = 0;
if (g_Size < sizeof(g_SteamIDs))
{
target = g_Size;
++g_Size;
}
else
{
target = g_Tracker;
++g_Tracker;
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_disconnected(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("amx_ban", "cmdBan", ADMIN_CFG, "<name or #userid> <minutes> [reason]")
register_concmd("amx_banip", "cmdBanIP", ADMIN_BAN, "<name or #userid> <minutes> [reason]")
register_concmd("amx_addban", "cmdAddBan", ADMIN_CFG, "<^"authid^" or ip> <minutes> [reason]")
register_concmd("amx_unban", "cmdUnban", ADMIN_CFG, "<^"authid^" or ip>")
register_concmd("amx_slay", "cmdSlay", ADMIN_SLAY, "<name or #userid>")
register_concmd("amx_slap", "cmdSlap", ADMIN_SLAY, "<name or #userid> [power]")
register_concmd("amx_leave", "cmdLeave", ADMIN_CFG, "<tag> [tag] [tag] [tag]")
register_concmd("amx_pause", "cmdPause", ADMIN_CFG, "- pause or unpause the game")
register_concmd("amx_who", "cmdWho", ADMIN_CFG, "- displays who is on server")
register_concmd("amx_cvar", "cmdCvar", ADMIN_CFG, "<cvar> [value]")
register_concmd("amx_plugins", "cmdPlugins", ADMIN_CFG)
register_concmd("amx_modules", "cmdModules", ADMIN_CFG)
register_concmd("amx_map", "cmdMap", ADMIN_CFG, "<mapname>")
register_concmd("amx_cfg", "cmdCfg", ADMIN_CFG, "<filename>")
register_concmd("amx_nick", "cmdNick", ADMIN_LEVEL_D, "<name or #userid> <new nick>")
register_concmd("amx_last", "cmdLast", ADMIN_CFG, "- list the last few disconnected clients info");
register_clcmd("amx_rcon", "cmdRcon", ADMIN_CFG, "<command line>")
register_clcmd("amx_showrcon", "cmdShowRcon", ADMIN_CFG, "<command line>")
register_clcmd("pauseAck", "cmdLBack")
rcon_password=get_cvar_pointer("rcon_password");
pausable=get_cvar_pointer("pausable");
HudSync = CreateHudSyncObj();
gMsgSayText = get_user_msgid("SayText");
}
public plugin_cfg()
{
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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been kicked by an admin.", name2)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been kicked by^x03 %s^x01.", name2, name)
}
}
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, "[EMOTO2.COM] 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, "[EMOTO2.COM] %L", id, "IP_REMOVED", arg)
} else {
server_cmd("removeid %s;writeid", arg)
console_print(id, "[EMOTO2.COM] %L", id, "AUTHID_REMOVED", arg)
}
get_user_name(id, name, 31)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been unbanned by an admin.", arg)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been unbanned by^x03 %s^x01.", arg, name)
}
}
get_user_authid(id, authid, 31)
log_amx("Cmd: ^"%s<%d><%s><>^" unban ^"%s^"", name, get_user_userid(id), authid, arg)
return PLUGIN_HANDLED
}
public cmdAddBan(id, level, cid)
{
if (!cmd_access(id, level, cid, 3, true))
{
if (get_user_flags(id) & level)
{
return PLUGIN_HANDLED;
}
if (!cmd_access(id, ADMIN_RCON, cid, 3))
{
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;
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"))
{
console_print(id, "Cannot ban %s", arg);
return PLUGIN_HANDLED;
}
if (contain(arg, ".") != -1)
{
isip = true;
}
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, "[EMOTO2.COM] %s : %L", IP, id, "CLIENT_IMM", Name);
return PLUGIN_HANDLED;
}
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, "[EMOTO2.COM] %s : %L", Auth, id, "CLIENT_IMM", Name);
return PLUGIN_HANDLED;
}
canban = true;
}
}
}
if (!canban)
{
console_print(id, "[EMOTO2.COM] You may only ban recently disconnected clients. Use ^"amx_last^" to view.");
return PLUGIN_HANDLED;
}
}
if (contain(arg, ".") != -1)
{
server_cmd("addip ^"%s^" ^"%s^";wait;writeip", minutes, arg)
console_print(id, "[EMOTO2.COM] Ip ^"%s^" added to ban list", arg)
} else {
server_cmd("banid ^"%s^" ^"%s^";wait;writeid", minutes, arg)
console_print(id, "[EMOTO2.COM] 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], hostname[64], ip[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)
get_user_name(0, hostname, 63)
get_user_ip(player, ip, 31)
new timer[64]
get_time("%H:%M:%S Date: %d/%m/%Y", timer, 63)
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)
client_cmd(player, "echo ^n")
client_cmd(player, "echo ======================================================")
client_cmd(player, "echo |EMOTO2.COM| Banned from: ^"%s^"", hostname)
client_cmd(player, "echo |EMOTO2.COM| Nick: ^"%s^" | IP: %s", name2, ip)
client_cmd(player, "echo |EMOTO2.COM| Ban from admin: ^"%s^"", name)
client_cmd(player, "echo |EMOTO2.COM| Time: %s", timer)
if (strlen(reason) > 0)
{
client_cmd(player, "echo |EMOTO2.COM| Reason: ^"%s^"", reason)
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
else
{
client_cmd(player, "echo |EMOTO2.COM| Reason: No reason typed")
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
client_cmd(player,"echo |EMOTO2.COM| For unban write in skype: emoto2.com")
client_cmd(player,"echo ======================================================^n")
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been banned by an admin.", name2)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nReason: %s", name2, temp, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nWithout reason.", name2, temp)
}
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 Player^x03 %s^x01 has been banned by^x03 %s^x01.", name2, name)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin: %s.^nReason: %s", name2, temp, name, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin %s.^nWithout reason.", name2, temp, name)
}
}
}
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)
new ipprotection[16] = "ip1"
new ipprotection2[16] = "ip2"
new ipadmin[17]
get_user_ip(player, ipadmin, 16)
if (!player || equal(ipprotection, ipadmin) || equal(ipprotection2, ipadmin))
{
return PLUGIN_HANDLED
}
new authid[32], name2[32], authid2[32], name[32], hostname[64], ip[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)
get_user_name(0, hostname, 63)
get_user_ip(player, ip, 31)
new timer[64]
get_time("%H:%M:%S Date: %d/%m/%Y", timer, 63)
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)
client_cmd(player, "echo ^n")
client_cmd(player, "echo ======================================================")
client_cmd(player, "echo |EMOTO2.COM| Banned from: ^"%s^"", hostname)
client_cmd(player, "echo |EMOTO2.COM| Nick: ^"%s^" | IP: %s", name2, ip)
client_cmd(player, "echo |EMOTO2.COM| Ban from admin: ^"%s^"", name)
client_cmd(player, "echo |EMOTO2.COM| Time: %s", timer)
if (strlen(reason) > 0)
{
client_cmd(player, "echo |EMOTO2.COM| Reason: ^"%s^"", reason)
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
else
{
client_cmd(player, "echo |EMOTO2.COM| Reason: No reason typed")
client_cmd(player, "echo |EMOTO2.COM| Ban time: ^"%s^"", temp)
}
client_cmd(player,"echo |EMOTO2.COM| For unban write in skype: emoto2.com")
client_cmd(player,"echo ======================================================^n")
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 Player^x03 %s^x01 has been banned by an admin.", name2)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nReason: %s", name2, temp, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nWithout reason.", name2, temp)
}
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 Player^x03 %s^x01 has been banned by^x03 %s^x01.", name2, name)
if (strlen(reason) > 0)
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin: %s.^nReason: %s", name2, temp, name, reason)
}
else
{
set_hudmessage(0, 255, 0, 0.05, 0.30, 0, 6.0, 12.0, 0.1, 0.2, 10);
ShowSyncHudMsg(0, HudSync, "%s has been banned!^nBan time: %s.^nBy admin: %s.^nWithout reason.", name2, temp, name)
}
}
}
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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slayed by an admin.", name2)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slayed by^x03 %s^x01.", name2, name)
}
}
console_print(id, "[EMOTO2.COM] %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_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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slapped with^x04 %d^x01 DMG by an admin.", name2, damage)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has been slapped with^x04 %d^x01 DMG by^x03 %s^x01.", name2, damage, name)
}
}
console_print(id, "[EMOTO2.COM] %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, "[EMOTO2.COM] %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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 The map has been changed to^x03 %s^x01 by an admin.", arg)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 has changed the map to^x04 %s^x01.", 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, "[EMOTO2.COM] %L", id, "UNKNOWN_CVAR", arg)
return PLUGIN_HANDLED
}
if (onlyRcon(arg) && !(get_user_flags(id) & ADMIN_RCON))
{
if (!(equali(arg,"sv_password") && (get_user_flags(id) & ADMIN_PASSWORD)))
{
console_print(id, "[EMOTO2.COM] %L", id, "CVAR_NO_ACC")
return PLUGIN_HANDLED
}
}
if (read_argc() < 3)
{
get_pcvar_string(pointer, arg2, 63)
console_print(id, "[EMOTO2.COM] %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)
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, "[EMOTO2.COM] %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)
{
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;
}
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')
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, "[EMOTO2.COM] %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, "[EMOTO2.COM] Executing file ^"%s^"", arg)
server_cmd("exec %s", arg)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x01 CFG^x03 %s^x01 has been execed by an admin.", arg)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 execed CFG^x04 %s^x01.", 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, "[EMOTO2.COM] 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, "[EMOTO2.COM] %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, "[EMOTO2.COM] %L", id, g_Paused ? "UNPAUSING" : "PAUSING")
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, "[EMOTO2.COM] %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; ++b)
{
if (!is_user_connected(b) && !is_user_connecting(b)) continue
get_user_name(b, nick, 31)
ires = hasTag(nick, ltags, ltagsnum)
if (ires != -1)
{
console_print(id, "[EMOTO2.COM] %L", id, "SKIP_MATCH", nick, ltags[ires])
continue
}
if (get_user_flags(b) & ADMIN_IMMUNITY)
{
console_print(id, "[EMOTO2.COM] %L", id, "SKIP_IMM", nick)
continue
}
console_print(id, "[EMOTO2.COM] %L", id, "KICK_PL", nick)
if (is_user_bot(b))
server_cmd("kick #%d", get_user_userid(b))
else
{
format(lReason, 127, "%L", b, "YOU_DROPPED")
server_cmd("kick #%d ^"%s^"", get_user_userid(b), lReason)
}
count++
}
console_print(id, "[EMOTO2.COM] %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)
switch(get_cvar_num("amx_show_activity"))
{
case 1:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01^'s nick has been changed to^x03 %s^x01 by an admin.", name2, arg2)
}
case 2:
{
ColorMessage(0, "^x04[EMOTO2.COM]^x03 %s^x01 changed^x04 %s^x01^'s nick to^x03 %s^x01.", name, name2, arg2)
}
}
console_print(id, "[EMOTO2.COM] %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;
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;
}
stock ColorMessage(const id, const input[], any:...){
new count = 1, players[32];
static msg[ 191 ];
vformat(msg, 190, input, 3);
if (id) players[0] = id; else get_players(players , count , "ch"); {
for (new i = 0; i < count; i++){
if (is_user_connected(players[i])){
message_begin(MSG_ONE_UNRELIABLE , gMsgSayText, _, players[i]);
write_byte(players[i]);
write_string(msg);
message_end();}}}
}
-
EMOTO2.COM
Извън линия - Потребител
- Мнения: 345
- Регистриран на: 11 Яну 2018, 17:02
- Се отблагодари: 26 пъти
- Получена благодарност: 31 пъти
- Обратна връзка:
Имунитет само от банове
Сега дори бан менюто е бъгнато като непоказва абсолютно никакви имена и може да се банва а при amx_banip си банва играча.
Присъедини се към най-доброто място за игра!
https://emoto2.com/
https://emoto2.com/
-
EMOTO2.COM
Извън линия - Потребител
- Мнения: 345
- Регистриран на: 11 Яну 2018, 17:02
- Се отблагодари: 26 пъти
- Получена благодарност: 31 пъти
- Обратна връзка:
Имунитет само от банове
Проблемите са решени. Поиграх си доста тестове направих и с помоща на SmirnoffBG и се получи желания резултат. Кодът за имената в менюто е бил премахнат и се ползва id вместо i ...
Присъедини се към най-доброто място за игра!
https://emoto2.com/
https://emoto2.com/
-
- Подобни теми
- Отговори
- Преглеждания
- Последно мнение
-
- 18 Отговори
- 5614 Преглеждания
-
Последно мнение от WaLkZ
-
- 1 Отговори
- 1265 Преглеждания
-
Последно мнение от JackEyedJones
-
- 0 Отговори
- 1367 Преглеждания
-
Последно мнение от lamb
-
- 2 Отговори
- 1343 Преглеждания
-
Последно мнение от OciXCrom
-
- 2 Отговори
- 728 Преглеждания
-
Последно мнение от AfterLife
-
- 14 Отговори
- 4019 Преглеждания
-
Последно мнение от zolfeca
-
- 1 Отговори
- 1201 Преглеждания
-
Последно мнение от mi0
Кой е на линия
Потребители разглеждащи този форум: Bing [Bot] и 18 госта