Город Мастеров
IPB

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> QS (quests system), управление квестами
_kaa_
сообщение Jul 25 2005, 14:20
Сообщение #1


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]




Модуль (версии альфа 0.10)
SQL-запрос для создания нужных баз


-----------------------------------------------------------------------------

Я уже довольно давно отошел от разработки НВН-модулей, но когда в прошлую субботу мне пришла в голову эта идея - просто не смог остановиться и не реализовать.

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

А почему бы не реализовать поддержку story line (сюжетной линии) с помощью скриптов и базы данных? При этом не ограничивая в сложности сами скрипты, заложить в эту самую поддержку самые простые типы? Ведь по сути все квесты содержат такие элементы как "пойди найди, убей, поговори и т.п.", причем возможность выполнить один квест возможно только после выполнения другого (или наоборот, не выполнения).

Теперь о технической стороне дела. Ведь чтобы "заскриптить" простой квест - нужно написать диалоги для участвующих сторон, внести проверку а выполнение и прочее, что быстро сводит энтузиазм от самой интересной идее для квеста на нет.

Первый плюс системы - не нужно писать диалоги (если нет необходимости) для каждого НПС, участвующего в квесте, достаточно знать tag НПС.

Второй, немаловажный. Вся информация об активных квестах отображается в журнале.

Сами квесты хранятся в базе, в данном случае mySQL. Что дает кучу плюсов (не без минусов), об этом ниже.

Как это выглядит на примере:
Хотим мы сделать квест – НПС номер 1 просит отнести Вещь НПС 2. При этом выдает эту самую вещь. Запись в базе данных содержит теги обоих НПС, resref Вещи и текст, который говорит первый НПС при выдаче квеста, второй НПС при окончании и отдельно краткий текст квеста для журнала.

Все. Никаких изменений в самом модуле мы не делаем (предполагается, что эти самые НПС у нас уже есть и у НПС стоит дефолтный скрипт на onConversation).
Когда игрок разговаривает с НПС – идет запрос в БД, где по тегу НПС (индекс с БД) выполнятся запрос на доступные квесты для этого игрока (забегая вперед скажу, что можно как предусловие задавать расу, пол, характеристики, мировоззрение и прочие характеристики игрока, история выполненных квестов (обязательно выполненный для линейности и обязательно НЕ выполненный для ветвления) и т.п.)
Если найдены доступные квесты исходя из указанных требований квеста – запускается диалог, данные в котором заполняются динамически, из БД. Не нравится простой вариант диалога – создаете свой и указываете имя диалога, из которого вызываете одну функцию для принятия квеста. Сюжетная линия при этом не нарушается. То же самое с завершением. Список «требований» для завершения квеста содержит как стандартные вещи (Н убитых мобов в тегом, похожим на ***, Н вещей, сработавший триггер с тегом ***) так и вызов custom-скрипта, который должен проверить не стандартные требования, без необходимости писать все остальное.
(*На данный момент реализована проверка не всех пред-условий и после-условий, в разработке)

Пару слов о журнале. В нем отражается состояние текущих квестов, т.е. если это «убить Н мобов» - будет отображено сколько уже убито и сколько нужно. Чуть ниже размещу скриншоты из альфа-версии QS.

Сама система разрабатывается как шардо-независимая, будет доступна всем. (А если найдется кто-нибудь, кто сможет перевести на английский – то и на ваулте будет).

Поскольку квесты хранятся во внешней SQL – базе, квесты можно добавлять на ходу (с ограничениями, скажем новых НПС или вещей так пока не добавить, да и не нужно я считаю). Сами квесты создаются с помощью простого html- браузера, интерфейс написан (но еще не доделан) на php.

Из приятных возможностей (планируется на будущее) – возможность построения дерева квестов (ведь в каждом квесте, что зависит от предыдущего, хранится номер «родителя» и возможно отображения в виде дерева).
Можно сделать служебные скрипты, которые будут по базе проверять наличие в модуле всех нужных НПС, вещей, мобов и т.п., что сильно облегчит отладку.

Таким образом, с того, кто придумывает квесты, снимается вся нудная работа по скриптованию. Кроме того, скорость и продуманность квестов возрастает. Для существующего мира для создания простых квестов достаточно знать теги ключевых НПС и иметь под рукой палитру вещей (в веб-интерфейсе будет список стандартных\кастомных вещей с названием и тегом. И скорее всего список НПС\мобов то же).
Появляется возможность создавать хитрые и запутанные сюжетные линии, в то же время не задумываясь о сложностях их реализации.



Добавлено в 14:35
Вот, для примера простейших квест из альфа-демо-версии :)

Как он выглядит в базе:

SQL
INSERT INTO `quests` VALUES (1000, 'Крысы в подвале', 'NW_MALEKID01', 'NW_MALEKID01', 0, 0, 0, 0, NULL, 0, 0, 0, 0, 0, 0, 'NW_RAT*n', 'Крыс', 10, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 5, 0, 0, NULL, NULL, NULL, NULL, 2, 'Мои родители ушли на стройку, а я боюсь сидеть дома один. Там такие здоровые крысы, они и обед весь мой сожрали. Я бы их выгнал, но они такие здоровые. Поможешь мне выгнать их?', 'Вот здорово, ты их выгнал! ', 'Мальчик попросил выгнать крыс из его дома на юге, сразу за башней мага.', NULL, NULL, 0, 0, '', NULL, 400, 0, NULL, NULL, NULL, NULL, NULL, '2005-07-24 23:23:09');


Участвует только один НПС, мальчик с тегом NW_MALEKID01
Требований у квеста нет никаких, оптимальный уровень - 2.
Разговариваем с мальчиком:

[картинки вырезанны]

Смотрим журнал:
Цвет зависит от уровня квеста и вашего уровня, красный - сложный, зеленый - оптимальный, серый - слишком прост (награда в опыте будет маштабироваться)
(IMG:http://kaa.mhost.ru/nwn/img/NWN0002.jpg)

Выполняем квест:

(IMG:http://kaa.mhost.ru/nwn/img/NWN0003.jpg)

Сообщение отредактировал _kaa_ - Oct 12 2005, 14:35
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Lorendroll
сообщение Jul 25 2005, 15:50
Сообщение #2


Level 9
***

Класс: Волшебник
Характер: Neutral Good
Раса: Эльф



Ххе! ЗдОрово, Каа! Я такую же систему реализую у себя, мы оба додумались до одного и того же. Единственное отличие - я пытаюсь сделать ее для игроков. Чтобы игроки могли назначать квесты другим игрокам. (назначать награду и опыт, которые отбирают у собственного перса)
PS Этому сообщению место в "идеях для разработчиков"
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 25 2005, 16:48
Сообщение #3


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



отвечая на вопросы по icq:

>Можно ли будет использовать qs на уже рабочем шарде и как?

Да. Это несколько скриптов, NWNX + mySQL и вызов из 3-4 событий модуля (onPlayerEnter, onModuleItemAcuire) и дефолтных скриптов (onConversation, onDeath).
Самая сложная часть - это настроить nwnx+mysql, что на самом деле вовсе не сложно. (правда мне еще предстоит попробовать nwnx под freebsd).

>Не будет ли все это тормозить?

Многие вещи делает SQL-сервер, например определяет доступность квеста для игрока. Из НВН устанавливаются начальные параметры (ID игрока, раса и т.п.), а уже сам SQL по запросу проверяет.
Я замерял на сгенерированной базе в 1000 квестов самый сложный SQL-запрос (выдача всех тегов НПС, которые в данный момент могут дать квест игроку). На amd athlon 1800 запрос занял 0.00180s (mySQL стоит отдельно, сам модуль был на другой машине. Так что на более мощной машине и SQL-сервере на ней же будет вообще не заметно).
Состояние активных квестов хранится на итеме, история выполненных квестов - в базе.
QS я делаю уже неделю, и мне лень таскать mySQL базыс с работы домой, поэтому домашний комп лезеть на mySQL-сервак прямо через инет (Стрим у меня), скорости хватает.

>Как бы побыстрее увидеть готовую версию?

Вариант соб-но один - принять участие. Нужны тестеры (придумать простые квесты и проверить на баги), если кто хочет заняться веб-интерфейсом прямо сейчас (у меня пока руки скриптами заняты) - welcome.
Проект полностью открытый и в принципе любой может посмотреть на демо-модуль уже сейчас. Посколько настраивать ради этого nwnx+mysql - лениво, я попытаюсь в скором времени запустить тестовый сервак.

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
DEM
сообщение Jul 26 2005, 11:45
Сообщение #4


Level 7
**

Класс: Маг
Характер: Lawful Neutral
Раса: Эльф



Что-то очень похоже на квесты из WoW(world of warcraft)... Но идея класная :good:
Добавлено в [mergetime]1122367639[/mergetime]
Но тогда лучше сделать три варианта выбора квеста...
Ну сложный (в диалоге будет красным)
средний (зелёный)
лёгкий (серый)

И тогда крысы будут меняться в уровне, смотря какой ты выбрал...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 26 2005, 13:07
Сообщение #5


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (DEM @ Jul 26 2005, 11:45)
Что-то очень похоже на квесты из WoW(world of warcraft)... Но идея класная :good:
Добавлено в 11:47
Но тогда лучше сделать три варианта выбора квеста...
Ну сложный (в диалоге будет красным)
средний (зелёный)
лёгкий (серый)

И тогда крысы будут меняться в уровне, смотря какой ты выбрал...

Да, сама идея навеяна ВОВ. сложность в реализации ее под НВН :)

Добавлено в 13:37
Попросили выложить что есть... Держите. С документированием пока никак, так что сами разбирайтесь.


Сообщение отредактировал _kaa_ - Jul 27 2005, 09:17
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Аваддон
сообщение Jul 26 2005, 15:12
Сообщение #6


Level 10
***

Класс: Воин
Характер: Lawful Neutral
Раса: Человек
NWN: Скриптинг [PW]



_kaa_ Ты как всегда поражаешь мое воображение. Настолько интересная и актуальная (!!!) идея... Супер! Мега супер пупер. НВНХ+Мускул - отличная пара. Уж слав богу не стандартная БД. Впрочем вариант конфигурации QS путем снятия комментов можно придумать на несколько баз данных. Майсикуель самая быстрая, но не у всех есть возможность.
С удовольствием приму участие по части разработки и особенно тестинга. Ох...мега проект будет (всмысле мега полезный). На ваульте успех гарантирован. А уж какая польза... Супер! Жду ответа в ПМ. =) Записываюсь тестером. Няя...^_^
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Jul 26 2005, 16:00
Сообщение #7


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



Эта проблема давно витала в воздухе. Её неплохо решили на Avlis. Там, правда, задача была в другом: сделать рандомно генерящиеся квесты. Кстати, было бы неплохо приделать генерилку и сюда.
Вообще, концепция и её реализация - на высоте, как всегда. :) Когда закончу со своими БД - обязательно с чем-нибудь помогу.
:good:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 26 2005, 17:09
Сообщение #8


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Боюсь для оперативной связи нужна как минимум ICQ. Стучитесь 7789197.
Если все пойдет по плану - завтра подниму на тестовом серваке модуль.

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

Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 26 2005, 17:16
Сообщение #9


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (Аваддон @ Jul 26 2005, 15:12)
НВНХ+Мускул - отличная пара. Уж слав богу не стандартная БД.

Теоретически, если кого заинтересует - можно написать обработку для переноса готовых квестов на стандартную базу или даже на сингл. Но задача не совсем тривиальная, используется действительно много встроенных возможностей БД для ускорения работы, так что пока я даже отказался от первоначальной задумки заложить такую возможность в скрипты.
Как это предположительно выглядит. По опыту реализации рунной магии и крафта на Мидгарде, там все делается вне игры и потом собирается (скриптами на перле :) ) в готовый для компиляции скрипт и подсовывается в модуль. Быстро по скорости, но не слишком удобно для обновления (что для сингла не особо важно).
Со встроенной БД - есть сомнения что стоит даже начинать. Хотя она не особо тормозная за чтение, но поставить nwnx действительно проще и полезнее.
Добавлено в [mergetime]1122445208[/mergetime]
Тему прикрепил, в самом первом топике линки на последнюю версию модуля и sql- файл для создания баз.
Там же будет адрес тестового шарда.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Vanes
сообщение Jul 27 2005, 10:00
Сообщение #10


Level 11
Иконки Групп

Класс: Вор
Характер: Neutral Evil
Раса: Эльф
NWN: Скриптинг [PW]
Validor2



квестовая система ВОВ и правда стала для многих откровением, и раз уж делать что-то подобное, то не стоит выдумывать велосипед и нужно банально перерисовать все оттуда...
тут же решается вопрос с квестовыми деревьями... у кого есть сервак ВОВа простогляньте любой файл *.tcl... это простенькие скрипты, которые срабатывают в момент OnPerception для каждого нового игрокас, состоящие из N-го кол-ва if'ов...
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Jul 27 2005, 12:21
Сообщение #11


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (Vanes @ Jul 27 2005, 10:00)
квестовая система ВОВ и правда стала для многих откровением, и раз уж делать что-то подобное, то не стоит выдумывать велосипед и нужно банально перерисовать все оттуда...
тут же решается вопрос с квестовыми деревьями... у кого есть сервак ВОВа простогляньте любой файл *.tcl... это простенькие скрипты, которые срабатывают в момент OnPerception для каждого нового игрокас, состоящие из N-го кол-ва if'ов...

Дерево квестом проще. Проще воспринимать и придумывать (и можно легко отобразить в виде логичной структуры) и быстрее (все условия проверяет mySQL сервер).
Если кому-то покажется малым требование одного сделанного и одного не-сделанного квеста - расширить до Н займет около 7 минут (добавить поля в базу и поправить запрос из скрипта. Хотя это и отразится на скорости, но не значительно).

На самом деле этих двух условий достаточно для создания нелинейного сюжета любой сложности.

Наверное это не очевидно, но основная цель qs - снять с того, кто придумывает квесты, всю работу с кодом. И наоборот.

Как примерно выглядит создание квестов:
Если это "серьезный" шард, со своей историей - ДМ примерно представляет себе карту местности, где какие НПС обитают, где какие мобы живут.
Сел ДМ, на бумажке накидал сюжетную линию, обозначил и раставил НПС, при необходимости создал НПС или вещи в тулсете. Накидал диалоги. И все...
Если никаких новых НПС\вещей не использовал - квест можно сразу загружать в базу и он будет доступен игрокам.

Статические квесты задумывались:
1. Как средство для ознакомления игрока с шардом, с его НПС-обитателями, с местностью и мобами.
2. Занять игрока. Не "прокачкой", а продуманным сюжетом. Особенно актуально в отсутствие ДМ-ов

Посколько qs получилась не то что бы статическая - ДМ, набивший руку на стат. квестах может таким же образом добавлять свои квесты динамически.

Плюс qs позволяет вести "историю" квестов. Простые примеры:

Престиж-классы. Многие шарды не хотят давать возможность получения престижей всем подряд. (в основном "гопоте", что случайно зашла на шард и задержалась). Достаточно сделать сюжетную линию, чтобы игрок побегал, поискал НПС\вещи\места и как награду выдать престиж-класс.

На шардах, где PvP обычное дело - выполнив сложные квесты НПС выдает игроку задание убить самого сильного противника из другой фракции, например раз в день. (заодно его противнику - квест на убийство "охотника")

История позволяет немного отгородить "случайных" людей на шарде, от тех, кто "играет" (от тех, кому "охота покачацаа" - пусть идут играют в doom/wolf и т.п.). Все же РПГ-игры - это игры на развитие фантазии, общения, а не моторных функций глаз+рук. Простая сюжетная линия для того кто играет - в некотором роде приключение, развлечение. Для "гопоты" - тяжкий труд и пройти они могут его только если знают, что наградой будет эксп\шмотка и т.п.

\\понесло меня в сторону... :) пойду поем, пока докачивается патч для linux-сервера

p.s. А "Банально перерисовывать" - не интересно.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
Batkom
сообщение Aug 12 2005, 06:53
Сообщение #12


Level 4
**

Класс: Клерик
Характер: Lawful Good
Раса: Человек



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

Если игрок подписывается на квест, он убирается со всех досок или глашатаев. Далее игрок идет к ниписю, который генерит ему сам квест. Квесты простенькие(поди принеси, собери компоненты, кильни моба и приниси мне его часть тела и так далее), я думаю замарачиваться не стоит. Так же нипись генерирует место дислокации цели квеста и сроки, в которые надо квест выполнить.

Награда напрямую будет зависеть от
А) сложности квеста(сроки)
Б) уровня игрока
В) вашего респекта

Респект начисляется за удачное выполнение квестов или выполнение их раньше срока. Снимается за провал квестов или опоздание. При высоком значении респекта есть вероятность получить рарную вещичку. Если респект ушел в минус, вы не можете выполнять квесты, в таком случае респект восстанавливается в ноль по прошествии года(12 дней) или по праздникам.

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

Вот пример(квадратными скобочками я отметил переменные):
*игрок подходит к глашатаю*
Глашатай\доска: Ваше уважение равно [3]
Сегодня поступила заявка на вольный клинок от [Сем Купер] из города [Неллас]
Игрок: Я беру этот заказ(заявка, хз как назвать, но это тестовый вариант)
Глашатай\доска: Удачи.

*Игрок топает в Неллас и говорит с Семом Купером*
Сем купер: Здравствуйте, чем могу служить?
Игрок: Я по обьявлению...
Сем купер: ах да, перейдем сразу к делу, через [4] дня в наш город приезжает посол из [Брук'Ла'Даста], но неподалеку обосновалась шайка [Серых плащей] - известных бандитов.
Они известны тем, что их главарь носит на шее ожерелье из ушей своих жертв. Они наверняка околачиваются гдето поблизости от города в поисках добычи. Если устрените их до приезда посла и принесете мне ожерелье в качестве доказательства, вам щедро заплатят из городской казны.

*Игрок идет и киляет главаря бандитов, который спавнится рандомно на расстоянии не более трех локаций от Нелласа и приносит обратно ожерелье уложившись в два дня(типа долго искал заплутавшего бандюка)*
Сем Купер: вы прекрасно справились! я обязательно о вас всем расскажу. Вот обещаная награда. И еще примите от меня лично этот [Бедролл] *игроку повышается респект и все счастливы*
Добавлено в [mergetime]1123819291[/mergetime]
Я довольно общно все описал(описание давнишнее), но пару дней назад все заработало и весьма неплохо.
И главное, что игроки не медлят изза четко обозначеных сроков выполнения квеста, вся база по взятому квесту хранится в итеме, который игрок носит с собой.
Добавлено в [mergetime]1123819422[/mergetime]
В остальном, все акже как и было описано выше.

Сообщение отредактировал Batkom - Aug 12 2005, 06:57
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Aug 21 2005, 16:21
Сообщение #13


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



На выходных доделал веб-интерфейс, теперь можно добавлять/редактировать/удалять квесты из любого браузера (нужен только включенный java script ).
Пару скринов, как это примерно выглядит можно посмотреть тут: общий вид и дерево квестов

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

Для рабочего запуска остается доделать все запланированное в НВН (не все возможности реализованы),
в ближайшее время приделаю генерацию проверочных скриптов - т.е. с веб-интерфейса можно будет сгенерировать несколько nss-скриптов для запуска их на сервере. Они будут проверять наличие всех НПС и вещей, использованных в описании квестов (т.е. поиск по тегу в модуле, создание всех предметов, использованных во всех квестах и т.п.).
Планирую приделать списки вещей\мобов, используемых в модуле, для быстрого поиска\проверки.

С тестами вышел небольшой облом - не могу собрать nwnx под freebsd 5.4. Ищу другие варианты.

В качестве рекламы краткое описание qs:
  • Создание (с возможностью расширения) единой сюжетной линии. Даже если квест настолько уникален, что не вписывается в рамки qs - на каждом шаге можно добавить свои диалоги\скрипты и т.п., используя qs только для журнала и общей сюжетной линии. (под сюжетной линией понимается зависимости между разными квестами - т.е. нельзя получить один квест, не выполнив прежде другой. Или наоборот, выполнив один квест уже нельзя получить другой). История о всех выполненных квестах храниться в внешней БД (mySQL в данном случае), информация об активных квестах - в переменных на предмете в инвентаре (для скорости).
  • Для создания простых квестов даже не нужен тулсет - достаточно знать имена (или теги) ключевых НПС; мобов если их нужно убить; вещей если планируется что-то найти или выдать как награду. Более того, все делается при включенном сервере и будет доступно сразу после записи квеста.
  • Отделяет "мысль" от ее непосредственной реализации в скриптах. Если вам не нужны ветвистые диалоги для простого квеста - достаточно внести текст в поле при создании и он появится в диалоге с указанным НПС. Править каждый раз диалог НПС тоже не нужно.
Если посмотреть на скриншоты, можно примерно представить как выглядит создание квеста.
Стадии разделяются по шагам.
1. Указать обязательные параметры. (Название, автора, кто выдает квест, кто принимает, примерный уровень, что будет записано в журнал и диалоги (если не используются свои)
2. Условия получения квеста - Класс, раса, уровень, требуемый выполненный квест и т.п. (список расширяется)
3. Условия окончания квеста. Если это "доставка" - тег нужной вещи (ее же можно создать при получении этого квеста), если "убийство" - теги нужных мобов, количество. При этом можно указать какие вещи будут выпадать дополнительно в лут при убийстве "квестовых" мобов и с каким шансом. Все вещи помечаются как "квестовые", их нельзя продать\выбросить. Избавиться можно только доделав (или отменив) квест.
Если это "разведка" - указать имена триггеров, на которые нужно "наступить".
Плюс возможность вызвать свой скрипт, который должен вернуть указанное значение (через переменную модуля)
4. Награда. Стандартно - деньги, опыт, вещи (до 3 штук) и возможность вызвать свой скрипт.

Дерево квестов позволяет наглядно посмотреть зависимости квестов друг от друга и легко построить нужную сюжетную линию.

ps. На данный момент готово около 70% от запланированного, ведется поиск помощников. Откликнулись несколько тестеров и более никого. А хотелось бы увидеть одного приличного скриптера и человека со приличным знанием английского, для перевода веб-фейса, чтобы можно было выложить qs на ваулте.

Сообщение отредактировал _kaa_ - Aug 21 2005, 16:22
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Aug 21 2005, 16:29
Сообщение #14


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (Batkom @ Aug 12 2005, 06:53)
Вот система рандомных квестов работающая у меня

Вся прелесть qs в том, что можно любой квест в нее запихнуть. Даже просто для отображения в журнале или уменьшения количества скриптов\диалогов.
Например меня просто убивала необходимость при написании любого простого квеста редактировать кучу диалогов, не говоря уж о более сложных квестах, там где требуется "помнить" об уже выполенных квестах. С qs все простые вещи можно указать прямо при создании, а уже потом озаботиться написанием "нестандартных" вещей.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Aug 21 2005, 23:13
Сообщение #15


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



QUOTE
С тестами вышел небольшой облом - не могу собрать nwnx под freebsd 5.4. Ищу другие варианты.


Значит так. Покопался я у себя и таки скомпилил nwnx под фрюшку.
FreeBSD именно 5.4. Честно говоря - меня удивило наличие нескольких грубых ляпов,хотя может быть я просто что-то пропустил. Точнее ляп всего один, но из него вытекает несколько ошибок. Итак, опишу порядок установки:

1) В корневом каталоге пакета открой файл Makefile.in и замени строку(вторая по счету)
LIBS = @LIBS@ -ldl
на
LIBS = @LIBS@

2) Следующий косяк, он же главный, связан с плагином для mysql. Вот тут то меня и удивило то что автор почему-то не включил возможность задать в параметрах configure путь к дереву каталогов mysql.
Итак, заходи в подкаталог db пакета. Открывай файл dbmysql.h и заменяй строку
#include <mysql/mysql.h>
на
#include "/usr/local/include/mysql/mysql.h"
Вместо /usr/local разумеется нужно подставить путь к дереву каталогов мускула на твоей машине. В моем случае - это /usr/local(помоему он такой по умолчанию), но у тебя он может быть другим(если prefix задавал).

3) Едем дальше. Все в том же каталоге db открой файл Makefile.in и замени строку
LIBS = @LIBS@ -L/usr/lib/mysql -lmysqlclient -lz
на
LIBS = @LIBS@ -L/usr/local/lib/mysql -lmysqlclient -lz
На счет /usr/local смотри пункт 2.

4) Выполняй
./configure
Можешь сразу задать --prefix=путь_к_каталогу_с_сервером_nwn

5) Вместо make нужно выполнять gmake
gmake

6) gmake install
Если не задавал prefix то этот шаг лучше пропустить.

7) Из корня пакета скопируй скрипт nwnstartup.sh в каталог с сервером(об этом подробнее смотри документацию). Если шаг 6 пропустил - то скопируй туда же *.so из корня пакета и из его подкаталогов.

Ну вот вроде и все. Эксперимент проводился на последней версии nwnx для linux(2.61 помоему).
Да сразу предупрежу - поскольку nwnserver'а для linux у меня нет - на работоспособность не проверял.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Aug 22 2005, 08:48
Сообщение #16


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



QUOTE (aleVandal @ Aug 21 2005, 23:13)

Значит так. Покопался я у себя и таки скомпилил nwnx под фрюшку.
FreeBSD именно 5.4. Честно говоря - меня удивило наличие нескольких грубых ляпов,хотя может быть я просто что-то пропустил. Точнее ляп всего один, но из него вытекает несколько ошибок. Итак, опишу порядок установки:

Сделал как ты сказал. Компилится, но не работает.

CODE

./nwserver: error while loading shared libraries: ./nwnx2.so: ELF file OS ABI invalid


linux_enable="YES"

на форуме говорят, что без ldl возможны траблы, а где добыть ldl для freebsd молчат.

ps. дали место на виндовом серваке, поднимаю тестовый сервак там.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Aug 22 2005, 12:26
Сообщение #17


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



QUOTE
на форуме говорят, что без ldl возможны траблы, а где добыть ldl для freebsd молчат.


Попробуй следующее:
в пункте 1 вместо
LIBS = @LIBS@ -ldl
подставь
LIBS = @LIBS@ -lc

Понимаю что
QUOTE

ps. дали место на виндовом серваке, поднимаю тестовый сервак там.

но может всетаки доведем эксперимент до конца?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Aug 24 2005, 11:49
Сообщение #18


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Кто хотел помочь с тестированием - еще разок напишите, сервак тестовый заработал, как и веб-интерфейс.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Aug 28 2005, 19:02
Сообщение #19


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



Вобщем поэксперементировал я с установкой nwnx2 под фрю и вот что я имею сказать:
Как выяснилось, проблемма с запуском сервера с nwnx -
QUOTE

./nwserver: error while loading shared libraries: ./nwnx2.so: ELF file OS ABI invalid

была вовсе не в nwnx, а собственно в самом нвн-сервере. Дело в том что он распространяется в виде линуксовых бинарников(думаю это и так все знают:D) и в бзде запускается как приложение линукс(через compat). Вот тут и таится проблемма - nwserver отказывается грузить любые НЕлинуксовые библиотеки. А линуксовые грузит и не выпендривается. То есть - если so-шки nwnx скомпилить не во фре, а в линуксе, и подсунуть их нвсерверу, работающему во фре, то все должно быть пучком.

В общем имеем наглядное пособие вреда капитализма. Эхх... Ежили бы nwserver под юникс распространялся в исходниках - трабл этих не было б. :DB:
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
_kaa_
сообщение Aug 28 2005, 19:46
Сообщение #20


Level 9
Иконки Групп

Класс: Волшебник
Характер: Chaotic Good
Раса: Дракон
NWN: Скриптинг [PW]



Примерно к этому мы и пришли - собрать nwnx под linux и все полученные файлы и еще несколько используемых библиотек перенести на freebsd. Осталось найти и установить linux :)
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
aleVandal
сообщение Aug 28 2005, 21:16
Сообщение #21


Level 4
**

Класс: Оборотень
Характер: Chaotic Neutral
Раса: Орк
NWN: Скриптинг [PW]



Могу у себя в генту скомпилить.
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
mipn
сообщение Dec 22 2008, 17:46
Сообщение #22


Level 1


Класс: Обыватель
Характер: Lawful Good
Раса: Человек



все ссылки умерли - не могли ктонибудь перевыложить файлы ?
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения
virusman
сообщение Dec 22 2008, 21:07
Сообщение #23


Level 17
Иконки Групп

Класс: Волшебник
Характер: Neutral Good
Раса: Человек
NWN: Скриптинг [PW]
Axistown SR 1.9
NWNX



...
Прикрепленные файлы
Прикрепленный файл  quests_last.rar ( 39.54 килобайт ) Кол-во скачиваний: 20
Прикрепленный файл  bases.rar ( 1.24 килобайт ) Кол-во скачиваний: 20
 
Вернуться в начало страницы
Скопировать ник в поле быстрого ответа
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



Текстовая версия Сейчас: 1st November 2024 - 02:27