Как сделать в нужной комнате что бы ходы сами шли,то есть как,например,находясь под водой выводилось без ввода команд 2-3 сообщение о том,что мол нехватает воздуха и после смерть?
Да к стати,сейчас работаю над дебютной игрой.
MUD вечно жив!
Неактивен
Я так понял, что, находясь в определенной комнате, вне зависимости от того
что делает ГП, его ходы должны быть там ограничены...
Делать это мы будем при помощи "демонов". Добавь в комнату:
firstroom : room { started = nil // просто переменная i = 0 // для демона enterRoom( actor ) = { // при входе в комнату срабатывает эта функция if ( !self.started ) { self.started = true; setdaemon( DyingMsg, nil ); // старт демона } else pass enterRoom; } }
На все выходы из комнаты повесь:
east = { // идти на восток self.started = nil; self.i = 0; remdaemon( DyingMsg, nil ); // останока демона Me.travelTo( Another_room ); // переход в другую комнату }
Конечно должен быть и демон:
DyingMsg : function( parm ) { firstroom.i++; if ( firstroom.i == 1 ) "Воздух выходит из твоих легких."; if ( firstroom.i == 3 ) { "Ты задохнулся."; die(); } }
Неактивен
parm — параметр функции. Видимо, функция-демон должна быть функцией с одним параметром. В данном случае он просто не используется.
dobj — прямой объект, iobj — косвенный. В некоторых случаях действия совершаются с двумя объектами. Например, в предложении "разрезать верёвку ножом", веревка является прямым объектом, а нож — косвенным. В предложении "выпить воду" только один объект — прямой. "Три объекта, как правило, уже перебор, и в таких случаях очевидный объект подразумевается: "привязать лошадь к забору (верёвкой)". Верёвку можно не трогать, поскольку её использование очевидно. Тем не менее, ничто не мешает сделать обработчик (привязать) объекта (лошадь), который будет ругаться, если верёвки в инвентаре у персонажа нет.
Почитай мануал, особенно часть про обработчики действий (там где про do<Action>, verDo<Action> и т. д.). Без этого вряд ли разберёшься. Существует частичный перевод мануала на русский.
Неактивен