![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Квесты в RPG [Delphi, Windows]
PigMey © (2003-09-21 18:34:00)Подскажите, как организовать алгоритмы диалогов и раздачи квестов в RPG?
kavald (2004-02-01 18:54:00) [1]Сначала надо придумать эти самые квесты :)
Потом определить зависимости между ними и написать диалоги. В процедуре обработки диалогов само собой определяется какой квест игрок выбрал (вроде 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. Личше все-таки делать класс для каждого из квестов и описывать там собственные методы по изменению состояния связанных квестов.
Omar2002 (2004-02-01 17:11:00) [2]Лучше всего напиши Кобику на мыло, он как-то это вроде не сложно сделал (если не знаешь Кобика, то зайди в тему "Танки 2: Броня в огне")
Vertex (2004-02-01 15:57:00) [3]нет... я уже так не могу)
Woodpecker (2004-02-01 15:03:00) [4]PigMey © (21.09.03 18:34)
Почему просто не спросить "как мне написать игру на Delphi"?
Artificial intelligence (2004-02-01 13:12:00) [5]Лучше всего рандомным образом, чтобы при каждой раздаче, вариантов было штук пять... тода сюжет будет нелинейным это про квэсты..