Пятница, 22 Ноября 2024, 22:09

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема массивами в функциях.
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
  • Страница 1 из 1
  • 1
Поиск:

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