Anubis | Дата: Четверг, 26.06.2014, 12:48 | Сообщение # 1 |
Адмирал флота
Группа: Завсегдатаи
Сообщений: 88
Статус: Offline
| Добавление НПС в игру и в свой файл описание НПС
Для начала, добавим свой собственный файл, в котором будут прописаны все ваши НПС. Это удобно, по тому лишь, что они не будут путаться с НПС игры, и вы не будете искать их в бесконечном перечислении. Откроем любой текстовой редактор и сохраним файл MyCharacters.c в папку init (путь program\characters\init) . Вы можете назвать файл, по любому, сути это не меняет, главное, все названия пишутся латиницей. Далее приписываем в файле:
Код int CreateMyCharacters (int n) { ref ch; // здесь будем писать код описания НПС return n; }
Шаблон файла для НПС готов. Переходим к интеграции файла в игру, чтобы она его видела, узнавала и воспринимала ваших НПС. Открываем файл characters.с (путь program\characters), находим следующую строчку с выражением LoadSegment, например:
Код LoadSegment("characters\init\Usurers.c"); ReloadProgressUpdate();
Копируем строчку в этот же столбец и переименовываем путь на свой, так чтобы появилась строка такого вида:
Код LoadSegment("characters\init\ MyCharacters.c "); ReloadProgressUpdate();
В том же файле, далее ищем строку с выражением UnloadSegment, копируем строку, например:
Код UnloadSegment("characters\init\Usurers.c");
И меняем ее так, чтобы получилось:
Код UnloadSegment("characters\init\ MyCharacters.c ");
Далее, открываем файл characters_init.с (путь program\characters ) и находим следующую строку:
Код /////////////////////////////////////////////////// /// ОСТАЛЬНЫЕ ПЕРСОНАЖИ ///////////////////////////////////////////////////
ReloadProgressUpdate();
n = 3; n = CreateAntiguaCharacters(n); ReloadProgressUpdate(); //Trace("Antigua: " + n);
Копируем выражение и изменяем его так, чтобы получилось:
Код n = CreateMyCharacters (n); ReloadProgressUpdate(); //Trace("Story: " + n) ;
Теперь ваш файл MyCharacters.c интегрирован в игру и пришло время прописывать в нем код НПС. Допустим, ваш НПС мужчина, определенной нации и с файлом диалога, то есть, имеет возможность диалога с ГГ. Для начала, с помощью программы GM Viewer (файл запуска gm_view), определяемся с моделью НПС. Допустим нас, устраивает модель huber_spa.gm, значит, model НПС будет huber_spa. Рассмотрим самый простой код НПС:
Код makeref(ch,Characters[n]); ch.id = "My_Hero"; ch.name = "Джон"; ch.lastname = "Блайк"; ch.rank = 5; ch.model = "huber_spa"; ch.location = "StMartin_Tavern"; ch.location.group = "sit"; ch.location.locator = "sit3"; ch.Dialog.Filename = " My_Hero_dialog.c "; ch.nation = PIRATE; ch.sex = "man"; ch.greeting = " pirat_guard_1"; LAi_NPC_Equip(ch, ch.rank, true, true); Lai_SetStayType(ch); LAi_SetImmortal(ch, true); n = n + 1;
ch.id = "My_Hero"; - id НПС прописываемое в case квестов ch.name = "Джон"; - имя НПС ch.lastname = "Блайк"; - фамилия НПС ch.rank = 5; - уровень НПС ch.model = "huber_spa"; - название модели используемой для НПС ch.location = "StMartin_Tavern"; - локация в которой находится НПС, в нашем случае таверна на Св. Мартине ch.location.group = "sit"; - группа локатора ch.location.locator = "sit3"; - место локатора ch.Dialog.Filename = "My_Hero_dialog.c"; - файл диалога НПС ch.nation = PIRATE; - к какой нации относится НПС ch.sex = "man"; - пол НПС ch.greeting = " pirat_guard_1"; - файл звукового приветствия НПС (находится в папке RESOURCE\Sounds\Voice\Russian) LAi_NPC_Equip(ch, ch.rank, true, true); - сабля, пистолет, труба у НПС ответствуют уровню, подбираются автоматически игрой. Lai_SetSitType(ch); - тип поведения НПС, в нашем случае сидит (все типы поведения описаны в файле LAi_types.с путь: program\loc_ai, внимательно следите, что бы не было разногласия между Lai_SetSitType(ch); и ch.location.group) LAi_SetImmortal(ch, true); - НПС бессмертен
В окончательном варианте, код НПС в файле MyCharacters.c, будет выглядеть следующим образом:
Код int CreateMyCharacters (int n) { ref ch;
makeref(ch,Characters[n]); ch.id = "My_Hero"; ch.name = "Джон"; ch.lastname = "Блайк"; ch.rank = 5; ch.model = "huber_spa"; ch.location = "StMartin_Tavern"; ch.location.group = "sit"; ch.location.locator = "sit3"; ch.Dialog.Filename = " My_Hero_dialog.c "; ch.nation = PIRATE; ch.sex = "man"; ch.greeting = " pirat_guard_1"; LAi_NPC_Equip(ch, ch.rank, true, true); Lai_SetStayType(ch); LAi_SetImmortal(ch, true); n = n + 1;
return n; }
Если возникнут вопросы, то задавайте их в этой теме.
|
|
| |