Текущий архив: 2004.05.30;
Скачать: 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 вся ветка
Текущий архив: 2004.05.30;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.037 c