Пока энтузиазм не утек, надо железо ковать . Но вот оно как-то не очень дается... Идеи, в целом, пока хлещут, но постоянно натыкаюсь не некоторые примитивные вещи, мучаюсь с ними пару часов, потом надоедает и закрываю все нахрен. По мере поступления некоторые основные вопросы, главный из которых:
Как сделать какие-либо события в определенное (или случайное) время? Т.е. закрытая комната, например, начинаешь тыкаться везде, ничего не находишь, нервничаешь и, наконец, спустся 10 шагов через дверь вламывается кто-нибудь. Желательно без заумных скриптов, т.к. я ни разу не программист и на все смотрю с точки зрения казуала, а не мастера С++.
Неактивен
Запалы. Смотри в сторону функции setfuse().
UPD: посмотрел документацию, там ничего не написано (не переведена эта часть)
В общем, так. Пишешь функцию вида
myFuse: function(param) { "Тут дверь с грохотом распахнулась и в комнату ворвался <<param>>!"; ... какой-то еще код ... }
а в другом месте (где ты хочешь "заложить мину") пишешь
setfuse(myFuse, 10, "ОГРОМНЫЙ ТРОЛЛЬ");
Тогда, через 10 ходов у тебя в комнату ворвется "огромный тролль".
Если ты хочешь, чтобы у тебя каждый ход выполнялось некое действие, то используй не запал, а демон. Вместо setfuse() напиши setdaemon(<функция>, <параметр>). Но демоны, в отличие от запалов, не исчезают сами. Их надо удалять явно - выполнив remdaemon с теми же параметрами, что и setdaemon.
Отредактировано fireton (28.12.2007 19:52)
Неактивен
Есть еще более продвинутая функция notify.
notify(object, &message, turns)
Она работает как запал, с той только разницей, что она направлена на конкретный объект. Вот кусочек кода как пример:
bomb: item location = bombroom sdesc = "бомба" rdesc = "бомбы" ddesc = "бомбе" vdesc = "бомбу" tdesc = "бомбой" pdesc = "бомбе" noun = 'бомба' 'бомбы' 'бомбе' 'бомбу' 'бомбой' 'бомбою' 'бомбе#d' 'бомбой#t' 'бомбою#t' noun = 'bomb' ldesc = { "Похоже, на бомбе есть кнопка с надписью \"детонатор\". "; if (self.isActive) "Бомба громко тикает. "; } explode = { "Бомба взорвалась! "; self.moveInto(nil); } ; bombButton: buttonItem location = bomb sdesc = "кнопка детонатора" rdesc = "кнопки детонатора" ddesc = "кнопке детонатора" vdesc = "кнопку детонатора" tdesc = "кнопкой детонатора" pdesc = "кнопке детонатора" adjective = 'детонатора' 'детонатора#r' noun = 'кнопка' 'кнопки' 'кнопке' 'кнопку' 'кнопкой' 'кнопкою' 'кнопке#d' 'кнопкой#t' 'кнопкою#t' ldesc = "кнопка для детонатора" isHer = true doPush(actor) = { "Бомба начала тикать. "; notify(bomb, &explode, 3); // Бомба взорвется через три хода bomb.isActive := true; } ;
Если количество ходов, заданных в notify равно 0, то она будет работать как демон, т.е. метод объекта будет вызываться каждый ход.
Неактивен