RU 📌 Pinned

Как сделать?

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

Как можно сделать список заданий?
Чтобы можно было его просматривать, если нужно отменять ненужные.
При выборе определенного задания приступить к его выполнению

Примеры:
Игровой мир.
Перед вами стоит NPS №1
Поговорить с ним:
Получено задание “поговорить с NPS №2”
Отправиться к NPS №2
После разговора “задание поговорить с NPS №2” завершено, и удаляется из списка журнала заданий.
После этого можно опять поговорить с NPS №2
И получаем задание “Убить 8 волков”
Получено задание “Убить 8 волков” +ведение счета убитых волков 0/8, 1/8…8/8
Цель достигнута
(При этом добавляем задание в журнал)

Может кто поподробней рассказать про меню предметов. В примере всё представлено не совсем наглядно, ибо всего один предмет. Расскажите как используя предмет перейти в локацию, допустим: “Инвентарь”, а затем перейти обратно в локацию.

Nickit, не самый удобный способ, однако, я выкрутился сделав каждому заданию свой ID, то есть каждое задания у меня имеют переменную qvestID, ну и присваиваешь номер задания, например первое задание - это: qvestID=1, потом внутри этого задания каждый его этап прописываю похожим образом: qvest1=1 для первого этапа, затем qvest1=2 для второго этапа.
Отдельным файлом у меня получилась структура:

if qvestID=1:
 if qvest1=1: $info_qvest1='Я взял задание у НПЦ1, теперь мне надо подойти к НПЦ2.'
 if qvest1=2: $info_qvest1='Я поговорил с НПЦ2, по просьбе НПЦ1 и получил крутую пушку.'
 if qvest1=3: $info_qvest1='НПЦ1 доволен тем как я выполнил его первое поручение.'
end

А в журнале заданий пишешь:

if qvest1!0:
'Информация о первом квесте:'
'<<$info_qvest1>>'
if qvest2!0:
'Информация о втором квесте:'
'<<$info_qvest2>>'

konolya, все переходы прекрасно осуществляются через оператор gt, а для перехода обратно, надо на каждой локе записывать в переменную её называние, к примеру:

$back=$curloc

Затем на нужной локации добавляем действие:

gt $back

evp:

Код:

true = -1
false = no true
gs ‘displayStat’

Код:

!Локация displayStat
clr
$cheatStat = iif(Cheat1, ‘включены’, ‘ВЫКЛЮЧЕНЫ’)
nl’<a href=“exec:Cheat1 = no Cheat1 & gs ‘‘displayStat’’”><b>Читы <<$cheatStat>></b></a>’

Нужны комментарии?

Спс, попробовал - работает.
Но, таких вызовов надо несколько (Cheat1, Cheat2, Cheat3, …..)
А за счет того, что clr вызывается внутри функции - отображается только последняя строка.

(добавленно)

все ок - поборол.
вопрос закрыт.

CoSinyS,
Не совсем конечно я разобрался с квестами, Можешь как-то в файле это продемонстрировать. Только если можешь немного иначе.
Дано 3 NPS:
Вход в игровой мир.
Перед вами стоит NPS1
Поговорить с NPS1:

Квест1:NPS1: Добро пожаловать воин, для зачисления в наши ряды поговори с NPS2
ACT:Принять.
GT’kvest1’
‘Получено задание “День зачисления”’
(+запись этого квеста в журнал заданий).

ACT’Отправиться к NPS2’GT’NPS2’


NPS2
Поговорить с NPS2:
kvest1: ACT’Завершить’ Удаление квеста с журнала заданий.

Поговорить опять с NPS2
kvest2:Отнеси письмо вождю(NPS3)
Принять: +в журнал

Отправиться к Вождю.

Вождь(NPS3)
Поговорить с вождем.
“Поздравляю Воин! Ты взят в наши ряды.”
.
желательно чтобы можно было просматривать журнал заданий в любом месте.
И при просмотре можно было бы вабрать определённый квест если взято несколько сразу.

И как можно еще сделать?
Дан один NPS и 2 квеста от него, но второй можно получить только после выполнения первого. При этом чтобы второй не отображался пока не сделаешь и не сдашь первый квест этому NPS

Или покажи в файле как это сделать, а то как-то совсем запутался

if qvestID=1:
 if qvest1=1: $info_qvest1='Я взял задание у НПЦ1, теперь мне надо подойти к НПЦ2.'
 if qvest1=2: $info_qvest1='Я поговорил с НПЦ2, по просьбе НПЦ1 и получил крутую пушку.'
 if qvest1=3: $info_qvest1='НПЦ1 доволен тем как я выполнил его первое поручение.'
end

А в журнале заданий пишешь:

if qvest1!0:
'Информация о первом квесте:'
'<<$info_qvest1>>'
if qvest2!0:
'Информация о втором квесте:'
'<<$info_qvest2>>'

Nickit, сообщения свои проверь, я тебе в личку написал)

Всем привет, только начинаю пользоваться qsp… есть пару вопросов
1. Есть ли возможность нарисовать карту? что бы при нажатии на изображение (определенную часть) был переход на локацию?
2. На счет условий, элементарное понял.. но как сделать: к примеру есть 3 локации… что бы открылась 4 надо во всех 3 побыть, неважно в каком порядке.

Spoiler

Сделал так: на первой переменная L = 1, на второй K = 1, на третьей J = 1. и соответственно
if l1 = 1 and k = 1 и тд
act ‘исследовать дальше’: gt ‘kanal1’

есть ли возможность сделать проще в 1 переменную, или как нить по другому?

Gefestions,
1. Да, есть.
2. Нет, это самый простой вариант.

Белый Шарик #100 25.08.2015 10:02 (10 years ago)

Объедините необходимые локации в какую-то группу. Например переменной первый_этаж. При посещении каждой локации первого этажа добавляйте к значению первый_этаж += 1. Пропишите условие, что если первый_этаж = 3, то появляется действие перехода в новую локацию.

Nex, ок, как? есть ли ссылки полезные на эту тему? если есть то можешь дать?

Белый Шарик:

Объедините необходимые локации в какую-то группу. Например переменной первый_этаж. При посещении каждой локации первого этажа добавляйте к значению первый_этаж += 1. Пропишите условие, что если первый_этаж = 3, то появляется действие перехода в новую локацию.

тогда по твоему варианту можно будет на первый этаж раза 3 зайти и откроется друг. лока.

Белый Шарик #100 25.08.2015 10:24 (10 years ago)

И правда. ))
Тогда при посещении каждой локи первого этажа добавить:

if первое_посещение_комната1 = 0 : первый этаж += 1
первое_посещение_комната1 = 1

Но наверняка можно сделать рациональнее.

Log in or Register to post comments.