Русское сообщество по скриптингу

Не правильно отображает русский шрифт

Все вопросы по работе и настройке AMXX и его плагинов.

Модератор: liFe iS GoOD

Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только вопросов по AMX Mod X и его плагинам.

Не правильно отображает русский шрифт

Сообщение [N][E][M][E][C] » 27 сен 2021, 12:08

Добрый день, подскажите пожалуйста!!! Сделал набросок для изменения текста сообщения при английской раскладке все хорошо, при смене раскладки на рус, теряются буквы. В чем проблема???
Код: Выделить всё
#include <amxmodx>         

#define PLUGIN "test"
#define VERSION "1.0"                                               
#define AUTHOR "test" 

new const originalSIMVOL[][] = { "^x01", "^x03", "^x04" }
new const newSIMVOL[][] = { "^1", "^3", "^4" }
                                                                                          
new chat
[1024];
                                                     
public plugin_init
() {
    register_plugin(PLUGIN, VERSION, AUTHOR); 

    register_message
(get_user_msgid("SayText"),"goChangeText");
}
                                                
                                                                 
public goChangeText
(msgId, msgDest, msgEnt) {
    new new_chat[1024];                                   
    static indexPLAYER
, const_flags;
    
    indexPLAYER 
= get_msg_arg_int(1);
    
    if
(!is_user_connected(indexPLAYER))
        return;                                                                               
                                            
    const_flags 
= get_user_flags(indexPLAYER);
    get_msg_arg_string(2, chat, charsmax(chat));
     
    for
(new i; i < sizeof(originalSIMVOL); ++ i)
                replace_all(new_chat, charsmax(new_chat), newSIMVOL[i], originalSIMVOL[i]);
                                  
    switch
(const_flags) {                       
        case 2097151
: //битсумма флагов "abcdefghijklmnopqrstu"                                                        
            add(new_chat, charsmax(new_chat), "^4 BOSS ^3");                                                   
        
        case 2097150
: //битсумма флагов "bcdefghijklmnopqrstu"                                                      
            add(new_chat, charsmax(new_chat), "^4 ADMIN^3"); 
        
        case 524288
: //битсумма флага "t"                                                     
            add(new_chat, charsmax(new_chat), "^4 VIP^3");
    }
    
    add
(new_chat, charsmax(new_chat), chat);  
    set_msg_arg_string
(2, new_chat);                                               
}


Попробовал убрать скрипт, тоже самое, дело не в скрипте. Сменил клиент все по прежнему. Если я правильно понял дело в самом сервере?????
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Не правильно отображает русский шрифт

Сообщение Fedcomp » 28 сен 2021, 22:20

В русских буквах где то по два байта, это utf-8. Ты это учитываешь?
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Не правильно отображает русский шрифт

Сообщение [N][E][M][E][C] » 29 сен 2021, 01:29

ну размер массива же позволяет впихнуть сообщение?? Или я не правильно вас понял???
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Не правильно отображает русский шрифт

Сообщение Fedcomp » 01 окт 2021, 17:51

vitalik19842105 писал(а):ну размер массива же позволяет впихнуть сообщение?? Или я не правильно вас понял???

Впихнуть наверное позволяет. А вот когда заменяете байты в сообщении получается что некоторые символы теряют второй байт, и получается белиберда. Заменять символы нужно с учетом особенностей utf-8.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust

Re: Не правильно отображает русский шрифт

Сообщение [N][E][M][E][C] » 10 окт 2021, 20:19

Fedcomp, Пoдкажите как решить эту проблему, или ссылку может на решение данной проблемы
Код: Выделить всё
#include <amxmodx>         

#define PLUGIN "admin vip prefix"
#define VERSION "1.0"                                               
#define AUTHOR "[N][E][M][E][C]" 

new const originalSIMVOL[][] = { "^x01", "^x03", "^x04" }
new const newSIMVOL[][] = { "^1", "^3", "^4" }
                                                                                          
new chat
[1024];
                                                     
public plugin_init
() {
    register_plugin(PLUGIN, VERSION, AUTHOR);                              

    register_message
(get_user_msgid("SayText"),"goChangeText");
}
                                                
                                                                 
public goChangeText
(msgId, msgDest, msgEnt) {                      
    new new_chat
[1024];                                   
    static indexPLAYER
, const_flags, i;
    
    indexPLAYER 
= get_msg_arg_int(1);
    
    if
(!is_user_connected(indexPLAYER))
        return;                                                                               
                                            
    const_flags 
= get_user_flags(indexPLAYER);
    get_msg_arg_string(2, chat, charsmax(chat));
     
    for
(= 0; i < sizeof(originalSIMVOL); ++ i)
                replace_all(new_chat, charsmax(new_chat), newSIMVOL[i], originalSIMVOL[i]);
                                                                
    switch
(const_flags) {                                      
        case 2097151
:                                                        
            add
(new_chat, charsmax(new_chat), "^4 BOSS ^1|^4");                                                   
        
        case 2097150
:                                                    
            add
(new_chat, charsmax(new_chat), "^4 ADMIN ^1|^4"); 
        
        case 524288
:                                                   
            add
(new_chat, charsmax(new_chat), "^4 VIP ^1|^3");
    }
    
    add
(new_chat, charsmax(new_chat), chat);  
    set_msg_arg_string
(2, new_chat);                                               

это чисто для себя
Аватара пользователя
[N][E][M][E][C]
 
Сообщения: 641
Зарегистрирован: 14 фев 2021, 10:48
Благодарил (а): 50 раз.
Поблагодарили: 89 раз.
Опыт программирования: Около года
Языки программирования: Нуждаюсь в помощи

Re: Не правильно отображает русский шрифт

Сообщение Fedcomp » 12 окт 2021, 03:59

Я без понятия как работать с многобайтными кодировками в amxx :-X
Просто объясняю что такая проблема есть и вы на нее наткнулись.
Думаю руками юникод обрабатывать будет крайне геморойно.
Хотя можно подумать над частным случаем для русских букв.
Не помогаю в ЛС - есть форум.
Плагины тоже не пишу, на форуме достаточно хороших скриптеров.


"я ставлю зависимости потому что мне приятно" - subb98 @ 2017
Аватара пользователя
Fedcomp
Администратор
 
Сообщения: 4936
Зарегистрирован: 28 авг 2009, 20:47
Благодарил (а): 813 раз.
Поблагодарили: 1317 раз.
Языки программирования: =>
pawn / php / python / ruby
javascript / rust


Вернуться в Вопросы по AMXX и его плагинам

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11