Forum.iFiction.Ru

iFiction.Ru · ifHub · FAQ · IFWiki · QSP · URQ · INSTEAD · AXMA

форум об interactive fiction, текстовых приключенческих играх и всём таком...

Вы не зашли.

0    0    #1
29.07.2007 14:49

masterofshadows
Участник
Откуда: Кресло
Зарегистрирован: 22.07.2007
Сообщений: 29

Тихо, тихо ползи,
Улитка, по склону Фудзи,
Вверх, до самых высот!

Помогите - актер и скриптование демонами

у мну тут весьма специфическая трабла...Мне позарез нужен актер, но опять-таки: то, что написал сам не пашет...
Ситуация:
Актер находится перед закрытой дверью...пока игрок не найдет способ открыть ее, мне надо, чтобы актер как-бы совершал попытки сломать дверь, при этом у него ничего не должно получаться(  неплохо было бы сделать, чтобы сообщения выводились независимо от местанахождения игрока )...затем актер должен пройти внутрь, упасть там в обморок( ну соотсветсвенно с ним ни разговаривать ниче сделать низя) и выронил предмет...все...

Неактивен

0    0    #2
30.07.2007 18:19

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

делается это примерно так:

Код:

replace init: function
{
    ......   // покоцано много-много
    setdaemon(lifeDaemon, nil);                       // запускаем демона жизни!
    .....
}

lifeDaemon: function(parm)                             // Оживляем Васю!
{
    if (Vasya.location=lift)
    if (liftdoor.isopen)
    {
        "Из открытой теперь двери лифта донесся дикий рев \"Порву суку на грелки!  Я тебе %№"* покажу, как меня запирать!\";
        if (vodka.location=etazh12) 
         {
            “\n Но вскоре крик затих - видимо, он нашел водку. "; 
            vasya.moveInto(nil); 
            vasyavdym.moveInto(etazh12);
            ogurec.moveInto(etazh12);
         }
        else
        global.achtung:=true;       
    }
    else
    {
     switch (triedToBreakin)
     {
       case 0: "От шахты лифта донеслась гулкая и невнятная, но явно нецензурная брань. "; break;
       case 1: "Откуда-то сверху донеслись глухие удары. Морзянка, сэр."; break;
       ....
       default: "Меланхоличный стук повторяется несколько раз и затихает. ";
     }
      triedToBreakin++;
    }
}

Также приведу жуткий пример из Дримора:

Код:

replace init: function
{
    ......   // покоццано много-много
    setdaemon(lifeDaemon, nil);                       // запускаем демона жизни!
    .....
}

lifeDaemon: function(parm)                             // Оживляем всех к тому пригодных
{
local o;
o := firstobj(living); 
 while (o <> nil)
 {
  o.live;
  o := nextobj(o, living);
 }
}


class living: object  //Живое
cons=true // изначально в сознании
enemy=[]  // изначально у него нет врагов
live=
{
 local o,enlist,i;
 enlist:=[];
 // Если есть враги, и они здесь, то создадим их список
 if (self.enemy!=nil && self.enemy!=[] && self.cons)
 for ( i:=1; i<=length(self.enemy); i++ )
 if (self.enemy[i].isReachable(self)) enlist+=self.enemy[i];

 // если бежали, "чекаем мораль"
 if (enlist!=[] && self.isflee)
  if (self.moralcheck(Me))
  {
    self.backToFightMes;
    self.isflee:=nil;
  }
  else self.flee;
    

 // если не бежим, деремся
 if (!self.isflee)
 {
    // случайным образом выбираем противника
    if (enlist!=[]) self.fight(enlist[rand(length(enlist))]); 
 }
}
;

Неактивен

0    0    #3
31.07.2007 19:49

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

masterofshadows написал:

спс...теперь более-менее понятно, хотя не мог бы объяснить, что делает global.achtung....

В стандартных библиотеках ничего, этот параметр такая-же фантазия как объекты vasya, etazh12 и другое.

Неактивен

0    0    #4
06.08.2007 10:07

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

Просьба, создавать темы для отдельных вопросов и указывать проблему в их названии.

Неактивен

0    0    #5
08.08.2007 16:29

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

masterofshadows написал:

У мну проблемы с обыском "актера без сознания". Я последовал совету uux-а и при открытии дверей просто заменил актера на "актера без сознания", но в игре при вводе скажем:
- осм актера без сознания
мне выдает, что не знает слова "без". Я пробовал перефразировать, но бесполезно...
=====
И еще маленький вопрос - мот кто знает есть ли в стандартной библиотеке "SitDown" или же самому определять надо?

1. Нужно добавить предлог-связку в специальные слова.

specialWords
   'of'='для'='против'='типа'='из'='под'='от'='на'='в'='с' ='без' ,

2. Есть только "сесть на"

Неактивен

0    0    #6
27.08.2007 06:50

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

uux написал:

мое объяснение сильно напоминает русскую народную сказку про Кащея Бессмертного: найди остров, на нем дуб, на дубе сундук и т. д.

... игла в яйце, яйцо в утке, утка в зайце, заяц в шоке...

Баг пофиксю!

Неактивен

0    0    #7
16.09.2007 13:17

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

masterofshadows написал:

Проблема мешает мне писать дальше игру и ваще выводит из себя...Я еще в начале игры создал комнату:
===============================
stuffroom: room
sdesc = "Чулан"
ldesc = "Комната завалена всяческим хламом. Ты приглядываешься - ага вон на востоке еще дверь...Тут тебе определенно не нравилось -  воздух в помещении был какой-то тяжелый, создавалось ощущение, будто тебя хотят вдавить в пол.
east = importantroom
north = startroom
;

Если текст именно такой, то проблема тут:

ldesc = "Комната завалена всяческим хламом. ..*покоцано*... в пол. "
east = importantroom

Т.е. не закрыты кавычки.

Неактивен

0    0    #8
21.11.2007 09:51

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

Вопрос не совсем конкретный.
В прямом виде спрашивать о месте где находишься (вась, скажи, а где я нахожусь?), нельзя в силу ограничений парсера и ожиданий игрока от него. Но можно и нужно, чтобы персонаж отвечал на вопросы о названии локации или её характерных особенностях. В ответе прописать описания для случая когда игрок в локации, и вовне.

Неактивен

0    0    #9
22.11.2007 00:31

GrAndrey
папа RTADS и Бяка (+49, -2)
Откуда: Москва
Зарегистрирован: 15.09.2002
Сообщений: 1198
Вебсайт

меньше слов

Re: Помогите - актер и скриптование демонами

uux написал:

- VampirE - написал:

masterofshadows написал:

Хмм...что-то я запутался...Как заставить спросить у актера про место, в котором находишься?...И ваще мона пжлста хотя б маленький пример диалога?... а то торможу...

ИМХО проще всего присвоить локации какое-то имя, которое будут отображаться в статусной строке, а потом реализовать предмет класса thing с таким же названием.

ИМХО в рамках диалоговой системы "спросить про/рассказать про" это все равно будет, мягко говоря, неинтуитивно. Как раз тот случай когда меню имеет преимущество перед парсером.

Позволю не согласиться. Находясь во дворце, вполне логично "спросить про дворец", или попав на ферму, расспросить о ней хозяина. Это делать можно и тоньше, не акцентируя внимание на формальном названии локации, а на характерных для неё объектах.
НЕ заморачивайтесь на технических аспектах! Во многих случаях простое решение будет легче для вас и игрока. Как пример - обход использования трех объектов в команде, отказ от наречий в пользу сопутствующих действий и т.п.

masterofshadows, пожалуйста, уточни, что ты же ты имел в виду?

Неактивен

Powered by PunBB
© copyright 2001–2024 iFiction.Ru