Пятница, 19 Апреля 2024, 02:54

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Переменные увеличиваются не на единицу, а на большее число (Помощь с gml кодом)
Переменные увеличиваются не на единицу, а на большее число
topaz111Дата: Четверг, 20 Августа 2020, 17:01 | Сообщение # 1
был не раз
Сейчас нет на сайте
Имеются переменные pp, hhp, hdmg, hspd. Последние три можно прокачать за счёт pp. Имеется объект, нажимая на который одна из переменных должна увеличиваться на единичку, а другая уменьшаться. Код(event left pressed)
if global.pp>0{
if global.char=1 then global.hhp+=1
if global.char=2 then global.hdmg+=1
if global.char=3 then global.hspd+=1
global.pp-=1
}

instance_destroy()

При данном коде, переменные увеличиваются не на единицу, как должно быть а на максимально возможное значение(сколько есть pp, столько прибавляется к нужным переменным)
Пробовал менять ивент.
В степе через mouse_check_button_pressed та же проблема, в добавок используется команда везде(не только, когда клик идёт по объекту)
martukДата: Четверг, 20 Августа 2020, 19:20 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Очень мало информации для решения, ситуаций может быть множество
Очевидно он вызывает вышеуказанный код сразу несколько раз (или один раз за кадр). Т.е. в одном из вариантов он вызывает 60 раз в секунду, вот и кажется что он отбирает сразу столько, сколько имеет переменная pp.
Возможно этих объектов слишком много в комнате и действие срабатывает на всех их.
Да и функция mouse_check_button_pressed в степе совсем не обязана обрабатывать именно нажатие по объекту
topaz111Дата: Четверг, 20 Августа 2020, 19:45 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата martuk ()
Да и функция mouse_check_button_pressed в степе совсем не обязана обрабатывать именно нажатие по объекту

Это я знаю, но именно в данной ситуации, мне надо чтобы оно срабатывало на клик по объекту. Но это было скорее причина использования ивента left pressed вместо кода в step'е.

Цитата martuk ()
Возможно этих объектов слишком много в комнате и действие срабатывает на всех их.

Объект вызывается в момент создания другого объекта, а тот создаётся единожды. По идее не должно быть такого

Цитата martuk ()
Очевидно он вызывает вышеуказанный код сразу несколько раз (или один раз за кадр). Т.е. в одном из вариантов он вызывает 60 раз в секунду, вот и кажется что он отбирает сразу столько, сколько имеет переменная pp.

Думал об этом, но как решить подобное не знаю.

Добавлять блокировщик через алярм(что после прибавки идёт блокировка через переменную, а затем алярм). Сейчас сделал иначе:
В событие left pressed поставить таймер
А в таймере поставил указанный код. В итоге всё та же ситуация.
martukДата: Четверг, 20 Августа 2020, 20:56 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Воспроизвел тот же код, что и у тебя, все работает как надо. Значит у тебя что то не так на этом этапе:
Цитата topaz111 ()
Объект вызывается в момент создания другого объекта, а тот создаётся единожды.

Да и по описанию какая то необычная логика
topaz111Дата: Четверг, 20 Августа 2020, 21:52 | Сообщение # 5
был не раз
Сейчас нет на сайте
Кхм. *неловкое покусывание пальца* И правда на этом моменте ошибка. Я проворонил то, что у меня объект с данным кодом создаётся через ивент left button, из-за этого их получается и создавалось несколько.
martukДата: Четверг, 20 Августа 2020, 22:00 | Сообщение # 6
заслуженный участник
Сейчас нет на сайте
Цитата topaz111 ()
из-за этого их получается и создавалось несколько.

Во, вот и собрался пазл. Подтвердилась одна из первых гипотез про много объектов =)
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Переменные увеличиваются не на единицу, а на большее число (Помощь с gml кодом)
  • Страница 1 из 1
  • 1
Поиск:

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