Аналог ChatModern

nolyd

Участник
Сообщения
2
Реакции
1
Игра: CSS OB

Написать подобие - https://github.com/deathscore13/ChatModern (Желательно библиотекой)

Проблемы 2 в текущей реализации, которые нужно устранить.

1. Бесконечный цикл при отсутствии текста перед цветом
В текущей версии, если перед кодом цвета отсутствует текст, возникает бесконечный цикл, что может привести к зависанию или крашу сервера.

2. Некорректный перенос мультибайтных символов
Обработка строк с мультибайтными символами (например, UTF-8) осуществляется неэффективно. В результате может произойти потеря части символа, что нарушает отображение цветов и приводит к ошибкам.
 

DeathScore13

пирожок. пирожочек.
Сообщения
734
Реакции
403
2. Некорректный перенос мультибайтных символов
Обработка строк с мультибайтными символами (например, UTF-8) осуществляется неэффективно. В результате может произойти потеря части символа, что нарушает отображение цветов и приводит к ошибкам.
было бы здорово написать issue в репозитории с примером воспроизведения проблемы. я ни разу с таким не сталкивался. а, кстати, в игрушке нет полноценной поддержки UTF-8, поскольку она принимает максимум 3 байта, а не 4

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

этот проект не заброшен, все проблемы будут устранены после выпуска хотя бы первой версии spcat, сейчас у меня нет времени на него. если есть желание, можете сделать pull request с исправлениями
 

nolyd

Участник
Сообщения
2
Реакции
1
Попозже закину это и в issue, большое спасибо, будем ждать!

cm_test - лаг/краш сервера
cm_test2 - ломание цвета
cm_test3 - ломание цвета х2
cm_test4 - какой то странный перенос

#include <chatmodern>

ChatModern cm;

public void OnPluginStart()
{
cm = new ChatModern(GetEngineVersion());

cm.CPrintToChatAll("test{#FFFFFF}");
}

#include <chatmodern>

ChatModern cm;

public void OnPluginStart()
{
cm = new ChatModern(GetEngineVersion());

cm.CPrintToChatAll("{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g{#FFFFFF}g");
}

#include <chatmodern>

ChatModern cm;

public void OnPluginStart()
{
cm = new ChatModern(GetEngineVersion());
cm.CPrintToChatAll("(Наблюдатель) {#FFFFFF}ттттттттттттттттттттттттттт {#FFFFFF}who: {#FF00E0}sd f{#EC0BE2}g;s{#D817E4}dlg{#C522E7};sвапаволпавоdfhjgfdgjfdkljf{#B12EE9}dg;{#9D3AEB}lfg{#8A45EE};l щ{#7651F0}зап{#635CF3}щка{#4F68F5}упу{#3B74F7}щзх{#287FFA}кап");
}

#include <chatmodern>

ChatModern cm;

public void OnPluginStart()
{
cm = new ChatModern(GetEngineVersion());

cm.CPrintToChatAll("test {#FFFFFF}who: {#FF00E0}djfgj{#F008E1}fdg jf{#E111E3}dgjfd {#D21AE5}gfdk g{#C323E7}jfdkg{#B42CE9}jijri {#A535EA}ogjer{#963EEC}ogjdi{#8747EE}ogdfh{#784FF0}jgi of{#6958F2}hj шпо{#5A61F4}рушщ п{#4B6AF5}орукш{#3C73F7}пщаво{#2D7CF9}пшапо");
}
 
Сверху Снизу