Код:
#include <amxmodx>
#include <amxmisc>
new cvar_message, cvar_color, cvar_location, cvar_effects, cvar_show, cvar_cmd, hudsync
public plugin_init() {
register_plugin("Permanent message", "1.1", "He3aBuCuM")
cvar_message = register_cvar("amx_permanent_message", "Your/nadvertisement%new%here")
cvar_color = register_cvar("amx_permanent_message_color", "255 255 255")
cvar_location = register_cvar("amx_permanent_message_location", "3")
cvar_effects = register_cvar("amx_permanent_message_effects", "0")
cvar_show = register_cvar("amx_permanent_message_show", "0")
cvar_cmd = register_cvar("amx_permanent_message_cmd", "1")
register_concmd("amx_perm_msg", "cmdChangeMsg", ADMIN_LEVEL_A)
hudsync = CreateHudSyncObj()
set_task(1.0, "show_hud", 0, "", 0, "b")
}
public show_hud() {
new message[200], location, eff, show, players[32], inum
static red, green, blue
get_pcvar_string(cvar_message, message, charsmax(message))
get_hud_color(red, green, blue)
location = get_pcvar_num(cvar_location)
eff = clamp(get_pcvar_num(cvar_effects), 0, 2)
show = get_pcvar_num(cvar_show)
get_players(players, inum)
replace_all(message, charsmax(message), "%new%", "^n")
replace_all(message, charsmax(message), "/n", "^n")
switch(location) {
case 1: set_hudmessage(red, green, blue, 0.01, 0.15, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 2: set_hudmessage(red, green, blue, -1.0, 0.15, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 3: set_hudmessage(red, green, blue, 0.99, 0.15, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 4: set_hudmessage(red, green, blue, 0.01, -1.0, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 5: set_hudmessage(red, green, blue, -1.0, -1.0, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 6: set_hudmessage(red, green, blue, 0.99, -1.0, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 7: set_hudmessage(red, green, blue, 0.01, 0.75, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 8: set_hudmessage(red, green, blue, -1.0, 0.75, eff, 1.0, 1.0, 0.1, 0.2, -1)
case 9: set_hudmessage(red, green, blue, 0.99, 0.70, eff, 1.0, 1.0, 0.1, 0.2, -1)
}
for(new i=0; i<inum; ++i) {
switch(show) {
case 0: ShowSyncHudMsg(0, hudsync, message)
case 1: {
if(!is_user_alive(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 2: {
if(is_user_alive(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 3: {
if(is_user_admin(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 4: {
if(!is_user_admin(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 5: {
if(is_user_admin(players[i]) && is_user_alive(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 6: {
if(is_user_admin(players[i]) && !is_user_alive(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 7: {
if(!is_user_admin(players[i]) && is_user_alive(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
case 8: {
if(!is_user_admin(players[i]) && !is_user_alive(players[i]))
ShowSyncHudMsg(players[i], hudsync, message)
}
default: ShowSyncHudMsg(0, hudsync, message)
}
}
return PLUGIN_CONTINUE
}
public cmdChangeMsg(id, level, cid) {
if(!get_pcvar_num(cvar_cmd) || !cmd_access(id, level, cid, 1))
return PLUGIN_HANDLED
new args[200], name[32]
read_args(args, charsmax(args))
remove_quotes(args)
get_user_name(id, name, charsmax(name))
set_pcvar_string(cvar_message, args)
log_amx("The admin ^"%s^" change the permanent message to ^"%s^"", name, args)
return PLUGIN_CONTINUE
}
get_hud_color(&r, &g, &b) {
new color[20]
static red[5], green[5], blue[5]
get_pcvar_string(cvar_color, color, charsmax(color))
parse(color, red, charsmax(red), green, charsmax(green), blue, charsmax(blue))
r = str_to_num(red)
g = str_to_num(green)
b = str_to_num(blue)
}
Цитата
Описание:
Плагин служит для постоянного показа HUD сообщения группе игроков или каждому.
Серверские настройки (server.cfg):
amx_permanent_message "Ваше/nсообщение%new%здесь" (Если текст ru, то сохраняйте в UTF-8)
Сообщение, которое будет отображаться. Вы можете использовать в тексте %new% или /n для перехода на новую строку.
amx_permanent_message_color "255 255 255"
Цвет сообщения (RGB). Вы можете использовать данную таблицу цветов.
amx_permanent_message_location "3"
Место, где будет отображаться сообщение.
1 - сверху слева
2 - сверху по середине
3 - сверху справа
4 - слева по центру
5 - по центру
6 - справа по центру
7 - снизу слева
8 - снизу по центру
9 - снизу справа
amx_permanent_message_effects "0"
Эффект сообщения.
0 - появление/затухание
1 - сверкание
2 - печатать по символу
amx_permanent_message_show "0"
Кому показывать сообщение.
0 - каждому
1 - мертвым
2 - живым
3 - администраторам
4 - игрокам
5 - живым администраторам
6 - мертвым администраторам
7 - живым игрокам
8 - мертвым игрокам
amx_permanent_message_cmd "1"
Разрешить использовать команду "amx_perm_msg".
Серверские команды:
amx_perm_msg "Ваше новое сообщение"
Устанавливает новое постоянное сообщение. Для работы данной команды необходимо, что значение команды "amx_permanent_message_cmd" было "1". Для доступа к данной команде необходим флаг "m" (ADMIN_LEVEL_A).
Установка:
1. Поместить permanent_message.amxx в директорию plugins.
2. permanent_message.sma в директорию scripting.
3. В plugins.ini прописать permanent_message.amxx
Отредактировал: ex3m777, - 9.12.2014, 21:30