Среда, 25 Мая 2022, 12:45

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Ошибка с массивом
Ошибка с массивом
FireguyДата: Воскресенье, 10 Февраля 2013, 19:52 | Сообщение # 1
участник
Сейчас нет на сайте
Есть код в Create
Код
rini_init();
INI = rini_open("Data/items.ini")
for (i = 1;rini_section_exists(INI, i); i = rini_section_find_next(INI) )
{
for (b = 0; b < 1111; b += 1)
{
for (b1 = 0; b1 < 1111; b1 += 1)
{
block_a[b, b1] = 0
}
}
//Reading
switch (rini_read_real(INI, i, family))
{
case 1:
block_a[0, i] = rini_read_real(INI, string(i), "id", 0)
block_a[1, i] = rini_read_real(INI, string(i), "stack", 0)
block_a[2, i] = rini_read_real(INI, string(i), "durability", 0)
block_a[3, i] = rini_read_real(INI, string(i), "drop", 0)
block_a[4, i] = rini_read_real(INI, string(i), "light", 0)
block_a[5, i] = rini_read_real(INI, string(i), "color", 0)
block_a[6, i] = rini_read_real(INI, string(i), "range", 0)
block_a[7, i] = rini_read_real(INI, string(i), "toolevel", 0)
block_a[8, i] = rini_read_string(INI, string(i), "spr", 0)
block_a[9, i] = rini_read_string(INI, string(i), "name", 0)
block_a[10, i] = rini_read_string(INI, string(i), "disc", 0)
block_a[11, i] = rini_read_real(INI, string(i), "solid", 0)
type[i] = 1
;break;
case 2:
floor_a[0, i] = rini_read_real(INI, string(i), "id", 0)
floor_a[1, i] = rini_read_real(INI, string(i), "stack", 0)
floor_a[2, i] = rini_read_real(INI, string(i), "durability", 0)
floor_a[3, i] = rini_read_real(INI, string(i), "drop", 0)
floor_a[4, i] = rini_read_real(INI, string(i), "light", 0)
floor_a[5, i] = rini_read_real(INI, string(i), "color", 0)
floor_a[6, i] = rini_read_real(INI, string(i), "range", 0)
floor_a[7, i] = rini_read_real(INI, string(i), "toolevel", 0)
floor_a[8, i] = rini_read_string(INI, string(i), "spr", 0)
floor_a[9, i] = rini_read_string(INI, string(i), "name", 0)
floor_a[10, i] = rini_read_string(INI, string(i), "disc", 0)
floor_a[11, i] = rini_read_real(INI, string(i), "typef", 0)
type[i] = 2
;break;
case 3:
item_a[0, i] = rini_read_real(INI, string(i), "id", 0)
item_a[1, i] = rini_read_real(INI, string(i), "stack", 0)
item_a[2, i] = rini_read_string(INI, string(i), "name", 0)
item_a[3, i] = rini_read_string(INI, string(i), "disc", 0)
item_a[4, i] = rini_read_string(INI, string(i), "spr", 0)
item_a[5, i] = rini_read_string(INI, string(i), "ongspr", 0)
item_a[6, i] = rini_read_real(INI, string(i), "type", 0)
item_a[7, i] = rini_read_real(INI, string(i), "b_speed", 0)
item_a[8, i] = rini_read_real(INI, string(i), "b_light", 0)
item_a[9, i] = rini_read_real(INI, string(i), "color", 0)
item_a[10, i] = rini_read_real(INI, string(i), "range", 0)
item_a[11, i] = rini_read_real(INI, string(i), "b_damage", 0)
item_a[12, i] = rini_read_real(INI, string(i), "rel_speed", 0)
item_a[13, i] = rini_read_real(INI, string(i), "ammo_id", 0)
item_a[13, i] = rini_read_real(INI, string(i), "b_number", 0)
item_a[14, i] = rini_read_real(INI, string(i), "mag", 0)
item_a[15, i] = rini_read_string(INI, string(i), "sound", 0)
item_a[16, i] = rini_read_real(INI, string(i), "tooltype", 0)
item_a[17, i] = rini_read_real(INI, string(i), "hspeed", 0)
item_a[18, i] = rini_read_real(INI, string(i), "toolevel", 0)
type[i] = 3
}
}
show_message(block_a[9, 1])
rini_close()

Пишет ошибку
Код
___________________________________________
ERROR in
action number 1
of Create Event
for object obj_control:

In script eng_item_init:
Error in code at line 69:
     show_message(block_a[9, 1])
                  ^
at position 15: Unknown variable block_a or array index out of bounds

Как по мне то массив инициализирован, но все таки выдает ошибку!

Добавлено (10.02.2013, 19:26)
---------------------------------------------
Ребят, ктот поможет?


Coder is like a King
in his own realm


Сообщение отредактировал Fireguy - Воскресенье, 10 Февраля 2013, 20:16
zzzzzaДата: Понедельник, 11 Февраля 2013, 10:27 | Сообщение # 2
участник
Сейчас нет на сайте
Fireguy, давно в гм не работал, многого не помню, но все-таки, там же надо переменные объявлять перед кодом, ну или в create)))
FireguyДата: Понедельник, 11 Февраля 2013, 20:54 | Сообщение # 3
участник
Сейчас нет на сайте
Цитата
Есть код в Create

zzzzza, В этом коде я по идее и объявляю массив, но все равно спасибо за первый ответ =)


Coder is like a King
in his own realm
USeR14Дата: Вторник, 12 Февраля 2013, 00:10 | Сообщение # 4
RUSOriginal Studio
Сейчас нет на сайте
Тоже попытался.
Немного не понял, как хранятся данные в файле, ну да ладно.

У меня лично "получилось" запустить, но прога жутко зависала и файл все время перезаписывался.
Я лишь изменил строчки:
Код
3) for (i = 1; i < 10; i += 1 )  
13) switch (rini_read_real(INI, i, 0))


Желательно бы узнать подробнее, как должна работать в идеале прога. Возможно есть другие, более оптимальные пути организации данных.




FireguyДата: Вторник, 12 Февраля 2013, 00:41 | Сообщение # 5
участник
Сейчас нет на сайте
USeR14, Смысл, загрузка из файла характеристики объектов, после, запись в массив

Coder is like a King
in his own realm
MR_BorgДата: Вторник, 12 Февраля 2013, 13:17 | Сообщение # 6
участник
Сейчас нет на сайте
Может я и не прав, но все же. Ошибка выдается на значении name, а предыдущие видать идут цифры, попробуйте сделать отдельно для name переменную типа string и проверить, может гм сам переводит все значения в int.

Изучаю C++ попутно пишу игру.
FireguyДата: Вторник, 12 Февраля 2013, 17:33 | Сообщение # 7
участник
Сейчас нет на сайте
MR_Borg, Да, думаю ты прав, наверное проблема в string переменных, попробую решить (не уверен что можно конвертировать string в int)

Coder is like a King
in his own realm
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Ошибка с массивом
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2022 Рейтинг