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

Чтение русских символов из .ini файла  [Решено]

Все вопросы по скриптингу для AMXX, помощь в редактировании плагинов.

Модераторы: Subb98, liFe iS GoOD

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

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

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [code=php].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sma плагина.

Чтение русских символов из .ini файла

Сообщение simplyDavchik » 20 янв 2018, 17:26

Сделал плагин на чс (Что бы игрока кикало сразу при попытке подключения к серверу если он прописан в файле)

Можно ли считывать c .ini файла русские символы? Я хочу сделать чо бы можно было указывать причину чс русскими буквами.
Даже если цель не достижима, попробовать стоит.
Аватара пользователя
simplyDavchik
 
Сообщения: 132
Зарегистрирован: 08 апр 2017, 23:28
Откуда: Латвия
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Java
C++
C#
Pawn

Re: Чтение русских символов из .ini файла

Сообщение Subb98 » 20 янв 2018, 18:45

А в чём сейчас сложность с их считыванием?
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Чтение русских символов из .ini файла

Сообщение simplyDavchik » 20 янв 2018, 19:16

Subb98 писал(а):А в чём сейчас сложность с их считыванием?

Вот кусок кода
Код: Выделить всё
    for(new iLine 0read_file("/addons/amxmodx/configs/4s.ini"iLineszInfocharsmax(szInfo), iNum); iLine++) 
    {
        if(
iNum && szInfo[0] != ';')
        {
            
parse(szInfoszInfoUsercharsmaxszInfoUser ), 
            
szInfoIDcharsmax(szInfoID),
            
szInfoIPcharsmax(szInfoIP),
            
szKickReasoncharsmax(szKickReason)
            );
        }
    }
    if(
equali(nick,szInfoUser) || equali(steamid,szInfoID) || equali(ip,szInfoIP))
    {
        
server_cmd("kick #%d ^"%s^""get_user_userid(id), szKickReason);
    } 


В причине, когда игрока кикнуло, вместо русских символов стоят каракули, ну типа значок вопроса в квадрате, незнаю как обьяснить, крч не русские символы
Даже если цель не достижима, попробовать стоит.
Аватара пользователя
simplyDavchik
 
Сообщения: 132
Зарегистрирован: 08 апр 2017, 23:28
Откуда: Латвия
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Java
C++
C#
Pawn

Re: Чтение русских символов из .ini файла  [Решено]

Сообщение Subb98 » 20 янв 2018, 21:04

4s.ini в UTF-8 без BOM?
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Чтение русских символов из .ini файла

Сообщение simplyDavchik » 20 янв 2018, 21:21

Subb98 писал(а):4s.ini в UTF-8 без BOM?

*facepalm*
Даже если цель не достижима, попробовать стоит.
Аватара пользователя
simplyDavchik
 
Сообщения: 132
Зарегистрирован: 08 апр 2017, 23:28
Откуда: Латвия
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Java
C++
C#
Pawn

Re: Чтение русских символов из .ini файла

Сообщение Subb98 » 20 янв 2018, 22:00

temp.ini:

Код: Выделить всё
"trouble [erm]" "АЛЛОУ ЙОБА ЭТО ТИ?"

исходник:

Код: Выделить всё
#pragma semicolon 1

#include <amxmodx>

new Trie:g_Messages;

public 
plugin_init() {
    
register_plugin("Kick by Name""0.1""Subb98");
    
g_Messages TrieCreate();
}

public 
client_authorized(id)
{
    new 
Name[32];
    
get_user_name(idNamecharsmax(Name));

    if(
TrieKeyExists(g_MessagesName)) {
        new 
Message[128];
        
TrieGetString(g_MessagesNameMessagecharsmax(Message));
        
server_cmd("kick #%d ^"%s^""get_user_userid(id), Message);
    }
}

public 
plugin_cfg() {
    new 
File[64], pFile;

    
get_localinfo("amxx_configsdir"Filecharsmax(File));
    
add(Filecharsmax(File), "/temp.ini");

    if((
pFile fopen(File"rt"))) {
        
ReadFile(pFile);
    } else {
        
set_fail_state("File ^"%s^" not found"File);
    }
}

ReadFile(const pFile) {
    new 
Buffer[256], Name[32], Message[128];

    while(!
feof(pFile)) {
        
fgets(pFileBuffercharsmax(Buffer));

        if(!
Buffer[0] || Buffer[0] == ';' || Buffer[0] == '#') {
            continue;
        }

        
parse(BufferNamecharsmax(Name), Messagecharsmax(Message));

        if(
Message[0]) {
            
TrieSetString(g_MessagesNameMessage);
        }
    }

    
fclose(pFile);

1.png

2.png

Что я делаю не так?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
«Очень хорошо. Лучше вы, чем я» © Donald J. Trump
Аватара пользователя
Subb98
Модератор
 
Сообщения: 5485
Зарегистрирован: 24 мар 2011, 19:42
Откуда: г. Пермь
Благодарил (а): 1329 раз.
Поблагодарили: 2343 раз.
Опыт программирования: Больше трех лет
Языки программирования: PHP

Re: Чтение русских символов из .ini файла

Сообщение simplyDavchik » 21 янв 2018, 00:07

Subb98 писал(а):temp.ini:

Код: Выделить всё
"trouble [erm]" "АЛЛОУ ЙОБА ЭТО ТИ?"

исходник:

Код: Выделить всё
#pragma semicolon 1

#include <amxmodx>

new Trie:g_Messages;

public plugin_init() {
    register_plugin("Kick by Name", "0.1", "Subb98");
    g_Messages = TrieCreate();
}

public client_authorized(id)
{
    new Name[32];
    get_user_name(id, Name, charsmax(Name));

    if(TrieKeyExists(g_Messages, Name)) {
        new Message[128];
        TrieGetString(g_Messages, Name, Message, charsmax(Message));
        server_cmd("kick #%d ^"%s^"", get_user_userid(id), Message);
    }
}

public plugin_cfg() {
    new File[64], pFile;

    get_localinfo("amxx_configsdir", File, charsmax(File));
    add(File, charsmax(File), "/temp.ini");

    if((pFile = fopen(File, "rt"))) {
        ReadFile(pFile);
    } else {
        set_fail_state("File ^"%s^" not found", File);
    }
}

ReadFile(const pFile) {
    new Buffer[256], Name[32], Message[128];

    while(!feof(pFile)) {
        fgets(pFile, Buffer, charsmax(Buffer));

        if(!Buffer[0] || Buffer[0] == ';' || Buffer[0] == '#') {
            continue;
        }

        parse(Buffer, Name, charsmax(Name), Message, charsmax(Message));

        if(Message[0]) {
            TrieSetString(g_Messages, Name, Message);
        }
    }

    fclose(pFile);
}

1.png

2.png

Что я делаю не так?

*facepalm* - В плане что я забыл про это
Даже если цель не достижима, попробовать стоит.
Аватара пользователя
simplyDavchik
 
Сообщения: 132
Зарегистрирован: 08 апр 2017, 23:28
Откуда: Латвия
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: Java
C++
C#
Pawn

Re: Чтение русских символов из .ini файла

Сообщение БиЗоН » 21 янв 2018, 01:08

Еще сама контра может не поддерживать русские символы если что как бэ.
Вечно занятой. Вечно в павне.
Аватара пользователя
БиЗоН
 
Сообщения: 165
Зарегистрирован: 24 мар 2014, 21:05
Благодарил (а): 10 раз.
Поблагодарили: 49 раз.
Опыт программирования: Больше трех лет


Вернуться в Скриптинг

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

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