Проблема массивами в функциях.
|
|
Litas | Дата: Понедельник, 03 Апреля 2017, 22:40 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Здравствуйте. У меня есть инвентарь, который состоит из отдельных объектов (obj_inv), создающиеся через create персонажа и состоящий из элементов массива .(inv[i] = instance_create(x, y obj_inv);). У каждого объекта инвентаря есть переменная item , в которой содержится назв объекта в этом объекте инвентаря. Так вот, я хотел реализовать функцию, которая будет получать массив и название объекта (obj), а потом будет идти по этому массиву и искать объект obj_inv, у которого item == obj, но проблема в том, что у меня не работает все это. Это в create персонажа Код inv[0] = instance_create(obj_camera.x - 300, obj_camera.y - 160, obj_inv); inv[1] = instance_create(obj_camera.x - 300, obj_camera.y - 130, obj_inv); inv[2] = instance_create(obj_camera.x - 300, obj_camera.y - 100, obj_inv); inv[3] = instance_create(obj_camera.x - 300, obj_camera.y - 70, obj_inv); Это в функцииКод ///check_item(inv ,item) var invn = argument1; var item = argument0; for(...) if(invn[i].item == item)//проблема в передаче массива в фнкц и с последующим обращением к нему { return 1; } else { return 0; } И понятно, что передача идет вроде как только первого эл массива, но подскажите, как реализовать то, что я хочу. Надеюсь, из вышесказанного и из псевдокода желаемый результат понятен.
|
|
| |
BrightSpot | Дата: Среда, 05 Апреля 2017, 13:23 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| передача массива не работает в гм... то есть обращаться нужно к элементам через имя объекта у которого массив инициирован... вместо invn[i].item obj_inv.inv[i] а аргумент inv можно убрать...
Более мощный компьютер глючит быстрее и точнее.
|
|
| |
Litas | Дата: Среда, 05 Апреля 2017, 16:06 | Сообщение # 3 |
был не раз
Сейчас нет на сайте
| Я так тоже пробовал. Массив иниц в obj_hero, но обращение obj_hero.inv[i] почему-то не работает в фнкц
|
|
| |
YellowAfterlife | Дата: Среда, 05 Апреля 2017, 22:40 | Сообщение # 4 |
Сейчас нет на сайте
| Цитата BrightSpot ( ) передача массива не работает в гм... то есть обращаться нужно к элементам через имя объекта у которого массив инициирован...
В GMS работает, с одним лишь примечанием - запись в массив должна быть через [@].
|
|
| |
Litas | Дата: Четверг, 06 Апреля 2017, 08:38 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Цитата YellowAfterlife ( ) запись в массив должна быть через [@] А можно немного подробнее? Что за @? Я раньше такого не встречал.
|
|
| |
415FF785 | Дата: Воскресенье, 18 Июня 2017, 18:19 | Сообщение # 6 |
был не раз
Сейчас нет на сайте
| Цитата Litas ( ) Я так тоже пробовал. Массив иниц в obj_hero, но обращение obj_hero.inv[i] почему-то не работает в фнкц Знаешь, GML не любит, когда у единицы массива есть подпеременная. Попробуй так:
Код for(...){ objectvariable = invn[i] if(objectvariable.item == item){ ... .
Бездарный человек бездарен во всём
Сообщение отредактировал 415FF785 - Воскресенье, 18 Июня 2017, 18:24 |
|
| |