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

Чтение из файла, не пойму почему массив пустой  [Решено]

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

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

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

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

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

Чтение из файла, не пойму почему массив пустой

Сообщение DoNotFollowMe » 07 май 2018, 21:56

Здравствуйте)
Пытаюсь сделать менюшку которая создается через конфиг. Так вот все работает кроме второго аргумента. массив gBufRound пустой, везде нули, не пойму где косяк. Второй аргумент нужен для того чтоб задать с какого раунда доступен пункт
С массивами я не очень хорошо знаком.
Вот как выглядит конфиг
Код: Выделить всё

ad "\rone" "0"
ad "\ytwo" "1"
ad "\dthree" "2"
ad "four" "3"


а вот исходник
Код: Выделить всё
#include <amxmodx>

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

new gBufCount, gRound
new gBufName
[32][32], gBufRound[32]

public plugin_init()
{
    register_plugin(PLUGIN, VERSION, AUTHOR)
    
    register_event
("HLTV", "StartRound", "a", "1=0", "2=0")
    register_event("TextMsg", "RestartRound", "a", "2=#Game_will_restart_in","2=#Game_Commencing")
    
    register_clcmd
("say q","test")
}

public plugin_cfg()
{
    static const iniPatch[] = "addons/amxmodx/configs/gen.ini"
    new Buffer[33]
    new FileID = fopen(iniPatch, "rt")
    
    if
(!file_exists(iniPatch))
        set_fail_state("^"addons/amxmodx/configs/gen.ini^" Not Found!")
    
    while
(!feof(FileID))
    {
        fgets(FileID, Buffer, charsmax(Buffer))
        trim(Buffer)
        
        if
(!Buffer[0] || Buffer[0] == ';' || Buffer[0] == '#' || Buffer[0] == '/' && Buffer[1] == '/')
            continue
        
        if
(Buffer[0] == 'a' && Buffer[1] == 'd')
        {
            replace(Buffer, charsmax(Buffer), "ad", "")
            parse(Buffer, gBufName[gBufCount], charsmax(gBufName), str_to_num(gBufRound[gBufCount]), charsmax(gBufRound))
            
            gBufCount
++
        }
    }
    fclose(FileID)
}

public StartRound()
    gRound++

public RestartRound()
    gRound = -1

public test
(id)
{
    new menu = menu_create("\r[SWE] \yTEST", "menu_handler")
    
    for
(new i = 0; i < gBufCount; i++)
    {
        client_print(id, print_chat, "%d", gBufRound[i])
        
        if
(gRound < gBufRound[i] - 1)
            menu_additem(menu, gBufName[i], "0")
        else
            menu_additem
(menu, gBufName[i], "1")
    }

    menu_setprop(menu, MPROP_EXITNAME, "Выход")

    menu_display(id, menu, 0)
    return PLUGIN_HANDLED
}

public menu_handler(id, menu, item)
{
    if(item == MENU_EXIT)
    {
        menu_destroy(menu)
        return PLUGIN_HANDLED
    
}

    new data[6], iName[64], access, callback
    menu_item_getinfo
(menu, item, access, data, 5, iName, 63, callback)
    new key = str_to_num(data)

    switch(key)
    {
        case 0: client_print(id, print_chat, "Не доступно")
        case 1: client_print(id, print_chat, "Доступно")
    }
    return PLUGIN_HANDLED
}


и вопрос такой. в двумерном массиве
new array[32][5]
32 это сколько строк/ячеек для данных
5 это длинна каждой строки/ячейки
Правильно понимаю?
Аватара пользователя
DoNotFollowMe
 
Сообщения: 117
Зарегистрирован: 29 фев 2016, 20:25
Благодарил (а): 41 раз.
Поблагодарили: 3 раз.
Опыт программирования: Меньше недели
Языки программирования: Counter-Strike 1.6

Re: Чтение из файла, не пойму почему массив пустой  [Решено]

Сообщение Mistrick » 07 май 2018, 22:26

Код: Выделить всё
while(!feof(FileID))
{
    
fgets(FileIDBuffercharsmax(Buffer))
    
trim(Buffer)
    
    if(!
Buffer[0] || Buffer[0] == ';' || Buffer[0] == '#' || Buffer[0] == '/' && Buffer[1] == '/')
        continue
    
    new 
first[6], second[32], third[6];
    
parse(Bufferfirstcharsmax(first), secondcharsmax(second), thirdcharsmax(third));
    
    if(
equal(first"ad"))
    {
        
copy(gBufName[gBufCount], charsmax(gBufName[]), second);
        
gBufRound[gBufCount] = str_to_num(third);
        
gBufCount++
    }


Код: Выделить всё
str_to_num(gBufRound[gBufCount]) 

Здесь вы совершенно не понимаете, что делаете.
Аватара пользователя
Mistrick
Скриптер
 
Сообщения: 2940
Зарегистрирован: 04 ноя 2012, 18:15
Благодарил (а): 43 раз.
Поблагодарили: 1247 раз.
Языки программирования: PAWN
С/С++(few above zero)

Re: Чтение из файла, не пойму почему массив пустой

Сообщение DoNotFollowMe » 07 май 2018, 22:45

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


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

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

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