Это моя ахиллесова пята. Сам толком не понимаю как это работает. Пользуюсь ими для создания действий с множеством вариантов выбора. Например разговор который разветвляется, а потом сливается в одну тему.
Пример.
Локация под названием "масс"
if $ARGS[0]='start':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог.'
act 'Первый вариант диалога.':gt'масс','первый'
act 'Второй вариант диалога.':gt'масс','второй'
end
if $ARGS[0]='первый':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог для первого варианта.'
act 'Обратно.':gt'масс','start'
act 'Конец диалога.':gt'масс','конец'
act 'Второй вариант диалога.':gt'масс','второй'
end
if $ARGS[0]='второй':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог для второго варианта.'
act 'Первый вариант диалога.':gt'масс','первый'
act 'Конец диалога.':gt'масс','конец'
end
if $ARGS[0]='конец':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог для конца разговора.'
act 'Уйти.':gt'название_локации_куда_вы_хотите_уйти'
end
Вот эта приблуда
$metka = $ARGS[0]
$loc = $CURLOC
Нужна для возврата в массив из каких нибудь дополнительных локаций, например меню предмета, команда $CURLOC не вернет вас в массив, она может возвращать только в последнюю локацию где нет массивов.
Команда для возврата в массив из всякой побочной ерунды.
act 'Уйти.':GOTO $loc, $metka
Это все, что я умею делать с массивами. Но как видите мне этого хватает на много разнообразных действий. При их помощи можно создавать многовариантные диалоги, боевые системы и черт знает что. Если сделать тот же самый пример при помощи переменных или нескольких локаций, то будет не удобно для каждой фразы плодить локации или отслеживать переменную указывающию на нужную строку. Если же использовать такую конструкцию.
'Начало диалога.'
act 'Первый вариант диалога.':
cla
'Текст первого варианта диалога'
end
act 'Второй вариант диалога.':
cla
'Текст второго варианта диалога'
end
То повторить то что я создал в массиве вообще не возможно.
Пример.
Локация под названием "масс"
if $ARGS[0]='start':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог.'
act 'Первый вариант диалога.':gt'масс','первый'
act 'Второй вариант диалога.':gt'масс','второй'
end
if $ARGS[0]='первый':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог для первого варианта.'
act 'Обратно.':gt'масс','start'
act 'Конец диалога.':gt'масс','конец'
act 'Второй вариант диалога.':gt'масс','второй'
end
if $ARGS[0]='второй':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог для второго варианта.'
act 'Первый вариант диалога.':gt'масс','первый'
act 'Конец диалога.':gt'масс','конец'
end
if $ARGS[0]='конец':
$metka = $ARGS[0]
$loc = $CURLOC
'Вот тут пишется диалог для конца разговора.'
act 'Уйти.':gt'название_локации_куда_вы_хотите_уйти'
end
Вот эта приблуда
$metka = $ARGS[0]
$loc = $CURLOC
Нужна для возврата в массив из каких нибудь дополнительных локаций, например меню предмета, команда $CURLOC не вернет вас в массив, она может возвращать только в последнюю локацию где нет массивов.
Команда для возврата в массив из всякой побочной ерунды.
act 'Уйти.':GOTO $loc, $metka
Это все, что я умею делать с массивами. Но как видите мне этого хватает на много разнообразных действий. При их помощи можно создавать многовариантные диалоги, боевые системы и черт знает что. Если сделать тот же самый пример при помощи переменных или нескольких локаций, то будет не удобно для каждой фразы плодить локации или отслеживать переменную указывающию на нужную строку. Если же использовать такую конструкцию.
'Начало диалога.'
act 'Первый вариант диалога.':
cla
'Текст первого варианта диалога'
end
act 'Второй вариант диалога.':
cla
'Текст второго варианта диалога'
end
То повторить то что я создал в массиве вообще не возможно.
Спасибо за урок, как раз с ними сейчас 3 часа ковырялся, всё вродебы нормально, а однако белый экран
ОтветитьУдалитьЭто может означать что переходы не правильные.
Удалитьact 'Кнопка.':gt'Название_локации','название_элемента_массива'
проверяйте на соответствие. Тут и черточки важны и запятая. Команда $CURLOC с массивами работает не корректно, поэтому, что бы вернутся в массив нужно либо вручную ввести место куда входишь или та универсальная конструкция, что я предложил.
Ну или сам массив не верно записан.
if $ARGS[0]='любое_имя':
end
Имя и преходы правильно там, а вот $CURLOC, как раз и вызывал белый экран, до массивов приходилось кучу лок делать, если действий много было, а с массивом попроще))
ОтветитьУдалитьВы уже достигли того уровня технических знаний, что есть у меня. Охотник в валете плетей делал много хитрых штук, которые я даже не понимаю как работают. Он сильно превосходит меня, но однако мне не мешает делать игры мой более низкий уровень. Это я к тому, что конечно совершенству нет предела, но все же, что бы создать игру, но обязательно владеть языком игры в совершенстве.
УдалитьУ меня уровень пока, корявости. Всё работает, но код очень коряво выглядит, а после этих уроков начал, править свои корявки
ОтветитьУдалить