Предысловие: Не ругайтись громко за слово qwest, я знаю что с ошибкой написано, мне просто удобнее так писать,
так как кнопки в такой вариации находятся друг к другу ближе и так быстрее печатать =)
Данный модуль демонстрирует логику создания квеста для браузерной игры, За основу построения квеста был взят квест из игры Lineage2, он был написан на java. Я его решил взять изза его компактности в плане хранения данных в базе.
НО ни коем образом это не рабочая версия квеста, а всего лишь демонстрация, многие вещи упущены и зависят непосредственно от игры и ее спицифики
В данном примере расмотрен квест из серии возьми -> отнеси -> отдай -> получи награду
Таблица для базы примерно такая:
user_id | qwest_id | state | cond все поля можно сделать int =)
id игрока, id квеста, запущен/незапущен, номер этапа квеста
Табличка весьма простая, в принципе большего и не нужно.
После самого класса квеста я создал экземпляр класса и вызываются пару методов для демонстрации, по сути вызов каждого метода, это эмуляция действий игрока
"Каждый метод по сути не выполняет записей в базу и тд...он просто выводит текст название метода и что он делает в данный момент"
немного о логике самого квеста в демо:
-
квест проверяет уровень игрока, если он подходит, то дает нам возможность взять квест, если нет, то посылает нас...подрости до нужного уровня =)
-
проверяет взят ли квест, если игрок туповат и по десять раз подходит к NPC он ему отвечает, "ВАСЯ ИДИ ВЫПОЛНЯЙ КВЕСТ"!
-
у второстепеных персонажей не отображается квест если он не в процессе прохождения
-
Выдаются предметы (квестовые и награда)
-
выход из квеста
-
повторяемость квеста (то есть, есть ли возможность его перепроходить после завершения или нет)