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

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

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

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

> Важная информация

Перед тем как создать тему или задать вопрос, ознакомьтесь с данной темой, там собраны наиболее распространенные уязвимости и способы устранения.
Так же не поленитесь воспользоваться поиском, вполне возможно, что ваш вопрос уже поднимался на форуме.
При создании новой темы уделите внимание ее названию, оно должно кратко описывать суть вашего вопроса/проблемы. Все вновь созданные темы с названиями "Помогите", "Объясните", "Подскажите" и т.д. будут удалены, а их авторы наказаны.
413 страниц V  « 125 126 127 ... 411 412 »

Защита Counter Strike Сервера

, Методы защиты от различных уязвимостей игровых серверов
Статус пользователя [WPMG]PRoSToTeM@
сообщение 11.8.2014, 14:24
Сообщение #2501
Стаж: 14 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(XyLiGaN @ 11.8.2014, 9:57) *
[WPMG]PRoSToTeM@,
А почему нельзя просто пофиксить в чате # как и с % тоже самое?! Типо добавить так replace_all(message,191,"#"," ") или не катит?

Потому что нельзя будет писать ни %, ни #.

Мой плагин смены ника кто-нибудь тестил вообще?

Цитата(XyLiGaN @ 11.8.2014, 9:57) *
А на счёт ника такой есть вариант, тоже самое что и с +, убирать # в начале ника. Вот это добавить replace(szNewTxtPart, 2, "#", ""); или тоже не катит?!

Проще заменить на пробел как сделано у меня.

Да и тем более зачем regex юзать, когда можно проще?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 11.8.2014, 14:30
Сообщение #2502
Стаж: 14 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Немного улучшенный вариант, позволяет писать цифры после +.
Код:
#include <amxmodx>
#include <fakemeta>

#pragma ctrlchar '\'

public plugin_init() {
register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged_Pre", false);
}

public ClientUserInfoChanged_Pre(const iClient, const pszInfoBuffer) {
new szNetName[32];
pev(iClient, pev_netname, szNetName, charsmax(szNetName));

new szBufferName[32];
engfunc(EngFunc_InfoKeyValue, pszInfoBuffer, "name", szBufferName, charsmax(szBufferName));

if (szNetName[0] != '\0' && equal(szNetName, szBufferName)) {
return FMRES_IGNORED;
}

new bool:fChanged;

for (new i = 0; szBufferName[i] != '\0'; i++) {
if (szBufferName[i] == '#' || (szBufferName[i] == '+' && !('0' <= szBufferName[i + 1] <= '9'))) {
szBufferName[i] = ' ';

fChanged = true;
}
}

if (fChanged) {
engfunc(EngFunc_SetClientKeyValue, iClient, pszInfoBuffer, "name", szBufferName);
}

return FMRES_IGNORED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя Legenda
сообщение 11.8.2014, 14:33
Сообщение #2503


Иконка группы

Стаж: 16 лет

Сообщений: 3619
Благодарностей: 1706
Полезность: 1010

Меценат Меценат

Цитата(Leks64rs @ 11.8.2014, 10:43) *
зашел с ником +z тоже забанить не могут, так что думаю нужно

плохой админ
раз забанить не можешь
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Andrew5277
сообщение 11.8.2014, 15:43
Сообщение #2504
Стаж: 11 лет

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

Цитата([WPMG]PRoSToTeM@ @ 11.8.2014, 14:24) *

Потому что нельзя будет писать ни %, ни #.

Так, а зачем этот символ вообще нужен( # ) ? Его и ни когда не используют.

Как убрать этот символ можно в обычном adminchat, не подскажете ?
Как допустим с "%s" - link
Там, когда пишешь "say_team @%s%s%"(допустим), в чат выводит только "ss", проценты просто пропадают.
Можно ли и тут, чтобы решетка(#) , просто пропадала ?
На всякий случай, прикрепляю исх adminchat`a
.sma
Код:
/* AMX Mod X
* Admin Chat Plugin
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/

#include <amxmodx>
#include <amxmisc>
#include <dhudmessage>

new g_msgChannel

#define MAX_CLR 10

new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

new amx_show_activity;
new g_AdminChatFlag = ADMIN_CHAT;

public plugin_init()
{
new admin_chat_id

register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminchat.txt")
register_dictionary("common.txt")
register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message")
register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")

amx_show_activity = get_cvar_pointer("amx_show_activity");

if (amx_show_activity == 0)
{
amx_show_activity = register_cvar("amx_show_activity", "2");
}

new str[1]
get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
}

public cmdSayChat(id)
{
if (!access(id, g_AdminChatFlag))
{
return PLUGIN_CONTINUE
}

new said[6], i = 0
read_argv(1, said, 5)

while (said[i] == '@')
{
i++
}

if (!i || i > 3)
{
return PLUGIN_CONTINUE
}

new message[192], a = 0
read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")

switch (said[i])
{
case 'r': a = 1
case 'g': a = 2
case 'b': a = 3
case 'y': a = 4
case 'm': a = 5
case 'c': a = 6
case 'o': a = 7
}

new n, s = i
if (a)
{
n++
s++
}
while (said[s] && isspace(said[s]))
{
n++
s++
}


new name[32], authid[32], userid

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)

log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])

if (++g_msgChannel > 6 || g_msgChannel < 3)
{
g_msgChannel = 3
}

new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0

set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

switch ( get_pcvar_num(amx_show_activity) )
{
case 3, 4:
{
new maxpl = get_maxplayers();
for (new pl = 1; pl <= maxpl; pl++)
{
if (is_user_connected(pl) && !is_user_bot(pl))
{
if (is_user_admin(pl))
{
show_dhudmessage(pl, "%s : %s", name, message[i + n])
client_print(pl, print_notify, "%s : %s", name, message[i + n])
}
else
{
show_dhudmessage(pl, "%s", message[i + n])
client_print(pl, print_notify, "%s", message[i + n])
}
}
}
}
case 2:
{
show_dhudmessage(0, "%s : %s", name, message[i + n])
client_print(0, print_notify, "%s : %s", name, message[i + n])
}
default:
{
show_dhudmessage(0, "%s", message[i + n])
client_print(0, print_notify, "%s", message[i + n])
}
}

return PLUGIN_HANDLED
}

public cmdSayAdmin(id)
{
new said[2]
read_argv(1, said, 1)

if (said[0] != '@')
return PLUGIN_CONTINUE

new message[192], name[32], authid[32], userid
new players[32], inum

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)

log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])

if (is_user_admin(id))
format(message, 191, "(%L) %s : %s", id, "ADMIN", name, message[1])
else
format(message, 191, "(%L) %s : %s", id, "PLAYER", name, message[1])

get_players(players, inum)

for (new i = 0; i < inum; ++i)
{
// dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing
if (players[i] != id && get_user_flags(players[i]) & g_AdminChatFlag)
client_print(players[i], print_chat, "%s", message)
}

client_print(id, print_chat, "%s", message)

return PLUGIN_HANDLED
}

public cmdChat(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], players[32], inum, authid[32], userid

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
get_players(players, inum)

log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)

format(message, 191, "(ADMINS) %s : %s", name, message)
console_print(id, "%s", message)

for (new i = 0; i < inum; ++i)
{
if (access(players[i], g_AdminChatFlag))
client_print(players[i], print_chat, "%s", message)
}

return PLUGIN_HANDLED
}

public cmdSay(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], authid[32], userid

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)

log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)

return PLUGIN_HANDLED
}

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

new name[32]
read_argv(1, name, 31)
new priv = cmd_target(id, name, 0)

if (!priv)
return PLUGIN_HANDLED

new length = strlen(name) + 1

get_user_name(priv, name, 31);

new message[192], name2[32], authid[32], authid2[32], userid, userid2

get_user_authid(id, authid, 31)
get_user_name(id, name2, 31)
userid = get_user_userid(id)
read_args(message, 191)

if (message[0] == '"' && message[length] == '"') // HLSW fix
{
message[0] = ' '
message[length] = ' '
length += 2
}

remove_quotes(message[length])
replace_all(message, charsmax(message), "%", "")
get_user_name(priv, name, 31)

if (id && id != priv)
client_print(id, print_chat, "(%s) %s : %s", name, name2, message[length])

client_print(priv, print_chat, "(%s) %s : %s", name, name2, message[length])
console_print(id, "(%s) %s : %s", name, name2, message[length])
get_user_authid(priv, authid2, 31)
userid2 = get_user_userid(priv)

log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])

return PLUGIN_HANDLED
}

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

new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0

read_argv(0, cmd, 15)
new bool:tsay = (tolower(cmd[4]) == 't')

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
parse(message, color, 15)

new found = 0, a = 0
new lang[3], langnum = get_langsnum()

for (new i = 0; i < MAX_CLR; ++i)
{
for (new j = 0; j < langnum; j++)
{
get_lang(j, lang)
format(color2, 15, "%L", lang, g_Colors[i])

if (equali(color, color2))
{
a = i
found = 1
break
}
}
if (found == 1)
break
}

new length = found ? (strlen(color) + 1) : 0

if (++g_msgChannel > 6 || g_msgChannel < 3)
g_msgChannel = 3

new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

switch ( get_pcvar_num(amx_show_activity) )
{
case 3, 4:
{
new maxpl = get_maxplayers();
for (new pl = 1; pl <= maxpl; pl++)
{
if (is_user_connected(pl) && !is_user_bot(pl))
{
if (is_user_admin(pl))
{
show_dhudmessage(pl, "%s : %s", name, message[length])
client_print(pl, print_notify, "%s : %s", name, message[length])
}
else
{
show_dhudmessage(pl, "%s", message[length])
client_print(pl, print_notify, "%s", message[length])
}
}
}
console_print(id, "%s : %s", name, message[length])
}
case 2:
{
show_dhudmessage(0, "%s : %s", name, message[length])
client_print(0, print_notify, "%s : %s", name, message[length])
console_print(id, "%s : %s", name, message[length])
}
default:
{
show_dhudmessage(0, "%s", message[length])
client_print(0, print_notify, "%s", message[length])
console_print(id, "%s", message[length])
}
}

log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

return PLUGIN_HANDLED
}


Отредактировал: Andrew5277, - 11.8.2014, 15:51
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 11.8.2014, 15:50
Сообщение #2505


Стаж: 12 лет

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

Andrew5277, пробуй просто добавить еще одну строку с replace_all
Код:
replace_all(message, charsmax(message), "#", "")
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PREDATOREX
сообщение 11.8.2014, 16:01
Сообщение #2506


Стаж: 17 лет

Сообщений: 828
Благодарностей: 611
Полезность: 674

serveroc.com.ua
Цитата(Bloo @ 11.8.2014, 15:50) *
Andrew5277, пробуй просто добавить еще одну строку с replace_all
Код:
replace_all(message, charsmax(message), "#", "")


Кстати 99% может получится, пока нет времени тестить. Выкупили http://my-servak.com.ua/ сейчас занимаемся им.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
XyLiGaN
сообщение 11.8.2014, 16:03
Сообщение #2507
Стаж: 13 лет
Город: Югорск

Сообщений: 11668
Благодарностей: 6450
Полезность: 1052

Меценат Меценат

Цитата(PREDATOREX @ 11.8.2014, 20:01) *
Кстати 99% может получится, пока нет времени тестить. Выкупили http://my-servak.com.ua/ сейчас занимаемся им.

Я уже со вчерашнего дня так себе сделал. Всё работает.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 11.8.2014, 16:03
Сообщение #2508
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата([WPMG]PRoSToTeM@ @ 11.8.2014, 16:30) *
Немного улучшенный вариант, позволяет писать цифры после +.

Дополнил отключаемой блокировкой чата и заменил им вариант от neygomon'а.

Цитата(Safety1st @ 10.8.2014, 17:41) *
Защита от бага с # в нике и чате
Плагин не даёт отправлять в чат сообщения с решёткой и заменяет этот символ в никах игроков на пробел. За смену ника бана в раскрутках не будет: он меняется только на сервере, никакого слоухакинга нет.

v1.1 от 11.08.2014 [attachment=27305:fast_fix_hashsign.sma]
Блокировка чат-сообщений отключается в исходнике: нужно закомментировать строку #define CHECK_CHAT.

Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 11.8.2014, 16:07
Сообщение #2509


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Цитата([WPMG]PRoSToTeM@ @ 11.8.2014, 16:30) *

Немного улучшенный вариант, позволяет писать цифры после +.
Код:
#include <amxmodx>
#include <fakemeta>

#pragma ctrlchar '\'

public plugin_init() {
register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged_Pre", false);
}

public ClientUserInfoChanged_Pre(const iClient, const pszInfoBuffer) {
new szNetName[32];
pev(iClient, pev_netname, szNetName, charsmax(szNetName));

new szBufferName[32];
engfunc(EngFunc_InfoKeyValue, pszInfoBuffer, "name", szBufferName, charsmax(szBufferName));

if (szNetName[0] != '\0' && equal(szNetName, szBufferName)) {
return FMRES_IGNORED;
}

new bool:fChanged;

for (new i = 0; szBufferName[i] != '\0'; i++) {
if (szBufferName[i] == '#' || (szBufferName[i] == '+' && !('0' <= szBufferName[i + 1] <= '9'))) {
szBufferName[i] = ' ';

fChanged = true;
}
}

if (fChanged) {
engfunc(EngFunc_SetClientKeyValue, iClient, pszInfoBuffer, "name", szBufferName);
}

return FMRES_IGNORED;
}

установил, при попытке подключится с ником +с
Цитата
Reliable channel overflowed

Другие игроки тоже жаловались что их кикало


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 11.8.2014, 16:20
Сообщение #2510
Стаж: 14 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Safety1st, зачем такой большой массив?
Код:
static szMsg[191];


grishka444, кинь адрес серва.

grishka444, такой вариант попробуй:
Скрытый текст
Код:
#include <amxmodx>
#include <fakemeta>

#pragma ctrlchar '\'

public plugin_init() {
register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged_Pre", false);
}

public ClientUserInfoChanged_Pre(const iClient, const pszInfoBuffer) {
new szNetName[32];
pev(iClient, pev_netname, szNetName, charsmax(szNetName));

new szBufferName[32];
engfunc(EngFunc_InfoKeyValue, pszInfoBuffer, "name", szBufferName, charsmax(szBufferName));

if (szNetName[0] == '\0' || equal(szNetName, szBufferName)) {
return FMRES_IGNORED;
}

new bool:fChanged;

for (new i = 0; szBufferName[i] != '\0'; i++) {
if (szBufferName[i] == '#' || (szBufferName[i] == '+' && !('0' <= szBufferName[i + 1] <= '9'))) {
szBufferName[i] = ' ';

fChanged = true;
}
}

if (fChanged) {
engfunc(EngFunc_SetClientKeyValue, iClient, pszInfoBuffer, "name", szBufferName);
}

return FMRES_IGNORED;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 11.8.2014, 16:30
Сообщение #2511
Стаж: 14 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Andrew5277 @ 11.8.2014, 17:43) *
Так, а зачем этот символ вообще нужен( # ) ? Его и ни когда не используют.

Как убрать этот символ можно в обычном adminchat, не подскажете ?
Как допустим с "%s" - link
Там, когда пишешь "say_team @%s%s%"(допустим), в чат выводит только "ss", проценты просто пропадают.
Можно ли и тут, чтобы решетка(#) , просто пропадала ?
На всякий случай, прикрепляю исх adminchat`a
.sma
Код:
/* AMX Mod X
* Admin Chat Plugin
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/

#include <amxmodx>
#include <amxmisc>
#include <dhudmessage>

new g_msgChannel

#define MAX_CLR 10

new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

new amx_show_activity;
new g_AdminChatFlag = ADMIN_CHAT;

public plugin_init()
{
new admin_chat_id

register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminchat.txt")
register_dictionary("common.txt")
register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message")
register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")

amx_show_activity = get_cvar_pointer("amx_show_activity");

if (amx_show_activity == 0)
{
amx_show_activity = register_cvar("amx_show_activity", "2");
}

new str[1]
get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)
}

public cmdSayChat(id)
{
if (!access(id, g_AdminChatFlag))
{
return PLUGIN_CONTINUE
}

new said[6], i = 0
read_argv(1, said, 5)

while (said[i] == '@')
{
i++
}

if (!i || i > 3)
{
return PLUGIN_CONTINUE
}

new message[192], a = 0
read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")

switch (said[i])
{
case 'r': a = 1
case 'g': a = 2
case 'b': a = 3
case 'y': a = 4
case 'm': a = 5
case 'c': a = 6
case 'o': a = 7
}

new n, s = i
if (a)
{
n++
s++
}
while (said[s] && isspace(said[s]))
{
n++
s++
}


new name[32], authid[32], userid

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)

log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])

if (++g_msgChannel > 6 || g_msgChannel < 3)
{
g_msgChannel = 3
}

new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0

set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

switch ( get_pcvar_num(amx_show_activity) )
{
case 3, 4:
{
new maxpl = get_maxplayers();
for (new pl = 1; pl <= maxpl; pl++)
{
if (is_user_connected(pl) && !is_user_bot(pl))
{
if (is_user_admin(pl))
{
show_dhudmessage(pl, "%s : %s", name, message[i + n])
client_print(pl, print_notify, "%s : %s", name, message[i + n])
}
else
{
show_dhudmessage(pl, "%s", message[i + n])
client_print(pl, print_notify, "%s", message[i + n])
}
}
}
}
case 2:
{
show_dhudmessage(0, "%s : %s", name, message[i + n])
client_print(0, print_notify, "%s : %s", name, message[i + n])
}
default:
{
show_dhudmessage(0, "%s", message[i + n])
client_print(0, print_notify, "%s", message[i + n])
}
}

return PLUGIN_HANDLED
}

public cmdSayAdmin(id)
{
new said[2]
read_argv(1, said, 1)

if (said[0] != '@')
return PLUGIN_CONTINUE

new message[192], name[32], authid[32], userid
new players[32], inum

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)

log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])

if (is_user_admin(id))
format(message, 191, "(%L) %s : %s", id, "ADMIN", name, message[1])
else
format(message, 191, "(%L) %s : %s", id, "PLAYER", name, message[1])

get_players(players, inum)

for (new i = 0; i < inum; ++i)
{
// dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing
if (players[i] != id && get_user_flags(players[i]) & g_AdminChatFlag)
client_print(players[i], print_chat, "%s", message)
}

client_print(id, print_chat, "%s", message)

return PLUGIN_HANDLED
}

public cmdChat(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], players[32], inum, authid[32], userid

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
get_players(players, inum)

log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)

format(message, 191, "(ADMINS) %s : %s", name, message)
console_print(id, "%s", message)

for (new i = 0; i < inum; ++i)
{
if (access(players[i], g_AdminChatFlag))
client_print(players[i], print_chat, "%s", message)
}

return PLUGIN_HANDLED
}

public cmdSay(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], authid[32], userid

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)

log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)

return PLUGIN_HANDLED
}

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

new name[32]
read_argv(1, name, 31)
new priv = cmd_target(id, name, 0)

if (!priv)
return PLUGIN_HANDLED

new length = strlen(name) + 1

get_user_name(priv, name, 31);

new message[192], name2[32], authid[32], authid2[32], userid, userid2

get_user_authid(id, authid, 31)
get_user_name(id, name2, 31)
userid = get_user_userid(id)
read_args(message, 191)

if (message[0] == '"' && message[length] == '"') // HLSW fix
{
message[0] = ' '
message[length] = ' '
length += 2
}

remove_quotes(message[length])
replace_all(message, charsmax(message), "%", "")
get_user_name(priv, name, 31)

if (id && id != priv)
client_print(id, print_chat, "(%s) %s : %s", name, name2, message[length])

client_print(priv, print_chat, "(%s) %s : %s", name, name2, message[length])
console_print(id, "(%s) %s : %s", name, name2, message[length])
get_user_authid(priv, authid2, 31)
userid2 = get_user_userid(priv)

log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])

return PLUGIN_HANDLED
}

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

new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0

read_argv(0, cmd, 15)
new bool:tsay = (tolower(cmd[4]) == 't')

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
parse(message, color, 15)

new found = 0, a = 0
new lang[3], langnum = get_langsnum()

for (new i = 0; i < MAX_CLR; ++i)
{
for (new j = 0; j < langnum; j++)
{
get_lang(j, lang)
format(color2, 15, "%L", lang, g_Colors[i])

if (equali(color, color2))
{
a = i
found = 1
break
}
}
if (found == 1)
break
}

new length = found ? (strlen(color) + 1) : 0

if (++g_msgChannel > 6 || g_msgChannel < 3)
g_msgChannel = 3

new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

switch ( get_pcvar_num(amx_show_activity) )
{
case 3, 4:
{
new maxpl = get_maxplayers();
for (new pl = 1; pl <= maxpl; pl++)
{
if (is_user_connected(pl) && !is_user_bot(pl))
{
if (is_user_admin(pl))
{
show_dhudmessage(pl, "%s : %s", name, message[length])
client_print(pl, print_notify, "%s : %s", name, message[length])
}
else
{
show_dhudmessage(pl, "%s", message[length])
client_print(pl, print_notify, "%s", message[length])
}
}
}
console_print(id, "%s : %s", name, message[length])
}
case 2:
{
show_dhudmessage(0, "%s : %s", name, message[length])
client_print(0, print_notify, "%s : %s", name, message[length])
console_print(id, "%s : %s", name, message[length])
}
default:
{
show_dhudmessage(0, "%s", message[length])
client_print(0, print_notify, "%s", message[length])
console_print(id, "%s", message[length])
}
}

log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

return PLUGIN_HANDLED
}

Скрытый текст
Код:
/* AMX Mod X
* Admin Chat Plugin
*
* by the AMX Mod X Development Team
* originally developed by OLO
*
* This file is part of AMX Mod X.
*
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at
* your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
* In addition, as a special exception, the author gives permission to
* link the code of this program with the Half-Life Game Engine ("HL
* Engine") and Modified Game Libraries ("MODs") developed by Valve,
* L.L.C ("Valve"). You must obey the GNU General Public License in all
* respects for all of the code used other than the HL Engine and MODs
* from Valve. If you modify this file, you may extend this exception
* to your version of the file, but you are not obligated to do so. If
* you do not wish to do so, delete this exception statement from your
* version.
*/

#include <amxmodx>
#include <amxmisc>
#include <dhudmessage>

new g_msgChannel

#define MAX_CLR 10

new g_Colors[MAX_CLR][] = {"COL_WHITE", "COL_RED", "COL_GREEN", "COL_BLUE", "COL_YELLOW", "COL_MAGENTA", "COL_CYAN", "COL_ORANGE", "COL_OCEAN", "COL_MAROON"}
new g_Values[MAX_CLR][] = {{255, 255, 255}, {255, 0, 0}, {0, 255, 0}, {0, 0, 255}, {255, 255, 0}, {255, 0, 255}, {0, 255, 255}, {227, 96, 8}, {45, 89, 116}, {103, 44, 38}}
new Float:g_Pos[4][] = {{0.0, 0.0}, {0.05, 0.55}, {-1.0, 0.2}, {-1.0, 0.7}}

new amx_show_activity;
new g_AdminChatFlag = ADMIN_CHAT;

new g_msgTextMsg;

public plugin_init()
{
new admin_chat_id

register_plugin("Admin Chat", AMXX_VERSION_STR, "AMXX Dev Team")
register_dictionary("adminchat.txt")
register_dictionary("common.txt")
register_clcmd("say", "cmdSayChat", ADMIN_CHAT, "@[@|@|@][w|r|g|b|y|m|c]<text> - displays hud message")
register_clcmd("say_team", "cmdSayAdmin", 0, "@<text> - displays message to admins")
register_concmd("amx_say", "cmdSay", ADMIN_CHAT, "<message> - sends message to all players")
admin_chat_id = register_concmd("amx_chat", "cmdChat", ADMIN_CHAT, "<message> - sends message to admins")
register_concmd("amx_psay", "cmdPsay", ADMIN_CHAT, "<name or #userid> <message> - sends private message")
register_concmd("amx_tsay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends left side hud message to all players")
register_concmd("amx_csay", "cmdTsay", ADMIN_CHAT, "<color> <message> - sends center hud message to all players")

amx_show_activity = get_cvar_pointer("amx_show_activity");

if (amx_show_activity == 0)
{
amx_show_activity = register_cvar("amx_show_activity", "2");
}

new str[1]
get_concmd(admin_chat_id, str, 0, g_AdminChatFlag, str, 0, -1)

g_msgTextMsg = get_user_msgid("TextMsg");
}

public cmdSayChat(id)
{
if (!access(id, g_AdminChatFlag))
{
return PLUGIN_CONTINUE
}

new said[6], i = 0
read_argv(1, said, 5)

while (said[i] == '@')
{
i++
}

if (!i || i > 3)
{
return PLUGIN_CONTINUE
}

new message[192], a = 0
read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")

switch (said[i])
{
case 'r': a = 1
case 'g': a = 2
case 'b': a = 3
case 'y': a = 4
case 'm': a = 5
case 'c': a = 6
case 'o': a = 7
}

new n, s = i
if (a)
{
n++
s++
}
while (said[s] && isspace(said[s]))
{
n++
s++
}


new name[32], authid[32], userid

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)

log_amx("Chat: ^"%s<%d><%s><>^" tsay ^"%s^"", name, userid, authid, message[i + n])
log_message("^"%s<%d><%s><>^" triggered ^"amx_tsay^" (text ^"%s^") (color ^"%L^")", name, userid, authid, message[i + n], "en", g_Colors[a])

if (++g_msgChannel > 6 || g_msgChannel < 3)
{
g_msgChannel = 3
}

new Float:verpos = g_Pos[i][1] + float(g_msgChannel) / 35.0

set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], g_Pos[i][0], verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

switch ( get_pcvar_num(amx_show_activity) )
{
case 3, 4:
{
new maxpl = get_maxplayers();
for (new pl = 1; pl <= maxpl; pl++)
{
if (is_user_connected(pl) && !is_user_bot(pl))
{
if (is_user_admin(pl))
{
show_dhudmessage(pl, "%s : %s", name, message[i + n])
client_print(pl, print_notify, "%s : %s", name, message[i + n])
}
else
{
show_dhudmessage(pl, "%s", message[i + n])
client_print(pl, print_notify, "%s", message[i + n])
}
}
}
}
case 2:
{
show_dhudmessage(0, "%s : %s", name, message[i + n])
client_print(0, print_notify, "%s : %s", name, message[i + n])
}
default:
{
show_dhudmessage(0, "%s", message[i + n])
client_print(0, print_notify, "%s", message[i + n])
}
}

return PLUGIN_HANDLED
}

public cmdSayAdmin(id)
{
new said[2]
read_argv(1, said, 1)

if (said[0] != '@')
return PLUGIN_CONTINUE

new message[192], name[32], authid[32], userid
new players[32], inum

read_args(message, 191)
remove_quotes(message)
//replace_all(message, charsmax(message), "%", "")
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)

log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message[1])
log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message[1])

if (is_user_admin(id))
format(message, 191, "(%L) %s : %s", id, "ADMIN", name, message[1])
else
format(message, 191, "(%L) %s : %s", id, "PLAYER", name, message[1])

get_players(players, inum)

new iPos = min(strlen(message), 186);
message[iPos] = '^n';
message[iPos + 1] = '^0';

for (new i = 0; i < inum; ++i)
{
// dont print the message to the client that used the cmd if he has ADMIN_CHAT to avoid double printing
if (players[i] != id && get_user_flags(players[i]) & g_AdminChatFlag) {
message_begin(MSG_ONE, g_msgTextMsg, _, players[i]);
write_byte(print_chat);
write_string("%s");
write_string(message);
message_end();
}
}

message_begin(MSG_ONE, g_msgTextMsg, _, id);
write_byte(print_chat);
write_string("%s");
write_string(message);
message_end();

return PLUGIN_HANDLED
}

public cmdChat(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], players[32], inum, authid[32], userid

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
get_players(players, inum)

log_amx("Chat: ^"%s<%d><%s><>^" chat ^"%s^"", name, userid, authid, message)
log_message("^"%s<%d><%s><>^" triggered ^"amx_chat^" (text ^"%s^")", name, userid, authid, message)

format(message, 191, "(ADMINS) %s : %s", name, message)
console_print(id, "%s", message)

for (new i = 0; i < inum; ++i)
{
if (access(players[i], g_AdminChatFlag))
client_print(players[i], print_chat, "%s", message)
}

return PLUGIN_HANDLED
}

public cmdSay(id, level, cid)
{
if (!cmd_access(id, level, cid, 2))
return PLUGIN_HANDLED

new message[192], name[32], authid[32], userid

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
client_print(0, print_chat, "%L", LANG_PLAYER, "PRINT_ALL", name, message)
console_print(id, "%L", LANG_PLAYER, "PRINT_ALL", name, message)

log_amx("Chat: ^"%s<%d><%s><>^" say ^"%s^"", name, userid, authid, message)
log_message("^"%s<%d><%s><>^" triggered ^"amx_say^" (text ^"%s^")", name, userid, authid, message)

return PLUGIN_HANDLED
}

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

new name[32]
read_argv(1, name, 31)
new priv = cmd_target(id, name, 0)

if (!priv)
return PLUGIN_HANDLED

new length = strlen(name) + 1

get_user_name(priv, name, 31);

new message[192], name2[32], authid[32], authid2[32], userid, userid2

get_user_authid(id, authid, 31)
get_user_name(id, name2, 31)
userid = get_user_userid(id)
read_args(message, 191)

if (message[0] == '"' && message[length] == '"') // HLSW fix
{
message[0] = ' '
message[length] = ' '
length += 2
}

remove_quotes(message[length])
replace_all(message, charsmax(message), "%", "")
get_user_name(priv, name, 31)

if (id && id != priv)
client_print(id, print_chat, "(%s) %s : %s", name, name2, message[length])

client_print(priv, print_chat, "(%s) %s : %s", name, name2, message[length])
console_print(id, "(%s) %s : %s", name, name2, message[length])
get_user_authid(priv, authid2, 31)
userid2 = get_user_userid(priv)

log_amx("Chat: ^"%s<%d><%s><>^" psay ^"%s<%d><%s><>^" ^"%s^"", name2, userid, authid, name, userid2, authid2, message[length])
log_message("^"%s<%d><%s><>^" triggered ^"amx_psay^" against ^"%s<%d><%s><>^" (text ^"%s^")", name2, userid, authid, name, userid2, authid2, message[length])

return PLUGIN_HANDLED
}

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

new cmd[16], color[16], color2[16], message[192], name[32], authid[32], userid = 0

read_argv(0, cmd, 15)
new bool:tsay = (tolower(cmd[4]) == 't')

read_args(message, 191)
remove_quotes(message)
replace_all(message, charsmax(message), "%", "")
parse(message, color, 15)

new found = 0, a = 0
new lang[3], langnum = get_langsnum()

for (new i = 0; i < MAX_CLR; ++i)
{
for (new j = 0; j < langnum; j++)
{
get_lang(j, lang)
format(color2, 15, "%L", lang, g_Colors[i])

if (equali(color, color2))
{
a = i
found = 1
break
}
}
if (found == 1)
break
}

new length = found ? (strlen(color) + 1) : 0

if (++g_msgChannel > 6 || g_msgChannel < 3)
g_msgChannel = 3

new Float:verpos = (tsay ? 0.55 : 0.1) + float(g_msgChannel) / 35.0

get_user_authid(id, authid, 31)
get_user_name(id, name, 31)
userid = get_user_userid(id)
set_dhudmessage(g_Values[a][0], g_Values[a][1], g_Values[a][2], tsay ? 0.05 : -1.0, verpos, 0, 6.0, 6.0, 0.5, 0.15, -1)

switch ( get_pcvar_num(amx_show_activity) )
{
case 3, 4:
{
new maxpl = get_maxplayers();
for (new pl = 1; pl <= maxpl; pl++)
{
if (is_user_connected(pl) && !is_user_bot(pl))
{
if (is_user_admin(pl))
{
show_dhudmessage(pl, "%s : %s", name, message[length])
client_print(pl, print_notify, "%s : %s", name, message[length])
}
else
{
show_dhudmessage(pl, "%s", message[length])
client_print(pl, print_notify, "%s", message[length])
}
}
}
console_print(id, "%s : %s", name, message[length])
}
case 2:
{
show_dhudmessage(0, "%s : %s", name, message[length])
client_print(0, print_notify, "%s : %s", name, message[length])
console_print(id, "%s : %s", name, message[length])
}
default:
{
show_dhudmessage(0, "%s", message[length])
client_print(0, print_notify, "%s", message[length])
console_print(id, "%s", message[length])
}
}

log_amx("Chat: ^"%s<%d><%s><>^" %s ^"%s^"", name, userid, authid, cmd[4], message[length])
log_message("^"%s<%d><%s><>^" triggered ^"%s^" (text ^"%s^") (color ^"%s^")", name, userid, authid, cmd, message[length], color2)

return PLUGIN_HANDLED
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ex3m777
сообщение 11.8.2014, 16:42
Сообщение #2512


Стаж: 13 лет
Город: Москва

Сообщений: 2037
Благодарностей: 1135
Полезность: 968

Меценат Меценат

Цитата([WPMG]PRoSToTeM@ @ 11.8.2014, 18:20) *

Safety1st, зачем такой большой массив?
Код:
static szMsg[191];


grishka444, кинь адрес серва.

grishka444, такой вариант попробуй:
Скрытый текст
Код:
#include <amxmodx>
#include <fakemeta>

#pragma ctrlchar '\'

public plugin_init() {
register_forward(FM_ClientUserInfoChanged, "ClientUserInfoChanged_Pre", false);
}

public ClientUserInfoChanged_Pre(const iClient, const pszInfoBuffer) {
new szNetName[32];
pev(iClient, pev_netname, szNetName, charsmax(szNetName));

new szBufferName[32];
engfunc(EngFunc_InfoKeyValue, pszInfoBuffer, "name", szBufferName, charsmax(szBufferName));

if (szNetName[0] == '\0' || equal(szNetName, szBufferName)) {
return FMRES_IGNORED;
}

new bool:fChanged;

for (new i = 0; szBufferName[i] != '\0'; i++) {
if (szBufferName[i] == '#' || (szBufferName[i] == '+' && !('0' <= szBufferName[i + 1] <= '9'))) {
szBufferName[i] = ' ';

fChanged = true;
}
}

if (fChanged) {
engfunc(EngFunc_SetClientKeyValue, iClient, pszInfoBuffer, "name", szBufferName);
}

return FMRES_IGNORED;
}

теперь не кикает, но и не блочит
сделал ник "q #Game_radio" зашел спокойно, сделал +e тоже без проблем.. айпи отправил в личку


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 11.8.2014, 16:50
Сообщение #2513
Стаж: 14 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

grishka444, список плагинов скинь.

Отредактировал: [WPMG]PRoSToTeM@, - 11.8.2014, 16:50
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
BariN
сообщение 11.8.2014, 17:01
Сообщение #2514
Стаж: 12 лет

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

Извините за оффтоп
но тут на днях проблемка появилась
сообщения в чат летят от постоянных игроков
Цитата
ya_cheter
Proectro

Такого рода,я думал они балуется, но пришел к другу домой с ноутом сидим с ним рядом и от его имени летят такое сообщения.
Что это такое?
Прошу еще раз меня извинить за оффтоп.

Отредактировал: BariN, - 11.8.2014, 17:01
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dehost
сообщение 11.8.2014, 17:01
Сообщение #2515


Стаж: 14 лет

Сообщений: 3147
Благодарностей: 1431
Полезность: 486

Ребят а если просто добавить # в запрещённые символы на сервере? в ACPanel >> Chat Control
прокатит?


Золотое правило нравственности:
"Относись к людям так, как хочешь, чтобы относились к тебе."
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 11.8.2014, 17:03
Сообщение #2516


Стаж: 12 лет

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

BariN, AC скорее всего. В его теме обсудите, к теме не имеет никакого отношения.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя Andrew5277
сообщение 11.8.2014, 17:03
Сообщение #2517
Стаж: 11 лет

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

Цитата(Bloo @ 11.8.2014, 15:50) *
Andrew5277, пробуй просто добавить еще одну строку с replace_all
Код:
replace_all(message, charsmax(message), "#", "")

Спасибо, все работает.
Спасибку я вам не могу поставить, т.к. что то не могу ее найти, мб, что только сегодня зарегистрировался.
Цитата(XyLiGaN @ 11.8.2014, 16:03) *
Я уже со вчерашнего дня так себе сделал. Всё работает.

А ты убирал только # или # и ?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя dehost
сообщение 11.8.2014, 17:04
Сообщение #2518


Стаж: 14 лет

Сообщений: 3147
Благодарностей: 1431
Полезность: 486

DELL

Отредактировал: dehost, - 11.8.2014, 17:10


Золотое правило нравственности:
"Относись к людям так, как хочешь, чтобы относились к тебе."
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Bloo
сообщение 11.8.2014, 17:04
Сообщение #2519


Стаж: 12 лет

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

dehost, маловероятно. Проверьте.

dehost, то сообщение не вам было адресовано. Вы же не BariN.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 11.8.2014, 17:05
Сообщение #2520
Стаж: 14 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

Цитата(Andrew5277 @ 11.8.2014, 19:03) *
Спасибо, все работает.
Спасибку я вам не могу поставить, т.к. что то не могу ее найти, мб, что только сегодня зарегистрировался.

А ты убирал только # или # и ?

Я тебе скинул нормальный вариант.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
413 страниц V  « 125 126 127 ... 411 412 »
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 4 гостей читают эту тему: