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

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

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

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

2 страниц V   1 2

bhpk+chatcolor+multilang

, помогите =)
Статус пользователя AndrewZ
сообщение 12.8.2011, 16:35
Сообщение #1


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

Помогите, хотел добавить к бхпк колорчат и мультиланг, в общем получилось так, что пишет ML_NOTFOUND...
Ланг в utf-8 without BOM.. Я наверно что-то пропустил?)

bhpk.sma
Код
/*    AMX Mod script

    Better High Ping Kicker (c) 2009 by Lev
    This file is provided as is (no warranties).

    URL: http://forums.alliedmods.net/showthread.php?t=85911

    This is mainly a modification of HPK by DynAstY.
    Thanks to all other HPK authors (OLO, DynAstY, shadow, EKS) - your plugins provided the base.

    Features:
        Players with immunity and slot reservations won't be checked.
        At night max ping defined by different CVAR (so usually it will be higher).
        By default keeps min 3 players (bots and hltv are not included) at server if they are not exceed night max ping twice.
        Player is banned for 1 minute, not just simply kicked.

    CVARs (Supplied values are defaults):
        hpk_ping_max 175; maximim ping to check for at day time
        hpk_ping_max_night 300; maximim ping to check for at night time
        hpk_ping_time 10; interval at which ping will be checked
        hpk_ping_tests 5; number of violations of maximum ping at which to kick
        hpk_min_players 3; don't kick player if there is this count or less players (bots and hltv are not included) at server and player's ping doesn't exceed night ping twice.
        hpk_night_start_hour 3; night period start hour (hour included)
        hpk_night_end_hour 9; night period end hour (hour excluded)

    How it is different from other HPK plugins:
        using pointers to CVARs;
        code flow is optimized;
        there is night period when ping defined by different CVAR, period also defined by CVARs;
        changes to max pings applies immediately;
        immunity for admins and slot reservations players;
        keeps min players at server (count defined by CVAR) if their ping is not too high (double night max ping);

    ChangeLog:
        v2.4 [2009.03.01]
            Initial release.
        v2.5 [2009.10.02]
            ! Change: bots and hltv are now excluded from players count for comparision with hpk_min_players.
        v2.6 [2009.10.10]
            ! Change: changed from ban ID to ban IP.
*/

#pragma semicolon 1
#pragma ctrlchar '\'

#include <amxmodx>
#include <amxmisc>
#include <chatcolor>

#define AUTHOR "Lev"
#define PLUGIN "Better High Ping Kicker"
#define VERSION "2.6"
#define VERSION_CVAR "bhpk_version"

#define ALWAYS_KICK_MULTIPLIER 2        // Player will be kicked even there is less then or equal min_players if player's ping exceed night max ping by this factor.
#define DELAY_BEFORE_START_TESTING 20.0    // Delay before showing warning and start ping checking. Real testing starts after hpk_ping_time also passed.

const TASK_ID_BASE = 52635;    // random number

const min_hpk_ping_max = 10;
const min_hpk_ping_time = 10;
const min_hpk_ping_tests = 4;

new pcvar_hpk_ping_max;
new pcvar_hpk_ping_max_night;
new pcvar_hpk_ping_time;
new pcvar_hpk_ping_tests;
new pcvar_hpk_min_players;
new pcvar_hpk_night_start_hour;
new pcvar_hpk_night_end_hour;

new ping_violations[33];

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR);
    register_cvar(VERSION_CVAR, VERSION, FCVAR_SERVER);
    register_dictionary ( "bhpk.txt" );

    pcvar_hpk_ping_max = register_cvar("hpk_ping_max", "175");
    pcvar_hpk_ping_max_night = register_cvar("hpk_ping_max_night", "300");
    pcvar_hpk_ping_time = register_cvar("hpk_ping_time", "10");
    pcvar_hpk_ping_tests = register_cvar("hpk_ping_tests", "5");
    pcvar_hpk_min_players = register_cvar("hpk_min_players", "3");
    pcvar_hpk_night_start_hour = register_cvar("hpk_night_start_hour", "3");
    pcvar_hpk_night_end_hour = register_cvar("hpk_night_end_hour", "9");
}
    
public client_putinserver(plrid)
{
    ping_violations[plrid] = 0;
    if (!is_user_bot(plrid) && !is_user_hltv(plrid))
        set_task(DELAY_BEFORE_START_TESTING, "showInfo", TASK_ID_BASE + plrid);
    return PLUGIN_CONTINUE;
}

public client_infochanged(plrid)
{
    remove_task(TASK_ID_BASE + plrid);
    if (!is_user_bot(plrid) && !is_user_hltv(plrid))
        set_task(DELAY_BEFORE_START_TESTING, "showInfo", TASK_ID_BASE + plrid);
    return PLUGIN_CONTINUE;
}

public client_disconnect(plrid)
{
    remove_task(TASK_ID_BASE + plrid);
    return PLUGIN_CONTINUE;
}

public showInfo(taskid)
{
    new plrid = taskid - TASK_ID_BASE;
    if (access(plrid, ADMIN_IMMUNITY) || access(plrid, ADMIN_RESERVATION))
        client_print(plrid, print_chat, "%L", "IMMUNITY" );
    else
    {
        client_print_color(plrid, Blue, "%L", "WILL_BE", get_hpk_ping_max());
        set_task(float(get_hpk_ping_time()), "checkPing", TASK_ID_BASE + plrid, _, _, "b");
    }
    return PLUGIN_CONTINUE;
}

public checkPing(taskid)
{
    new plrid = taskid - TASK_ID_BASE;
    new ping, loss;

    get_user_ping(plrid, ping, loss);

    if (ping > get_hpk_ping_max()) ping_violations[plrid]++;
    else if (ping_violations[plrid] > 0) ping_violations[plrid]--;

    new hpk_ping_tests = get_hpk_ping_tests();
    if (ping_violations[plrid] >= hpk_ping_tests)
    {
        static players[32];
        new playerCount;
        get_players(players, playerCount, "ch");
        // Allow player to stay if there is less or equal than 'min_players' players and player ping is not too high.
        if (playerCount <= get_pcvar_num(pcvar_hpk_min_players) &&
            ping < get_pcvar_num(pcvar_hpk_ping_max_night) * ALWAYS_KICK_MULTIPLIER)
        {
            ping_violations[plrid] = hpk_ping_tests;
            return PLUGIN_CONTINUE;
        }
        kickPlayer(plrid);
    }

    return PLUGIN_CONTINUE;
}

kickPlayer(plrid)
{
    new name[33], ip[15];
    get_user_name(plrid, name, sizeof(name) - 1);
    get_user_ip(plrid, ip, charsmax(ip), 1);

    client_cmd(plrid, "echo \"Sorry but you have high ping, try later...\"; disconnect");
    server_cmd("addip 1 %s", ip);
    client_print_color(0, Blue, "%L", "WAS", name);
    return PLUGIN_CONTINUE;
}

get_hpk_ping_max()
{
    new ping_max;
    new hour, minute, second;

    time(hour, minute, second);

    // At night we use different CVAR
    if (hour >= get_pcvar_num(pcvar_hpk_night_start_hour) &&
        hour < get_pcvar_num(pcvar_hpk_night_end_hour))
        ping_max = get_pcvar_num(pcvar_hpk_ping_max_night);
    else
        ping_max = get_pcvar_num(pcvar_hpk_ping_max);
    // Check to be no less then minimum value
    if (ping_max < min_hpk_ping_max) return min_hpk_ping_max;
    return ping_max;
}
get_hpk_ping_time()
{
    new time = get_pcvar_num(pcvar_hpk_ping_time);
    // Check to be no less then minimum value
    if (time < min_hpk_ping_time) return min_hpk_ping_time;
    return time;
}
get_hpk_ping_tests()
{
    new tests = get_pcvar_num(pcvar_hpk_ping_tests);
    // Check to be no less then minimum value
    if (tests < min_hpk_ping_tests) return min_hpk_ping_tests;
    return tests;
}



bhpk.txt

[en]
IMMUNITY = Ping checking disabled due to immunity...
WILL_BE = !nPlayers with ping higher than !t%dms !nwill be kicked!
WAS = !t%!n was disconnected due to high ping!


[ru]
IMMUNITY = Проверка пинга выключена, у вас иммунитет...
WILL_BE = !nИгроки с пингом !t%dms !nбудут кикнуты!
WAS = !t%!n отключен из за большого пинга!


ДА, !t%!n я уже заметил :D но всеравно ничего не отображается

Отредактировал: ZZZombiE, - 12.8.2011, 16:27


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
FixX
сообщение 12.8.2011, 16:37
Сообщение #2
Стаж: 15 лет

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

а без ланг-файла пробовал?:D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.8.2011, 16:40
Сообщение #3


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

FixX,
надо ланг)


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
FixX
сообщение 12.8.2011, 16:45
Сообщение #4
Стаж: 15 лет

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

Цитата(ZZZombiE @ 12.8.2011, 17:40) *
FixX,
надо ланг)

хм, как вариант сделай квар на язык и впили в сам плагин русский и английский, бредово конечно но будет работать)
посмотри еще раз может что-то упустил)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Yes I Do Not
сообщение 12.8.2011, 16:46
Сообщение #5


Стаж: 15 лет

Сообщений: 260
Благодарностей: 68
Полезность: 220

Покажи chatcolor.inc,
https://c-s.net.ua/forum/topic14744.html
client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG", score )
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
FixX
сообщение 12.8.2011, 16:48
Сообщение #6
Стаж: 15 лет

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

Цитата(MicroSD @ 12.8.2011, 17:46) *
client_print(0, print_chat, "[AMXX] %L", LANG_PLAYER, "MSG", score )

опередил=\
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.8.2011, 16:55
Сообщение #7


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

MicroSD,
аааа LANG_PLAYER, совсем забыл, спасибо, щас попробую!

MicroSD,
все работает, спaсибо :D


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.8.2011, 18:38
Сообщение #8


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

почему с LANG_PLAYER даже если выбран язык Русский, сообщения вылазиют на английском? А иногда на русском..

Отредактировал: ZZZombiE, - 12.8.2011, 18:39


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Yes I Do Not
сообщение 12.8.2011, 18:55
Сообщение #9


Стаж: 15 лет

Сообщений: 260
Благодарностей: 68
Полезность: 220

У меня такое тож бывает, ето наверно из-за ColorChat'a. Кто знает ответьте в чем причина.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.8.2011, 19:09
Сообщение #10


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

MicroSD,
не думаю, у меня в биохазарде есть dHUD сообщение, так вот там тоже используется LANG_PLAYER и оно так глючит, при этом есть еще несколько dhud, но там нету LANG_PLAYER (как-то по другому устроено) и вот они нормально отображают разные языки..

Отредактировал: ZZZombiE, - 12.8.2011, 19:18


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 12.8.2011, 19:48
Сообщение #11


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

ааа "LANG_PLAYER если первый аргумент равен 0 в других случаях вместо LANG_PLAYER должен быть первый аргумент."
но все таки проблема есть если первый аргумент 0 sad.gif

Отредактировал: ZZZombiE, - 12.8.2011, 19:52


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


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

все равно хрень такая, поставил язык сервера на русский, теперь хоть по-русски будет

блеа, даже по-английски все равно пишет иногда, что за бред?sad.gif


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя H@ROS
сообщение 14.8.2011, 14:20
Сообщение #13


Стаж: 14 лет

Сообщений: 102
Благодарностей: 17
Полезность: 134

Это из-за языка клиента. На верняк используй вместо LANG_PLAYER → LANG_SERVER.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Yes I Do Not
сообщение 14.8.2011, 17:46
Сообщение #14


Стаж: 15 лет

Сообщений: 260
Благодарностей: 68
Полезность: 220

Цитата(H@ROS @ 14.8.2011, 15:20) *
Это из-за языка клиента. На верняк используй вместо LANG_PLAYER → LANG_SERVER.

Но тогда всем будет выводится сообщения на языке сервера, и смысл тогда с мультиязычности?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 14.8.2011, 18:33
Сообщение #15


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

MicroSD,
ну так хоть только русский можно выставить.. Хотя да, смысла нет)
Мне кстати уже подсказали как сделать все :3

Отредактировал: ZZZombiE, - 14.8.2011, 18:33


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Yes I Do Not
сообщение 14.8.2011, 19:17
Сообщение #16


Стаж: 15 лет

Сообщений: 260
Благодарностей: 68
Полезность: 220

Цитата(ZZZombiE @ 14.8.2011, 19:33) *
Мне кстати уже подсказали как сделать все :3

Как?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 14.8.2011, 19:28
Сообщение #17


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

надеюсь он не будет против :3
Кусочек кода из bhpk

kickPlayer(plrid)
{
new name[33], ip[15];
get_user_name(plrid, name, sizeof(name) - 1);
get_user_ip(plrid, ip, charsmax(ip), 1);

client_cmd(plrid, "echo \"Sorry but you have high ping, try later...\"; disconnect");
server_cmd("addip 1 %s", ip);
//client_print_color(0, Blue, "%L", "WAS", name);
// Этот вариант больше жрёт ресурсов, но эффективней против ЛАНГ_ПЛЕЕР
for ( new i; i <= get_maxplayers (); i++ )
{
if ( is_user_connected ( i )
{
client_print_color(i, Blue, "%L", i, "WAS", name);
}
//
return PLUGIN_CONTINUE;
}

Я кстати сам пока что не пробовал, но должно работать, я думаю.

Отредактировал: ZZZombiE, - 14.8.2011, 19:30


Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Yes I Do Not
сообщение 14.8.2011, 19:51
Сообщение #18


Стаж: 15 лет

Сообщений: 260
Благодарностей: 68
Полезность: 220

if ( is_user_connected ( i ))
ZZZombiE,
Спс гляну, Кстате
v2.7 [2011.06.16]
! New: added logging of kicks to amxx log.
! Change: disconnect changed to server side kick.
Better High Ping Kicker 2.7
и еще
Это
Код
client_cmd(plrid, "echo \"Sorry but you have high ping, try later...\"; disconnect");
server_cmd("addip 1 %s", ip);

Тоже можно перевести
Вот так
Код
    new userid = get_user_userid(plrid);
    new szMsg[192];
    format(szMsg, 191, "%L", plrid, "BHPK_KICK_PLAYER");
    server_cmd("kick #%d ^"%s^"; addip 1 ^"%s^"", userid, szMsg, ip);


Отредактировал: MicroSD, - 14.8.2011, 20:16
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя H@ROS
сообщение 15.8.2011, 3:50
Сообщение #19


Стаж: 14 лет

Сообщений: 102
Благодарностей: 17
Полезность: 134

Цитата(MicroSD @ 14.8.2011, 18:46) *
Но тогда всем будет выводится сообщения на языке сервера, и смысл тогда с мультиязычности?

Во всяком случае на 4554 билде CS я лично проблем с мультиязычностью не наблюдал, но игроки говорили об этой проблеме. У меня чисто рускоязычные серверы, так что мне помог именно этот метод.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя AndrewZ
сообщение 15.8.2011, 8:33
Сообщение #20


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

Стаж: 18 лет
Город: Санкт-Петербург


Сообщений: 4700
Благодарностей: 2452
Полезность: 1018

H@ROS,
ну если чисто русскоязычные то можно не париться и вписывать текст прямо в исходник...


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