Форум переехал на новый адрес: http://qsp.su



АвторСообщение



ссылка на сообщение  Отправлено: 14.06.09 11:02. Заголовок: Диалог


Здраствуйте. вот недавно (дня 4 назад) занялся изучением движка. Намного больше понравилось писать все действия через команды, выполняемые при посещении.
Вот у меня диалог:




 цитата:
*pl '- Чай, кофе?'
act 'Благодарю':
$selact
DELACT $SELACT
Delact 'Не - спасибо, я сегодня уже что-то не то съел... '
end
act 'Не - спасибо, я сегодня уже что-то не то съел... ':
$selact
DELACT $SELACT
delact 'Благодарю'
end



Дальше у меня при любом варианте ответа будет одно и тоже продолжение. пока кроме как в вставки в каждый ответ действия не знаю как сделать иначе. Но у меня там ещё на 150 строк текста, а там ещё не единожды встречаются подобные действия. Вот вопрос, что тут можно сделать?
Пока кроме как присвоить какой-то переменной выполнение программы (макрос по сути) либо сделать ссылку на часть программы мыслей других не приходит.

Но из-за своего незнания не знаю как и это сделать =))

Спасибо: 0 
Профиль Цитата Ответить
Ответов - 16 [только новые]


менеджер по рекламе




ссылка на сообщение  Отправлено: 14.06.09 12:11. Заголовок: Если у тебя один и т..


Если у тебя один и тот же кусок кода повторяется много раз, можешь вынести его на отдельную локацию, а вызывать в нужных местах через gs'локация с кодом'
Или ты имеешь в виду что у тебя большой диалог который при любом выборе в конце концов закончится одинаково?

Спасибо: 0 
Профиль Цитата Ответить
менеджер по рекламе




ссылка на сообщение  Отправлено: 14.06.09 12:20. Заголовок: можно, кстати, упрос..


можно, кстати, упростить код.
*pl писать не обязательно, 'текст' по умолчанию выводится именно так.
$selact - это по моему было в одном из примеров... Тоже необязательно, то действие которое ты выбрал по умолчанию хранится в переменной $selact


 цитата:
'- Чай, кофе?'
act 'Благодарю':
DELACT $SELACT
Delact 'Не - спасибо, я сегодня уже что-то не то съел... '
end
act 'Не - спасибо, я сегодня уже что-то не то съел... ':
DELACT $SELACT
delact 'Благодарю'
end



Так же, если у тебя всего два варианта выбора, не обязательно использовать:

 цитата:
DELACT $SELACT
delact 'Благодарю'


оператор cla убирает все действия. то есть, тот же код в ещё более сокращённом варианте:

 цитата:
'- Чай, кофе?'
act 'Благодарю':
cla
end
act 'Не - спасибо, я сегодня уже что-то не то съел... ':
cla
end


единственно, после совершения действия должен происходить хоть какой-то код, кроме очистки списка действий) Если тебе нужно встроить туда один и тот же ответ для обоих вариантов, можно либо скопировать его, либо, если таких мест много - попробовать через gs:

 цитата:
'- Чай, кофе?'
act 'Благодарю':
cla
gs 'локация с действием'
end
act 'Не - спасибо, я сегодня уже что-то не то съел... ':
cla
gs 'локация с действием'
end



Спасибо: 0 
Профиль Цитата Ответить



ссылка на сообщение  Отправлено: 14.06.09 12:24. Заголовок: WladySpb пишет: Или..


WladySpb пишет:

 цитата:
Или ты имеешь в виду что у тебя большой диалог который при любом выборе в конце концов закончится одинаково?



Да, именно так.

Пробвал через JUMP, но наверно пишу что-то не так....



 цитата:
act 'прыжок': Jump 'LABEL'
:LABEL



что в этой записи может быть не правильно?

Спасибо: 0 
Профиль Цитата Ответить



ссылка на сообщение  Отправлено: 14.06.09 12:28. Заголовок: WladySpb пишет: $se..


WladySpb пишет:

 цитата:
$selact - это по моему было в одном из примеров... Тоже необязательно, то действие которое ты выбрал по умолчанию хранится в переменной $selact


$selact выводит название этого действие в окно как текст как я понял

Спасибо: 0 
Профиль Цитата Ответить
менеджер по рекламе




ссылка на сообщение  Отправлено: 14.06.09 12:29. Заголовок: jump работает только..


jump работает только в "текущем" куске кода.. это не указано в хелпе, но такая конструкция не прокатит. не совсем понимаю почему, это Байт лучше объяснит, но в данном случае, оператор jump ищет label в пределах кода выполняемого после выбора действия. jump подходит только для организации циклов.
Создай новую локацию и помести в неё код вывода действия, это проще.

Спасибо: 0 
Профиль Цитата Ответить
менеджер по рекламе




ссылка на сообщение  Отправлено: 14.06.09 12:31. Заголовок: Molok Ну, если текст..


Molok Ну, если текст не отличается, то можно оставить.. Я обычно отдельно вывожу, плюс, обычно нужно ещё вывести ответ.

Спасибо: 0 
Профиль Цитата Ответить



ссылка на сообщение  Отправлено: 14.06.09 12:34. Заголовок: WladySpb пишет: Соз..


WladySpb пишет:

 цитата:
Создай новую локацию и помести в неё код вывода действия, это проще


таких развилок выходить довольно много. под каждую создавать локацию выйдет слишком грамоздко.

А что можно использовать за место Jump? Вроде в бейсике работало goto "номер строки", но тут тоже не прокатило....

Спасибо: 0 
Профиль Цитата Ответить
менеджер по рекламе




ссылка на сообщение  Отправлено: 14.06.09 12:47. Заголовок: Molok если хочешь вс..


Molok если хочешь всё в одной локации замутить, попробуй через аргументы. Предположим, локация называется диалог. код у нас будет выглядеть так:

 цитата:
if $ARGS[0]!'': jump $ARGS[0]
*pl '- Чай, кофе?'
act 'Благодарю':
$selact
DELACT $SELACT
delact 'Не - спасибо, я сегодня уже что-то не то съел... '
gs 'диалог','LABEL'
end
act 'Не - спасибо, я сегодня уже что-то не то съел... ':
$selact
DELACT $SELACT
delact 'Благодарю'
gs 'диалог','LABEL'
end
exit
:LABEL
'У нас в меню есть фирменное блюдо!'
act'следующее действие':
end


В массиве $ARGS хранится передаваемая в локацию информация, то есть, строчкой gs 'диалог','LABEL' мы переходим на локацию диалог с аргументом LABEL а в начале локации проверяем аргументы, и если массив не пуст, переходим jump'ом (здесь он сработает) в место указанное аргументом. exit нужен, чтобы код после LABEL не начал выполнятся раньше чем нужно.

Спасибо: 0 
Профиль Цитата Ответить



ссылка на сообщение  Отправлено: 14.06.09 13:12. Заголовок: Я конечно понимаю чт..


Я конечно понимаю что тебя уже достал этот нуб, хотя может ещё и не достал =)
В общем вот кусок игры, собственно локация на которой расположен диалог:
http://slil.ru/27756055

Понимаю что можно было всё сделать компактней но я на этом учусь =)

Ближе к концу тот кусок, на котором мне надо сделать этот переход. Как его сделать я не пойму =(
В примерах ничего дельного не нашёл.
Может покажешь на примере? А то так я не догоняю....



Спасибо: 0 
Профиль Цитата Ответить
администратор




ссылка на сообщение  Отправлено: 14.06.09 13:19. Заголовок: Если речь всё ещё о ..


Если речь всё ещё о

 цитата:
act 'прыжок': Jump 'LABEL'
:LABEL


то вставляем в начало локации
if $ARGS!'':jump $ARGS

и далее вместо всех подобных Jump 'LABEL' вставляем gt 'название_текущей_локации', 'LABEL'
Конечно, можно вместо gt указать gs - программа будет вести себя соответственно оператору.

Спасибо: 0 
Профиль Цитата Ответить



ссылка на сообщение  Отправлено: 14.06.09 13:27. Заголовок: Код ошибки 120. Неве..


Код ошибки 120.
Неверное количество числа функций/аргументов....

Спасибо: 0 
Профиль Цитата Ответить
администратор




ссылка на сообщение  Отправлено: 14.06.09 13:29. Заголовок: Molok, какая версия ..


Molok, какая версия QSP?

Спасибо: 0 
Профиль Цитата Ответить



ссылка на сообщение  Отправлено: 14.06.09 13:31. Заголовок: 5.4.3..


Спасибо за подсказку) вот обновить я не догадался, вроде работает =)

Спасибо: 0 
Профиль Цитата Ответить
администратор




ссылка на сообщение  Отправлено: 14.06.09 13:38. Заголовок: Molok, текущая верси..


Molok, текущая версия QSP - 5.5.7 -- http://qsp.su/files/comment.php?dlid=1
Для WinCE - 5.5.5 -- http://qsp.su/files/comment.php?dlid=66

Спасибо: 0 
Профиль Цитата Ответить
администратор




ссылка на сообщение  Отправлено: 14.06.09 13:39. Заголовок: OK...


OK.

Спасибо: 0 
Профиль Цитата Ответить
менеджер по рекламе




ссылка на сообщение  Отправлено: 16.06.09 09:16. Заголовок: И, кстати, по мотива..


И, кстати, по мотивам этой темы на сайте появился новый пример диалога) Так что, при наличии вопросов "как сделать" можно попробовать покопаться в коде, а если что будет непонятно - мучить меня вопросами "как сделано"

Спасибо: 0 
Профиль Цитата Ответить
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 19
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация вкл, правка нет



Создай свой форум на сервисе Borda.ru
Текстовая версия