Как сделать?
…
как сделать так, что бы переходы между двумя локациями были по 15 минути по времени? голову сломал уже над этим. уже практически покончил с этими стартовыми локациями. в них игрок больше как бы не вернется (по крайней мере пока что именно такая задумка) но вот переходы между ними двумя не могу сделать что бы были по 15 минут (есть другие локации типо кухня спальня и т.д. они привязаны к данным локациям и сделал 1 минуту переход тупым minute = minute + 1)
IceMan:
как сделать так, что бы переходы между двумя локациями были по 15 минути по времени?
очень сложно понять, что ты имел в виду.
сделай типа отдельную локацию-подпрограмму:
# TimeCount
tmp1=1
:TC_loop
!......
! все, что меняется за 1 минуту
!......
tmp1 += 1
if tmp1 < ARGS[0] : jump 'TC_loop'
а потом, где надо потратить сколько-то времени, просто вызываешь эту подпрограмму:
gs ‘TimeCount’
!для одной минуты
!или
gs ‘TimeCount’, 15
!для 15 минут
! или любое другое число
только для сна и др долгих действий это не используй - оптимизируй.
Привет народ.
Есть вопрос:
Если я вызываю подпрограммы, функции и тд (команды GS и FUNC) или обрабатываю служебные события обрабатываемые подпрограммами ($onobjsel, $ongload, $counter, ….)
а потом из них нагло выхожу командой GT.
То что происходит со стеком и переданными параметрами?
Они где-то зависают или подчищаются?
И если они зависают, то чем мне это грозит и как их подчистить в ручную?
нет, в том смысле что бы конкретно счетчик перематовал на 15 минут вперед. то есть допусти нажал с улицы идти домой и оно скакануло на + 15 минут и наоборот. вот в чем проблема. просто к локациям привязаны еще и другие локации и стандартное как я делаю minut = minut + 1 в каждой локации не подойдет.
*—–*поняв что лохонулся*—–*
то есть как бы gs ‘timecount’ вбивать как оператор к действию или это будет чисто привязано к локе?
IceMan:
то есть как бы gs ‘timecount’ вбивать как оператор к действию или это будет чисто привязано к локе?
или к локе, или к действию, или к переменной, или вообще к массиву….
act 'Пойти на кухню':
gs 'TimeCount', 1
gt 'Kitchen'
end
act 'Пойти на улицу':
gs 'TimeCount', 15
gt 'Street'
end
act 'Пойти позаниматься на беговой дорожке':
gs 'TimeCount', str*vit/10
gt 'Treadmill'
end
Как использовать предмет?
Создать меню предмета?
Типа есть ‘нож’ и при нажатии было меню ‘использовать’ .
Если можно напишите подробнее, а то я пень пнем)))
IceMan, ваша локация “location” (все как обычно и без ненужных усложнений):
act 'Пойти на кухню':
gt 'Kitchen'
end
act 'Пойти на улицу':
gt 'Street'
end
act 'Пойти позаниматься на беговой дорожке':
gt 'Treadmill'
end
Вся логика прячется в ONNEWLOC:
if $CURLOC ! $nextLoc:
$prevLoc = $nextLoc
$nextLoc = $CURLOC
end
if ($CURLOC = 'Kitchen' and $prevLoc = 'location') or ($CURLOC = 'location' and $prevLoc = 'Kitchen'): time += 1
if ($CURLOC = 'Street' and $prevLoc = 'location') or ($CURLOC = 'location' and $prevLoc = 'Street'): time += 15
if ($CURLOC = 'Treadmill' and $prevLoc = 'location'):
time += str*vit/10
elseif ($CURLOC = 'location' and $prevLoc = 'Street'):
time += 1
end
Тут можно сделать изящней, но будет неочевидна логика. Поэтому оставляю как есть. Тот, кто понял механизм, сможет и доработать :)
evp,
в принципе так можно с любой получается? просто вместо location заменить на название самой локации… интерестный выход. получается все временные рамки остаются в ONNEWLOC?
Axi.Lex,
ну то что ты пень пнем сразу видно)))) извини если что))) http://wiki.qsp.su/help:acts - все азы здесь… по разделам полазь… я всему оттуда учился.
Axi.Lex,
есть у меня вот такая штука
IceMan,
лучше всего изменять время в действии, из которого осуществляется переход. Потому что на одну и ту же локацию возможно придётся переходить с разных локаций, и время перехода для каждой будет отличаться.
act 'Идти в лес':
minute = minute + 15
goto 'лес'
end
Если есть локация для пересчёта часов, дней и пр, то её следует вызывать всякий раз при изменении времени.
act 'Идти во Дворец':
minute = minute +30
gosub 'пересчитать_время'
goto 'дворец'
end
Если будешь изменять время в onNewLoc, учитывай, что код onNewLoc выполняется ПОСЛЕ того, как выполнится код локации.
IceMan, да, идея в том, чтобы: [] во-первых, все переходы обрабатывались в одном месте, где их можно легко редактировать, не выискивая по всей игре;
[] во-вторых, это делалось автоматически (onnewloc), не давая возможности автору ошибиться;
[*] и, наконец, это было просто удобно для использования (простой оператор gt без заморочек).
Не обязательно засорять ONNEWLOC развернутым кодом обработки переходов - его можно хранить в специально отведенной локации, вызываемой из ONNEWLOC оператором gs.
Aleks Versus,
это конечно не плохо. но у меня почему то не работает такой код. сколько не пытался выдает ошибку. почему я и обратился сюда. это самый очевидный вариант кода и он шишь работает. я голову был сломал. и местами менял и писать через if пытался. мудрил как только в голову приходило. но никак не работало
Я азы уже наизусть знаю, а с инвентарём и с меню объектов еще туго.
Aleks Versus,
спасибо
Aleks Versus,
А как с двумя и более предметами создать подобное меню?
помоги плз