Logo
Все об играх серии Baldur's Gate и играх на движке Infinity. Русификации, модификации, инструменты для создания модов.
 

Главное меню
· FAQ

Поддержите нас


игры
игры


Рейтинг Ролевых Ресурсов



Яндекс цитирования


Русские моды

BGI Ease-of-Use
Iogan


 

Rolles
Serdrick


Счетчик
Сегодня: 1 (unique:1)
Всего: 96577281 (unique:96484671)
Рекорд: 52595 (unique:52568)

RSS

rss


Как создать НПС
Как создать НПС, страница 1
Ghreyfain, перевод Alina 01.02.2005


Небольшое введение от Ghreyfain (переведено Aerie Team).

Это моя попытка проиллюстрировать, как ввести в игру нового НПС используя WeiDU. Надеюсь, что все изложенное
мной будет понятно тем, кто в первый раз использует эту программу.

Порядок действий



Вначале назову то, что необходимо будет сделать для создания и ввода в игру персонажа.

1. Создать файл диалога (.dlg) для персонажа;
2. Создать файл персонажа (.cre) со всеми характеристиками и со снаряжением;
3. (по желанию) Написать скрипт (модель поведения) персонажа (.bcs);
4. Сделать установочный скрипт WeiDU (.tp2) для установки вашего персонажа на другие РС;


Часть 1: .d и .dlg файлы



Итак, первое, что необходимо - создать .dlg файл для персонажа. Это то, что позволить ему говорить с РС и,
таким образом, позволит присоединиться к партии. Вначале создадим пустой .d файл, это можно сделать,
переименовав пустой текстовый(.txt) файл. Я назвал свой файл J#Vondo.d. Первой строкой кода должно
быть "BEGIN J#Vondo", что значит - что в процессе компиляции создастся файл с именем J#Vondo.dlg.

* Вам не обязательно использовать преффикс J# в названии своего файла, это всего лишь условность,
позволяющая отличать файлы написанные мной от других подобных.

Код должен выглядеть примерно так:

BEGIN J#Vondo


//Основная часть нашего диалога должна иметь две части (States). Одна - первая встреча НПС с игроком,
и другая - отклонив начальное предложение о присоединении, игрок вновь завязал диалог с НПС.
Ниже описывается процесс создания первой части...

IF ~NumTimesTalkedTo(0)~ THEN BEGIN FirstMeeting
(Это триггер для первой части. ЕСЛИ ~Вондо еще не говорил с игроком~
ТО НАЧАТЬ (раздел) "FirstMeeting".)

SAY ~Приветствую вас ! Мое имя Вондо Справедливый.~
(Это начальная фраза диалога, ниже - все возможные варианты ответа игрока на эти слова.)

IF ~GlobalLT("Chapter","GLOBAL",3)~ THEN REPLY ~Привет Вондо, ты не видел Айреникуса?~
GOTO InquireIrenicus
IF ~~ THEN REPLY ~Привет.~ GOTO Greet
IF ~Class(Player1,PALADIN)~ THEN REPLY ~Я вижу, что ты тоже паладин!~ GOTO BothPaladins
IF ~~ THEN REPLY ~Уходи.~ GOTO GoAway


(Ответ 1 доступен только, если игрок находится в первой или второй главе. Ответы 2 и 4 доступны
всегда (IF ~~) и ответ 3 доступен только если, игрок - Паладин.)

END

(это заканчивает раздел диалога.)

Наш .d файл выглядит так:

BEGIN J#Vondo

IF ~NumTimesTalkedTo(0)~ THEN BEGIN FirstMeeting
SAY ~Приветствую вас ! Мое имя Вондо Справедливый.~
IF ~GlobalLT("Chapter","GLOBAL",3)~ THEN REPLY ~Привет Вондо, ты не видел Айреникуса?~
GOTO InquireIrenicus
IF ~~ THEN REPLY ~Привет.~ GOTO Greet
IF ~Class(Player1,PALADIN)~ THEN REPLY ~Я вижу, что ты тоже паладин!~ GOTO BothPaladins
IF ~~ THEN REPLY ~Уходи.~ GOTO GoAway
END



Теперь надо расширить диалог и написать реплики НПС на каждый из ответов, доступный игроку.

IF ~~ THEN BEGIN InquireIrenicus

(это после того, как игрок спросил о Айреникусе.)

SAY ~Нет, но я могу помочь в поисках. Я паладин!~

(ответ Вондо)

IF ~~ THEN REPLY ~Конечно. Присоединяйся.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT

(Это вводит новый параметр, связанный с Вондо, который показывает принадлежность к партии.
Команда "JoinParty()", как очевидно, присоединяет НПС :). EXIT заканчивает диалог.)


IF ~~ THEN REPLY ~Нет, уходи.~ EXIT

(Это тоже закончит диалог, только Вондо останется стоять на своем месте - ждать нашего следующего появления.)

END


Теперь - остаток модуля.

IF ~~ THEN BEGIN Greet
SAY ~Ну как, вам нужен паладин в ващей группе?~
IF ~~ THEN REPLY ~Вообще то, да.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, уходи.~ GOTO GoAway
END

IF ~~ THEN BEGIN BothPaladins
SAY ~Я приветствую тебя, пусть боги продлят твои дни. Присоединяйся, и вместе мы сокрушим зло.~
IF ~~ THEN REPLY ~Звучит хорошо.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, уходи.~ GOTO GoAway
END

IF ~~ THEN BEGIN GoAway
SAY ~Хорошо , я буду ждать вашего возвращения, чтобы мы могли вместе бить зло!~
IF ~~ THEN EXIT
END


( Команда "GoAway" отражает ситуацию, когда для продолжения диалога игроку необходимо нажать Enter)

Итак, все что нужно для первой части,"Первой встречи" - готово. Теперь приступим ко второй части, когда игрок возвращается для разговора к Vondo.

IF ~NumTimesTalkedToGT(0)~ THEN BEGIN ReturnDialogue
SAY ~Я вижу вы вернулись.~
IF ~~ THEN REPLY ~Да, нам нужны твои способности.~
DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Да, но нам не нужны твои способности.~ GOTO RefusedAgain
END

IF ~~ THEN BEGIN RefusedAgain
SAY ~Вы опять отклонили мою просьбу. Не важно, я пока поразвлекаюсь с той магической
штучкой, что недавно купил у гнома. Его звали Джон Джонсон или как то так.~
IF ~~ THEN EXIT
END


Итак, мы сделали то, с чего НПС будет начинать диалог. Теперь же приступим к другой части
диалога - *P.dlg, когда НПС уходит или его удаляют из партии.

Я имею в виду: Вондо присоединился к партии (используя J#Vondo.dlg), и автоматически
назначилось 3 различных диалога из различных файлов (Pdialog.2da и Interdia.2da).
Когда вы исключаете из команды, запускается *P.dlg файл и смотрит верно ли первая строчка.

И так как мы начали новый раздел в .dlg файле, нам надо написать строчку ...

BEGIN J#VondoP


...которая войдет в .2da файл. Остальная часть будет выглядеть примерно так:

IF ~Global("VondoJoined","LOCALS",1)~ THEN BEGIN KickOut

(Эта переменная показывает, что присоединился ли Вондо к партии. Если она равна 1 -
то он в данный момент в составе команды, и если его исключают - то запускается *P.dlg фай.)

SAY ~Вы выгоняете меня?~
IF ~~ THEN REPLY ~Ой, это Аномен заслуживает исключения из команды, не ты.
Извини.~ DO ~JoinParty()~ EXIT

( P.dlg автоматически исключает персонажа из партии, так что если вы желаете
оставить его, то используйте команду JoinParty().)

IF ~~ THEN REPLY ~Именно, нам не нужны твои способности.~
DO ~SetGlobal("VondoJoined","LOCALS",0)~ EXIT

(Эта строчка ставит переменную "VondoJoined" равной 0, что значит, что он исключен из партии.)
END

В итоге, эта часть должна выглядеть примерно так:


IF ~Global("VondoJoined","LOCALS",1)~ THEN BEGIN KickOut
SAY ~Вы выгоняете меня?~
IF ~~ THEN REPLY ~Ой, это Аномен заслуживает исключения из команды, не ты. Извини.~
DO ~JoinParty()~ EXIT
IF ~~ THEN REPLY ~Именно, нам не нужны твои способности.~ DO ~SetGlobal("VondoJoined","LOCALS",0)~ EXIT
END



Это все, что нужно для удаления персонажа из партии. Чтобы иметь возможность присоединить его вновь, после исключения, вам надо написать следующее:

IF ~Global("VondoJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~Хотите вновь видеть меня рядом?~
IF ~~ THEN REPLY ~Да, конечно.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, извини.~ EXIT
END


Все необходимые диалоги написаны. Конечная версия вашего .d файла могла бы выглядеть так ...

BEGIN J#Vondo

IF ~NumTimesTalkedTo(0)~ THEN BEGIN FirstMeeting
SAY ~Приветствую вас ! Мое имя Вондо Справедливый.~
IF ~GlobalLT("Chapter","GLOBAL",3)~ THEN REPLY ~Привет Вондо, ты не видел Айреникуса?~
GOTO InquireIrenicus
IF ~~ THEN REPLY ~Привет.~ GOTO Greet
IF ~Class(Player1,PALADIN)~ THEN REPLY ~Я вижу, что ты тоже паладин!~ GOTO BothPaladins
IF ~~ THEN REPLY ~Уходи.~ GOTO GoAway
END

IF ~~ THEN BEGIN InquireIrenicus
SAY ~Нет, но я могу помочь в поисках. Я паладин!~
IF ~~ THEN REPLY ~Конечно. Присоединяйся~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, уходи.~ EXIT
END

IF ~~ THEN BEGIN Greet
SAY ~Ну как, вам нужен паладин в ващей группе?~
IF ~~ THEN REPLY ~Вообще то, да.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, уходи.~ GOTO GoAway
END

IF ~~ THEN BEGIN BothPaladins
SAY ~Я приветствую тебя, пусть боги продлят твои дни. Присоединяйся, и вместе мы сокрушим зло.~
IF ~~ THEN REPLY ~Звучит хорошо.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, уходи.~ GOTO GoAway
END

IF ~~ THEN BEGIN GoAway
SAY ~Хорошо , я буду ждать вашего возвращения, чтобы мы могли вместе бить зло!~
IF ~~ THEN EXIT
END

IF ~NumTimesTalkedToGT(0)~ THEN BEGIN ReturnDialogue
SAY ~Я вижу вы вернулись.~
IF ~~ THEN REPLY ~Да, нам нужны твои способности.~ DO ~SetGlobal("VondoJoined","LOCALS",1)
JoinParty()~ EXIT
IF ~~ THEN REPLY ~Да, но нам не нужны твои способности.~ GOTO RefusedAgain
END

IF ~~ THEN BEGIN RefusedAgain
SAY ~Вы опять отклонили мою просьбу. Не важно, я пока поразвлекаюсь с той магической
штучкой, что недавно купил у гнома. Его звали Джон Джонсон или как то так.~
IF ~~ THEN EXIT
END

BEGIN J#VondoP

IF ~Global("VondoJoined","LOCALS",1)~ THEN BEGIN KickOut
SAY ~Вы выгоняете меня?~
IF ~~ THEN REPLY ~Ой, это Аномен заслуживает исключения из команды, не ты. Извини.~ DO ~JoinParty()~ EXIT
IF ~~ THEN REPLY ~Именно, нам не нужны твои способности.~ DO ~SetGlobal("VondoJoined","LOCALS",0)~ EXIT
END

IF ~Global("VondoJoined","LOCALS",0)~ THEN BEGIN Rejoin
SAY ~Хотите вновь видеть меня рядом?~
IF ~~ THEN REPLY ~Да, конечно.~ DO ~SetGlobal("VondoJoined","LOCALS",1) JoinParty()~ EXIT
IF ~~ THEN REPLY ~Нет, извини.~ EXIT
END



На первый взгляд это кажется очень сложным, но в действительности, это не так. Достаточно сделать один раз, и все покажется вам простым и понятным.

Что ж, мы только что закончили часть 1 нашего пособия. Осталось еще немного, так что не волнуйтесь. :)


1  2  >> След. страница
>> Список статей в этом разделе
<< На первую страницу статей

Оценка


Система Orphus

Система Orphus

Ролевые тесты
 

Опрос
Вопрос: Какая часть нашего сайта наиболее полезна лично для Вас?

(я, робот)


Сам сайт


Вики-энциклопедия


Форум


Никакая





Открыт: Alina
Голосов: 4343
Старые опросы

Друзья
WRG Team - команда разработчиков модов к NWN
Неофициальный русский фансайт посвященный серии игр Legacy of Kain
Raurin Planes server - NWN2 Shard - шард сервер Neverwinter Nights 2
refantasy

Свежие комментарии

Наша кнопка
Наша кнопка

Все регистрированное принадлежит своим владельцам.
Содержимое сайта - © AERIE team
Использование материалов сайта разрешается только с разрешения владельцев, с обязательной ссылкой на источник.
удаленная проверка сервера uptime российских хостеров