Переменные увеличиваются не на единицу, а на большее число
|
|
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 ( ) из-за этого их получается и создавалось несколько. Во, вот и собрался пазл. Подтвердилась одна из первых гипотез про много объектов =)
|
|
| |