Помощь при "выпадении" из ящика предметов
| |
Supr_maks | Дата: Воскресенье, 17 Мая 2020, 15:46 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Помогите сделать так чтобы если есть 2 пресонаж то на него дают бонус. P.s. чтобы они не были заранее известный. Т.е. может быть как 1-2-3... Так и 1-3-4-2... Нужен код
У всех в душе пустота...
|
|
| |
faridunibodullo | Дата: Понедельник, 18 Мая 2020, 09:25 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| item=choose(obj_predmet1,obj_predmet2,obj_predmet3) instance_create(x,y,item)
|
|
| |
Core | Дата: Понедельник, 18 Мая 2020, 15:36 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Supr_maks,
irandom();
|
|
| |
OpenGOO | Дата: Понедельник, 18 Мая 2020, 17:40 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Если нужно чтобы бонусы не только выдавались случайным образом, но ещё и не повторялись, то можно воспользоваться ds_list.
Для этого нужно будет создать список ds_list_create() (для начала список можно сохранить в глобальной переменной), затем заполнить его бонусами ds_list_add() и перемешать ds_list_shuffle(). После этих действий уже можно будет доставать случайные бонусы ds_list_find_value(), но для этого нужно будет ещё реализовать механизм последовательного извлечения бонусов из списка.
Когда список будет нужен, его нужно удалить ds_list_destroy().
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
Supr_maks | Дата: Понедельник, 18 Мая 2020, 20:12 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| faridunibodullo, А в choose можно добавить только 3 или можно больше?
У всех в душе пустота...
|
|
| |
AlexanderBekker | Дата: Понедельник, 18 Мая 2020, 21:37 | Сообщение # 6 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Supr_maks ( ) А в choose можно добавить только 3 или можно больше? Функция choose может принимать до 16-ти аргументов. Если нужно больше, можно пойти на такую хитрость:
Код item1 = choose(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15); item2 = choose(16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31); item = choose(item1, item2); // item будет присвоено рандомное значение от 0 до 31 включительно Можно ещё объявить массив, заполнив его нужными элементами, затем при помощи функции irandom выбрать случайный элемент из массива.
P. S. Не уверен насчёт количества аргументов в функции choose, но за Game Maker последний раз я работал ещё в 2012-ом году. Тогда в восьмой версии это ограничение было. Возможно, в GMS 2 его убрали или появились более рациональные способы выборки случайных элементов.
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
Сообщение отредактировал AlexanderBekker - Понедельник, 18 Мая 2020, 21:38 |
|
| |
Raven84 | Дата: Вторник, 19 Мая 2020, 13:16 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| AlexanderBekker, Цитата Возможно, в GMS 2 его убрали Да, в GMS2 вроде ограничений по кол-ву аргументов в choose нет. Единственное создатели лишь делают оговорку, что чем больше аргументов, тем медленнее работает функция, ну это и логично.
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
AlexanderBekker | Дата: Вторник, 19 Мая 2020, 23:19 | Сообщение # 8 |
BekkerDev Studio
Сейчас нет на сайте
| Цитата Raven84 ( ) Единственное создатели лишь делают оговорку, что чем больше аргументов, тем медленнее работает функция, ну это и логично. Я в своём игровом движке на Java реализовывал эту функцию так:
Код public Object choose(Object... objs) { return objs[random.nextInt(objs.length)]; }
Если у меня — любительского программиста — она работает быстро, то у разработчиков Game Maker и подавно. Так что не думаю, что конструкция их функции сложнее моей.
Разработчик, композитор и издатель инди-игр в Steam. Редактор карт: BekkerDev Level Editor 4 Страница разработчика в Steam Паблик ВК: BekkerDev Studio
|
|
| |
Raven84 | Дата: Среда, 20 Мая 2020, 12:20 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| AlexanderBekker, Да это понятно! Я думаю такая оговорка сделана для того, чтобы туда не напихали тысячи (+100500 как говорится) значений, иначе перебор будет идти дольше, только и всего. А то криворукие могут в сотни объектов напихать в шаг таких функций и потом ломать голову, почему проблемы с оптимизацией.
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
|