![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
![]()
Сообщение
#1
|
|
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Недавно была необходимость сделать диалоги для большого кол-ва NPC. Понял наскоко это неудобно(надо каждого НПС создавать диалог, а что если ему надо сказать просто "Здрасте", а игрок всего лишь должен ответить "Здраствуй"). Или надо использовать скрипты, а в них что-то вроде:
Neverwinter Script Source if( GetTag( OBJECT_SELF=="1" ) ) { return TRUE; } else if ... Думаю вы знаете как это делается=). А что если нужно создать диалог с проверками/действиями? Приходится использовать скрипты... причем коль-во скриптов может резко увеличится, в зависимости от кол-ва проверок/действий. Пример создать диалог в котором в зависимости от лвл игрока давалась 100 или 300 или 400 экспы, при этом были бы разные ответы НПС и игрока. Экспа должна даваться при ответе игрока. Это довольно простой пример, но даже здесь надо создать больше чем 1 скрипт. А что если я вообще не знаю как обращаться со скриптами? Я предлагаю создавать диалоги иначе. Как, смотрите ЗДЕСЬ. Все что приведено, - работает и проверено. Для того чтобы добавить систему к вашему модулю, надо включить в него 1 erf. Если тем что здесь описано заинтересуется кто нить(прошу напишите об этом), то добавлю эту .erf'ку, буду объяснять непонятные моменты и совершенствовать систему. На данный момент тестил в НВН1, но легко можно перенести и в НВН2. зы сори за грамотность. Добавлено через 13 минуты 30 Добавил ссылку, а то читать так не удобно... пройдите по ссылке, там тепереь все что надо=) Сообщение отредактировал san - Jan 3 2008, 20:02 |
![]() |
![]()
Сообщение
#2
|
|
Level 3 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
QUOTE Циклы внутри тут тоже не предусмотрены? Да, можно сделать зацикленные диалоги. Там есть опция GOTO=. И что значит "тоже"? Множество вариантов ответов NPC - предусмотрено. Об остальном ты еще пока не говорил. QUOTE "SetHeaderCD( "Эта фраза появится если игрок взял квест, но не выполнил#IF={( PL[quest]=1 )}", TRUE );" Я думаю да. Что надо сделать чтобы сделать такую проверку? Примерно вот что: Neverwinter Script Source object oPC = GetPCSpeker( ); int l = GetLocalInt( oPC, "quest" ); if ( l == 1 ) { return TRUE; } Разве это сравнимо с "#IF={( PL[quest]=1 )}"? QUOTE да и когда текст диалога в скрипте, это имхо не очень способствует наглядности. Согласен. Не очень наглядно - это минус. Если кому то будет интересно, что я тут сделал, обязательно исправлю=) Мне просто нужно чтобы хотябы 2-3 человека, сказали, да мы будем это юзать(иначе, нах мне оно надо=)?, для себя я уже сделал все что мне нужно и буду пользоваться). Тогда сделаю чтобы все было удобно и наглядно, и вообще без знания скриптов. QUOTE Вопрос, нужно ли юзеру изучать не простую схему, новый синтаксис для того Новый синтаксис, это сильно сказано, так пару правил=). И насчет сложности, сделать можно очень сложные диалоги. В том и прикол чтобы делать все диалоги из 1ого скрипта, без использования дополнительно скриптинга. ps Я действительно старался упростить создание диалогов, если первый же человек говорит, что это нафиг некому не надо... фигово. Просто жалко, что зря делал. |
![]() ![]() |
Текстовая версия | Сейчас: 26th April 2025 - 23:05 |