RU 📌 Pinned

Как сделать?

Dark[Ol(U23)leneri] #34 18.04.2010 22:57 6408 comments 2427200 views

Ребят, я жутко деревянный во всём этом, это капец, извините, но оч. хочется разобраться в следующей ситуации:
act’старт’:
gs’’
if [переменная]=1:’<картинка-1>’
‘текст’
act’Далее’:gt $curloc
gs’следующая локация’
end
… след. лок., короче рандомные ивенты, которые можно пропустить или принять:
if [переменная]=2:’<картинка-2>’
‘текст’
if [переменная]=x:’текст’
if [переменная]=xx:’текст’

Ну как бы понятно что всё выполняется из первой локации, но… Как в данной ситуации проще всего сделать так, чтобы первая картинка не отображалась, когда запускается условие с ‘<картинка-2>’, и отображалась во всех остальных случаях?

kanparonner,
if условие=2:
картинка=2
else
картинка=1
end

А вообще, не очень понятно какой у тебя код, gs внутри актов или снаружи, какие акты что делают…

Ну, вначале gs снаружи… во второй локе, в зависимости от ситуации… если дополнить что написано выше: act переходит к gs’stat’ - картинка-2… + act который возвращает в первую локацию…
В общем, только если дублировать картинки и чередовать их… Там просто могут быть и другие if, которым опять может вторая понадобиться, думал, может можно как-то сделать первую “картинкой по умолчанию”.
Ну в общем, ок, понятно.

act'старт':

gs '' &! пустой GOSUB? Шутишь? Допустим, он не пустой.

if [переменная]=1:'<картинка-1>'
'текст'
act'Далее':gt $curloc
gs'следующая локация'
end
... след. лок., короче рандомные ивенты, которые можно пропустить или принять:
if [переменная]=2:'<картинка-2>'
'текст'

картинка будет выводится только в случае переменная=2 а текст в любом случае.
Плохо. Очень плохо. Мог бы вынести за условие.
Либо использовать оператор отрицания NO, который будет выводить картинку во всех случаях, кроме когда переменная = 2.

if no [переменная]=2: *pl '<картинка-2>'

Добрый день!

у меня вопрос по работе с массивами. У меня есть текстовый массив $item, в нем есть $item[1], $item[2]… $item[n+1]. И есть соответствующий ему числовой массив itm[$item[1]], itm[$item[2]]…itm[$item[n+1]]

Когда игрок покупает оборудование, то соответствующей переменной маасива itm[$item] присваивается значение 1.

Теперь мне надо показать купленное пользователю. Не могу найти в документации, как сделать это одной командой, что-то типа

IF itm[$item]=1:
'<<$item>>'
END

То есть, возможно ли это в принципе, чтобы система проверяла массив itm[$item] на наличие значений 1 и по ним выводила связанные данные из текстового массива $item?

jazzy77, доброго времени суток.

Сперва хотелось бы напомнить, что вы всегда можете присоединится к дискорду (там просто быстрее отвечать на оперативные вопросы).

То есть, возможно ли это в принципе, чтобы система проверяла массив itm[$item] на наличие значений 1 и по ним выводила связанные данные из текстового массива $item?

Ну, начнем по порядку.
Во-первых: нужно провести проверку по массиву.

x = 0 &! задаем значение счетчика цикла
:mark
If no $item[x] = '': 
*p $item[x] &! Тут мы используем переменную-счетчик [x] в качестве указателя на ячейку массива.
end
if x < arrsize('$item'): x = x + 1 & jump 'mark'

Теперь о проблемах:
itm[$item] - достаточно неправильная (хоть и валидная) конструкция, которая создаст проблемы на следующем этапе разработки.
Настоятельно советую сыграть пару игр в каталоге, поразмыслить и представить, как была создана та или иная механика и пересмотреть подход.

Надеюсь, смог ответить. Коллеги подправят, если что-то упустил)
Обновлено:
Если хотите наступать на грабли, то:

x = 0 &! задаем значение счетчика цикла
:mark
If itm[x] = 1: 
*p itm[x] &! Тут мы используем переменную-счетчик [x] в качестве указателя на ячейку массива.
end
if x < arrsize('itm'): x = x + 1 & jump 'mark'

Не мне вас отговаривать ;)

Aleks Versus Moderator 13.02.2022 13:18 (4 years ago)

jazzy77,

:for
if i<arrsize('$item'):
	IF itm[$item[i]]=1:
		'<<$item[i]>>'
	END
	i+=1
	jump 'for'
end

Aleks Versus,*HronoStranger,* спасибо большое! Проблему понял, варианты понял, буду думать :)

Кто знает как рассчитывается msecscount в плеере от Fork? Сделал отработку локации счетчика каждую секунду с выводом количества секунд прошедших с начала запуска игры (msecscount / 1000), но по итогу каждую секунду выводит непонятную прогрессию (или это число секунд в квадрате?)

В общем пришлось сделать счетчик количества секунд через свою переменную.

Grass:

В общем пришлось сделать счетчик количества секунд через свою переменную.

Получилось? Таймер на Андроиде работает как-то по своему), только не так, как нужно.

Да. settimer работает правильно, а вот msecscount непонятно. Сделал счетчик как: ПрошлоСекунд += 1 & ! В локации счетчике

Дамир Белялов #654 26.02.2022 16:22 (3 years ago)

Подскажите пожалуйста есть ли в qgen такой процесс как заданное количеством повторение циклов?
например: Повторить 10 раз \

Дамир Белялов,
Дык обычный цикл же
a=0
:mark
*p’.’ & wait 20
a+=1
if a<10:jump’mark’

Дамир Белялов #654 26.02.2022 16:39 (3 years ago)

А есть какая либо альтернатива поэкономнее, в рамках одной команды со скобкой?

Log in or Register to post comments.