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

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

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

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

Вырезать фикс бага

Kasper55
сообщение 23.12.2014, 20:23
Сообщение #1
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

В этом плагине есть фикс бага с + и # в никах он мне не нужен ведь я использую metamod плагин , может кто вырезать этот фикс из плагина?

Скрытый текст
Код:
/*
Name & Say Guardian, он же NSG. Облегченная версия Key & Say Guardian, он же KSG.
Особенности:
* Фиксит баги с + и # в никах
* Работает быстрее KSG
* Использует Fakemeta, это позволяет избежать сообщений в чате о том, что игрок сменил ник...
* Имеется иммунитет от функций плагина. По умолчанию флаг a
* Антифлуд ником. Наверное, каждый видел как заходит какой нибудь укроп и начинает очень быстро менять ники. Вот эта функция от таких укропов;)

Credits:
* AndrewZ - автор KSG. Оригинальный код
* radius_r16 - автор первого ремейка KSG
* PRoSToTeM@ - консультации по коду и оптимизации
* serfreeman1337 - помощь по коду. Фикс баги с info changed
*/

#include <amxmodx>
#include <fakemeta>

// Configure
#define TIME_WAIT 5.0 // [Время между сменами ника] Antiflood name. Защита от быстрой смены ника. Дополнение к Hacks Detector by Lev
#define DEFAULT_NAME "[Neugomon.Ru] User" // Дефолтное имя, на которое менять. Меняет только визуально. При выходе сервера будет старый ник.
#define FLAG_IMMUNITY ADMIN_IMMUNITY // Иммунитет к фукнциям плагина.
// Для нескольких флагов используйте такую конструкцию: (ADMIN_MENU|ADMIN_LEVEL_H)
// End

#define get_bit(%1,%2) (%1 & (1 << (%2 & 31)))
#define set_bit(%1,%2) %1 |= (1 << (%2 & 31))
#define clr_bit(%1,%2) %1 &= ~(1 << (%2 & 31))

new blocked_msgs[128][128], blockedMsgsCounter;
new blocked_names[128][32], blockedNamesCounter;
new client_immunity, client_checked, client_connected;

public plugin_init()
{
register_plugin("Name & Say Guardian", "1.3b", "neygomon");
register_forward(FM_ClientUserInfoChanged, "fw_ClientUserInfoChanged");
register_clcmd("say", "hook_say");
register_clcmd("say_team", "hook_say");
}

public plugin_cfg()
{
new file_fullname[64], file_handle;
formatex(file_fullname, 63, "addons/amxmodx/configs/nsg/nsg_messages.ini");
file_handle = fopen(file_fullname, "rt");
if(file_handle)
{
new buffer[128];
while(!feof(file_handle))
{
fgets(file_handle, buffer, charsmax(buffer));
if(buffer[0] != ';' && parse(buffer, blocked_msgs[blockedMsgsCounter], charsmax(blocked_msgs[])))
blockedMsgsCounter++;
}
fclose(file_handle);
}
else set_fail_state("[Error] Couldn't read file ^"nsg_messages.ini^"");

formatex(file_fullname, 63, "addons/amxmodx/configs/nsg/nsg_names.ini");
file_handle = fopen(file_fullname, "rt");
if(file_handle)
{
new buffer[32];
while(!feof(file_handle))
{
fgets(file_handle, buffer, charsmax(buffer));
if(buffer[0] != ';' && parse(buffer, blocked_names[blockedNamesCounter], charsmax(blocked_names[])))
blockedNamesCounter++;
}
fclose(file_handle);
}
else set_fail_state("[Error] Couldn't read file ^"nsg_names.ini^"");
}

public client_putinserver(id)
{
clr_bit(client_checked, id);
clr_bit(client_immunity, id);
clr_bit(client_connected, id);
if(ClientHasImmunity(id))
set_bit(client_immunity, id);
set_bit(client_connected, id);
}

public client_disconnect(id)
clr_bit(client_connected, id);

public fw_ClientUserInfoChanged(id, infobuffer)
{
if(get_bit(client_immunity, id) || !get_bit(client_connected, id))
return FMRES_IGNORED;

static newname[32], oldname[32], Float:flCurrentTime, Float:flWaitName[33];

pev(id, pev_netname, oldname, charsmax(oldname));

engfunc(EngFunc_InfoKeyValue, infobuffer, "name", newname, charsmax(newname));
if(strcmp(newname, oldname) || !get_bit(client_checked, id))
{
if(!is_name_valid(newname))
ClientChangeName(id, DEFAULT_NAME, infobuffer);
else
{
new bool:iChange;
for(new i; newname[i] != '^0'; i++)
{
if(newname[i] == '#' || newname[i] == '+')
{
newname[i] = ' '; iChange = true;
}
}
if(iChange)
ClientChangeName(id, newname, infobuffer);
}
if(get_bit(client_checked, id) && is_user_alive(id))
{
flCurrentTime = get_gametime();
if(flWaitName[id] > flCurrentTime)
{
flWaitName[id] = flCurrentTime + TIME_WAIT;
ClientChangeName(id, oldname, infobuffer);
return FMRES_SUPERCEDE;
}
flWaitName[id] = flCurrentTime + TIME_WAIT;
}
set_bit(client_checked, id);
}
return FMRES_IGNORED;
}

public hook_say(id)
{
if(get_bit(client_immunity, id))
return PLUGIN_CONTINUE;

static szMessage[128]; read_args(szMessage, charsmax(szMessage));

static last_msg[33], said_len; said_len = strlen(szMessage);
if(last_msg[id] == said_len)
return PLUGIN_HANDLED;
else last_msg[id] = said_len;

for(new i; i < blockedMsgsCounter; i++)
if(containi(szMessage, blocked_msgs[i]) != -1)
return PLUGIN_HANDLED;
return PLUGIN_CONTINUE;
}

bool:ClientHasImmunity(id)
return (is_user_bot(id) || is_user_hltv(id) || get_user_flags(id) & FLAG_IMMUNITY) ? true : false;

bool:is_name_valid(const name[])
{
if(containi(name, DEFAULT_NAME) != -1) return true;
for(new i; i < blockedNamesCounter; i++)
{
if(containi(name, blocked_names[i]) != -1) return false;
}
return true;
}

ClientChangeName(const id, const szName[], const buffer)
engfunc(EngFunc_SetClientKeyValue, id, buffer, "name", szName);
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
voed
сообщение 23.12.2014, 20:29
Сообщение #2
Стаж: 11 лет

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

Почему бы не обратиться к автору плагина?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Kasper55
сообщение 23.12.2014, 20:36
Сообщение #3
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

Цитата(voed @ 23.12.2014, 21:29) *
Почему бы не обратиться к автору плагина?

ему типо не когда
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя PREDATOREX
сообщение 23.12.2014, 20:46
Сообщение #4


Стаж: 17 лет

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

serveroc.com.ua
Цитата(Kasper55 @ 23.12.2014, 20:36) *
ему типо не когда


золото ему предложи что ли или деревянные.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Kasper55
сообщение 23.12.2014, 21:12
Сообщение #5
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

Цитата(PREDATOREX @ 23.12.2014, 21:46) *
золото ему предложи что ли или деревянные.

ну думал кто то тут поможет
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Kasper55
сообщение 23.12.2014, 23:37
Сообщение #6
Стаж: 16 лет

Сообщений: 1145
Благодарности: выкл.

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