RU 📌 Pinned

Как сделать?

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

Millstream,
я сам только разбираюсь, но думаю что через переменные. т.е. в случае победы пишем “убийство +1” и далее там где тебе надо if убийство > 3: “вас боятся. или уважают”. или если хочешь что бы текст NPS сменился, то каждому прописываешь условия “if убийство < 3: “одни текст” else: “другой текст””. или если хочешь что бы у всех добавилась одна и таже строка, например “вас боятся. или уважают”, либо несколько вариаций, что б рандомно - то это через массивы скорее всего. но тут не шарю.

Millstream,
Я сейчас тоже что-то подобное делаю, тоже через переменные, а прописываю так:

!В локации, где совершается преступление, пишем:
преступление = преступление + 1
!Теперь, если хотите указать на репутацию в обращении нпс, просто приписываем условие:
IF преступление < 5:
    ' Люди на улицах приветливо улыбаются вам.'
ELSE
    'Люди в панике разбегаются. завидев такого преступника, как вы!'
END

Спасибо, как много непонятного, но о боже я все понял! Просто я вчера начал писать что-то типа QSP-боевик по серии игр S.T.A.L.K.E.R. И для этого мне нужно много знать про QGen. Я прочитал все семь уроков, но все же думаю, что не до конца освоил это. Мало примеров, они слишком маленькие. И про патроны непонятно.

Спасибо!!!!!!!!)

Millstream,
Я тоже только недавно начала осваивать QSP, но, мне кажется, что в уроках по QGEN расписана вся база, я просто их сначала сделала, как там показывалось, и в голове сразу отложилось. А когда уже есть какая-то база, когда ты начинаешь понимать, как это все работает и что от чего зависит, тогда уже можно начинать усложнять код)

Я начала с совсем простого квеста, который пошел в стол, просто чтобы закрепить базу, а теперь гораздо легче, уже начинаю коситься на массивы)

Ага. Я только начало своего квеста сделал, блин, не знал, что такая фигня делается так трудно)

Millstream:

Я прочитал все семь уроков, но все же думаю, что не до конца освоил это.

уроков не просто мало, их, для того что бы сделать даже не симулятор, а просто визуальную интерактивную историю - совершенно недостаточно. у меня что то стало получаться после лазанья по форуму только. так что в помощь тебе:
http://wiki.qsp.su/start
qsp564help.zip в разделе http://qsp.su/index.php?option=com_content&view=article&id=57&Itemid=56 (с файла-справки тянет убить его автора учебником по юриспруденции, но она сильно помогла с командами, т.е. на его языке “Базовыми операторами языка QSP”, конечно же)
https://qsp.org/forum/243-faq
https://qsp.org/forum/682-kak-sdelat-menu-dla-ispolzovania-predmetov
из всего этого сам понял хорошо если треть.

Edited at 01.05.2015 09:07 (10 years ago)

И снова взрывающий мой бедный мозг вопрос. вот код:

Spoiler

IF вещи = 0:
“Телега подъехала прямо к входу в и девушка вместе со стариком быстро перенесла в нее свои немногочисленные вещи. После этого она попрощалась со старостой, тот вскоре отправился на своей телеге обратно, и лишь скрип ее несмазанных осей еще долго был слышен среди деревьев…”
ACT “осмотреться”:
вещи = 1
goto “Осмотр”
END
ELSE:
ACT “в башню”:goto “1_этаж”
ACT “в лабораторию”:goto “лаборатория”
ACT “в деревню”:goto “деревня”
END

он прекрасно работает.
вот еще 1 код:

Spoiler

IF читать=1:
CLS
“текст 1”
END
ELSE:”текст 2”

он НЕ работает. Вернее если читать=1 то все в порядке, а вот если нет, то “текст 2” прибавляется к “текст 1”.
Работать как надо стало только когда вместо ELSE я написал

IF читать<>1:"текст 2"

подозреваю что из за того 2 случай вызывается в локации одного из пунктов меню предмета. но разве код из “выполнить при посещении” не должен одинаково работать в обоих случаях?

Edited at 01.05.2015 16:18 (10 years ago)

AleksGor,
скажите, “текст 1” - это просто набор текста или переменная, я просто не очень поняла.
а чтобы заработал, подозреваю, что нужно записать так:

IF читать = 1:
    CLS
    "текст 1"
ELSE
    CLS
    "текст 2"
END

AleksGor,
хотя, могу заметить, что у меня с командой CLS почему-то не работает, а вот с *CLR работает, так что даже не знаю, в чем дело.

Как много непонятного, вроде понял

Спасибо

Lisichka:

“текст 1”

это текст. его много, потому убрал в примере.
CLS в тексте 2 не нужна, потому что чистит все кроме окна инвентаря.
упс, я потер лишнее, вот такой код не работает:

IF читать=1: 
CLS 
"текст текст текст" 
act "задуматься": goto "задуматься"
END
ELSE:"нужно заглянуть в начало дневника"

потому то и нужен CLSв первом случае, и он работает, я проверял - когда чел. прочел 1 часть и нажал на вторую, срабатывает условие IF и стирается все, пользователь не сможет уйти из локации и проигнорировать act “задуматься” (можно сделать так что бы кнопка была во всех локациях, но это сложнее), только срабатывал с какого то перепоя еще и ELSE, добавляя текст “нужно заглянуть в начало дневника” к IFу. исчезла, как я уже говорил эта проблема только после смены ELSE на IF читать<>1:. но почему она вообще была?! не понимаю. ведь логика в первом примере и во втором одинакова. вся разница, то что первый пример срабатывает когда человек просто через GOTO попадает на локацию, а в примере, в котором у меня была проблема - через меню долбаного дневника

Spoiler

$меню_Дневник[0]=“осмотреть:осмотреть”
$меню_Дневник[1]=“читать:читать_1”
$меню_Дневник[2]= “читать дальше:читать_2”
If $selobj=“дневник мага”: menu”$меню_Дневник”
unsel

Конкретно, когда используется $меню_Дневник[2]= “читать дальше:читать_2” и вызывается этот код:

Spoiler

IF читать=1:
CLS
“текст текст текст”
act “задуматься”: goto “задуматься”
END
ELSE:”нужно заглянуть в начало дневника”

хмм, пока писал пришла в голову мысль что можно поменять текст местами, тогда CLS по идее должен чистить текст “нужно заглянуть в начало дневника” или, опять же поменяв его местами, присобачить к IFу jump, что бы кусок кода при невыполнении условия просто не считывался… надо будет попробовать ради интереса, но это не отменяет вопроса о логике QSP. в чем причина срабатывания кода по другому?!

Edited at 01.05.2015 19:14 (10 years ago)

AleksGor:

Lisichka:

“текст 1”

это текст. его много, потому убрал в примере.
CLS в тексте 2 не нужна, потому что чистит все кроме окна инвентаря.
упс, я потер лишнее, вот такой код не работает:

IF читать=1: 
CLS 
"текст текст текст" 
act "задуматься": goto "задуматься"
END
ELSE:"нужно заглянуть в начало дневника"

потому то и нужен CLSв первом случае, и он работает, я проверял - когда чел. прочел 1 часть и нажал на вторую, срабатывает условие IF и CLS стирает всё, пользователь не сможет уйти из локации и проигнорировать act “задуматься” (можно сделать так что бы кнопка была во всех локациях, но это сложнее), только срабатывал с какого то перепоя еще и ELSE, добавляя текст “нужно заглянуть в начало дневника” к IFу. исчезла, как я уже говорил эта проблема только после смены ELSE на IF читать<>1:. но почему она вообще была?! не понимаю. ведь логика в первом примере и во втором одинакова. вся разница, то что первый пример срабатывает когда человек просто через GOTO попадает на локацию, а в примере, в котором у меня была проблема - через меню долбаного дневника

Spoiler

$меню_Дневник[0]=“осмотреть:осмотреть” $меню_Дневник[1]=“читать:читать_1”
$меню_Дневник[2]= “читать дальше:читать_2”
If $selobj=“дневник мага”: menu”$меню_Дневник”
unsel

Конкретно, когда используется $меню_Дневник[2]= “читать дальше:читать_2” и вызывается этот код:

Spoiler

IF читать=1: CLS
“текст текст текст”
act “задуматься”: goto “задуматься”
END
ELSE:”нужно заглянуть в начало дневника”

хмм, пока писал пришла в голову мысль что можно поменять текст местами, тогда CLS по идее должен чистить текст “нужно заглянуть в начало дневника” или, опять же поменяв его местами, присобачить к IFу jump, что бы кусок кода при невыполнении условия просто не считывался… надо будет попробовать ради интереса, но это не отменяет вопроса о логике QSP. в чем причина срабатывания кода по другому?!

AleksGor,
IF - ELSE - END — это единая конструкция, в ней IF означает ЕСЛИ, ELSE означает ИНАЧЕ, END означает КОНЕЦ.
Работает это так:

IF <условие>:
    <то, что выполняется, если условие верно>
ELSE
    <то, что выполняется, если условие неверно>
END

У тебя же ELSE стоит дальше слова END, закрывающего эту конструкцию.

Log in or Register to post comments.