Вниз
Скачать: CL | DM;

Квесты в RPG   Найти похожие ветки 

← →
PigMey ©   (2003-09-21 18:34) [0]

Подскажите, как организовать алгоритмы диалогов и раздачи квестов в RPG?


← →
Artificial intelligence   (2004-02-01 13:12) [1]

Лучше всего рандомным образом, чтобы при каждой раздаче, вариантов было штук пять... тода сюжет будет нелинейным это про квэсты..


← →
Woodpecker ©   (2004-02-01 15:03) [2]

PigMey ©  (21.09.03 18:34)

Почему просто не спросить "как мне написать игру на Delphi"?


← →
Vertex   (2004-02-01 15:57) [3]

нет... я уже так не могу)


← →
Omar2002 ©   (2004-02-01 17:11) [4]

Лучше всего напиши Кобику на мыло, он как-то это вроде не сложно сделал (если не знаешь Кобика, то зайди в тему "Танки 2: Броня в огне")


← →
kavald   (2004-02-01 18:54) [5]

Сначала надо придумать эти самые квесты :)
Потом определить зависимости между ними и написать диалоги. В процедуре обработки диалогов само собой определяется какой квест игрок выбрал (вроде NPC говорит: пойдешь на право  - коня потеряешь - прямо голову сложишь и т.п.) В программе будет структура или класс вроде:

TGameQuest = record
 QuestID: Integer; { уникальный идентификатор квеста }
 RelatedQuests: array of Integer; { массив квестов, зависящих от данного }
 Enabled: Boolean; { получен или нет }
 Done: Boolean; { выполнен или нет }
 Aborted: Boolean; { провален или нет }
end;
TGameQuests = array of TGameQuest;

var
 GlobalQuests: TGameQuests; { а здесь соотвественно все квесты хранятся }


Когда игрок получеат квест или выполняет какие-то действия связанные с квестом, то поля записи меняются. При изменении полей надо передавать эти изменения и на связанные квесты. Например, тебя послали с кем-то поговорить и этот NPC мог дать еще квестов, а ты его просто убил. Тогда в структуру квеста запишется Enabled = False (квест больше не доступен), Done = True (поговорить-поговорил, при изменении этого поля можно очки опыта давать), Aborted = False (квест не обломался). В связанных квестах должны быть все квесты, которые давал убитый и во все из них ставим Enabled = False (теперь получить их нельзя).
Или тебя послали отнести лекарство, а ты не уложился по времени.
Enabled = False (см. раньше), Done = False (не выполнил ведь), Aborted = True (само собой). Тогда в связанных квестах пишем снова Enabled = False, Aborted = True, кроме одного (теперь родня больного будет тебя искать и мстить и надо их всех пристрелить или с кем-то поговорить, чтоб заступился) - у него ставим Enabled = True.
Примерно так.

P.S. Личше все-таки делать класс для каждого из квестов и описывать там собственные методы по изменению состояния связанных квестов.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.023 c
3-1083863372
DenKop
2004-05-06 21:09
2004.05.30
Как почитать Advantage Table (*.adt) таблицу?


1-1084662075
Shade_
2004-05-16 03:01
2004.05.30
Хранение дерева данных


3-1083741652
Demoniak
2004-05-05 11:20
2004.05.30
Удаление некоторых записей


1-1084633198
Ivolg
2004-05-15 18:59
2004.05.30
Memo


6-1081799593
DED_MustDie
2004-04-12 23:53
2004.05.30
non-blocking




   Наверх