Как сделать в нужной комнате что бы ходы сами шли,то есть как,например,находясь под водой выводилось без ввода команд 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> и т. д.). Без этого вряд ли разберёшься. Существует частичный перевод мануала на русский.
Неактивен