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

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

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

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

> Правила форума

Этот раздел, как вы могли заметить по названию, предназначен для решения вопросов по поводу уже существующих модов и плагинов.
Пожалуйста, если у вас проблема с написанием плагина, не путайте этот раздел с разделом по скриптингу.
Для поиска плагинов и модов существует соответствующий раздел.

Название темы должно соответствовать содержанию. Темы с названием типа "Помогите", "Вопрос", "парни подскажите..." - будут удалены.
Все темы, не относящиеся к "Вопросам по модам и плагинам", будут удалены или перемещены в соответствующий раздел.

Правила оформления темы:
1. Помимо заголовка не забудьте верно сформулировать свой вопрос.
2. Выложите исходник (в тег кода + ) или ссылку на плагин который вызывает у вас вопросы.
3. Выложите лог с ошибками (если имеется) под спойлер

AmxBans

Статус пользователя TarikYuzkiv
сообщение 21.11.2013, 20:24
Сообщение #1
Стаж: 13 лет

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

И так, всем привет)

Еще давным-давно я поставил фикс от этой ошибки bans'a: Invalid player id 9999. (где брал уже не помню, но это не столь важно)

Сегодня я почему-то вспомнил о нем и решил пересмотреть. Фикс заключается в том, что надо заменить инклюд colorchat'a и закомментировать строку color_chat_init()

И что же я вижу?
Код
public ColorChat(id, Color:type, const msg[], any:...)
{
    new message[256];

    switch(type)
    {
        case YELLOW: // clients scr_concolor cvar color
        {
            message[0] = 0x01;
        }
        case GREEN: // Green
        {
            message[0] = 0x04;
        }
        default: // White, Red, Blue
        {
            message[0] = 0x03;
        }
    }

    vformat(message[1], 191, msg, 4);

    // Make sure message is not longer than 192 character. Will crash the server.
    message[192] = '^0';

    new team, ColorChange, index, MSG_Type;
    
    if(id)
    {
        MSG_Type = MSG_ONE_UNRELIABLE;
        index = id;
    } else {
        index = FindPlayer();
        MSG_Type = MSG_BROADCAST;
    }
    
    team = get_user_team(index);
    ColorChange = ColorSelection(index, MSG_Type, type);
    
    replace_colors(message, 191);

    ShowColorMessage(index, MSG_Type, message);
        
    if(ColorChange)
    {
        Team_Info(index, MSG_Type, TeamName[team]);
    }
    
    return PLUGIN_CONTINUE
}


new message[256];
А ведь вроде как больше, чем 192 приводит к падению сервера... Вопрос вот в чём: я прав? :D
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Legenda
сообщение 21.11.2013, 20:26
Сообщение #2


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

Стаж: 16 лет

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

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

написано же
vformat(message[1], 191, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя TarikYuzkiv
сообщение 21.11.2013, 20:27
Сообщение #3
Стаж: 13 лет

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

Цитата(Legenda @ 21.11.2013, 22:26) *
написано же
vformat(message[1], 191, msg, 4);
// Make sure message is not longer than 192 character. Will crash the server.
message[192] = '^0';

Хм, действительно, надо было полностью пересмотреть код, а не бежать в гугл)

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