Как сделать?
…
Привет народ.
Есть вопрос:
Если я вызываю подпрограммы, функции и тд (команды 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,
А как с двумя и более предметами создать подобное меню?
помоги плз
IceMan,
если выдает ошибку, то какую? Прикрепи игру в сообщение, чтобы можно было посмотреть, в чём загвоздка.
Axi.Lex,
ну ты ведь видел как сделано меню камня? Создай меню для каждого предмета. В локации-обработчике выбора предмета добавь для каждого предмета:
if $selobj = 'Камень':
menu '$массив_меню_камня'
end
if $selobj = 'Кукуруза':
menu '$массив_меню_кукурузы'
end
Aleks Versus,
в том то и загвоздка что никакой просто из qspшки выкидывает…