Игровой чат на сайте

Logan22

Гений мысли
Проверенный
Знаток Lineage2
Орден Почета
Мастер реакций
Любитель реакций
Знаток письма
Медаль Благодарности
Старожил I степени
Медаль за активность на Форуме
За заслуги перед форумом
Преподаватель
За веру и верность форуму
Сообщения
1 638
Розыгрыши
0
Решения
3
Репутация
1 747
Реакции
1 481
Баллы
1 808
Для вывода чата из игры на сайт.

Необходимо включить сохранение лога чата, как правило в конфигах есть опция.
INI:
# Enable logging of chat messages
LogChat = True
Предположим, что Вы включили и у вас чат игроков записывается в файл <gameserver\log\chat.log>.

Теперь я хочу рассказать как это работает под капотом.
Мы имеем программу (вы её можете написать сами на любом ЯП или взять мою), которая будет парсить файл чата раз в секунду, только в том случае если размер файла был изменен исходя из последнего парса.
Спарсенные новые строки, мы отправляем в БД сайта, в таблицу chat.

Теперь как это работает на сайте?
Сфера изымает из своей бд чат 1 раз в секунду, вне зависимости от кол-ва пользователей на сайте, и пользователи получают ранее сохраненную копию чата.
Таким образом, не создается никаких нагрузок на БД.

Приступим
Включаем вывод чата от Вашего сервера.
Заходим в админ меню -> Сервер -> Настройки -> Список . Серверу, которому хотите сделать вывод чата, выберите "Редактировать" и внизу включите чат.


Теперь по программе парсера чата.
Программу нужно запустить на сервере, запускать можно с любого места.
Главное настроить конфиг.
Где необходимо указать месторасположение файла чата.
И server_id - это ID Вашего сервера, он пишется в адресной при наведении на ссылку.
В моем случае на скрине ID сервера 1
1688305850887.png
Укажите подключения к БД.
source и protocol на данный момент нет необходимости указывать.
JSON:
{
  "chat_file": "chat.log",
  "server_id": 1,
  "source": "",
  "protocol": 0,
  "DB_Host": "localhost",
  "DB_User": "root",
  "DB_Pass": "",
  "DB_Name": "sphereweb"
}

Теперь можно запускать программу из терминала (если на Windows запустить не из терминала, она сразу же закроется в случае ошибки).


В моем случае файл лога выглядит так.
Если у Вас другая структура сохранения лога, то регулярное выражения парсера работать не будет, произойдет ошибка.
Чтоб я настроил парсер для вашу сборку, мне необходимо заполенный (чем больше тем лучше) файл чата лога, с указанием что за сборка и версия клиента.

Загрузить можно для версии Windows и Linux.

Если будут ошибки, или вопросы, пишите, решим.
 

Вложения

  • L2Chat Windows.zip
    1,8 МБ · Просмотры: 82
  • L2Chat Linux.zip
    3,4 МБ · Просмотры: 63

не успел вникнуть. писать с сайта в чат можно? было бы удобно, оставив например чара на трейде или в афк, переписываться с работы в браузере
 
  • Ха-ха-ха
Реакции: raz
не успел вникнуть. писать с сайта в чат можно? было бы удобно, оставив например чара на трейде или в афк, переписываться с работы в браузере
Конечно нет, сервера такие возможности не предоставляют
 
Конечно нет, сервера такие возможности не предоставляют
жаль. было бы прикольно, прикрутить например в ЛК на сайте, запаралелив пакетку чата клиента и браузера
 
С исходниками сервера прикрутить будет не сложно к web. Отправку и прием сообщений
 
если серверов более двух, отображение статистики накладывается друг на друга, как поправить код кто занет ?)
Код:
            <div class="header__server">
                <div class="header__server-item-position">
                {% for server in server_online_status() %}
                    <div class="header__server-item">
                        <div class="header__server-item-icon">
                            <img src="{{template}}/storage/images/tn1bZ9rL7z8g3W75oqTy7QMPhYeBEVkA8yfUkY3Y.png" alt="server icon">
                        </div>
                        <div class="header__server-item-description">
                            <div class="header__server-item-info">
                                <div class="header__server-item-name">{{server.name}} <span> x{{server.rate_exp}}</span></div>
                                <div class="header__server-item-text">в игре: <span>{% for online in server_online_status() %}{{online['player_count_online']}}{% endfor %}</span></div>
                            </div>
                            
                        </div>
                    </div>
                    {% endfor %}
                </div>
            </div>
 
если серверов более двух, отображение статистики накладывается друг на друга, как поправить код кто занет ?)
Проблема в верстке/стилях. Открываем свои css файлы и начинаем смотреть что указано для .header__server, .header__server-item-position, .header__server-item и дочерние классы.
Сюда все это непотребство кидать не нужно, предупреждаю сразу :pandaredlol: ибо нет смысла на это смотреть без самого сайта и "инструмента веб-разработчика"

п.с. - вообще какое отношение имеет твой рендер статуса серваков к чату?! То темы не в тех разделах, теперь вот это...
 
Назад
Сверху Снизу