Как сделать?
…
Организовал входящий звонок, то бишь в определённое время в любой локации появляется действие “Входящий вызов”, ведущее к диалогам :
Создал локацию “Вызов” с кодом:
if year=2016 and month=5 and day=20 and hour>=11 and hour<=12:act’<font color=red><center>Входящий вызов</center></font>’:gs’Диалог_Хлоя_Т’
end
В стартовой локации написал:
$counter=‘Вызов’
Всё работает , но действие “Входящий вызов” не пропадает после применения.
delact $selact куда только не писал - то qgen ругается , то основное окно диалогами забивает.
Может я в принципе неправильную схему сделал ?
Или ещё что-то добавить надо?
Сергей,
А вы прочитали что такое $counter и как там код выполняется?
Сергей,
надо так:
if year=2016 and month=5 and day=20 and hour>=11 and hour<=12 and флаг_входящий_вызов<>1:
act'<font color=red><center>Входящий вызов</center></font>': gs'Диалог_Хлоя_Т'
флаг_входящий_вызов=1
end
Тогда действие будет выводиться один раз. Время в игре привязано к действительному? Если нет, тогда от локации $counter вообще лучше избавиться.
Здравствуйте! У меня тут, возможно, очень нубовский вопрос, но все же.
Возникал проблема с переменными. Нужно что бы в зависимости от выбора в тексте менялась переменная. Есть переменная $f и я не понимаю, как менять ее значение в зависимости от выбора игрока.
Straginski,
рассмотри пример:
Spoiler
! задаём значение переменной? если ещё не задано
if $f='': $f = 'яблоко'
! выводим текст на экран
*pl 'Миша сорвал с ёлки '+$f+'.'
! создаём действия
act 'яблоко':
! задаём значение переменной
$f = 'яблоко'
! чтобы текст на экране изменился
! нужно стереть текст и вывести заново
! команда goto автоматически стирает текст
! и выполняет код на локации
! поэтому возвращаемся обратно на эту локацию
goto $curloc
end
act 'апельсин':
$f = 'апельсин'
goto $curloc
end
act 'ананас':
$f = 'ананас'
goto $curloc
end
act 'бензопилу':
! а можно так
$f = 'бензопилу'
*clr
*pl 'Миша сорвал с ёлки '+$f+'.'
end
Aleks Versus,
Спасибо. Работает. Время не привязано к действительному. Но мне нужна локация с которой можно активировать действия не привязанные к какой то определённой локации , но привязанные к игровому времени или к развитию сюжета. Посоветуйте как это лучше исполнить .В onnewloc у меня календарь.
Сергей,
по идее, каждый раз, как у тебя в игре меняется время, тебе нужно пересчитывать все значения (minute hour и т.д.). Лучше всего это делать на специальной локации, которая лишь этим и будет заниматься. У меня такая локация называется “календарь”. Ты календарь собрал в onnewloc, что в принципе неплохо, если всякое действие возвращает тебя на локацию через goto. Например:
act 'съесть печеньку':
time=time+3
goto $curloc
end
Так вот. На той локации, где у тебя пересчитывается время, и нужно проверять достигло ли время нужных значений (т.е. у тебя на onnewloc). Чтобы не загромождать onnewloc кучей разного кода, можно написать отдельную локацию, где будут собраны все проверки времени с выводами событий, назвать например “события по времени”, а уже к ней из onnewloc обратиться через gosub:
gosub 'события по времени'
Aleks Versus,
Спасибо за совет. Так и сделал. Работает. В связи с этим возникает другой вопрос: ограничивается ли число локаций к которым onnewloc может одновременно обращаться через gosub?
Сергей,
нет, число не ограничивается. Но об ограничениях в QSP всё же советую почитать вот тут.
Добрый день. Пытаюсь сделать игру, где развитие событий зависит от «кармы» игрока. Для этого создал две переменные «Белая_карма» и «Черная_карма», которые записал в специальной локации «Карма» у каждой значение 5. В одной локации написал код:
if Офис = 0:
act “Сообщить службе безопасности”:
PL “Свяжись с Робертсом, опиши ситуацию в общих чертах. Я выезжаю в офис, встретимся все там.”
Белая_карма = Белая_карма + 1
Офис = Офис + 1
GOTO $CURLOC
end
end
в другой локации:
if Белая_карма = 6:
pl”В офисе полумрак, его освещают только мониторы, на которые выводятся изображения с камер из Barbie land. Джон Робертс и Марк о чем-то спорят, сильно жестикулируя.”
act “Подойти к Робертсону и Марку”:
goto “Робертс и Марк”
end
end
Однако действие не запускается. Я так понимаю, что значение кармы не изменилось. Догадываюсь, что нужно сообщить системе где находятся данные кармы (чтобы не писать ее каждый раз), но не знаю как? Подскажите, пожалуйста.
Nikus,
А специальная локация «Карма» инициирована? Что-то вроде: gs ‘Карма’ на начальной локации.
St-john, Не очень понял вопрос. Я нуб в QSP и програминге. Скорее всего нет просто создал локацию вбил туда в код описания данные
А что за “специальная локация”? Если у карм должно быть стартовое значение “5”, то достаточно в стартовой локации это записать
А вообще советую сделать себе возможность проверять все переменные и менять их в самой игре, пока тестируете. Мне это когда-то посоветовали, и я советую тоже:.
1. В стартовой локации пусть, например, будет строка $usercom = ‘USERCOM’
2. Создайте локацию “usercom”
3. В ней напишите:
if USER_TEXT = ‘Чит’:
$cheat = input (”Введите исполняемый код”)
dynamic $cheat
end
4. Теперь в самой игре вы можете ввести в строке ввода сначала “Чит”, а потом, например, <<Белая_карма>> и точно знать, изменилась ли она и когда.
Ну, и все что угодно можно вводить)
И еще, попытаюсь, объяснить. Если вы просто, как говорите, сделали “специальную” локацию, то, конечно, в игре она не прочлась. Я тоже совсем не программист и вообще гуманитарий, но ведь тут же понятно: qsp не считывает все коды подряд, а только те, которые вы ему даете считать (исключение - counter, считывающий коды через определенные промежутки времени, и onnewloc - при обновлении локации). Если вы создали отдельную локацию (хотя зачем?), то команда gs ‘Карма’ - считает с нее информацию. Где уж эту команду ставить - вам решать.
mkir,
Спасибо. Я пытаюсь создать вариант разветвленного сюжета, сценарий запускается исходя из значения черной или белой кармы. Последовал вашему совету и система сообщила, что значение кармы = 1 (хотя в коде написано Белая_карма = Белая_карма + 1 и я ожидал, что получу значение “6”) Т.е. я так понимаю, что системе нужно объяснить где храниться изначальные данные кармы и куда за ними обращаться. Только я не знаю, как это сделать
приветы! а дайте пожалуйста ссылку на навигатор, а то чего то не нашел…