Пожалуйста or Регистрация для создания сообщений и тем.

Генерация названий обьектов

12

Генерация названий, возможно ли это для названий обьектов? У меня есть яблоко к примеру, но нужно много, $яблоко_1, $яблоко_7, $яблоко_100500? Чтобы обьект так назывался и был отдельным от других яблок

Я знаю, как это сделать на предыдущих версиях 6.1 и прочих, но не на JS.

Принцип таков, что создаешь массив, наполняешь его нужным. Например, name['яблоко',' ',1]. Массив name содержит 3 элемента: текст 'яблоко', пробел ' ' и цифру 1. Далее с помощью команды можно соединить все элементы массива в строку. Я таким образом делал генерацию названий предметов в своей игре от параметров: суффиксы и префиксы.

Я знаю про такую возможность, и мне как раз и нужна версия 6.1, так что спасибо) А как мне потом "обратиться" к какому нибудь из этих "обьектов", если понадобится? Есть тут что то типа "классов", в которые можно обьединить все нужные "обьекты", чтобы обратиться к ним всем и путем перебора как в цикле добиться нужного результата, например узнать, какое из этих яблок зеленое, а какое сладкое? Или как еще можно узнать, какие в данный момент характеристики у каждого из "яблок", особенно если они меняются, а не постоянные?

Каждый предмет делать массивом. Выработать определенную закономерность в предметах, чтобы каждая позиция соответствовала определенному свойству.

Например, первым в массиве обозначается тип предмета (еда, напиток, оружие и прочее), вторым указывать что это (яблоко, кинжал, кофе и прочее), третьим его состояние (спелость, опознанность и прочее). И так всё, что тебе понадобится.

Далее уже через if устанавливаешь свои правила. Например, if $item[0] eq 'еда'(если первая ячейка массива item это еда), то далее выполнять с ней определенное действие. Дальше можно еще проверку устраивать, например, является ли эта еда яблоком. Таким отбором можно вычленить из массива именно тот тип, что тебе нужен и проводить с ним манипуляции. Если составить такое на каждые требуемые тебе типы, то получается сортировочный центр, который будет распределять необходимые действия.

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

Я все делал через массивы. Массивы в массивах тоже удобны, особенно когда описываешь инвентарь.

 

Я тут попробовал сделать как вы -

name['яблоко',' ',1],  но не смог. Я сделал 

<<set $Mitem1 = ['Яблоко',' ',1]>>,  как в руководстве, тогда получилось. Дальше

<<set $item = $Mitem1.join(",")>>

Получилось создать переменную, содержащую нужное мне имя в своей характеристике. А как мне это поставить заместо названия предмета/переменной/массива? Нужая мне информация осталась характеристикой, просто теперь у переменной. А мне нужно название предмета изменить, чтобы можно было автоматически сделать отдельный предмет, а не характеристику переложить куда то, так что такой вариант не подходит.

Да, есть еще print JSON.stringify, но так я просто текст создаю, так что не знаю что делать. Можете пример создать, если не проблема? Да. Нужно чтобы игра автоматически создавала эти обьекты, исходя из необходимости, чтобы мне написать этот общий код по их созданию, там, с характеристиками, как вы говорите, и забыть о нем.

  • Понятно что нельзя писать один $item для всех предметов, иначе стоит изменить тип предмета с которым взаимодействуешь в $item с "яблоко" на "пробка" и взять предмет "пробка", и "яблоко", лежащее на земле, тут же исчезнет. Не говоря уже про то, что все другие "яблоки" исчезнут. Говорите, "каждый предмет делать массивом", то есть как отдельный предмет? Так КАК это сделать? Мне именно это и нужно, только не вручную писать каждый предмет, а чтобы игра делала это сама, когда для того созданы необходимые условия. Как это сделать?

А почему не создавать массив объектов в цикле? К примеру тебе нужно 100500 яблок. Открыть цикл for i до 100500, в массив объявить яблоко[i], и тут же добавить ему свойства яблоко[i].стоимость, к примеру.

И у тебя будет массив яблоко с 100500 объектами. А обратиться можно к ним по порядковому номеру

А как тут создать обьемный массив? Чтобы у каждого номера (то бишь обьекта) были свойства, идущие параллельно? Ведь без свойств яблоки быть не должны. Или я чего то не понял? Как добавить таким яблокам свойства, причем разные, для разных яблок? Они могут минимум быть в разных местах, кстати, мне как раз нужны координаты, хмм..

Вот, массив на 99 яблок.

<<set $кЯ = 0>>

<<set $Яблоки = []>>

<<loop 99>>

<<set $кЯ=$кЯ+1>>

<<set $Яблоки.push($кЯ)>>

<<if $кЯ eq 99>>

<<break>>

<<endif>>

<<endloop>>

 

И как добавить яблоку координаты, когда с одного из деревьев на карте упало новое яблоко? Да, оно должно быть новым, до падения его там не было, а еще за некоторое время до падения этого яблока еще и на дереве не было. Каак?? Это? Сделать?

<<set $item = ['еда', 'яблоко ', 1, 'название']>> (тип, предмет, количество, название)

<<set $i[0]= $item[1]>>

<<set $i[1]= ' '>>

<<set $i[2]= $item[2]>>

<<set $i= $item.join(",")>>

<<set $item[3]= $i>>

Таким образом у тебя станет $item = ['еда', 'яблоко ', 1, 'яблоко 1']

Единственное, тебе нужно определиться, что будет основополагающим для характеристик предметов. Это может быть сам тип предмета, как предложили выше. Будет массив "яблоко", который содержит в себе массивы каждых встреченных яблок со своими характеристиками.

У меня основополагающими были ячейки (инвентаря и рэгдолла). То есть у меня в ячейке инвентаря содержалась вся информация о предмете, который в ней содержится. То же самое с рэгдоллом (куда вещи в рпг играх надевают на персонажа). Это у меня все отображалось с помощью спрайтов. Т.е. я нарисовал квадрат-ячейку, рэгдолл, вывел в спрайтах в нужных координатах на экран, а потом установил в зависимости от наличия в массиве инвентаря предметов - выводить их в эти ячейки. При нажатии на спрайт - открывается окно с информацией о предмете. Т.е. можно сделать полностью интерактивный инвентарь таким образом.

Мне инвентарь боюсь здесь не подойдет, хотя за его идею спасибо. Тут нужны несколько разных, раскиданных вне поля зрения игрока Деревьев/Полей, которые при наличии определенных условий (например если ИИ их поливает, удобряет) раз в какое то время создают плоды, там, к примеру, яблоки, картофель, тыквы, клубника, тяжелый крейсер, корпус корабля рейнджера, пр. .. Что? Ничего не знаю, вы ничего не видели, никакого космоса и кораблей. Нет, и про космос я тоже ничего не говорил;) Так вот, выше создал массив на 99 яблок(чего то еще), но наверно буду делать по условию каждое, а не сразу циклом все. Как дать этим обьектам свойства?

Какие свойства ты хочешь им дать?

Если ты про то, чтобы каждое яблоко было массивом, то можно использовать массив в массиве. Извлекать его можно тоже легко, например $item[1][2] - ячейка 2 массива item в ячейке 1.

12