Top SayPrefix, Добавляем префикс в чат к топ игрокам |
Здравствуйте, гость Вход | Регистрация
Наши новости:
|
|
Top SayPrefix, Добавляем префикс в чат к топ игрокам |
Norman111 |
15.5.2015, 0:38
Сообщение
|
|
Интересует лишь данный плагин, и только
|
|
|
serfreeman1337 |
15.5.2015, 6:06
Сообщение
|
Обновлено.
|
|
|
|
Norman111 |
15.5.2015, 8:18
Сообщение
|
|
Благодарю
|
|
|
vanramon |
24.5.2015, 1:22
Сообщение
|
Где можно скачать версию 0.3?
Мне нужна поддержка Colored Translit |
|
|
|
Safety1st |
24.5.2015, 1:32
Сообщение
|
|
|
vanramon |
24.5.2015, 4:06
Сообщение
|
От души душевно в душу! |
|
Поблагодарили 1 раз
|
|
sergi |
5.2.2017, 22:06
Сообщение
|
а как его сделать чтоб он работал с [2.8] Lite Translit (русский чат на сервере)
|
|
|
|
selya-zek |
7.2.2017, 7:23
Сообщение
|
|
|
sergi |
7.2.2017, 9:11
Сообщение
|
|
|
moba |
7.2.2017, 10:12
Сообщение
|
для [2.8] Lite Translit (русский чат на сервере)
Вверху где #define добавить Код #define TOP 10 // Скольким игрокам из топа выдавать префикс в чате Затем добавить в код после всех #define ов Код new top_ids[TOP] = -1; public csxsql_initialized() { update_stats_cache() get_stats_sql_thread(0,0,TOP,"TopPlayedKHS",CSXSQL_RANK_KHS) } Найти в коде #if defined LT_PREFIXES и добавить до закрытия Код #if defined TOP for(new i,db_id = get_user_stats_id(id); i < TOP; i++) { if(top_ids[i] == db_id) { iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "^1[^4ТОП10^1] "); } } #endif В конце файла добавить Код public TopPlayedKHS(id,pos) { new index while((index = get_stats_id(index,top_ids[index]))) { if(index >= TOP) break } } CSXSQL_RANK_KHS заменит на вашу выдачу, у меня по Kill+HS. Работает, на сколько оптимально, просьба указать ;)
Отредактировал: moba, - 7.2.2017, 10:18
|
|
Поблагодарили 2 раз
|
|
steelzzz |
7.2.2017, 10:33
Сообщение
|
|
Нужна помощь в настройке сервера или плагина? (Платно) -> Тык
|
|
|
sergi |
7.2.2017, 11:35
Сообщение
|
moba, чета у меня не получается что я не так делаю стату берет из csstats.amxx
Cкрытый текст //AMXXPC compile.exe // by the AMX Mod X Dev Team //// lite_translit.sma // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(34) : error 017: undefined symbol "update_stats_cache" // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(35) : error 017: undefined symbol "get_stats_sql_thread" // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(124) : error 010: invalid function or declaration // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(126) : error 010: invalid function or declaration // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(370) : error 017: undefined symbol "get_stats_id" // // 5 Errors. // Could not locate output file compiled\lite_translit.amx (compile failed). // // Compilation Time: 0,17 sec // ---------------------------------------- Press enter to exit ... Cкрытый текст // ******************************************************************************** *****// // Плагин загружен с www.neugomon.ru // // Автор: Neygomon [ // Официальная тема поддержки: // При копировании материала ссылка на сайт www.neugomon.ru ОБЯЗАТЕЛЬНА! // // ******************************************************************************** *****// #include <amxmodx> /* Спасибо PRoSToTeM@ за новый способ транслитерации */ #define TOP 2 // Скольким игрокам из топа выдавать префикс в чате #define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ] #if defined TAGS #define LT_PREFIXES // Свои префиксы. Файл addons/amxmodx/configs/lt_prefixes.ini [ По умолчанию выключен ] #endif #define STEAM // Тег стим игрока [ По умолчанию выключен ] #define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию выключен ] #define AES // Поддержка системы армейских званий - AES ( ) [ По умолчанию выключен ] #define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ] #define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате #define ADMIN ADMIN_LEVEL_G // Флаг доступа для тега "Админ" в чате #define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате #define ANTIFLOOD // Замена стандартного плагина antiflood.amxx [ По умолчанию выключен ] #define AD_TIME 0.75 // Время между сообщениями, когда сработает антифлуд система #define ADMIN_ALLCHAT // Показывать весь чат админам [ По умолчанию включен ] //#define DEFAULT_CS_CHAT // Cтандартный чат кс [ По умолчанию выключен ] //Живые общаются только с живыми, мертвые с мертвыми. Админ видит весь чат если ADMIN_ALLCHAT new top_ids[TOP] = -1; public csxsql_initialized() { update_stats_cache() get_stats_sql_thread(0,0,TOP,"TopPlayedKHS",CSXSQL_RANK_KHS) } #if defined AES enum _: { AES_ST_EXP, AES_ST_LEVEL, AES_ST_BONUSES, AES_ST_NEXTEXP, AES_ST_END }; native aes_get_player_stats(id, data[4]); native aes_get_level_name(lvlnum, level[], len, idLang = 0); public plugin_natives() set_native_filter("native_filter"); public native_filter(const name[], index, trap) return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE; #endif new const g_chConvert[94 * 2 char] = { 0x2100D0AD, 0x2300D0B6, 0x25003F00, 0xD18D2800, 0x29002A00, 0x2B00D0B1, 0x2D00D18E, 0x2E003000, 0x31003200, 0x33003400, 0x35003600, 0x37003800, 0x3900D096, 0xD0B6D091, 0x3D00D0AE, 0x2C002200, 0xD0A4D098, 0xD0A1D092, 0xD0A3D090, 0xD09FD0A0, 0xD0A8D09E, 0xD09BD094, 0xD0ACD0A2, 0xD0A9D097, 0xD099D09A, 0xD0ABD095, 0xD093D09C, 0xD0A6D0A7, 0xD09DD0AF, 0xD1855C00, 0xD18A3A00, 0x5F00D191, 0xD184D0B8, 0xD181D0B2, 0xD183D0B0, 0xD0BFD180, 0xD188D0BE, 0xD0BBD0B4, 0xD18CD182, 0xD189D0B7, 0xD0B9D0BA, 0xD18BD0B5, 0xD0B3D0BC, 0xD186D187, 0xD0BDD18F, 0xD0A52F00, 0xD0AAD081 }; new bool:g_bUseRus[33]; #if defined STEAM new bool:g_bIsSteam[33]; #endif #if defined LT_PREFIXES enum _:DATA { TYPE[2], AUTH[32], PREFIX[64] }; new Array:g_aData, g_PlayerData[DATA]; new g_szPrefix[33][64]; #endif #define GetBit(%1,%2) (%1 & (1 << (%2 & 31))) #define SetBit(%1,%2) %1 |= (1 << (%2 & 31)) #define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31)) #if defined ADMIN_ALLCHAT new g_bitAdmin; #endif new g_bitAlive; public plugin_init() { #define VERSION "2.8" register_plugin("Lite Translit", VERSION, "neygomon"); register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY); register_clcmd("say /rus", "LangCtrlRus"); register_clcmd("say /eng", "LangCtrlEng"); register_clcmd("say", "HandlerSay"); register_clcmd("say_team", "HandlerSayTeam"); register_event("ResetHUD", "eResetHUD", "be"); register_event("DeathMsg", "eDeathMsg", "a", "1>0"); } #if defined LT_PREFIXES public plugin_cfg() { g_aData = ArrayCreate(DATA); new buff[256], fp = fopen("addons/amxmodx/configs/lt_prefixes.ini", "rt"); if(!fp) return set_fail_state("File ^"addons/amxmodx/configs/lt_prefixes.ini^" not found"); while(!feof(fp)) { fgets(fp, buff, charsmax(buff)); if(buff[0] && buff[0] != ';' && parse(buff, g_PlayerData[TYPE], charsmax(g_PlayerData[TYPE]), g_PlayerData[AUTH], charsmax(g_PlayerData[AUTH]), g_PlayerData[PREFIX], charsmax(g_PlayerData[PREFIX]))) ArrayPushArray(g_aData, g_PlayerData); } return fclose(fp); } #endif #if defined TOP for(new i,db_id = get_user_stats_id(id); i < TOP; i++) { if(top_ids[i] == db_id) { iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "^1[^4ТОП2^1] "); } } #endif public client_putinserver(id) { #if defined LT_PREFIXES SearchClient(id); #endif #if defined DEF_RUS g_bUseRus[id] = true; #else g_bUseRus[id] = false; #endif #if defined STEAM g_bIsSteam[id] = is_user_steam(id) ? true : false; #endif #if defined ADMIN_ALLCHAT if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id); else ResetBit(g_bitAdmin, id); #endif } public client_disconnect(id) ResetBit(g_bitAlive, id); public eResetHUD(id) SetBit(g_bitAlive, id); public eDeathMsg() ResetBit(g_bitAlive, read_data(2)); public HandlerSay(id) return FormatMsg(id, false); public HandlerSayTeam(id) return FormatMsg(id, true); public LangCtrlRus(id) { if(g_bUseRus[id]) client_print(id, print_chat, "*** [LT] Русский язык УЖЕ включен! ***"); else { client_print(id, print_chat, "*** [LT] Русский язык активирован! ***"); g_bUseRus[id] = true; client_cmd(id, "spk buttons/blip1.wav"); } } public LangCtrlEng(id) { if(!g_bUseRus[id]) client_print(id, print_chat, "*** [LT] Английский язык УЖЕ включен! ***"); else { client_print(id, print_chat, "*** [LT] Английский язык активирован! ***"); g_bUseRus[id] = false; client_cmd(id, "spk buttons/blip1.wav"); } } FormatMsg(id, bool:IsTeam) { #define MAX_BYTES 180 static sMessage[MAX_BYTES], sConvertStr[charsmax(sMessage) * 2 + 1]; read_args(sMessage, charsmax(sMessage)); remove_quotes(sMessage); if(sMessage[0] == EOS || sMessage[0] == '/') return PLUGIN_HANDLED_MAIN; #if defined ANTIFLOOD static Float:fTimeFlood[33], Float:fGameTime, iFloodWarn[33]; if(fTimeFlood[id] > (fGameTime = get_gametime())) { if(++iFloodWarn[id] > 2) { client_print(id, print_chat, "*** [LT] Прекратите флудить! ***"); fTimeFlood[id] = fGameTime + AD_TIME + 3.0; return PLUGIN_HANDLED; } } else if(iFloodWarn[id]) iFloodWarn[id]--; fTimeFlood[id] = fGameTime + AD_TIME; #endif static iLen, sTags[MAX_BYTES], idTeam, sTeam[16]; idTeam = get_user_team(id, sTeam, charsmax(sTeam)); switch(idTeam) { case 1: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3TT^1]" : ""); case 2: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3CT^1]" : ""); default:iLen = formatex(sTags, charsmax(sTags), "^1*^3Spec^1* "); } #if defined GREEN_MSG || (defined TAGS && !defined LT_PREFIXES) static IsAccess; IsAccess = CheckFlags(id); #endif #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], charsmax(AESLvl[]), LANG_SERVER); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^4[%s] ", AESLvl[id]); #endif #if defined STEAM if(g_bIsSteam[id]) iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4Steam^1] "); #endif #if defined TAGS #if defined LT_PREFIXES if(g_szPrefix[id][0]) { replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4"); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s ", g_szPrefix[id]); } #else static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " }; iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s", szAdminPrefix[IsAccess]); #endif #endif #if defined GREEN_MSG switch(IsAccess) { case 0: iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : %%s2"); default:iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : ^4%%s2"); } #else iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : %%s2"); #endif if(g_bUseRus[id]) { new nLen; for(new n; sMessage[n] != EOS; n++) { if('!' <= sMessage[n] <= '~') { sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2}; if(g_chConvert{(sMessage[n] - '!') * 2 + 1} != EOS) sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2 + 1}; } else sConvertStr[nLen++] = sMessage[n]; } sConvertStr[nLen] = EOS; } else sConvertStr = sMessage; static iByteLimit; iByteLimit = MAX_BYTES; while(iLen + strlen(sConvertStr) > MAX_BYTES) sConvertStr[iByteLimit -= 10] = 0; static players[32], pcount; get_players(players, pcount, "c"); switch(IsTeam) { case true: { for(new i; i < pcount; i++) { #if defined ADMIN_ALLCHAT if(GetBit(g_bitAdmin, players[i]) || (GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i]))) #else if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i])) #endif PrintChat(players[i], id, sTags, sConvertStr); } } case false: { for(new i; i < pcount; i++) #if defined DEFAULT_CS_CHAT #if defined ADMIN_ALLCHAT if(GetBit(g_bitAdmin, players[i]) || GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i])) #else if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i])) #endif PrintChat(players[i], id, sTags, sConvertStr); #else PrintChat(players[i], id, sTags, sConvertStr); #endif } } static sAuthId[25], sName[32]; get_user_name(id, sName, charsmax(sName)); get_user_authid(id, sAuthId, charsmax(sAuthId)); log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, IsTeam ? "say_team" : "say" , sConvertStr); return PLUGIN_HANDLED; } PrintChat(iReceiver, iSender, const sTags[], const sMessage[]) { message_begin(MSG_ONE, 76, .player=iReceiver); write_byte(iSender); write_string(sTags); write_string(""); write_string(sMessage); message_end(); } stock SearchClient(const id) { for(new i; i < ArraySize(g_aData); i++) { ArrayGetArray(g_aData, i, g_PlayerData); switch(g_PlayerData[TYPE]) { case 'f': { if(get_user_flags(id) & read_flags(g_PlayerData[AUTH])) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } case 'i': { static sIP[16]; get_user_ip(id, sIP, charsmax(sIP), 1); if(!strcmp(g_PlayerData[AUTH], sIP)) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } case 's': { static sAuthid[25]; get_user_authid(id, sAuthid, charsmax(sAuthid)); if(!strcmp(g_PlayerData[AUTH], sAuthid)) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } } } return g_szPrefix[id][0] = 0; } 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 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; } public TopPlayedKHS(id,pos) { new index while((index = get_stats_id(index,top_ids[index]))) { if(index >= TOP) break } } |
|
|
|
moba |
7.2.2017, 11:46
Сообщение
|
Поблагодарили 1 раз
|
|
moba |
7.2.2017, 12:14
Сообщение
|
sergi, для csstats.amxx проще:
Подключаем Код #include <csstats> Дописываем вверху: Код #define TOP_RANK 10 #define TOP_PREFIX "^1[^4TOP Игрок^1]" Найти в коде #if defined LT_PREFIXES и добавить до закрытия Код #if defined TOP_RANK
new st[8] new rank = get_user_stats(id,st,st) // проверяем на ТОП if(rank > TOP_RANK){ // игрок не топ игрок return PLUGIN_CONTINUE }else iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "%s", TOP_PREFIX); #endif
Отредактировал: moba, - 7.2.2017, 12:16
|
|
Поблагодарили 1 раз
|
|
sergi |
7.2.2017, 12:35
Сообщение
|
moba, ошибка компеляции че не правильна я вставил
Cкрытый текст #if defined LT_PREFIXES SearchClient(id); #endif #if defined DEF_RUS g_bUseRus[id] = true; #else g_bUseRus[id] = false; #endif #if defined STEAM g_bIsSteam[id] = is_user_steam(id) ? true : false; #endif #if defined ADMIN_ALLCHAT if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id); else ResetBit(g_bitAdmin, id); #endif #if defined TOP_RANK new st[8] new rank = get_user_stats(id,st,st) // проверяем на ТОП if(rank > TOP_RANK){ // игрок не топ игрок return PLUGIN_CONTINUE }else iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "%s", TOP_PREFIX); #endif } Cкрытый текст //AMXXPC compile.exe // by the AMX Mod X Dev Team //// lite_translit.sma // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(142) : error 017: undefined symbol "iLen" // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(142) : error 017: undefined symbol "sTags" // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(142) : error 017: undefined symbol "iLen" // F:\╧╨╬├╨└╠╠█\╩╤\3782_Compiler_amxmod\Compiler amxmodx 1.8.3\lite_translit.sma(142) : fatal error 107: too many error messages on one line // // Compilation aborted. // 4 Errors. // Could not locate output file compiled\lite_translit.amx (compile failed). // // Compilation Time: 0,2 sec // ---------------------------------------- Press enter to exit ... вот полнастью код Cкрытый текст #include <amxmodx> #include <csstats> /* Спасибо PRoSToTeM@ за новый способ транслитерации */ #define TOP_RANK 2 #define TOP_PREFIX "^1[^4TOP Игрок^1]" #define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ] #if defined TAGS #define LT_PREFIXES // Свои префиксы. Файл addons/amxmodx/configs/lt_prefixes.ini [ По умолчанию выключен ] #endif #define STEAM // Тег стим игрока [ По умолчанию выключен ] #define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию выключен ] #define AES // Поддержка системы армейских званий - AES ( ) [ По умолчанию выключен ] #define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ] #define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате #define ADMIN ADMIN_LEVEL_G // Флаг доступа для тега "Админ" в чате #define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате #define ANTIFLOOD // Замена стандартного плагина antiflood.amxx [ По умолчанию выключен ] #define AD_TIME 0.75 // Время между сообщениями, когда сработает антифлуд система #define ADMIN_ALLCHAT // Показывать весь чат админам [ По умолчанию включен ] //#define DEFAULT_CS_CHAT // Cтандартный чат кс [ По умолчанию выключен ] //Живые общаются только с живыми, мертвые с мертвыми. Админ видит весь чат если ADMIN_ALLCHAT #if defined AES enum _: { AES_ST_EXP, AES_ST_LEVEL, AES_ST_BONUSES, AES_ST_NEXTEXP, AES_ST_END }; native aes_get_player_stats(id, data[4]); native aes_get_level_name(lvlnum, level[], len, idLang = 0); public plugin_natives() set_native_filter("native_filter"); public native_filter(const name[], index, trap) return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE; #endif new const g_chConvert[94 * 2 char] = { 0x2100D0AD, 0x2300D0B6, 0x25003F00, 0xD18D2800, 0x29002A00, 0x2B00D0B1, 0x2D00D18E, 0x2E003000, 0x31003200, 0x33003400, 0x35003600, 0x37003800, 0x3900D096, 0xD0B6D091, 0x3D00D0AE, 0x2C002200, 0xD0A4D098, 0xD0A1D092, 0xD0A3D090, 0xD09FD0A0, 0xD0A8D09E, 0xD09BD094, 0xD0ACD0A2, 0xD0A9D097, 0xD099D09A, 0xD0ABD095, 0xD093D09C, 0xD0A6D0A7, 0xD09DD0AF, 0xD1855C00, 0xD18A3A00, 0x5F00D191, 0xD184D0B8, 0xD181D0B2, 0xD183D0B0, 0xD0BFD180, 0xD188D0BE, 0xD0BBD0B4, 0xD18CD182, 0xD189D0B7, 0xD0B9D0BA, 0xD18BD0B5, 0xD0B3D0BC, 0xD186D187, 0xD0BDD18F, 0xD0A52F00, 0xD0AAD081 }; new bool:g_bUseRus[33]; #if defined STEAM new bool:g_bIsSteam[33]; #endif #if defined LT_PREFIXES enum _:DATA { TYPE[2], AUTH[32], PREFIX[64] }; new Array:g_aData, g_PlayerData[DATA]; new g_szPrefix[33][64]; #endif #define GetBit(%1,%2) (%1 & (1 << (%2 & 31))) #define SetBit(%1,%2) %1 |= (1 << (%2 & 31)) #define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31)) #if defined ADMIN_ALLCHAT new g_bitAdmin; #endif new g_bitAlive; public plugin_init() { #define VERSION "2.8" register_plugin("Lite Translit", VERSION, "neygomon"); register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY); register_clcmd("say /rus", "LangCtrlRus"); register_clcmd("say /eng", "LangCtrlEng"); register_clcmd("say", "HandlerSay"); register_clcmd("say_team", "HandlerSayTeam"); register_event("ResetHUD", "eResetHUD", "be"); register_event("DeathMsg", "eDeathMsg", "a", "1>0"); } #if defined LT_PREFIXES public plugin_cfg() { g_aData = ArrayCreate(DATA); new buff[256], fp = fopen("addons/amxmodx/configs/lt_prefixes.ini", "rt"); if(!fp) return set_fail_state("File ^"addons/amxmodx/configs/lt_prefixes.ini^" not found"); while(!feof(fp)) { fgets(fp, buff, charsmax(buff)); if(buff[0] && buff[0] != ';' && parse(buff, g_PlayerData[TYPE], charsmax(g_PlayerData[TYPE]), g_PlayerData[AUTH], charsmax(g_PlayerData[AUTH]), g_PlayerData[PREFIX], charsmax(g_PlayerData[PREFIX]))) ArrayPushArray(g_aData, g_PlayerData); } return fclose(fp); } #endif public client_putinserver(id) { #if defined LT_PREFIXES SearchClient(id); #endif #if defined DEF_RUS g_bUseRus[id] = true; #else g_bUseRus[id] = false; #endif #if defined STEAM g_bIsSteam[id] = is_user_steam(id) ? true : false; #endif #if defined ADMIN_ALLCHAT if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id); else ResetBit(g_bitAdmin, id); #endif #if defined TOP_RANK new st[8] new rank = get_user_stats(id,st,st) // проверяем на ТОП if(rank > TOP_RANK){ // игрок не топ игрок return PLUGIN_CONTINUE }else iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "%s", TOP_PREFIX); #endif } public client_disconnect(id) ResetBit(g_bitAlive, id); public eResetHUD(id) SetBit(g_bitAlive, id); public eDeathMsg() ResetBit(g_bitAlive, read_data(2)); public HandlerSay(id) return FormatMsg(id, false); public HandlerSayTeam(id) return FormatMsg(id, true); public LangCtrlRus(id) { if(g_bUseRus[id]) client_print(id, print_chat, "*** [LT] Русский язык УЖЕ включен! ***"); else { client_print(id, print_chat, "*** [LT] Русский язык активирован! ***"); g_bUseRus[id] = true; client_cmd(id, "spk buttons/blip1.wav"); } } public LangCtrlEng(id) { if(!g_bUseRus[id]) client_print(id, print_chat, "*** [LT] Английский язык УЖЕ включен! ***"); else { client_print(id, print_chat, "*** [LT] Английский язык активирован! ***"); g_bUseRus[id] = false; client_cmd(id, "spk buttons/blip1.wav"); } } FormatMsg(id, bool:IsTeam) { #define MAX_BYTES 180 static sMessage[MAX_BYTES], sConvertStr[charsmax(sMessage) * 2 + 1]; read_args(sMessage, charsmax(sMessage)); remove_quotes(sMessage); if(sMessage[0] == EOS || sMessage[0] == '/') return PLUGIN_HANDLED_MAIN; #if defined ANTIFLOOD static Float:fTimeFlood[33], Float:fGameTime, iFloodWarn[33]; if(fTimeFlood[id] > (fGameTime = get_gametime())) { if(++iFloodWarn[id] > 2) { client_print(id, print_chat, "*** [LT] Прекратите флудить! ***"); fTimeFlood[id] = fGameTime + AD_TIME + 3.0; return PLUGIN_HANDLED; } } else if(iFloodWarn[id]) iFloodWarn[id]--; fTimeFlood[id] = fGameTime + AD_TIME; #endif static iLen, sTags[MAX_BYTES], idTeam, sTeam[16]; idTeam = get_user_team(id, sTeam, charsmax(sTeam)); switch(idTeam) { case 1: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3TT^1]" : ""); case 2: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3CT^1]" : ""); default:iLen = formatex(sTags, charsmax(sTags), "^1*^3Spec^1* "); } #if defined GREEN_MSG || (defined TAGS && !defined LT_PREFIXES) static IsAccess; IsAccess = CheckFlags(id); #endif #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], charsmax(AESLvl[]), LANG_SERVER); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^4[%s] ", AESLvl[id]); #endif #if defined STEAM if(g_bIsSteam[id]) iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4Steam^1] "); #endif #if defined TAGS #if defined LT_PREFIXES if(g_szPrefix[id][0]) { replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4"); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s ", g_szPrefix[id]); } #else static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " }; iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s", szAdminPrefix[IsAccess]); #endif #endif #if defined GREEN_MSG switch(IsAccess) { case 0: iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : %%s2"); default:iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : ^4%%s2"); } #else iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : %%s2"); #endif if(g_bUseRus[id]) { new nLen; for(new n; sMessage[n] != EOS; n++) { if('!' <= sMessage[n] <= '~') { sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2}; if(g_chConvert{(sMessage[n] - '!') * 2 + 1} != EOS) sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2 + 1}; } else sConvertStr[nLen++] = sMessage[n]; } sConvertStr[nLen] = EOS; } else sConvertStr = sMessage; static iByteLimit; iByteLimit = MAX_BYTES; while(iLen + strlen(sConvertStr) > MAX_BYTES) sConvertStr[iByteLimit -= 10] = 0; static players[32], pcount; get_players(players, pcount, "c"); switch(IsTeam) { case true: { for(new i; i < pcount; i++) { #if defined ADMIN_ALLCHAT if(GetBit(g_bitAdmin, players[i]) || (GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i]))) #else if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i])) #endif PrintChat(players[i], id, sTags, sConvertStr); } } case false: { for(new i; i < pcount; i++) #if defined DEFAULT_CS_CHAT #if defined ADMIN_ALLCHAT if(GetBit(g_bitAdmin, players[i]) || GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i])) #else if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i])) #endif PrintChat(players[i], id, sTags, sConvertStr); #else PrintChat(players[i], id, sTags, sConvertStr); #endif } } static sAuthId[25], sName[32]; get_user_name(id, sName, charsmax(sName)); get_user_authid(id, sAuthId, charsmax(sAuthId)); log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, IsTeam ? "say_team" : "say" , sConvertStr); return PLUGIN_HANDLED; } PrintChat(iReceiver, iSender, const sTags[], const sMessage[]) { emessage_begin(MSG_ONE, 76, .player=iReceiver); ewrite_byte(iSender); ewrite_string(sTags); ewrite_string(""); ewrite_string(sMessage); emessage_end(); } stock SearchClient(const id) { for(new i; i < ArraySize(g_aData); i++) { ArrayGetArray(g_aData, i, g_PlayerData); switch(g_PlayerData[TYPE]) { case 'f': { if(get_user_flags(id) & read_flags(g_PlayerData[AUTH])) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } case 'i': { static sIP[16]; get_user_ip(id, sIP, charsmax(sIP), 1); if(!strcmp(g_PlayerData[AUTH], sIP)) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } case 's': { static sAuthid[25]; get_user_authid(id, sAuthid, charsmax(sAuthid)); if(!strcmp(g_PlayerData[AUTH], sAuthid)) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } } } return g_szPrefix[id][0] = 0; } 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 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; } |
|
|
|
moba |
7.2.2017, 12:51
Сообщение
|
sergi, код нужно было вставлять ниже, вот этот кусок вставь себе. А вверху где ты вставил в #if defined LT_PREFIXES - сотри.
Код #if defined TAGS
#if defined LT_PREFIXES if(g_szPrefix[id][0]) { replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4"); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s ", g_szPrefix[id]); } #else static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " }; iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s", szAdminPrefix[IsAccess]); #if defined TOP_RANK new st[8] new rank = get_user_stats(id,st,st) // проверяем на ТОП if(rank > TOP_RANK){ // игрок не топ игрок // записываем данные в кеш return PLUGIN_CONTINUE }else // игрок ТОП, сбрасываем указатель iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "%s", TOP_PREFIX); #endif #endif #endif |
|
Поблагодарили 1 раз
|
|
sergi |
7.2.2017, 13:36
Сообщение
|
moba, все сделал прописал но профикса топ нету в чате [Призывник] REVOLUTiON : приве вод код
Cкрытый текст #include <amxmodx> #include <csstats> /* Спасибо PRoSToTeM@ за новый способ транслитерации */ #define TOP_RANK 2 #define TOP_PREFIX "^1[^4TOP^1]" #define TAGS // Теги в чате Гл. Админ | Админ | VIP [ По умолчанию включен ] #if defined TAGS #define LT_PREFIXES // Свои префиксы. Файл addons/amxmodx/configs/lt_prefixes.ini [ По умолчанию выключен ] #endif #define STEAM // Тег стим игрока [ По умолчанию выключен ] #define GREEN_MSG // Зеленый цвет чата админов и випов [ По умолчанию выключен ] #define AES // Поддержка системы армейских званий - AES ( ) [ По умолчанию выключен ] #define DEF_RUS // Русский язык по умолчанию [ По умолчанию английский ] #define GL_ADMIN ADMIN_RCON // Флаг доступа для тега "Гл. Админ" в чате #define ADMIN ADMIN_LEVEL_G // Флаг доступа для тега "Админ" в чате #define VIP ADMIN_LEVEL_H // Флаг доступа для тега "VIP" в чате #define ANTIFLOOD // Замена стандартного плагина antiflood.amxx [ По умолчанию выключен ] #define AD_TIME 0.75 // Время между сообщениями, когда сработает антифлуд система #define ADMIN_ALLCHAT // Показывать весь чат админам [ По умолчанию включен ] //#define DEFAULT_CS_CHAT // Cтандартный чат кс [ По умолчанию выключен ] //Живые общаются только с живыми, мертвые с мертвыми. Админ видит весь чат если ADMIN_ALLCHAT #if defined AES enum _: { AES_ST_EXP, AES_ST_LEVEL, AES_ST_BONUSES, AES_ST_NEXTEXP, AES_ST_END }; native aes_get_player_stats(id, data[4]); native aes_get_level_name(lvlnum, level[], len, idLang = 0); public plugin_natives() set_native_filter("native_filter"); public native_filter(const name[], index, trap) return !trap ? PLUGIN_HANDLED : PLUGIN_CONTINUE; #endif new const g_chConvert[94 * 2 char] = { 0x2100D0AD, 0x2300D0B6, 0x25003F00, 0xD18D2800, 0x29002A00, 0x2B00D0B1, 0x2D00D18E, 0x2E003000, 0x31003200, 0x33003400, 0x35003600, 0x37003800, 0x3900D096, 0xD0B6D091, 0x3D00D0AE, 0x2C002200, 0xD0A4D098, 0xD0A1D092, 0xD0A3D090, 0xD09FD0A0, 0xD0A8D09E, 0xD09BD094, 0xD0ACD0A2, 0xD0A9D097, 0xD099D09A, 0xD0ABD095, 0xD093D09C, 0xD0A6D0A7, 0xD09DD0AF, 0xD1855C00, 0xD18A3A00, 0x5F00D191, 0xD184D0B8, 0xD181D0B2, 0xD183D0B0, 0xD0BFD180, 0xD188D0BE, 0xD0BBD0B4, 0xD18CD182, 0xD189D0B7, 0xD0B9D0BA, 0xD18BD0B5, 0xD0B3D0BC, 0xD186D187, 0xD0BDD18F, 0xD0A52F00, 0xD0AAD081 }; new bool:g_bUseRus[33]; #if defined STEAM new bool:g_bIsSteam[33]; #endif #if defined LT_PREFIXES enum _:DATA { TYPE[2], AUTH[32], PREFIX[64] }; new Array:g_aData, g_PlayerData[DATA]; new g_szPrefix[33][64]; #endif #define GetBit(%1,%2) (%1 & (1 << (%2 & 31))) #define SetBit(%1,%2) %1 |= (1 << (%2 & 31)) #define ResetBit(%1,%2) %1 &= ~(1 << (%2 & 31)) #if defined ADMIN_ALLCHAT new g_bitAdmin; #endif new g_bitAlive; public plugin_init() { #define VERSION "2.8" register_plugin("Lite Translit", VERSION, "neygomon"); register_cvar("lt_version", VERSION, FCVAR_SERVER | FCVAR_SPONLY); register_clcmd("say /rus", "LangCtrlRus"); register_clcmd("say /eng", "LangCtrlEng"); register_clcmd("say", "HandlerSay"); register_clcmd("say_team", "HandlerSayTeam"); register_event("ResetHUD", "eResetHUD", "be"); register_event("DeathMsg", "eDeathMsg", "a", "1>0"); } #if defined LT_PREFIXES public plugin_cfg() { g_aData = ArrayCreate(DATA); new buff[256], fp = fopen("addons/amxmodx/configs/lt_prefixes.ini", "rt"); if(!fp) return set_fail_state("File ^"addons/amxmodx/configs/lt_prefixes.ini^" not found"); while(!feof(fp)) { fgets(fp, buff, charsmax(buff)); if(buff[0] && buff[0] != ';' && parse(buff, g_PlayerData[TYPE], charsmax(g_PlayerData[TYPE]), g_PlayerData[AUTH], charsmax(g_PlayerData[AUTH]), g_PlayerData[PREFIX], charsmax(g_PlayerData[PREFIX]))) ArrayPushArray(g_aData, g_PlayerData); } return fclose(fp); } #endif public client_putinserver(id) { #if defined LT_PREFIXES SearchClient(id); #endif #if defined DEF_RUS g_bUseRus[id] = true; #else g_bUseRus[id] = false; #endif #if defined STEAM g_bIsSteam[id] = is_user_steam(id) ? true : false; #endif #if defined ADMIN_ALLCHAT if(get_user_flags(id) & ADMIN_CHAT) SetBit(g_bitAdmin, id); else ResetBit(g_bitAdmin, id); #endif } public client_disconnect(id) ResetBit(g_bitAlive, id); public eResetHUD(id) SetBit(g_bitAlive, id); public eDeathMsg() ResetBit(g_bitAlive, read_data(2)); public HandlerSay(id) return FormatMsg(id, false); public HandlerSayTeam(id) return FormatMsg(id, true); public LangCtrlRus(id) { if(g_bUseRus[id]) client_print(id, print_chat, "*** [LT] Русский язык УЖЕ включен! ***"); else { client_print(id, print_chat, "*** [LT] Русский язык активирован! ***"); g_bUseRus[id] = true; client_cmd(id, "spk buttons/blip1.wav"); } } public LangCtrlEng(id) { if(!g_bUseRus[id]) client_print(id, print_chat, "*** [LT] Английский язык УЖЕ включен! ***"); else { client_print(id, print_chat, "*** [LT] Английский язык активирован! ***"); g_bUseRus[id] = false; client_cmd(id, "spk buttons/blip1.wav"); } } FormatMsg(id, bool:IsTeam) { #define MAX_BYTES 180 static sMessage[MAX_BYTES], sConvertStr[charsmax(sMessage) * 2 + 1]; read_args(sMessage, charsmax(sMessage)); remove_quotes(sMessage); if(sMessage[0] == EOS || sMessage[0] == '/') return PLUGIN_HANDLED_MAIN; #if defined ANTIFLOOD static Float:fTimeFlood[33], Float:fGameTime, iFloodWarn[33]; if(fTimeFlood[id] > (fGameTime = get_gametime())) { if(++iFloodWarn[id] > 2) { client_print(id, print_chat, "*** [LT] Прекратите флудить! ***"); fTimeFlood[id] = fGameTime + AD_TIME + 3.0; return PLUGIN_HANDLED; } } else if(iFloodWarn[id]) iFloodWarn[id]--; fTimeFlood[id] = fGameTime + AD_TIME; #endif static iLen, sTags[MAX_BYTES], idTeam, sTeam[16]; idTeam = get_user_team(id, sTeam, charsmax(sTeam)); switch(idTeam) { case 1: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3TT^1]" : ""); case 2: iLen = formatex(sTags, charsmax(sTags), "%s%s", GetBit(g_bitAlive, id) ? "^1" : "^1*^3Мертвый^1* ", IsTeam ? "^1[^3CT^1]" : ""); default:iLen = formatex(sTags, charsmax(sTags), "^1*^3Spec^1* "); } #if defined GREEN_MSG || (defined TAGS && !defined LT_PREFIXES) static IsAccess; IsAccess = CheckFlags(id); #endif #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], charsmax(AESLvl[]), LANG_SERVER); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^4[%s] ", AESLvl[id]); #endif #if defined STEAM if(g_bIsSteam[id]) iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^1[^4Steam^1] "); #endif #if defined TAGS #if defined LT_PREFIXES if(g_szPrefix[id][0]) { replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!n", "^1"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!t", "^3"); replace_all(g_szPrefix[id], charsmax(g_szPrefix[]), "!g", "^4"); iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s ", g_szPrefix[id]); } #else static const szAdminPrefix[][] = { "", "^1[^4Гл. Админ^1] ", "^1[^4Админ^1] ", "^1[^4VIP^1] " }; iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "%s", szAdminPrefix[IsAccess]); #if defined TOP_RANK new st[8] new rank = get_user_stats(id,st,st) // проверяем на ТОП if(rank > TOP_RANK){ // игрок не топ игрок // записываем данные в кеш return PLUGIN_CONTINUE }else // игрок ТОП, сбрасываем указатель iLen += formatex (sTags[iLen], charsmax(sTags) - iLen, "%s", TOP_PREFIX); #endif #endif #endif #if defined GREEN_MSG switch(IsAccess) { case 0: iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : %%s2"); default:iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : ^4%%s2"); } #else iLen += formatex(sTags[iLen], charsmax(sTags) - iLen, "^3%%s1^1 : %%s2"); #endif if(g_bUseRus[id]) { new nLen; for(new n; sMessage[n] != EOS; n++) { if('!' <= sMessage[n] <= '~') { sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2}; if(g_chConvert{(sMessage[n] - '!') * 2 + 1} != EOS) sConvertStr[nLen++] = g_chConvert{(sMessage[n] - '!') * 2 + 1}; } else sConvertStr[nLen++] = sMessage[n]; } sConvertStr[nLen] = EOS; } else sConvertStr = sMessage; static iByteLimit; iByteLimit = MAX_BYTES; while(iLen + strlen(sConvertStr) > MAX_BYTES) sConvertStr[iByteLimit -= 10] = 0; static players[32], pcount; get_players(players, pcount, "c"); switch(IsTeam) { case true: { for(new i; i < pcount; i++) { #if defined ADMIN_ALLCHAT if(GetBit(g_bitAdmin, players[i]) || (GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i]))) #else if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i]) && idTeam == get_user_team(players[i])) #endif PrintChat(players[i], id, sTags, sConvertStr); } } case false: { for(new i; i < pcount; i++) #if defined DEFAULT_CS_CHAT #if defined ADMIN_ALLCHAT if(GetBit(g_bitAdmin, players[i]) || GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i])) #else if(GetBit(g_bitAlive, id) == GetBit(g_bitAlive, players[i])) #endif PrintChat(players[i], id, sTags, sConvertStr); #else PrintChat(players[i], id, sTags, sConvertStr); #endif } } static sAuthId[25], sName[32]; get_user_name(id, sName, charsmax(sName)); get_user_authid(id, sAuthId, charsmax(sAuthId)); log_message("^"%s<%d><%s><%s>^" %s ^"%s^"", sName, get_user_userid(id), sAuthId, sTeam, IsTeam ? "say_team" : "say" , sConvertStr); return PLUGIN_HANDLED; } PrintChat(iReceiver, iSender, const sTags[], const sMessage[]) { message_begin(MSG_ONE, 76, .player=iReceiver); write_byte(iSender); write_string(sTags); write_string(""); write_string(sMessage); message_end(); } stock SearchClient(const id) { for(new i; i < ArraySize(g_aData); i++) { ArrayGetArray(g_aData, i, g_PlayerData); switch(g_PlayerData[TYPE]) { case 'f': { if(get_user_flags(id) & read_flags(g_PlayerData[AUTH])) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } case 'i': { static sIP[16]; get_user_ip(id, sIP, charsmax(sIP), 1); if(!strcmp(g_PlayerData[AUTH], sIP)) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } case 's': { static sAuthid[25]; get_user_authid(id, sAuthid, charsmax(sAuthid)); if(!strcmp(g_PlayerData[AUTH], sAuthid)) return copy(g_szPrefix[id], charsmax(g_szPrefix[]), g_PlayerData[PREFIX]); } } } return g_szPrefix[id][0] = 0; } 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 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; } Cкрытый текст ChatLogs.amxx lite_translit.amxx screen_maker.amxx kmansound.amxx admin_freelook.amxx amx_adminlisten.amxx instant_autoteambalance.amxx join_leave.amxx nice_kicker.amxx noplayers_map.amxx players_with_steam.amxx resetscore.amxx antiafk.amxx speclist.amxx statsx_shell.amxx knife_duel.amxx kj2a_menu.amxx nice_killer.amxx Blood_Color.amxx granade_trail.amxx teamwin.amxx lite_damager.amxx damager_zero.amxx weapons_menu.amxx block_buying.amxx round_chat_msg.amxx colored_flashbangs.amxx bombtime.amxx randomskies.amxx pub_inforank.amxx amotd.amxx advert_messages.amxx admin_spec_esp.amxx amx_parachute.amxx |
|
|
|
moba |
7.2.2017, 14:29
Сообщение
|
sergi,
lite_translit.amxx в самое дно пропиши или на мою версию lite_translit_statsX.sma ( 9,06 килобайт ) Кол-во скачиваний: 43
Отредактировал: moba, - 7.2.2017, 14:33
|
|
Поблагодарили 1 раз
|
|
cscms |
7.2.2017, 15:01
Сообщение
|
ПОЖАЛУЙСТА,сделайте версию для csstats mysql от скальпеля,если не трудно,можно за $
|
|
|
|
Dreandy |
11.3.2017, 9:30
Сообщение
|
А с AES данный плагин будет работать?
Кто-нибудь тестировал? критика - это лучший способ изменить человека
|
|
|
|