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

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

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

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

Помогите добавить прификс

Статус пользователя opportune
сообщение 9.11.2014, 23:02
Сообщение #1
Стаж: 11 лет

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

Нужно добавить прификс "Супер Админ" на флаг "r"

Скрытый текст
/*
Lite Translit - легкая версия транслита aka Fuck you SkaJlbneJlb :D
Доп плюшки(отключаются):
* Теги в чате Гл. Админ | Админ | VIP
* Поддержка системы армейских званий - AES ( https://c-s.net.ua/forum/topic56564.html )
* Зеленый чат для админов и випов
Credits:
* Спасибо serfreeman1337 за помощь по коду и профилирование.
* Спасибо WarDeN4ik и его клавиатуре :D за различные тесты
* А так же спасибо всем тем, кто помогал тестировать и скидывал баг-репорты
*/
#include <amxmodx>
#include <cstrike>

#define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ]
// #define STEAM // Тег стим игрока [ По умолчанию выключен ]
#define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию включен ]
// #define AES // Поддержка системы армейских званий - AES ( https://c-s.net.ua/forum/topic56564.html ) [ По дефолту выключен ]
#define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ]
#define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате
#define ADMIN ADMIN_BAN // Флаг доступа для тега "Админ" в чате || Просмотр всего чата
#define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате

// #define LOG_MESSAGE // Логирование чата в HLDS логи
#define FIX_CRASH // Костыль от падения сервера с ошибкой о превышении 192 байтов. Дак вот, включать ТОЛЬКО если сервер падает.
// у меня так и не получилось уронить свой без фикса...
#if defined TAGS
// #define CP_PREFIXES // Поддержка моего плагина префиксов http://www.neugomon.ru/threads/73/ [ По умолчанию выключен ]
#endif

#if defined AES
#include <aes_main>
#endif

new g_bUseRus[33];
new const eng[][] = { "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","{","}",":",'"',"<",">","~","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","[","]",";","'",",",".","`","?","/","@","$","^^","&" };
new const rus[][] = { "Ф","И","С","В","У","А","П","Р","Ш","О","Л","Д","Ь","Т","Щ","З","Й","К","Ы","Е","Г","М","Ц","Ч","Н","Я","Х","Ъ","ж","Э","Б","Ю","Ё","ф","и","с","в","у","а","п","р","ш","о","л","д","ь","т","щ","з","й","к","ы","е","г","м","ц","ч","н","я","х","ъ","ж","э","б","ю","ё",",",".","'",";", ":","?" };

#if defined STEAM
new bool:g_bIsSteam[33];
#endif
#if defined CP_PREFIXES
native LtPlayerPrefix(id, string[], len);
#endif

public plugin_init()
{
#define VERSION "2.5.8"
register_plugin("Lite Translit", VERSION, "neygomon");
register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_clcmd("say /rus", "LangRus");
register_clcmd("say /eng", "LangEng");
register_clcmd("say", "Say_Handler");
register_clcmd("say_team", "SayTeam_Handler");
}

public client_putinserver(id)
{
#if defined DEF_RUS
g_bUseRus[id] = true;
#endif
#if defined STEAM
if(is_user_steam(id)) g_bIsSteam[id] = true;
else g_bIsSteam[id] = false;
#endif
}

public LangRus(id)
LangHandler(id, true);
public LangEng(id)
LangHandler(id, false);

LangHandler(id, bool:RusLang)
{
g_bUseRus[id] = RusLang ? true : false;
client_print(id, print_center, "*** [LT] %s чат активирован! ***", RusLang ? "русский" : "английский");
}

public Say_Handler(id)
return FormatMsg(id, false);

public SayTeam_Handler(id)
return FormatMsg(id, true);

FormatMsg(id, bool:is_say_team)
{
static szMessage[128]; read_args(szMessage, charsmax(szMessage)); remove_quotes(szMessage);

if(!szMessage[0] || szMessage[0] == '/') return PLUGIN_HANDLED_MAIN; // блочим пустую мессагу и слеш в чате

if(g_bUseRus[id])
for(new i; i < sizeof eng; i++)
replace_all2(szMessage, charsmax(szMessage), eng[i], rus[i])

static iLen, szFormatTags[96], iAlive, CsTeams:iTeam; iAlive = is_user_alive(id), iTeam = cs_get_user_team(id);
if(is_say_team)
{
switch(iTeam)
{
case CS_TEAM_T: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1%s(Террорист) ", iAlive ? "" : "* Мертвый * ");
case CS_TEAM_CT: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1%s(Мент) ", iAlive ? "" : "* Мертвый * ");
case CS_TEAM_SPECTATOR: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1(Наблюдатель) ");
}
}
else
{
switch(iTeam)
{
case CS_TEAM_SPECTATOR: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1(Наблюдатель) ");
default: iLen = formatex(szFormatTags, charsmax(szFormatTags), "%s", iAlive ? "^1" : "^1*Мертвый* ");
}
}
#if defined AES
static AESLvl[33][64], aStats[AES_ST_END];
aes_get_player_stats(id, aStats); aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], 63, LANG_SERVER);
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^4[%s] ", AESLvl[id]);
#endif
#if defined STEAM
if(g_bIsSteam[id])
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^1[^4Steam^1] ");
#endif
#if defined TAGS
#if defined CP_PREFIXES
static szFrmt[64], szCpPrefix[32]; LtPlayerPrefix(id, szCpPrefix, charsmax(szCpPrefix));
formatex(szFrmt, charsmax(szFrmt), "^1[^4%s^1] ", szCpPrefix);
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "%s", szCpPrefix[1] ? szFrmt : "");
#else
static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " };
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "%s", szAdminPrefix[CheckFlags(id)]);
#endif
#endif
#if defined GREEN_MSG
if(CheckFlags(id)) iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^3%%s1^1 : ^4");
else iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^3%%s1^1 : ");
#else
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^3%%s1^1 : ");
#endif
#if defined FIX_CRASH
/* Костыль :D || "Fix" crash on 192 bytes */
if(strlen(szFormatTags) + strlen(szMessage) >= 180)
{
client_print(id, print_center, "*** Ай-яй-яй! Сообщение слишком длинное;) ***");
return PLUGIN_HANDLED;
}
/* End fix */
#endif
static players[32], pcount; get_players(players, pcount, "c");
if(is_say_team)
{
for(new i; i < pcount; i++)
if(get_user_flags(id) & ADMIN || (iTeam == cs_get_user_team(players[i]) && iAlive == is_user_alive(players[i])))
PrintChat(players[i], id, szFormatTags, szMessage);
}
else
{
for(new i; i < pcount; i++)
PrintChat(players[i], id, szFormatTags, szMessage);
}
#if defined LOG_MESSAGE
static authid[32], userteam[16], username[32];
get_user_name(id, username, 31);
get_user_authid(id, authid, 31);
get_user_team(id, userteam, 15);
log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", username, get_user_userid(id), authid, userteam, is_say_team ? "say_team" : "say" , szMessage);
#endif
return PLUGIN_HANDLED;
}

stock PrintChat(const iReceiver, const iSender, const szTags[], const szMessage[])
{
static StrSend[190]; formatex(StrSend, charsmax(StrSend), "%s %%s2", szTags);
message_begin(MSG_ONE, 76, _, iReceiver);
write_byte(iSender);
write_string(StrSend);
write_string("");
write_string(szMessage);
message_end();
}
stock CheckFlags(id)
{
static iFlags; iFlags = get_user_flags(id);
if(iFlags & GL_ADMIN) return 1;
else if(iFlags & ADMIN) return 2;
else if(iFlags & VIP) return 3;
return 0;
}

stock replace_all2(string[], len, const what[], const with[])
{
new pos;
if((pos = contain(string, what)) == -1) return 0;
new total, with_len = strlen(with), diff = strlen(what) - with_len, total_len = strlen(string), temp_pos;
while(total_len + with_len < len && replace(string[pos], len - pos, what, with) != 0)
{
total++;
pos += with_len;
total_len -= diff;
if (pos >= total_len) break;
temp_pos = contain(string[pos], what);
if (temp_pos == -1) break;
pos += temp_pos;
}
return total;
}

stock bool:is_user_steam(id)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
return false;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя FlaZeR
сообщение 9.11.2014, 23:09
Сообщение #2
Стаж: 12 лет

Сообщений: 354
Благодарностей: 145
Полезность: 81

Скрытый текст
/*
Lite Translit - легкая версия транслита aka Fuck you SkaJlbneJlb :D
Доп плюшки(отключаются):
* Теги в чате Супер Админ | Гл. Админ | Админ | VIP
* Поддержка системы армейских званий - AES ( https://c-s.net.ua/forum/topic56564.html )
* Зеленый чат для админов и випов
Credits:
* Спасибо serfreeman1337 за помощь по коду и профилирование.
* Спасибо WarDeN4ik и его клавиатуре :D за различные тесты
* А так же спасибо всем тем, кто помогал тестировать и скидывал баг-репорты
*/
#include <amxmodx>
#include <cstrike>

#define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ]
// #define STEAM // Тег стим игрока [ По умолчанию выключен ]
#define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию включен ]
// #define AES // Поддержка системы армейских званий - AES ( https://c-s.net.ua/forum/topic56564.html ) [ По дефолту выключен ]
#define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ]
#define SUPER ADMIN_LEVEL_F // Флаг доступа для тега "Супер Админ" в чате
#define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате
#define ADMIN ADMIN_BAN // Флаг доступа для тега "Админ" в чате || Просмотр всего чата
#define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате

// #define LOG_MESSAGE // Логирование чата в HLDS логи
#define FIX_CRASH // Костыль от падения сервера с ошибкой о превышении 192 байтов. Дак вот, включать ТОЛЬКО если сервер падает.
// у меня так и не получилось уронить свой без фикса...
#if defined TAGS
// #define CP_PREFIXES // Поддержка моего плагина префиксов http://www.neugomon.ru/threads/73/ [ По умолчанию выключен ]
#endif

#if defined AES
#include <aes_main>
#endif

new g_bUseRus[33];
new const eng[][] = { "A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","{","}",":",'"',"<",">","~","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","[","]",";","'",",",".","`","?","/","@","$","^^","&" };
new const rus[][] = { "Ф","И","С","В","У","А","П","Р","Ш","О","Л","Д","Ь","Т","Щ","З","Й","К","Ы","Е","Г","М","Ц","Ч","Н","Я","Х","Ъ","ж","Э","Б","Ю","Ё","ф","и","с","в","у","а","п","р","ш","о","л","д","ь","т","щ","з","й","к","ы","е","г","м","ц","ч","н","я","х","ъ","ж","э","б","ю","ё",",",".","'",";", ":","?" };

#if defined STEAM
new bool:g_bIsSteam[33];
#endif
#if defined CP_PREFIXES
native LtPlayerPrefix(id, string[], len);
#endif

public plugin_init()
{
#define VERSION "2.5.8"
register_plugin("Lite Translit", VERSION, "neygomon");
register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY);

register_clcmd("say /rus", "LangRus");
register_clcmd("say /eng", "LangEng");
register_clcmd("say", "Say_Handler");
register_clcmd("say_team", "SayTeam_Handler");
}

public client_putinserver(id)
{
#if defined DEF_RUS
g_bUseRus[id] = true;
#endif
#if defined STEAM
if(is_user_steam(id)) g_bIsSteam[id] = true;
else g_bIsSteam[id] = false;
#endif
}

public LangRus(id)
LangHandler(id, true);
public LangEng(id)
LangHandler(id, false);

LangHandler(id, bool:RusLang)
{
g_bUseRus[id] = RusLang ? true : false;
client_print(id, print_center, "*** [LT] %s чат активирован! ***", RusLang ? "русский" : "английский");
}

public Say_Handler(id)
return FormatMsg(id, false);

public SayTeam_Handler(id)
return FormatMsg(id, true);

FormatMsg(id, bool:is_say_team)
{
static szMessage[128]; read_args(szMessage, charsmax(szMessage)); remove_quotes(szMessage);

if(!szMessage[0] || szMessage[0] == '/') return PLUGIN_HANDLED_MAIN; // блочим пустую мессагу и слеш в чате

if(g_bUseRus[id])
for(new i; i < sizeof eng; i++)
replace_all2(szMessage, charsmax(szMessage), eng[i], rus[i])

static iLen, szFormatTags[96], iAlive, CsTeams:iTeam; iAlive = is_user_alive(id), iTeam = cs_get_user_team(id);
if(is_say_team)
{
switch(iTeam)
{
case CS_TEAM_T: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1%s(Террорист) ", iAlive ? "" : "* Мертвый * ");
case CS_TEAM_CT: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1%s(Мент) ", iAlive ? "" : "* Мертвый * ");
case CS_TEAM_SPECTATOR: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1(Наблюдатель) ");
}
}
else
{
switch(iTeam)
{
case CS_TEAM_SPECTATOR: iLen = formatex(szFormatTags, charsmax(szFormatTags), "^1(Наблюдатель) ");
default: iLen = formatex(szFormatTags, charsmax(szFormatTags), "%s", iAlive ? "^1" : "^1*Мертвый* ");
}
}
#if defined AES
static AESLvl[33][64], aStats[AES_ST_END];
aes_get_player_stats(id, aStats); aes_get_level_name(aStats[AES_ST_LEVEL], AESLvl[id], 63, LANG_SERVER);
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^4[%s] ", AESLvl[id]);
#endif
#if defined STEAM
if(g_bIsSteam[id])
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^1[^4Steam^1] ");
#endif
#if defined TAGS
#if defined CP_PREFIXES
static szFrmt[64], szCpPrefix[32]; LtPlayerPrefix(id, szCpPrefix, charsmax(szCpPrefix));
formatex(szFrmt, charsmax(szFrmt), "^1[^4%s^1] ", szCpPrefix);
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "%s", szCpPrefix[1] ? szFrmt : "");
#else
static const szAdminPrefix[][] = { "", "^1[^4Супер Админ^1] ", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " };
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "%s", szAdminPrefix[CheckFlags(id)]);
#endif
#endif
#if defined GREEN_MSG
if(CheckFlags(id)) iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^3%%s1^1 : ^4");
else iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^3%%s1^1 : ");
#else
iLen += formatex(szFormatTags[iLen], charsmax(szFormatTags) - iLen, "^3%%s1^1 : ");
#endif
#if defined FIX_CRASH
/* Костыль :D || "Fix" crash on 192 bytes */
if(strlen(szFormatTags) + strlen(szMessage) >= 180)
{
client_print(id, print_center, "*** Ай-яй-яй! Сообщение слишком длинное;) ***");
return PLUGIN_HANDLED;
}
/* End fix */
#endif
static players[32], pcount; get_players(players, pcount, "c");
if(is_say_team)
{
for(new i; i < pcount; i++)
if(get_user_flags(id) & ADMIN || (iTeam == cs_get_user_team(players[i]) && iAlive == is_user_alive(players[i])))
PrintChat(players[i], id, szFormatTags, szMessage);
}
else
{
for(new i; i < pcount; i++)
PrintChat(players[i], id, szFormatTags, szMessage);
}
#if defined LOG_MESSAGE
static authid[32], userteam[16], username[32];
get_user_name(id, username, 31);
get_user_authid(id, authid, 31);
get_user_team(id, userteam, 15);
log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", username, get_user_userid(id), authid, userteam, is_say_team ? "say_team" : "say" , szMessage);
#endif
return PLUGIN_HANDLED;
}

stock PrintChat(const iReceiver, const iSender, const szTags[], const szMessage[])
{
static StrSend[190]; formatex(StrSend, charsmax(StrSend), "%s %%s2", szTags);
message_begin(MSG_ONE, 76, _, iReceiver);
write_byte(iSender);
write_string(StrSend);
write_string("");
write_string(szMessage);
message_end();
}
stock CheckFlags(id)
{
static iFlags; iFlags = get_user_flags(id);
if(iFlags & GL_ADMIN) return 1;
else if(iFlags & ADMIN) return 2;
else if(iFlags & VIP) return 3;
else if(iFlags & SUPER) return 4;
return 0;
}

stock replace_all2(string[], len, const what[], const with[])
{
new pos;
if((pos = contain(string, what)) == -1) return 0;
new total, with_len = strlen(with), diff = strlen(what) - with_len, total_len = strlen(string), temp_pos;
while(total_len + with_len < len && replace(string[pos], len - pos, what, with) != 0)
{
total++;
pos += with_len;
total_len -= diff;
if (pos >= total_len) break;
temp_pos = contain(string[pos], what);
if (temp_pos == -1) break;
pos += temp_pos;
}
return total;
}

stock bool:is_user_steam(id)
{
static dp_pointer;
if(dp_pointer || (dp_pointer = get_cvar_pointer("dp_r_id_provider")))
{
server_cmd("dp_clientinfo %d", id);
server_exec();
return (get_pcvar_num(dp_pointer) == 2) ? true : false;
}
return false;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя opportune
сообщение 9.11.2014, 23:24
Сообщение #3
Стаж: 11 лет

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

static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Супер Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " };


stock CheckFlags(id)
{
static iFlags; iFlags = get_user_flags(id);
if(iFlags & GL_ADMIN) return 1;
if(iFlags & ADMIN_LEVEL_F) return 2;
else if(iFlags & ADMIN) return 3;
else if(iFlags & VIP) return 4;
return 0;
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: