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

get_configsdir, не читает файл  [Решено]

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

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

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

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

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

Re: get_configsdir, не читает файл

Сообщение NEoMASTERR » 17 янв 2017, 19:11

NEoMASTERR писал(а):
Код: Выделить всё
new Cvar;
целочисленное

поэтому
Выводить надо как число %d а не как строку %s
Аватара пользователя
NEoMASTERR
 
Сообщения: 832
Зарегистрирован: 05 янв 2015, 16:38
Благодарил (а): 43 раз.
Поблагодарили: 188 раз.
Опыт программирования: Около года
Языки программирования: Counter-Strike 1.6

Re: get_configsdir, не читает файл

Сообщение DoNotFollowMe » 17 янв 2017, 19:55

NEoMASTERR, забыл по %d :-D
Аватара пользователя
DoNotFollowMe
 
Сообщения: 117
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 41 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: get_configsdir, не читает файл

Сообщение novagnolife » 21 мар 2022, 17:01

sa1me писал(а):DoNotFollowMe,
Конфиг вида
Код: Выделить всё
[settings]
ini_cvar 1

[block]
$2000$

Код: Выделить всё
new g_iCvar;

public plugin_cfg()
{
    new szConfig[64];
    get_configsdir(szConfig, charsmax(szConfig));
    add(szConfig, charsmax(szConfig), "/vipka_block.ini");
    
    if 
(UTIL_ParserLoad(szConfig) == PARSER_SUCCESS)
    {
        new iSize, szBuffer[_MAX_BUFFER_STRSIZE], szCvar[_MAX_SECTION_STRSIZE], szValue[_MAX_SECTION_STRSIZE];
        new szMapName[_MAX_SECTION_STRSIZE /*32*/];
        get_mapname(szMapName, charsmax(szMapName));
        
        UTIL_ParserGetSectionSize
("[settings]", iSize);//получаем кол-во строк в блоке [settings]
        
        for 
(new i; i < iSize; i++)//проходимся по всем строкам
        {
            UTIL_ParserGetSectionContent("[settings]", i, szBuffer, charsmax(szBuffer));//получаем всю строку
            parse(szBuffer, szCvar, charsmax(szCvar), szValue, charsmax(szValue));//парсим по аргументам
        }
        
        g_iCvar 
= str_to_num(szValue);//сохраняем в глобалку
        
        UTIL_ParserGetSectionSize
("[block]", iSize);//получаем кол-во строк в блоке [blocks]
        
        for 
(new i; i < iSize; i++)//проходимся по всем строкам
        {
            UTIL_ParserGetSectionContent("[block]", i, szBuffer, charsmax(szBuffer));//получаем всю строку
            parse(szBuffer, szCvar, charsmax(szCvar));//парсим по аргументам
            
            if 
(equal(szMapName, szCvar))//если совпадает с названием текущей карты
            {
                pause("d");//ставим плагин на паузу
                break;//останавливаем цикл
            }
        }
    }
}


Спустя столько лет возник вопрос. А если у меня допустим в [settings] не одна строка, а допустим 3? Как мне получить значения всех трех строк?
Аватара пользователя
novagnolife
 
Сообщения: 1
Зарегистрирован: 17 мар 2022, 21:11
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Около года
Языки программирования: pawn

Re: get_configsdir, не читает файл

Сообщение [N][E][M][E][C] » 23 мар 2022, 16:00

[settings]
ini_cvar 1
ini_tvCvar 2
ini_ueCvar 3


Код: Выделить всё
new g_iCvar[3];            

public plugin_cfg
()
{
    new szConfig[64];
    get_configsdir(szConfig, charsmax(szConfig));
    add(szConfig, charsmax(szConfig), "/vipka_block.ini");
    
    if 
(UTIL_ParserLoad(szConfig) == PARSER_SUCCESS)
    {
        new iSize, szBuffer[_MAX_BUFFER_STRSIZE], szCvar[_MAX_SECTION_STRSIZE], szValue[_MAX_SECTION_STRSIZE];
        new szMapName[_MAX_SECTION_STRSIZE];
        get_mapname(szMapName, charsmax(szMapName));
        
        UTIL_ParserGetSectionSize
("[settings]", iSize);
                                                                                      
        for 
(new i; i < iSize-1; i++)
        {                                  
            UTIL_ParserGetSectionContent
("[settings]", i, szBuffer, charsmax(szBuffer));
            parse(szBuffer, szCvar, charsmax(szCvar), szValue, charsmax(szValue));
            
            g_iCvar
[i] = str_to_num(szValue); //сохраняем каждое значенние;
            
            server_print
("name cvar: %s, value cvar: %s", szCvar, szValue); //это выводим имя квара и значение квара в консоль
        }           
    
}
}


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

Пред.

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

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

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