Поддержка русских букв и цветного цвета RCON

lanhg3r

Участник
Сообщения
93
Реакции
4
Операционная система
Linux
Всем привет!
Пишу своего бота на Python, подключается, все отлично работает, хотелось бы узнать, каким образом я могу писать русскими буквами через RCON say и с поддержкой цветного текста?
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,552
Реакции
5,028
@lanhg3r, там только в кодировке заковыка, емнип. Какую кодировку нужно использовать для текста не скажу точно, но вроде UTF-8 должна использоваться.
Консоль сервера не позволяет вводить кириллицу, но у RCON вроде нет такого ограничения.

Ну а цветной текст кодируется символами (у меня в файле перевода для Revival представлены эти символы).
 

Вложения

  • revival.phrases.txt
    2.9 КБ · Просмотры: 17

lanhg3r

Участник
Сообщения
93
Реакции
4
@lanhg3r, там только в кодировке заковыка, емнип. Какую кодировку нужно использовать для текста не скажу точно, но вроде UTF-8 должна использоваться.
Консоль сервера не позволяет вводить кириллицу, но у RCON вроде нет такого ограничения.

Ну а цветной текст кодируется символами (у меня в файле перевода для Revival представлены эти символы).
хорошо, сейчас пороюсь поищу, как выставить кодировку
Сообщения автоматически склеены:

кодировку выставил, все отлично работает, спасибо
Сообщения автоматически склеены:

А как-нибудь можно сделать, чтобы цвета использовались с плагина cs go colors?
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
хорошо, сейчас пороюсь поищу, как выставить кодировку
Сообщения автоматически склеены:

кодировку выставил, все отлично работает, спасибо
Сообщения автоматически склеены:

А как-нибудь можно сделать, чтобы цвета использовались с плагина cs go colors?
С плагина или библиотеки?
Для плагина:
подключаешь библиотеку в плагин через #include <csgo_colors>
и меняешь стандартные функции вывода на библиотечные
PrintToChat ----> CGOPrintToChat
Думаю, через библиотеку это не реализовать таким образом как требуется
 

lanhg3r

Участник
Сообщения
93
Реакции
4
С плагина или библиотеки?
Для плагина:
подключаешь библиотеку в плагин через #include <csgo_colors>
и меняешь стандартные функции вывода на библиотечные
PrintToChat ----> CGOPrintToChat
Думаю, через библиотеку это не реализовать таким образом как требуется
окей, а цвета в байтах узнать где можно? по типу \0x7 и тд.
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
окей, а цвета в байтах узнать где можно? по типу \0x7 и тд.
Про это?
default (white): \x01
teamcolour (will be purple if message from server): \x03
red: \x07
lightred: \x0F
darkred: \x02
bluegrey: \x0A
blue: \x0B
darkblue: \x0C
purple: \x03
orchid: \x0E
yellow: \x09
gold: \x10
lightgreen: \x05
green: \x04
lime: \x06
grey: \x08
grey2: \x0D
 

lanhg3r

Участник
Сообщения
93
Реакции
4
Про это?
default (white): \x01
teamcolour (will be purple if message from server): \x03
red: \x07
lightred: \x0F
darkred: \x02
bluegrey: \x0A
blue: \x0B
darkblue: \x0C
purple: \x03
orchid: \x0E
yellow: \x09
gold: \x10
lightgreen: \x05
green: \x04
lime: \x06
grey: \x08
grey2: \x0D
да, спасибо огромное
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,552
Реакции
5,028
окей, а цвета в байтах узнать где можно? по типу \0x7 и тд.
csgo_colors_.png
 

lanhg3r

Участник
Сообщения
93
Реакции
4
Можете ещё подсказать, как можно отправить сообщение, может через плагин какой, чтобы не было в сообщении Console: и текст
 

Palonez

бб братки
Сообщения
3,035
Реакции
1,837
Можете ещё подсказать, как можно отправить сообщение, может через плагин какой, чтобы не было в сообщении Console: и текст
Отправлять сообщения от имени бота например, а не от консоли и изменив его в процессе
 

Kruzya

Участник
Сообщения
12,970
Реакции
10,921
  • Команда форума
  • #13
@lanhg3r, написать плагин-прослойку, который напрямую в чат писать будет. say - команда для оператора сервера, а не для кастом кода с рконом.
 

lanhg3r

Участник
Сообщения
93
Реакции
4
@lanhg3r, написать плагин-прослойку, который напрямую в чат писать будет. say - команда для оператора сервера, а не для кастом кода с рконом.
Сложновато будет сделать мне такое, я не имею опыта в разработке на SourcePawn, онли питон
Сообщения автоматически склеены:

я видел похожую функцию в плагине от Flames в его плагине-модуле [LR WEB] Chat Logging
 

Svyatoy

Участник
Сообщения
335
Реакции
137
я видел похожую функцию в плагине от Flames в его плагине-модуле [LR WEB] Chat Logging
Насколько я помню - ты прав. У нас была серверная команда и со стороны Web Flames через rcon инициировал её исполнение на сервере с необходимыми аргументами. С кириллицей проблем не помню и в таком случае сообщение можно редактировать и окрашивать как угодно
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,552
Реакции
5,028
@lanhg3r, да нет там ничего сложного, в принципе: код вывода текста в чат там в куче плагинов найти можно.
Просто сделать серверную команду, а потом отправлять её ботом с текстом в качестве параметра.
Разве что будет ограничение на длину текста (не помню сколько символов можно передать в качестве аргументов команды).
 

Paranoiiik

хачю клиентмод
Сообщения
2,047
Реакции
1,490
Сложновато будет сделать мне такое, я не имею опыта в разработке на SourcePawn, онли питон
Сообщения автоматически склеены:

я видел похожую функцию в плагине от Flames в его плагине-модуле [LR WEB] Chat Logging
Как-нибудь так что ли:
C-подобный:
#pragma semicolon 1
#pragma newdecls required

#include csgo_colors

#define PREFIX "{PURPLE}БОТ {GRAY}> "

public void OnPluginStart()
{
    RegServerCmd("srv_say", commandServerCustomSay); // В консоль -- srv_say "{b}Привет всем{r}!\n{d}Технические работы начинаются{r}!"
}

public Action commandServerCustomSay(int args)
{
    char sMessage[256];
    if(GetCmdArgString(sMessage, sizeof sMessage))
    {
        if(StrContains(sMessage, "{d}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{d}", "{DEFAULT}");
        if(StrContains(sMessage, "{r}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{r}", "{RED}");
        if(StrContains(sMessage, "{lp}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{lp}", "{LIGHTPURPLE}");
        if(StrContains(sMessage, "{gn}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{gn}", "{GREEN}");
        if(StrContains(sMessage, "{l}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{l}", "{LIME}");
        if(StrContains(sMessage, "{lg}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{lg}", "{LIGHTGREEN}");
        if(StrContains(sMessage, "{lr}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{lr}", "{LIGHTRED}");
        if(StrContains(sMessage, "{g}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{g}", "{GRAY}");
        if(StrContains(sMessage, "{lo}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{lo}", "{LIGHTOLIVE}");
        if(StrContains(sMessage, "{o}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{o}", "{OLIVE}");
        if(StrContains(sMessage, "{lb}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{lb}", "{LIGHTBLUE}");
        if(StrContains(sMessage, "{b}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{b}", "{BLUE}");
        if(StrContains(sMessage, "{p}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{p}", "{PURPLE}");
        if(StrContains(sMessage, "{gb}") != -1)    ReplaceString(sMessage, sizeof sMessage, "{gb}", "{GRAYBLUE}");
       
        CGOPrintToChatAll("%s%s", PREFIX, sMessage);
    }
    else PrintToServer("tyt pysto dolboyob");
   
    return Plugin_Handled;
}

// Можно писать сокращённые названия цветов, а то мороки много слишком постоянно будет:
// -
// {d} == {DEFAULT}
// {r} == {RED}
// {lp} == {LIGHTPURPLE}
// {gn} == {GREEN}
// {l} == {LIME}
// {lg} == {LIGHTGREEN}
// {lr} == {LIGHTRED}
// {g} == {GRAY}
// {lo} == {LIGHTOLIVE}
// {o} == {OLIVE}
// {lb} == {LIGHTBLUE}
// {b} == {BLUE}
// {p} == {PURPLE}
// {gb} == {GRAYBLUE}
 

Grey83

не пишу плагины с весны 2022
Сообщения
8,552
Реакции
5,028
@Paranoiiik, if(StrContains(sMessage, "{*}") != -1) перед ReplaceString() не нужно.
Сообщения автоматически склеены:

Можно без инклюдов обойтись.
Вот теги цветов:
цвета в чате:
    COLORS[][][]=
{
    {"{default}",    "{d}",    "\x01"},
    {"{white}",        "{w}",    "\x01"},
    {"{darkred}",    "{dr}",    "\x02"},
    {"{team}",        "{t}",    "\x03"},
    {"{green}",        "{g}",    "\x04"},
    {"{lime}",        "{l}",    "\x05"},
    {"{lightgreen}","{lg}",    "\x06"},
    {"{red}",        "{r}",    "\x07"},
    {"{gray}",        "{gr}",    "\x08"},
    {"{lightolive}","{lo}",    "\x09"},
    {"{olive}",        "{o}",    "\x10"},
    {"{bluegrey}",    "{bg}",    "\x0A"},
    {"{lightblue}",    "{lb}",    "\x0B"},
    {"{blue}",        "{b}",    "\x0C"},
    {"{purple}",    "{p}",    "\x0E"},
    {"{lightred}",    "{lr}",    "\x0F"}
};
Также можно кваром указать какой префикс будет у сообщений (квар sm_bot_say_prefix: дефолтом должно писать сиреневым "CS:GO").
Если нужно изменить значение квара, то прописывайте его в server.cfg
 

Вложения

  • sm_bot_say 1.0.0_01.09.2022.sp
    3.2 КБ · Просмотры: 6
Последнее редактирование:
Сверху Снизу