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

Целостность данных в двумерном массиве

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

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

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

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

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

Целостность данных в двумерном массиве

Сообщение RuniCV » 30 сен 2024, 15:44

Здравствуйте, народные умельцы! Мне нужна ваша помощь по поводу следующей проблемы, которая изложена ниже.

Проблема: записи в ячейках массива все больше искажаются с каждым проходом цикла.
Просьба: помочь в решении данной проблемы. Из-за этого плагин отправляет ложные данные движку, который в последствии впадает в ступор.

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

new szMenuMulti
[64]
formatex(szMenuMulti, 63, "%L", LANG_PLAYER, "TITLE_MENU");

// До тех пор, пока файл не будет прочитан до конца
while(!feof(fp))
{
    // Читает строки из файла (файл, массив, куда будет помещена информация, максимальная длина массива)
    fgets(fp, buff, charsmax(buff));
    
    
// Очистить пробелы; кавычки в полученных строках
    trim(buff); remove_quotes(buff);

    // Пропускаем строки с символами комментированиия или разделения
    if(!buff[0] || buff[0] == ';') continue;

    // Загружаем заголовки сценариев
    if(buff[0] == '[')
    {
        // Обнуляем счетчик для записи карт в свой сценарий
        g_iMapCount = 0;

        // Записываем заголовки
        parse(buff, g_sMapScenario[g_iMapScenarioCount], charsmax(g_sMapScenario[]));

        // [Если объявлена константа] Команда /maps в чате.
        #if defined MAPSMENU

            // [Сценарии] Создать пункты меню со сценариями номинаций
            menu_additem(g_iScenariesMenu, g_sMapScenario[g_iMapScenarioCount]);

            // [Меню для сценариев карт] Создаем меню c картами под каждый конкретный сценарий
            g_iMapsMenu[g_iMapScenarioCount] = menu_create(szMenuMulti, "mapsmenu_handler");
            formatex(szMenuMulti, 63, "%L", LANG_PLAYER, "MENU_EXIT")
            menu_setprop(g_iMapsMenu[g_iMapScenarioCount], MPROP_EXITNAME, szMenuMulti);
            formatex(szMenuMulti, 63, "%L", LANG_PLAYER, "MENU_NEXT")
            menu_setprop(g_iMapsMenu[g_iMapScenarioCount], MPROP_NEXTNAME, szMenuMulti);
            formatex(szMenuMulti, 63, "%L", LANG_PLAYER, "MENU_PREV")
            menu_setprop(g_iMapsMenu[g_iMapScenarioCount], MPROP_BACKNAME, szMenuMulti);

            // С каждым проходом увеличиваем индекс g_sMapScenario[] на единицу
            g_iMapScenarioCount++;

        #endif
    
    
}else
    {
        // [Если объявлена константа] Показывать карты в зависимости от онлайна
        #if defined MAP_ON_PLAYERS

            // Получаем нужные аргументы с файла по отдельности (текст для разбивки по аргументам, первый оргумент, второй...)
            parse(buff, g_sMapScenario[g_iMapScenarioCount][g_iMapCount], charsmax(g_sMapScenario[]), minpl, charsmax(minpl), maxpl, charsmax(maxpl));

        #else

            // Получаем нужные аргументы по отдельности (текст для разбивки по аргументам, первый оргумент, второй...)
            parse(buff, g_sMapScenario[g_iMapScenarioCount][g_iMapCount], charsmax(g_sMapScenario[]));
            
            
// Если отсутствует карта на сервере или (функция ниже) была заблокирована, или не совпадает с ожидаемой - пропускаем
            if(!is_map_valid(g_sMapScenario[g_iMapScenarioCount][g_iMapCount]) || _is_map_blocked(g_sMapScenario[g_iMapScenarioCount][g_iMapCount]) || !strcmp(g_sMapScenario[g_iMapScenarioCount][g_iMapCount], g_sCurMap)) continue;

        #endif

        // [Если объявлена константа] Показывать карты в зависимости от онлайна
        #if defined MAP_ON_PLAYERS
        
            
// Записываем минимальный, максимальный порог карты (для показа игроку)
            g_MapPlayerData[g_iMapScenarioCount][g_iMapCount][1] = str_to_num(minpl);
            g_MapPlayerData[g_iMapScenarioCount][g_iMapCount][2] = str_to_num(maxpl);

        #endif

        // [Если объявлена константа] Команда /maps в чате.
        #if defined MAPSMENU

            /* [Карты] Создаем пункты меню
                1. Идентификатор меню
                2. Название пункта */
            menu_additem(g_iMapsMenu[g_iMapScenarioCount -1], g_sMapScenario[g_iMapScenarioCount][g_iMapCount]);

        #endif
    }

    // Запоминает количество имеющихся карт в файле
    g_iMapCount++;

    // server_print(g_sMapScenario[g_iMapScenarioCount][g_iMapCount -1]);
    server_print(g_sMapScenario[g_iMapScenarioCount][1]);
}
 


Вывод второй ячейки:
Код: Выделить всё


$2000$
$$
3000$
$$$
5000$
$$$$
7000$
$$$
$bio_dusty_2x2_fl
$$$$bbio_evil_dust_fl
$$$$bbbio_falconbase_beta
$$$$bbbbio_lego_v4
$$$$bbbbbio_mystery
$$$$bbbbbbio_simpsons
$$$$bbbbbbbio_woody_fl
$$$$bbbbbbbbio_ziger_azt
$$$$bbbbbbbbbio_zomboy_f3
$$$$bbbbbbbbbcs_assault
$$$$bbbbbbbbbccs_italy
$$$$bbbbbbbbbcccs_militia
$$$$bbbbbbbbbccccs_office
$$$$bbbbbbbbbcccccsg_office
$$$$bbbbbbbbbccccccss_dust2night_gob1
$$$$bbbbbbbbbcccccccss_dust2x2
$$$$bbbbbbbbbcccccccde_aztec
$$$$bbbbbbbbbcccccccdde_cbble
$$$$bbbbbbbbbcccccccddde_chateau
$$$$bbbbbbbbbcccccccdddde_dust
$$$$bbbbbbbbbcccccccddddde_dust2
$$$$bbbbbbbbbcccccccdddddde_inferno
$$$$bbbbbbbbbcccccccddddddde_piranesi

ze_alejandra
zze_area51_warz_v1
zzze_assault_escape2
zzzze_assault_warz
zzzzze_blackmesa
zzzzzze_blackmesa_3
zzzzzzze_boat
zzzzzzzze_castle_v1_fix
zzzzzzzzze_cave
zzzzzzzzzze_classic
zzzzzzzzzzze_dust2_fix1
zzzzzzzzzzzze_dust2_mari
zzzzzzzzzzzzze_egypt
zzzzzzzzzzzzzze_ice4cap
zzzzzzzzzzzzzzze_isla_nublar_lg
zzzzzzzzzzzzzzzze_jurassicpark
zzzzzzzzzzzzzzzzze_jurassicpark_a1
zzzzzzzzzzzzzzzzzze_jurassicpark_v2
zzzzzzzzzzzzzzzzzzze_jurassicpark_v5
zzzzzzzzzzzzzzzzzzzze_jurassicpark2_v1
zzzzzzzzzzzzzzzzzzzzze_jurassicpark4
zzzzzzzzzzzzzzzzzzzzzze_jurassicpark7_pg
zzzzzzzzzzzzzzzzzzzzzzze_kabul
zzzzzzzzzzzzzzzzzzzzzzzze_lift_fix
zzzzzzzzzzzzzzzzzzzzzzzzze_osprey
zzzzzzzzzzzzzzzzzzzzzzzzzze_paola_city
zzzzzzzzzzzzzzzzzzzzzzzzzzze_parkour_fabi
zzzzzzzzzzzzzzzzzzzzzzzzzzzze_project
zzzzzzzzzzzzzzzzzzzzzzzzzzzzze_pueblo
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzze_trainyard
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzze_watery_escape_v1

zm_3rooms
zzm_202
zzzm_666_brick
zzzzm_assault_escape2
zzzzzm_aztec_garf
zzzzzzm_aztec_happy
zzzzzzzm_battleground_foda
zzzzzzzzm_biohazard_base_mx
zzzzzzzzzm_braintell_jackass3
-re
zzzzzzzzzzm_canyon
zzzzzzzzzzzm_colorblind
zzzzzzzzzzzzm_cornered
zzzzzzzzzzzzzm_cpl_biohazard
zzzzzzzzzzzzzzm_cubeworld_mini
zzzzzzzzzzzzzzzm_cubeworld_v1
zzzzzzzzzzzzzzzzm_daylight
zzzzzzzzzzzzzzzzzm_deko2
zzzzzzzzzzzzzzzzzzm_dust1_2x2
zzzzzzzzzzzzzzzzzzzm_dust2_2x2
zzzzzzzzzzzzzzzzzzzzm_dust2_2k15
zzzzzzzzzzzzzzzzzzzzzm_dust_2k18
zzzzzzzzzzzzzzzzzzzzzzm_dust2_2x2_fixed
zzzzzzzzzzzzzzzzzzzzzzzm_dust2_city
zzzzzzzzzzzzzzzzzzzzzzzzm_dust2_final
zzzzzzzzzzzzzzzzzzzzzzzzzm_dust_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzm_dusted
zzzzzzzzzzzzzzzzzzzzzzzzzzzm_dusts
zzzzzzzzzzzzzzzzzzzzzzzzzzzzm_epic_zone
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_estate_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fa_world
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fa_world_2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fa_world_3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fdust2x2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_flood_rmk
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fox_v2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fun_world
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fun_world_2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fun_world_3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_fun_world_b
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox_ep1
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox5
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox6
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gbox7
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_gorod_final
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_ice_attack
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_ice_attack3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_ice_attack3_reborn
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_ice_attackv4_v3
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_ice_vk
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_india_cs
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_LB
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_mario_cube
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_militia_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_mirage_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_nuke_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_nuked2_click21
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_sand_new
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_sector_d6
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_snowbase2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_texas_night
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_toxic_house_vk
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_toxic_house2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_toxichouse_new
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_town_big
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_train_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_trakinax_tubo
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_tuscan_happy
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_vendetta
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_virus_t
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_virus_x
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_westwood
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_westwood_click21
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm_zombust
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzp_desert
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzp_gorod_new
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzp_deko_cso_v2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzp_vendetta_cso_b2
zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzp_vendetta_cso_b2


Всем спасибо за помощь.
Аватара пользователя
RuniCV
 
Сообщения: 63
Зарегистрирован: 09 дек 2020, 18:19
Благодарил (а): 33 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю

Re: Целостность данных в двумерном массиве

Сообщение the_hunter » 01 окт 2024, 17:15

Код в целом написан некорректно и не дает четкого понимания что такое g_sMapScenario что ты пытаешься сделать. Нужно больше информации и кода.
Не болтайте ерундой!
Аватара пользователя
the_hunter
 
Сообщения: 1
Зарегистрирован: 30 сен 2024, 23:24
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Опыт программирования: Больше трех лет
Языки программирования: C/C++ C# Rust Java Python SQL Pawn

Re: Целостность данных в двумерном массиве

Сообщение RuniCV » 01 окт 2024, 20:40

Плагин скинуть?

Добавлено спустя 3 минуты 43 секунды:
the_hunter писал(а):Код в целом написан некорректно и не дает четкого понимания что такое g_sMapScenario что ты пытаешься сделать. Нужно больше информации и кода.


Принцип программирования на этом говняном Pawn отталкивает все желание обслуживать плагины. Целый день бьюсь над проблемой выше, толку нет. Что-то уже не особо хочется играть и улучшать кс.

Тем более, вместо помощи сообщество пишет отписки про глупые вопросы. Нафиг оно надо, пойду лучше доту поиграю. Все нервы вымотал этот двумерный массив. Как бы ни реализовывал, результат всегда один получается (даже с ArrayPush)
Аватара пользователя
RuniCV
 
Сообщения: 63
Зарегистрирован: 09 дек 2020, 18:19
Благодарил (а): 33 раз.
Поблагодарили: 0 раз.
Языки программирования: Я ничего не знаю


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

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

Сейчас этот форум просматривают: Yandex [Bot] и гости: 10