Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

AMX SSban v 2.6 одинаковая причина для всех банов

Статус пользователя xdark08x
сообщение 26.6.2014, 17:39
Сообщение #1
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Плагин AMX SSban v 2.6.
amx_ssbanmenu - после выбора игрока делает скриншоты и банит, но причину нужно вводить администратору вручную. Как сделать чтоб причина была одинаковой для всех банов через amx_ssbanmenu, например "Screens HA forum", тоесть чтоб ее не нужно было вводить???
​Исходник здесь: https://forums.alliedmods.net/showthread.php?t=90318
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 27.6.2014, 19:04
Сообщение #2
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

попробуйте так
Код:
// Includes
#include <amxmodx>
#include <amxmisc>
#include <geoip>

// Defines
#define VERSION "2.6"

#define BAN_REASON "Скриншоты на форум"


//********** EDIT HERE if you use AMXBANS ***********//
#define AMXBANS 0 // Set this to 1 to enable AmxBans support. (Uses amx_ban <minutes> <userid> [reason])
//***************************************************//


#define MAX_PLAYERS 33 // Maximum number of players (plus 1)

new g_Activity, g_Hostname, g_DelaySS, g_DelayBan, g_SnapShot, g_UnbanURL, g_MsgType, g_SayText
new g_szBanTime[MAX_PLAYERS][8], g_szBanReason[MAX_PLAYERS][32]
new Array:g_bantimes

new g_menuPosition[MAX_PLAYERS]
new g_menuPlayers[MAX_PLAYERS][32]
new g_menuPlayersNum[MAX_PLAYERS]
new g_menuOption[MAX_PLAYERS]
new g_menuSettings[MAX_PLAYERS]

public plugin_init()
{
/* Register plugin name and author */
register_plugin("AMX SSBan", VERSION, "God@Dorin\Fysiks");

/* Register plugin version */
register_cvar("screen_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

/* Register language file */
register_dictionary("screen_message.txt") // Language file for snapshot messages
register_dictionary("admincmd.txt") // Language file for amxmodx bans

/* Register cvars */
g_Activity = get_cvar_pointer("amx_show_activity")
g_Hostname = get_cvar_pointer("hostname")
g_DelaySS = register_cvar("amx_ssdelay", "1.0") // Delay between snapshots (Def.: 1.0)
g_DelayBan = register_cvar("amx_bandelay", "10.0") // Delay before ban is done (Def.: 10.0)
g_SnapShot = register_cvar("amx_ssnumber", "3") // Number of snapshots to take (Def.: 3)
g_UnbanURL = register_cvar("amx_website", "www.yoursite.com") // Unban request site (Def.: "www.yoursite.com")
g_MsgType = register_cvar("amx_msg_type", "3") // 1- chat | 2- hud | 3- chat+hud (Def.: 3)

/* Register console admin commands */
register_concmd("amx_ss", "cmdSS",ADMIN_KICK, "<name or #userid> - Make snapshots on user !")
#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - - Ban with snapshots! (AmxBans)")
else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<minutes> <name or #userid> [reason] - Ban with snapshots! (AmxBans)")
#else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - Ban with snapshots! (AMX Mod X)")
#endif

g_SayText = get_user_msgid("SayText")

/* Register the menu for banning */
register_clcmd("amx_ssmenu", "cmdSSMenu", ADMIN_KICK, " - Displays ScreenShot Menu")
register_clcmd("amx_ssbanmenu", "cmdBanMenu", ADMIN_BAN, " - Displays ScreenShot Ban Menu")
register_menucmd(register_menuid("SS Menu"), 1023, "actionMenu")

/* Set bantimes for the menu */
g_bantimes = ArrayCreate()

ArrayPushCell(g_bantimes, 0)
ArrayPushCell(g_bantimes, 5)
ArrayPushCell(g_bantimes, 10)
ArrayPushCell(g_bantimes, 30)
ArrayPushCell(g_bantimes, 60)
ArrayPushCell(g_bantimes, 240)
ArrayPushCell(g_bantimes, 1440)

register_srvcmd("amx_ssbantimes", "ssbanmenu_setbantimes")
}

public cmdSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new target[32]
read_argv(1, target, 31)
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new name[32], name2[32]
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
/* show message in chat to all players by amx_show_activity */
switch( get_pcvar_num(g_Activity) )
{
case 2: client_printc(0,"%L", LANG_PLAYER, "SS_CASE2", name, name2)
case 1: client_printc(0,"%L", LANG_PLAYER, "SS_CASE1", name2)
}

new Param[2]
Param[0] = id
Param[1] = player
/* Set the task to take snapshots */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
return PLUGIN_HANDLED

}

public cmdBanSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32]

#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
{
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
}
else
{
read_argv(1, g_szBanTime[id], 7)
read_argv(2, target, 31)
}
#else
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
#endif
read_argv(3, g_szBanReason[id], 63)

new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new Param[2]
Param[0] = id
Param[1] = player

/* Set tasks to take snapshots and ban target */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)

return PLUGIN_HANDLED
}

public SS_Task(Param[2])
{
new player = Param[1]
new id = Param[0]
new name[32], timer[32], hostname[64], name2[32], ip[32], authid2[32], country[33], site[64]

get_user_name(id, name, 31)
get_user_name(player, name2, 31)
get_user_authid(player, authid2, 31)
get_user_ip(player, ip, 31, 1)

geoip_country(ip, country)
get_time("%d/%m/%Y - %H:%M:%S", timer, 63)
get_pcvar_string(g_Hostname, hostname, charsmax(hostname))
get_pcvar_string(g_UnbanURL, site, charsmax(site))

switch( get_pcvar_num(g_MsgType) )
{
case 1:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)
}
case 2:
{
/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
case 3:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)

/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
}
/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(id,"%L", id, "SS_CONSOLE", name2)

return PLUGIN_HANDLED
}

public BanSS_Task(Param[])
{
new id = Param[0]
new player = Param[1]
new minutes[8], reason[32]
new userid2 = get_user_userid(player)

copy(minutes, 7, g_szBanTime[id])
copy(reason, 31, g_szBanReason[id])

#if AMXBANS // Ban "player" using AmxBans
if( get_cvar_num("amxbans_use_newbancmd") )
client_cmd(id, "amx_ban #%d %s ^"%s^"", userid2, minutes, reason)
else
client_cmd(id, "amx_ban %s #%d ^"%s^"", minutes, userid2, reason)
#else
// Ban "player" using HL Ban Method

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

get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)

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

new temp[64], banned[16], nNum = str_to_num(minutes)
if(nNum)
{
formatex(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
formatex(temp, 63, "%L", player, "PERM")
}

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

if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^"", userid2, reason, banned, temp)
else
server_cmd("kick #%d ^"%s %s^"", userid2, banned, temp)

server_cmd("banid %s %s", minutes, authid2)
server_cmd("writeid")

// Display the message to all clients
new msg[256]
new len
new maxpl = get_maxplayers()
for(new i = 1; i <= maxpl; i++)
{
if(is_user_connected(i) && !is_user_bot(i))
{
len = formatex(msg, charsmax(msg), "%L", i, "BAN")
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2)
if(nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes)
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM")
}
if(strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason)
}
show_activity_id(i, id, name, msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
#endif
return PLUGIN_HANDLED
}

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
{
// should never happen, but failsafe
g_menuSettings[id] = 0
}
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

public cmdSSMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

g_menuOption[id] = 0

g_menuSettings[id] = -1
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

displayMenu(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, len

if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0

len = format(menuBody, 511, "\y%L\R%d/%d^n\w^n", id, g_menuSettings[id] == -1 ? "SS_MENU" : "SSBAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

new end = start + 7
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 (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b

len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
} else {
keys |= (1<<b)

if (is_user_admin(i))
len += format(menuBody[len], 511-len, "%d. %s \r*^n\w", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}

if(g_menuSettings[id] != -1)
{
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")
keys |= MENU_KEY_8
}

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, "SS Menu")
}

public actionMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes)

g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id])

displayMenu(id, g_menuPosition[id])
}
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

new minutes[8]
num_to_str(g_menuSettings[id], minutes, 7)

copy(g_szBanTime[id], 7, minutes)
copy(g_szBanReason[id], 31, "_BanReason")

new Param[2]
Param[0] = id
Param[1] = player

set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
if(g_menuSettings[id] != -1)
{
_BanReason = BAN_REASON
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)
}

// displayMenu(id, g_menuPosition[id]) // Uncomment this line to make menu remain open after banning
}
}

return PLUGIN_HANDLED
}


public cmdBanReason(id)
{
// Client has submitted reason.
new szArg[sizeof(g_szBanReason[])]
read_args(szArg, charsmax(szArg))
remove_quotes(szArg)

if(szArg[0])
{
formatex(g_szBanReason[id], charsmax(g_szBanReason[]), szArg)
}
return PLUGIN_HANDLED
}

public ssbanmenu_setbantimes()
{
new buff[32]
new args = read_argc()

if (args <= 1)
{
server_print("usage: amx_ssbantimes <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))

}

}

/* Stock colors for chat messages */
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1
vformat(msg, sizeof msg - 1, string, 3)

replace_all(msg,190,"!g","^4")
replace_all(msg,190,"!y","^1")
replace_all(msg,190,"!t","^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, g_SayText,_, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}


Причину вы можете изменить в этой строке
Код:
#define BAN_REASON "Скриншоты на форум"
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xdark08x
сообщение 27.6.2014, 20:43
Сообщение #3
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Цитата(voed @ 27.6.2014, 20:04) *
попробуйте так
Код:
// Includes
#include <amxmodx>
#include <amxmisc>
#include <geoip>

// Defines
#define VERSION "2.6"

#define BAN_REASON "Скриншоты на форум"


//********** EDIT HERE if you use AMXBANS ***********//
#define AMXBANS 0 // Set this to 1 to enable AmxBans support. (Uses amx_ban <minutes> <userid> [reason])
//***************************************************//


#define MAX_PLAYERS 33 // Maximum number of players (plus 1)

new g_Activity, g_Hostname, g_DelaySS, g_DelayBan, g_SnapShot, g_UnbanURL, g_MsgType, g_SayText
new g_szBanTime[MAX_PLAYERS][8], g_szBanReason[MAX_PLAYERS][32]
new Array:g_bantimes

new g_menuPosition[MAX_PLAYERS]
new g_menuPlayers[MAX_PLAYERS][32]
new g_menuPlayersNum[MAX_PLAYERS]
new g_menuOption[MAX_PLAYERS]
new g_menuSettings[MAX_PLAYERS]

public plugin_init()
{
/* Register plugin name and author */
register_plugin("AMX SSBan", VERSION, "God@Dorin\Fysiks");

/* Register plugin version */
register_cvar("screen_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

/* Register language file */
register_dictionary("screen_message.txt") // Language file for snapshot messages
register_dictionary("admincmd.txt") // Language file for amxmodx bans

/* Register cvars */
g_Activity = get_cvar_pointer("amx_show_activity")
g_Hostname = get_cvar_pointer("hostname")
g_DelaySS = register_cvar("amx_ssdelay", "1.0") // Delay between snapshots (Def.: 1.0)
g_DelayBan = register_cvar("amx_bandelay", "10.0") // Delay before ban is done (Def.: 10.0)
g_SnapShot = register_cvar("amx_ssnumber", "3") // Number of snapshots to take (Def.: 3)
g_UnbanURL = register_cvar("amx_website", "www.yoursite.com") // Unban request site (Def.: "www.yoursite.com")
g_MsgType = register_cvar("amx_msg_type", "3") // 1- chat | 2- hud | 3- chat+hud (Def.: 3)

/* Register console admin commands */
register_concmd("amx_ss", "cmdSS",ADMIN_KICK, "<name or #userid> - Make snapshots on user !")
#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - - Ban with snapshots! (AmxBans)")
else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<minutes> <name or #userid> [reason] - Ban with snapshots! (AmxBans)")
#else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - Ban with snapshots! (AMX Mod X)")
#endif

g_SayText = get_user_msgid("SayText")

/* Register the menu for banning */
register_clcmd("amx_ssmenu", "cmdSSMenu", ADMIN_KICK, " - Displays ScreenShot Menu")
register_clcmd("amx_ssbanmenu", "cmdBanMenu", ADMIN_BAN, " - Displays ScreenShot Ban Menu")
register_menucmd(register_menuid("SS Menu"), 1023, "actionMenu")

/* Set bantimes for the menu */
g_bantimes = ArrayCreate()

ArrayPushCell(g_bantimes, 0)
ArrayPushCell(g_bantimes, 5)
ArrayPushCell(g_bantimes, 10)
ArrayPushCell(g_bantimes, 30)
ArrayPushCell(g_bantimes, 60)
ArrayPushCell(g_bantimes, 240)
ArrayPushCell(g_bantimes, 1440)

register_srvcmd("amx_ssbantimes", "ssbanmenu_setbantimes")
}

public cmdSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new target[32]
read_argv(1, target, 31)
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new name[32], name2[32]
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
/* show message in chat to all players by amx_show_activity */
switch( get_pcvar_num(g_Activity) )
{
case 2: client_printc(0,"%L", LANG_PLAYER, "SS_CASE2", name, name2)
case 1: client_printc(0,"%L", LANG_PLAYER, "SS_CASE1", name2)
}

new Param[2]
Param[0] = id
Param[1] = player
/* Set the task to take snapshots */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
return PLUGIN_HANDLED

}

public cmdBanSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32]

#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
{
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
}
else
{
read_argv(1, g_szBanTime[id], 7)
read_argv(2, target, 31)
}
#else
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
#endif
read_argv(3, g_szBanReason[id], 63)

new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new Param[2]
Param[0] = id
Param[1] = player

/* Set tasks to take snapshots and ban target */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)

return PLUGIN_HANDLED
}

public SS_Task(Param[2])
{
new player = Param[1]
new id = Param[0]
new name[32], timer[32], hostname[64], name2[32], ip[32], authid2[32], country[33], site[64]

get_user_name(id, name, 31)
get_user_name(player, name2, 31)
get_user_authid(player, authid2, 31)
get_user_ip(player, ip, 31, 1)

geoip_country(ip, country)
get_time("%d/%m/%Y - %H:%M:%S", timer, 63)
get_pcvar_string(g_Hostname, hostname, charsmax(hostname))
get_pcvar_string(g_UnbanURL, site, charsmax(site))

switch( get_pcvar_num(g_MsgType) )
{
case 1:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)
}
case 2:
{
/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
case 3:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)

/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
}
/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(id,"%L", id, "SS_CONSOLE", name2)

return PLUGIN_HANDLED
}

public BanSS_Task(Param[])
{
new id = Param[0]
new player = Param[1]
new minutes[8], reason[32]
new userid2 = get_user_userid(player)

copy(minutes, 7, g_szBanTime[id])
copy(reason, 31, g_szBanReason[id])

#if AMXBANS // Ban "player" using AmxBans
if( get_cvar_num("amxbans_use_newbancmd") )
client_cmd(id, "amx_ban #%d %s ^"%s^"", userid2, minutes, reason)
else
client_cmd(id, "amx_ban %s #%d ^"%s^"", minutes, userid2, reason)
#else
// Ban "player" using HL Ban Method

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

get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)

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

new temp[64], banned[16], nNum = str_to_num(minutes)
if(nNum)
{
formatex(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
formatex(temp, 63, "%L", player, "PERM")
}

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

if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^"", userid2, reason, banned, temp)
else
server_cmd("kick #%d ^"%s %s^"", userid2, banned, temp)

server_cmd("banid %s %s", minutes, authid2)
server_cmd("writeid")

// Display the message to all clients
new msg[256]
new len
new maxpl = get_maxplayers()
for(new i = 1; i <= maxpl; i++)
{
if(is_user_connected(i) && !is_user_bot(i))
{
len = formatex(msg, charsmax(msg), "%L", i, "BAN")
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2)
if(nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes)
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM")
}
if(strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason)
}
show_activity_id(i, id, name, msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
#endif
return PLUGIN_HANDLED
}

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
{
// should never happen, but failsafe
g_menuSettings[id] = 0
}
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

public cmdSSMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

g_menuOption[id] = 0

g_menuSettings[id] = -1
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

displayMenu(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, len

if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0

len = format(menuBody, 511, "\y%L\R%d/%d^n\w^n", id, g_menuSettings[id] == -1 ? "SS_MENU" : "SSBAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

new end = start + 7
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 (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b

len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
} else {
keys |= (1<<b)

if (is_user_admin(i))
len += format(menuBody[len], 511-len, "%d. %s \r*^n\w", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}

if(g_menuSettings[id] != -1)
{
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")
keys |= MENU_KEY_8
}

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, "SS Menu")
}

public actionMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes)

g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id])

displayMenu(id, g_menuPosition[id])
}
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

new minutes[8]
num_to_str(g_menuSettings[id], minutes, 7)

copy(g_szBanTime[id], 7, minutes)
copy(g_szBanReason[id], 31, "_BanReason")

new Param[2]
Param[0] = id
Param[1] = player

set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
if(g_menuSettings[id] != -1)
{
_BanReason = BAN_REASON
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)
}

// displayMenu(id, g_menuPosition[id]) // Uncomment this line to make menu remain open after banning
}
}

return PLUGIN_HANDLED
}


public cmdBanReason(id)
{
// Client has submitted reason.
new szArg[sizeof(g_szBanReason[])]
read_args(szArg, charsmax(szArg))
remove_quotes(szArg)

if(szArg[0])
{
formatex(g_szBanReason[id], charsmax(g_szBanReason[]), szArg)
}
return PLUGIN_HANDLED
}

public ssbanmenu_setbantimes()
{
new buff[32]
new args = read_argc()

if (args <= 1)
{
server_print("usage: amx_ssbantimes <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))

}

}

/* Stock colors for chat messages */
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1
vformat(msg, sizeof msg - 1, string, 3)

replace_all(msg,190,"!g","^4")
replace_all(msg,190,"!y","^1")
replace_all(msg,190,"!t","^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, g_SayText,_, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}


Причину вы можете изменить в этой строке
Код:
#define BAN_REASON "Скриншоты на форум"

Не компилируется.
Пишет ошибку. Что-то с параметром "_BanReason".
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
trollface
сообщение 27.6.2014, 20:48
Сообщение #4
Стаж: 12 лет

Сообщений: 1970
Благодарностей: 2423
Полезность: 0

xdark08x,
а так?
компилится, но не уверен что работает:D
Код:
// Includes
#include <amxmodx>
#include <amxmisc>
#include <geoip>

// Defines
#define VERSION "2.6"

#define BAN_REASON "Скриншоты на форум"


//********** EDIT HERE if you use AMXBANS ***********//
#define AMXBANS 0 // Set this to 1 to enable AmxBans support. (Uses amx_ban <minutes> <userid> [reason])
//***************************************************//


#define MAX_PLAYERS 33 // Maximum number of players (plus 1)

new g_Activity, g_Hostname, g_DelaySS, g_DelayBan, g_SnapShot, g_UnbanURL, g_MsgType, g_SayText
new g_szBanTime[MAX_PLAYERS][8], g_szBanReason[MAX_PLAYERS][32]
new Array:g_bantimes

new g_menuPosition[MAX_PLAYERS]
new g_menuPlayers[MAX_PLAYERS][32]
new g_menuPlayersNum[MAX_PLAYERS]
new g_menuOption[MAX_PLAYERS]
new g_menuSettings[MAX_PLAYERS]

public plugin_init()
{
/* Register plugin name and author */
register_plugin("AMX SSBan", VERSION, "God@Dorin\Fysiks");

/* Register plugin version */
register_cvar("screen_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

/* Register language file */
register_dictionary("screen_message.txt") // Language file for snapshot messages
register_dictionary("admincmd.txt") // Language file for amxmodx bans

/* Register cvars */
g_Activity = get_cvar_pointer("amx_show_activity")
g_Hostname = get_cvar_pointer("hostname")
g_DelaySS = register_cvar("amx_ssdelay", "1.0") // Delay between snapshots (Def.: 1.0)
g_DelayBan = register_cvar("amx_bandelay", "10.0") // Delay before ban is done (Def.: 10.0)
g_SnapShot = register_cvar("amx_ssnumber", "3") // Number of snapshots to take (Def.: 3)
g_UnbanURL = register_cvar("amx_website", "www.yoursite.com") // Unban request site (Def.: "www.yoursite.com")
g_MsgType = register_cvar("amx_msg_type", "3") // 1- chat | 2- hud | 3- chat+hud (Def.: 3)

/* Register console admin commands */
register_concmd("amx_ss", "cmdSS",ADMIN_KICK, "<name or #userid> - Make snapshots on user !")
#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - - Ban with snapshots! (AmxBans)")
else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<minutes> <name or #userid> [reason] - Ban with snapshots! (AmxBans)")
#else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - Ban with snapshots! (AMX Mod X)")
#endif

g_SayText = get_user_msgid("SayText")

/* Register the menu for banning */
register_clcmd("amx_ssmenu", "cmdSSMenu", ADMIN_KICK, " - Displays ScreenShot Menu")
register_clcmd("amx_ssbanmenu", "cmdBanMenu", ADMIN_BAN, " - Displays ScreenShot Ban Menu")
register_menucmd(register_menuid("SS Menu"), 1023, "actionMenu")

/* Set bantimes for the menu */
g_bantimes = ArrayCreate()

ArrayPushCell(g_bantimes, 0)
ArrayPushCell(g_bantimes, 5)
ArrayPushCell(g_bantimes, 10)
ArrayPushCell(g_bantimes, 30)
ArrayPushCell(g_bantimes, 60)
ArrayPushCell(g_bantimes, 240)
ArrayPushCell(g_bantimes, 1440)

register_srvcmd("amx_ssbantimes", "ssbanmenu_setbantimes")
}

public cmdSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new target[32]
read_argv(1, target, 31)
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new name[32], name2[32]
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
/* show message in chat to all players by amx_show_activity */
switch( get_pcvar_num(g_Activity) )
{
case 2: client_printc(0,"%L", LANG_PLAYER, "SS_CASE2", name, name2)
case 1: client_printc(0,"%L", LANG_PLAYER, "SS_CASE1", name2)
}

new Param[2]
Param[0] = id
Param[1] = player
/* Set the task to take snapshots */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
return PLUGIN_HANDLED

}

public cmdBanSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32]

#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
{
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
}
else
{
read_argv(1, g_szBanTime[id], 7)
read_argv(2, target, 31)
}
#else
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
#endif
read_argv(3, g_szBanReason[id], 63)

new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new Param[2]
Param[0] = id
Param[1] = player

/* Set tasks to take snapshots and ban target */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)

return PLUGIN_HANDLED
}

public SS_Task(Param[2])
{
new player = Param[1]
new id = Param[0]
new name[32], timer[32], hostname[64], name2[32], ip[32], authid2[32], country[33], site[64]

get_user_name(id, name, 31)
get_user_name(player, name2, 31)
get_user_authid(player, authid2, 31)
get_user_ip(player, ip, 31, 1)

geoip_country(ip, country)
get_time("%d/%m/%Y - %H:%M:%S", timer, 63)
get_pcvar_string(g_Hostname, hostname, charsmax(hostname))
get_pcvar_string(g_UnbanURL, site, charsmax(site))

switch( get_pcvar_num(g_MsgType) )
{
case 1:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)
}
case 2:
{
/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
case 3:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)

/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
}
/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(id,"%L", id, "SS_CONSOLE", name2)

return PLUGIN_HANDLED
}

public BanSS_Task(Param[])
{
new id = Param[0]
new player = Param[1]
new minutes[8], reason[32]
new userid2 = get_user_userid(player)

copy(minutes, 7, g_szBanTime[id])
copy(reason, 31, g_szBanReason[id])

#if AMXBANS // Ban "player" using AmxBans
if( get_cvar_num("amxbans_use_newbancmd") )
client_cmd(id, "amx_ban #%d %s ^"%s^"", userid2, minutes, reason)
else
client_cmd(id, "amx_ban %s #%d ^"%s^"", minutes, userid2, reason)
#else
// Ban "player" using HL Ban Method

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

get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)

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

new temp[64], banned[16], nNum = str_to_num(minutes)
if(nNum)
{
formatex(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
formatex(temp, 63, "%L", player, "PERM")
}

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

if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^"", userid2, reason, banned, temp)
else
server_cmd("kick #%d ^"%s %s^"", userid2, banned, temp)

server_cmd("banid %s %s", minutes, authid2)
server_cmd("writeid")

// Display the message to all clients
new msg[256]
new len
new maxpl = get_maxplayers()
for(new i = 1; i <= maxpl; i++)
{
if(is_user_connected(i) && !is_user_bot(i))
{
len = formatex(msg, charsmax(msg), "%L", i, "BAN")
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2)
if(nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes)
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM")
}
if(strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason)
}
show_activity_id(i, id, name, msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
#endif
return PLUGIN_HANDLED
}

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
{
// should never happen, but failsafe
g_menuSettings[id] = 0
}
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

public cmdSSMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

g_menuOption[id] = 0

g_menuSettings[id] = -1
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

displayMenu(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, len

if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0

len = format(menuBody, 511, "\y%L\R%d/%d^n\w^n", id, g_menuSettings[id] == -1 ? "SS_MENU" : "SSBAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

new end = start + 7
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 (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b

len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
} else {
keys |= (1<<b)

if (is_user_admin(i))
len += format(menuBody[len], 511-len, "%d. %s \r*^n\w", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}

if(g_menuSettings[id] != -1)
{
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")
keys |= MENU_KEY_8
}

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, "SS Menu")
}

public actionMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes)

g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id])

displayMenu(id, g_menuPosition[id])
}
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

new minutes[8], _BanReason[128]
num_to_str(g_menuSettings[id], minutes, 7)

copy(g_szBanTime[id], 7, minutes)
copy(g_szBanReason[id], 31, _BanReason)

new Param[2]
Param[0] = id
Param[1] = player

set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
if(g_menuSettings[id] != -1)
{
_BanReason = BAN_REASON
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)
}

// displayMenu(id, g_menuPosition[id]) // Uncomment this line to make menu remain open after banning
}
}

return PLUGIN_HANDLED
}


public cmdBanReason(id)
{
// Client has submitted reason.
new szArg[sizeof(g_szBanReason[])]
read_args(szArg, charsmax(szArg))
remove_quotes(szArg)

if(szArg[0])
{
formatex(g_szBanReason[id], charsmax(g_szBanReason[]), szArg)
}
return PLUGIN_HANDLED
}

public ssbanmenu_setbantimes()
{
new buff[32]
new args = read_argc()

if (args <= 1)
{
server_print("usage: amx_ssbantimes <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))

}

}

/* Stock colors for chat messages */
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1
vformat(msg, sizeof msg - 1, string, 3)

replace_all(msg,190,"!g","^4")
replace_all(msg,190,"!y","^1")
replace_all(msg,190,"!t","^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, g_SayText,_, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xdark08x
сообщение 27.6.2014, 22:20
Сообщение #5
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Цитата(trollface @ 27.6.2014, 21:48) *
xdark08x,
а так?
компилится, но не уверен что работает:D
Код:
// Includes
#include <amxmodx>
#include <amxmisc>
#include <geoip>

// Defines
#define VERSION "2.6"

#define BAN_REASON "Скриншоты на форум"


//********** EDIT HERE if you use AMXBANS ***********//
#define AMXBANS 0 // Set this to 1 to enable AmxBans support. (Uses amx_ban <minutes> <userid> [reason])
//***************************************************//


#define MAX_PLAYERS 33 // Maximum number of players (plus 1)

new g_Activity, g_Hostname, g_DelaySS, g_DelayBan, g_SnapShot, g_UnbanURL, g_MsgType, g_SayText
new g_szBanTime[MAX_PLAYERS][8], g_szBanReason[MAX_PLAYERS][32]
new Array:g_bantimes

new g_menuPosition[MAX_PLAYERS]
new g_menuPlayers[MAX_PLAYERS][32]
new g_menuPlayersNum[MAX_PLAYERS]
new g_menuOption[MAX_PLAYERS]
new g_menuSettings[MAX_PLAYERS]

public plugin_init()
{
/* Register plugin name and author */
register_plugin("AMX SSBan", VERSION, "God@Dorin\Fysiks");

/* Register plugin version */
register_cvar("screen_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

/* Register language file */
register_dictionary("screen_message.txt") // Language file for snapshot messages
register_dictionary("admincmd.txt") // Language file for amxmodx bans

/* Register cvars */
g_Activity = get_cvar_pointer("amx_show_activity")
g_Hostname = get_cvar_pointer("hostname")
g_DelaySS = register_cvar("amx_ssdelay", "1.0") // Delay between snapshots (Def.: 1.0)
g_DelayBan = register_cvar("amx_bandelay", "10.0") // Delay before ban is done (Def.: 10.0)
g_SnapShot = register_cvar("amx_ssnumber", "3") // Number of snapshots to take (Def.: 3)
g_UnbanURL = register_cvar("amx_website", "www.yoursite.com") // Unban request site (Def.: "www.yoursite.com")
g_MsgType = register_cvar("amx_msg_type", "3") // 1- chat | 2- hud | 3- chat+hud (Def.: 3)

/* Register console admin commands */
register_concmd("amx_ss", "cmdSS",ADMIN_KICK, "<name or #userid> - Make snapshots on user !")
#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - - Ban with snapshots! (AmxBans)")
else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<minutes> <name or #userid> [reason] - Ban with snapshots! (AmxBans)")
#else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - Ban with snapshots! (AMX Mod X)")
#endif

g_SayText = get_user_msgid("SayText")

/* Register the menu for banning */
register_clcmd("amx_ssmenu", "cmdSSMenu", ADMIN_KICK, " - Displays ScreenShot Menu")
register_clcmd("amx_ssbanmenu", "cmdBanMenu", ADMIN_BAN, " - Displays ScreenShot Ban Menu")
register_menucmd(register_menuid("SS Menu"), 1023, "actionMenu")

/* Set bantimes for the menu */
g_bantimes = ArrayCreate()

ArrayPushCell(g_bantimes, 0)
ArrayPushCell(g_bantimes, 5)
ArrayPushCell(g_bantimes, 10)
ArrayPushCell(g_bantimes, 30)
ArrayPushCell(g_bantimes, 60)
ArrayPushCell(g_bantimes, 240)
ArrayPushCell(g_bantimes, 1440)

register_srvcmd("amx_ssbantimes", "ssbanmenu_setbantimes")
}

public cmdSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new target[32]
read_argv(1, target, 31)
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new name[32], name2[32]
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
/* show message in chat to all players by amx_show_activity */
switch( get_pcvar_num(g_Activity) )
{
case 2: client_printc(0,"%L", LANG_PLAYER, "SS_CASE2", name, name2)
case 1: client_printc(0,"%L", LANG_PLAYER, "SS_CASE1", name2)
}

new Param[2]
Param[0] = id
Param[1] = player
/* Set the task to take snapshots */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
return PLUGIN_HANDLED

}

public cmdBanSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32]

#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
{
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
}
else
{
read_argv(1, g_szBanTime[id], 7)
read_argv(2, target, 31)
}
#else
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
#endif
read_argv(3, g_szBanReason[id], 63)

new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new Param[2]
Param[0] = id
Param[1] = player

/* Set tasks to take snapshots and ban target */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)

return PLUGIN_HANDLED
}

public SS_Task(Param[2])
{
new player = Param[1]
new id = Param[0]
new name[32], timer[32], hostname[64], name2[32], ip[32], authid2[32], country[33], site[64]

get_user_name(id, name, 31)
get_user_name(player, name2, 31)
get_user_authid(player, authid2, 31)
get_user_ip(player, ip, 31, 1)

geoip_country(ip, country)
get_time("%d/%m/%Y - %H:%M:%S", timer, 63)
get_pcvar_string(g_Hostname, hostname, charsmax(hostname))
get_pcvar_string(g_UnbanURL, site, charsmax(site))

switch( get_pcvar_num(g_MsgType) )
{
case 1:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)
}
case 2:
{
/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
case 3:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)

/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
}
/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(id,"%L", id, "SS_CONSOLE", name2)

return PLUGIN_HANDLED
}

public BanSS_Task(Param[])
{
new id = Param[0]
new player = Param[1]
new minutes[8], reason[32]
new userid2 = get_user_userid(player)

copy(minutes, 7, g_szBanTime[id])
copy(reason, 31, g_szBanReason[id])

#if AMXBANS // Ban "player" using AmxBans
if( get_cvar_num("amxbans_use_newbancmd") )
client_cmd(id, "amx_ban #%d %s ^"%s^"", userid2, minutes, reason)
else
client_cmd(id, "amx_ban %s #%d ^"%s^"", minutes, userid2, reason)
#else
// Ban "player" using HL Ban Method

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

get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)

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

new temp[64], banned[16], nNum = str_to_num(minutes)
if(nNum)
{
formatex(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
formatex(temp, 63, "%L", player, "PERM")
}

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

if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^"", userid2, reason, banned, temp)
else
server_cmd("kick #%d ^"%s %s^"", userid2, banned, temp)

server_cmd("banid %s %s", minutes, authid2)
server_cmd("writeid")

// Display the message to all clients
new msg[256]
new len
new maxpl = get_maxplayers()
for(new i = 1; i <= maxpl; i++)
{
if(is_user_connected(i) && !is_user_bot(i))
{
len = formatex(msg, charsmax(msg), "%L", i, "BAN")
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2)
if(nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes)
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM")
}
if(strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason)
}
show_activity_id(i, id, name, msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
#endif
return PLUGIN_HANDLED
}

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
{
// should never happen, but failsafe
g_menuSettings[id] = 0
}
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

public cmdSSMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

g_menuOption[id] = 0

g_menuSettings[id] = -1
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

displayMenu(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, len

if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0

len = format(menuBody, 511, "\y%L\R%d/%d^n\w^n", id, g_menuSettings[id] == -1 ? "SS_MENU" : "SSBAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

new end = start + 7
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 (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b

len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
} else {
keys |= (1<<b)

if (is_user_admin(i))
len += format(menuBody[len], 511-len, "%d. %s \r*^n\w", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}

if(g_menuSettings[id] != -1)
{
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")
keys |= MENU_KEY_8
}

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, "SS Menu")
}

public actionMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes)

g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id])

displayMenu(id, g_menuPosition[id])
}
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

new minutes[8], _BanReason[128]
num_to_str(g_menuSettings[id], minutes, 7)

copy(g_szBanTime[id], 7, minutes)
copy(g_szBanReason[id], 31, _BanReason)

new Param[2]
Param[0] = id
Param[1] = player

set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
if(g_menuSettings[id] != -1)
{
_BanReason = BAN_REASON
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)
}

// displayMenu(id, g_menuPosition[id]) // Uncomment this line to make menu remain open after banning
}
}

return PLUGIN_HANDLED
}


public cmdBanReason(id)
{
// Client has submitted reason.
new szArg[sizeof(g_szBanReason[])]
read_args(szArg, charsmax(szArg))
remove_quotes(szArg)

if(szArg[0])
{
formatex(g_szBanReason[id], charsmax(g_szBanReason[]), szArg)
}
return PLUGIN_HANDLED
}

public ssbanmenu_setbantimes()
{
new buff[32]
new args = read_argc()

if (args <= 1)
{
server_print("usage: amx_ssbantimes <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))

}

}

/* Stock colors for chat messages */
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1
vformat(msg, sizeof msg - 1, string, 3)

replace_all(msg,190,"!g","^4")
replace_all(msg,190,"!y","^1")
replace_all(msg,190,"!t","^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, g_SayText,_, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}


[AMXBans] Причина: 'unknown'
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 27.6.2014, 22:47
Сообщение #6


Стаж: 12 лет

Сообщений: 15547
Благодарностей: 6971
Полезность: 1206

xdark08x, м.б. #define AMXBANS 1?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xdark08x
сообщение 28.6.2014, 11:29
Сообщение #7
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Цитата(Bloo @ 27.6.2014, 23:47) *
xdark08x, м.б. #define AMXBANS 1?

дак я так и компилировал)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 28.6.2014, 21:32
Сообщение #8
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

тык
Код:

// Includes
#include <amxmodx>
#include <amxmisc>
#include <geoip>

// Defines
#define VERSION "2.6"


//********** EDIT HERE if you use AMXBANS ***********//
#define AMXBANS 0 // Set this to 1 to enable AmxBans support. (Uses amx_ban <minutes> <userid> [reason])
//***************************************************//


#define MAX_PLAYERS 33 // Maximum number of players (plus 1)

#define SS_BAN_REASON "Причина бана"

new g_Activity, g_Hostname, g_DelaySS, g_DelayBan, g_SnapShot, g_UnbanURL, g_MsgType, g_SayText
new g_szBanTime[MAX_PLAYERS][8], g_szBanReason[MAX_PLAYERS][32]
new Array:g_bantimes

new g_menuPosition[MAX_PLAYERS]
new g_menuPlayers[MAX_PLAYERS][32]
new g_menuPlayersNum[MAX_PLAYERS]
new g_menuOption[MAX_PLAYERS]
new g_menuSettings[MAX_PLAYERS]

public plugin_init()
{
/* Register plugin name and author */
register_plugin("AMX SSBan", VERSION, "God@Dorin\Fysiks");

/* Register plugin version */
register_cvar("screen_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

/* Register language file */
register_dictionary("screen_message.txt") // Language file for snapshot messages
register_dictionary("admincmd.txt") // Language file for amxmodx bans

/* Register cvars */
g_Activity = get_cvar_pointer("amx_show_activity")
g_Hostname = get_cvar_pointer("hostname")
g_DelaySS = register_cvar("amx_ssdelay", "1.0") // Delay between snapshots (Def.: 1.0)
g_DelayBan = register_cvar("amx_bandelay", "10.0") // Delay before ban is done (Def.: 10.0)
g_SnapShot = register_cvar("amx_ssnumber", "3") // Number of snapshots to take (Def.: 3)
g_UnbanURL = register_cvar("amx_website", "www.yoursite.com") // Unban request site (Def.: "www.yoursite.com")
g_MsgType = register_cvar("amx_msg_type", "3") // 1- chat | 2- hud | 3- chat+hud (Def.: 3)

/* Register console admin commands */
register_concmd("amx_ss", "cmdSS",ADMIN_KICK, "<name or #userid> - Make snapshots on user !")
#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - - Ban with snapshots! (AmxBans)")
else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<minutes> <name or #userid> [reason] - Ban with snapshots! (AmxBans)")
#else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - Ban with snapshots! (AMX Mod X)")
#endif


g_SayText = get_user_msgid("SayText")

/* Register the menu for banning */
register_clcmd("amx_ssmenu", "cmdSSMenu", ADMIN_KICK, " - Displays ScreenShot Menu")
register_clcmd("amx_ssbanmenu", "cmdBanMenu", ADMIN_BAN, " - Displays ScreenShot Ban Menu")
register_menucmd(register_menuid("SS Menu"), 1023, "actionMenu")

/* Set bantimes for the menu */
g_bantimes = ArrayCreate()

ArrayPushCell(g_bantimes, 0)
ArrayPushCell(g_bantimes, 5)
ArrayPushCell(g_bantimes, 10)
ArrayPushCell(g_bantimes, 30)
ArrayPushCell(g_bantimes, 60)
ArrayPushCell(g_bantimes, 240)
ArrayPushCell(g_bantimes, 1440)

register_srvcmd("amx_ssbantimes", "ssbanmenu_setbantimes")
}

public cmdSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new target[32]
read_argv(1, target, 31)
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new name[32], name2[32]
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
/* show message in chat to all players by amx_show_activity */
switch( get_pcvar_num(g_Activity) )
{
case 2: client_printc(0,"%L", LANG_PLAYER, "SS_CASE2", name, name2)
case 1: client_printc(0,"%L", LANG_PLAYER, "SS_CASE1", name2)
}

new Param[2]
Param[0] = id
Param[1] = player
/* Set the task to take snapshots */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
return PLUGIN_HANDLED

}

public cmdBanSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32]

#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
{
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
}
else
{
read_argv(1, g_szBanTime[id], 7)
read_argv(2, target, 31)
}
#else
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
#endif
read_argv(3, g_szBanReason[id], 63)

new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new Param[2]
Param[0] = id
Param[1] = player

/* Set tasks to take snapshots and ban target */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)

return PLUGIN_HANDLED
}

public SS_Task(Param[2])
{
new player = Param[1]
new id = Param[0]
new name[32], timer[32], hostname[64], name2[32], ip[32], authid2[32], country[33], site[64]

get_user_name(id, name, 31)
get_user_name(player, name2, 31)
get_user_authid(player, authid2, 31)
get_user_ip(player, ip, 31, 1)

geoip_country(ip, country)
get_time("%d/%m/%Y - %H:%M:%S", timer, 63)
get_pcvar_string(g_Hostname, hostname, charsmax(hostname))
get_pcvar_string(g_UnbanURL, site, charsmax(site))

switch( get_pcvar_num(g_MsgType) )
{
case 1:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)
}
case 2:
{
/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
case 3:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)

/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
}
/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(id,"%L", id, "SS_CONSOLE", name2)

return PLUGIN_HANDLED
}

public BanSS_Task(Param[])
{
new id = Param[0]
new player = Param[1]
new minutes[8], reason[32]
new userid2 = get_user_userid(player)

copy(minutes, 7, g_szBanTime[id])
copy(reason, 31, g_szBanReason[id])

#if AMXBANS // Ban "player" using AmxBans
if( get_cvar_num("amxbans_use_newbancmd") )
client_cmd(id, "amx_ban #%d %s ^"%s^"", userid2, minutes, reason)
else
client_cmd(id, "amx_ban %s #%d ^"%s^"", minutes, userid2, reason)
#else
// Ban "player" using HL Ban Method

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

get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)

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

new temp[64], banned[16], nNum = str_to_num(minutes)
if(nNum)
{
formatex(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
formatex(temp, 63, "%L", player, "PERM")
}

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

if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^"", userid2, reason, banned, temp)
else
server_cmd("kick #%d ^"%s %s^"", userid2, banned, temp)

server_cmd("banid %s %s", minutes, authid2)
server_cmd("writeid")

// Display the message to all clients
new msg[256]
new len
new maxpl = get_maxplayers()
for(new i = 1; i <= maxpl; i++)
{
if(is_user_connected(i) && !is_user_bot(i))
{
len = formatex(msg, charsmax(msg), "%L", i, "BAN")
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2)
if(nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes)
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM")
}
if(strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason)
}
show_activity_id(i, id, name, msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
#endif
return PLUGIN_HANDLED
}

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
{
// should never happen, but failsafe
g_menuSettings[id] = 0
}
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

public cmdSSMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

g_menuOption[id] = 0

g_menuSettings[id] = -1
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

displayMenu(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, len

if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0

len = format(menuBody, 511, "\y%L\R%d/%d^n\w^n", id, g_menuSettings[id] == -1 ? "SS_MENU" : "SSBAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

new end = start + 7
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 (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b

len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
} else {
keys |= (1<<b)

if (is_user_admin(i))
len += format(menuBody[len], 511-len, "%d. %s \r*^n\w", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}

if(g_menuSettings[id] != -1)
{
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")
keys |= MENU_KEY_8
}

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, "SS Menu")
}

public actionMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes)

g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id])

displayMenu(id, g_menuPosition[id])
}
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

new minutes[8]
num_to_str(g_menuSettings[id], minutes, 7)

copy(g_szBanTime[id], 7, minutes)
g_szBanReason[id]=SS_BAN_REASON

new Param[2]
Param[0] = id
Param[1] = player

set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
if(g_menuSettings[id] != -1)
{
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)
}

// displayMenu(id, g_menuPosition[id]) // Uncomment this line to make menu remain open after banning
}
}

return PLUGIN_HANDLED
}



public ssbanmenu_setbantimes()
{
new buff[32]
new args = read_argc()

if (args <= 1)
{
server_print("usage: amx_ssbantimes <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))

}

}

/* Stock colors for chat messages */
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1
vformat(msg, sizeof msg - 1, string, 3)

replace_all(msg,190,"!g","^4")
replace_all(msg,190,"!y","^1")
replace_all(msg,190,"!t","^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, g_SayText,_, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xdark08x
сообщение 29.6.2014, 14:50
Сообщение #9
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Цитата(voed @ 28.6.2014, 22:32) *
тык
Код:

// Includes
#include <amxmodx>
#include <amxmisc>
#include <geoip>

// Defines
#define VERSION "2.6"


//********** EDIT HERE if you use AMXBANS ***********//
#define AMXBANS 0 // Set this to 1 to enable AmxBans support. (Uses amx_ban <minutes> <userid> [reason])
//***************************************************//


#define MAX_PLAYERS 33 // Maximum number of players (plus 1)

#define SS_BAN_REASON "Причина бана"

new g_Activity, g_Hostname, g_DelaySS, g_DelayBan, g_SnapShot, g_UnbanURL, g_MsgType, g_SayText
new g_szBanTime[MAX_PLAYERS][8], g_szBanReason[MAX_PLAYERS][32]
new Array:g_bantimes

new g_menuPosition[MAX_PLAYERS]
new g_menuPlayers[MAX_PLAYERS][32]
new g_menuPlayersNum[MAX_PLAYERS]
new g_menuOption[MAX_PLAYERS]
new g_menuSettings[MAX_PLAYERS]

public plugin_init()
{
/* Register plugin name and author */
register_plugin("AMX SSBan", VERSION, "God@Dorin\Fysiks");

/* Register plugin version */
register_cvar("screen_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

/* Register language file */
register_dictionary("screen_message.txt") // Language file for snapshot messages
register_dictionary("admincmd.txt") // Language file for amxmodx bans

/* Register cvars */
g_Activity = get_cvar_pointer("amx_show_activity")
g_Hostname = get_cvar_pointer("hostname")
g_DelaySS = register_cvar("amx_ssdelay", "1.0") // Delay between snapshots (Def.: 1.0)
g_DelayBan = register_cvar("amx_bandelay", "10.0") // Delay before ban is done (Def.: 10.0)
g_SnapShot = register_cvar("amx_ssnumber", "3") // Number of snapshots to take (Def.: 3)
g_UnbanURL = register_cvar("amx_website", "www.yoursite.com") // Unban request site (Def.: "www.yoursite.com")
g_MsgType = register_cvar("amx_msg_type", "3") // 1- chat | 2- hud | 3- chat+hud (Def.: 3)

/* Register console admin commands */
register_concmd("amx_ss", "cmdSS",ADMIN_KICK, "<name or #userid> - Make snapshots on user !")
#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - - Ban with snapshots! (AmxBans)")
else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<minutes> <name or #userid> [reason] - Ban with snapshots! (AmxBans)")
#else
register_concmd("amx_ssban", "cmdBanSS", ADMIN_BAN, "<name or #userid> <minutes> [reason] - Ban with snapshots! (AMX Mod X)")
#endif


g_SayText = get_user_msgid("SayText")

/* Register the menu for banning */
register_clcmd("amx_ssmenu", "cmdSSMenu", ADMIN_KICK, " - Displays ScreenShot Menu")
register_clcmd("amx_ssbanmenu", "cmdBanMenu", ADMIN_BAN, " - Displays ScreenShot Ban Menu")
register_menucmd(register_menuid("SS Menu"), 1023, "actionMenu")

/* Set bantimes for the menu */
g_bantimes = ArrayCreate()

ArrayPushCell(g_bantimes, 0)
ArrayPushCell(g_bantimes, 5)
ArrayPushCell(g_bantimes, 10)
ArrayPushCell(g_bantimes, 30)
ArrayPushCell(g_bantimes, 60)
ArrayPushCell(g_bantimes, 240)
ArrayPushCell(g_bantimes, 1440)

register_srvcmd("amx_ssbantimes", "ssbanmenu_setbantimes")
}

public cmdSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

new target[32]
read_argv(1, target, 31)
new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new name[32], name2[32]
get_user_name(id, name, 31)
get_user_name(player, name2, 31)
/* show message in chat to all players by amx_show_activity */
switch( get_pcvar_num(g_Activity) )
{
case 2: client_printc(0,"%L", LANG_PLAYER, "SS_CASE2", name, name2)
case 1: client_printc(0,"%L", LANG_PLAYER, "SS_CASE1", name2)
}

new Param[2]
Param[0] = id
Param[1] = player
/* Set the task to take snapshots */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
return PLUGIN_HANDLED

}

public cmdBanSS(id,level,cid)
{
if(!cmd_access(id, level, cid, 3))
return PLUGIN_HANDLED

new target[32]

#if AMXBANS
if( get_cvar_num("amxbans_use_newbancmd") )
{
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
}
else
{
read_argv(1, g_szBanTime[id], 7)
read_argv(2, target, 31)
}
#else
read_argv(1, target, 31)
read_argv(2, g_szBanTime[id], 7)
#endif
read_argv(3, g_szBanReason[id], 63)

new player = cmd_target(id, target, CMDTARGET_OBEY_IMMUNITY)

if(!player)
return PLUGIN_HANDLED

new Param[2]
Param[0] = id
Param[1] = player

/* Set tasks to take snapshots and ban target */
set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)

return PLUGIN_HANDLED
}

public SS_Task(Param[2])
{
new player = Param[1]
new id = Param[0]
new name[32], timer[32], hostname[64], name2[32], ip[32], authid2[32], country[33], site[64]

get_user_name(id, name, 31)
get_user_name(player, name2, 31)
get_user_authid(player, authid2, 31)
get_user_ip(player, ip, 31, 1)

geoip_country(ip, country)
get_time("%d/%m/%Y - %H:%M:%S", timer, 63)
get_pcvar_string(g_Hostname, hostname, charsmax(hostname))
get_pcvar_string(g_UnbanURL, site, charsmax(site))

switch( get_pcvar_num(g_MsgType) )
{
case 1:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)
}
case 2:
{
/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
case 3:
{
/* Show screen messages in chat */
client_printc(player,"%L", player, "SS_MSG1", name)
client_printc(player,"%L", player, "SS_MSG2", timer, hostname)
client_printc(player,"%L", player, "SS_MSG3", name2, ip, authid2, country)
client_printc(player,"%L", player, "SS_MSG4", site)

/* Show screen messages in hud */
set_hudmessage(150, 0, 255, -1.0, 0.1, 0, 0.25, 1.0, 0.0, 0.0, 4)
show_hudmessage(player, "%L", player, "SS_MSG_HUD", timer, hostname, name2, ip, authid2, country, site)
}
}
/* Take the snapshots ! */
client_cmd(player,"snapshot")
/* Confirm for the admin in console that the command was commited */
console_print(id,"%L", id, "SS_CONSOLE", name2)

return PLUGIN_HANDLED
}

public BanSS_Task(Param[])
{
new id = Param[0]
new player = Param[1]
new minutes[8], reason[32]
new userid2 = get_user_userid(player)

copy(minutes, 7, g_szBanTime[id])
copy(reason, 31, g_szBanReason[id])

#if AMXBANS // Ban "player" using AmxBans
if( get_cvar_num("amxbans_use_newbancmd") )
client_cmd(id, "amx_ban #%d %s ^"%s^"", userid2, minutes, reason)
else
client_cmd(id, "amx_ban %s #%d ^"%s^"", minutes, userid2, reason)
#else
// Ban "player" using HL Ban Method

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

get_user_authid(player, authid2, 31)
get_user_authid(id, authid, 31)
get_user_name(player, name2, 31)
get_user_name(id, name, 31)

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

new temp[64], banned[16], nNum = str_to_num(minutes)
if(nNum)
{
formatex(temp, 63, "%L", player, "FOR_MIN", minutes)
}
else
{
formatex(temp, 63, "%L", player, "PERM")
}

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

if (reason[0])
server_cmd("kick #%d ^"%s (%s %s)^"", userid2, reason, banned, temp)
else
server_cmd("kick #%d ^"%s %s^"", userid2, banned, temp)

server_cmd("banid %s %s", minutes, authid2)
server_cmd("writeid")

// Display the message to all clients
new msg[256]
new len
new maxpl = get_maxplayers()
for(new i = 1; i <= maxpl; i++)
{
if(is_user_connected(i) && !is_user_bot(i))
{
len = formatex(msg, charsmax(msg), "%L", i, "BAN")
len += formatex(msg[len], charsmax(msg) - len, " %s ", name2)
if(nNum)
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "FOR_MIN", minutes)
}
else
{
len += formatex(msg[len], charsmax(msg) - len, "%L", i, "PERM")
}
if(strlen(reason) > 0)
{
formatex(msg[len], charsmax(msg) - len, " (%L: %s)", i, "REASON", reason)
}
show_activity_id(i, id, name, msg)
}
}
console_print(id, "[AMXX] %L", id, "CLIENT_BANNED", name2)
#endif
return PLUGIN_HANDLED
}

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
{
// should never happen, but failsafe
g_menuSettings[id] = 0
}
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

public cmdSSMenu(id, level, cid)
{
if (!cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED

g_menuOption[id] = 0

g_menuSettings[id] = -1
displayMenu(id, g_menuPosition[id] = 0)

return PLUGIN_HANDLED
}

displayMenu(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, len

if (start >= g_menuPlayersNum[id])
start = pos = g_menuPosition[id] = 0

len = format(menuBody, 511, "\y%L\R%d/%d^n\w^n", id, g_menuSettings[id] == -1 ? "SS_MENU" : "SSBAN_MENU", pos + 1, (g_menuPlayersNum[id] / 7 + ((g_menuPlayersNum[id] % 7) ? 1 : 0)))

new end = start + 7
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 (is_user_bot(i) || (access(i, ADMIN_IMMUNITY) && i != id))
{
++b

len += format(menuBody[len], 511-len, "\d%d. %s^n\w", b, name)
} else {
keys |= (1<<b)

if (is_user_admin(i))
len += format(menuBody[len], 511-len, "%d. %s \r*^n\w", ++b, name)
else
len += format(menuBody[len], 511-len, "%d. %s^n", ++b, name)
}
}

if(g_menuSettings[id] != -1)
{
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")
keys |= MENU_KEY_8
}

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, "SS Menu")
}

public actionMenu(id, key)
{
switch (key)
{
case 7:
{
++g_menuOption[id]
g_menuOption[id] %= ArraySize(g_bantimes)

g_menuSettings[id] = ArrayGetCell(g_bantimes, g_menuOption[id])

displayMenu(id, g_menuPosition[id])
}
case 8: displayMenu(id, ++g_menuPosition[id])
case 9: displayMenu(id, --g_menuPosition[id])
default:
{
new player = g_menuPlayers[id][g_menuPosition[id] * 7 + key]

new minutes[8]
num_to_str(g_menuSettings[id], minutes, 7)

copy(g_szBanTime[id], 7, minutes)
g_szBanReason[id]=SS_BAN_REASON

new Param[2]
Param[0] = id
Param[1] = player

set_task(Float:get_pcvar_float(g_DelaySS), "SS_Task", 0, Param,2, "a", get_pcvar_num(g_SnapShot))
if(g_menuSettings[id] != -1)
{
set_task(Float:get_pcvar_float(g_DelayBan), "BanSS_Task", 0, Param, 2)
}

// displayMenu(id, g_menuPosition[id]) // Uncomment this line to make menu remain open after banning
}
}

return PLUGIN_HANDLED
}



public ssbanmenu_setbantimes()
{
new buff[32]
new args = read_argc()

if (args <= 1)
{
server_print("usage: amx_ssbantimes <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))

}

}

/* Stock colors for chat messages */
stock client_printc(const id, const string[], {Float, Sql, Resul,_}:...) {

new msg[191], players[32], count = 1
vformat(msg, sizeof msg - 1, string, 3)

replace_all(msg,190,"!g","^4")
replace_all(msg,190,"!y","^1")
replace_all(msg,190,"!t","^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, g_SayText,_, players[i])
write_byte(players[i])
write_string(msg)
message_end()
}
}
}


Работает!!! Только причину бана нужно указывать на английском, если amxbans 6.0.3 или ему подобные, где нет русификации причин. Хотя возможно в GM 1.6 будет работать и русская причина.
Спасибо, voed, trollface, за помощь в скриптинге! Спасибо, Bloo, за нюансы с форумом!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя sanek94
сообщение 29.6.2014, 15:02
Сообщение #10


Стаж: 12 лет

Сообщений: 174
Благодарностей: 96
Полезность: < 0

В файле тхт изменить на свою причину просто и все [ru]
SS_MSG1 = !y[AMXX] Админ: !g%s !yНа вас Сделал Скриншот!
SS_MSG2 = !y[AMXX] Дата: !g%s !y| Сервер: !t%s !y!
SS_MSG3 = !y[AMXX] Имя Игрока: !g%s !y| IP: !g%s !ySteamID: !g%s !y| Страна: !g%s
SS_MSG4 = !y[AMXX] Для разбана посетите!t%s !y!
SS_MSG_HUD = Дата: %s | Сервер: %s !^nИмя игока: %s IP: %s ^nSteamID: %s | Страна: %s ^nДля разбана посетите %s !
SS_CASE2 = !yАдмин !g%s !yНа вас Сделал Скриншот! !g%s
SS_CASE1 = !yадмин На вас Сделал Скриншот! !g%s
SS_CONSOLE = Вы только что сделали моментальные Снимки %s !
REASON_HUDASK = админ: %s^nНапишите причину Бана !
SS_MENU = Меню моментального Снимка
SSBAN_MENU = Меню бана
NO_REASON_MENU = WH+AIM тут введи свою причину
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 29.6.2014, 15:07
Сообщение #11
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(xdark08x @ 29.6.2014, 14:50) *
Работает!!! Только причину бана нужно указывать на английском, если amxbans 6.0.3 или ему подобные, где нет русификации причин. Хотя возможно в GM 1.6 будет работать и русская причина.
Спасибо, voed, trollface, за помощь в скриптинге! Спасибо, Bloo, за нюансы с форумом!

Если указываете причину бана на русском - перед компиляцией необходимо сохранить исходник в UTF-8 без BOM
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xdark08x
сообщение 30.6.2014, 18:48
Сообщение #12
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Цитата(voed @ 29.6.2014, 16:07) *
Если указываете причину бана на русском - перед компиляцией необходимо сохранить исходник в UTF-8 без BOM

Ошибка(
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 30.6.2014, 18:54
Сообщение #13
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

g_szBanReason[MAX_PLAYERS][32] => g_szBanReason[MAX_PLAYERS][128]
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя xdark08x
сообщение 1.7.2014, 17:37
Сообщение #14
Стаж: 13 лет

Сообщений: 14
Благодарностей: 2
Полезность: 0

Цитата(voed @ 30.6.2014, 19:54) *
g_szBanReason[MAX_PLAYERS][32] => g_szBanReason[MAX_PLAYERS][128]

Работает!)) Спасибо еще раз.
А можно каким-то образом увеличить количество символов в причинах AMXbans 6.0.3? А то влазит только 17 или даже меньше? Длинные причины пишутся не полностью.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 1.7.2014, 18:23
Сообщение #15
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Цитата(xdark08x @ 1.7.2014, 17:37) *
Работает!)) Спасибо еще раз.
А можно каким-то образом увеличить количество символов в причинах AMXbans 6.0.3? А то влазит только 17 или даже меньше? Длинные причины пишутся не полностью.

Никогда не смотрел исходних бансов, но думаю да
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: