Версия для печати темы
Город Мастеров _ Neverwinter Nights Aurora Toolset _ Henchman HotU
Автор: Aiwan Oct 3 2005, 16:44
Шаблон хеньчмана для HotU. Диалог по умолчанию для женского персовнажа. Создаете при помощи Creature Wizard-а НПС. В разделе Classes установите пакеты "Default Package for Autolevelup". Никакие экстра пакеты: Вор-Варвар-Монах и т.д. Не будут работать. Для правильной работы скриптов с мультиклассами необходимо править инклюды Биовар. Если будет необходимость разберем позже.
Фразы Pop-Ups #1 - Триггер в палитре: [XP2 One-Liner, Non-Random]
Фразы Random Pop-Ups #1 - Триггер в палитре: [XP2 One-Liner, Random]
Строки Interjection Conversations #1 - Триггер в палитре: [XP2 Interjection, Non-Random]
Строки Interjection Random Conversations #1 - Триггер в палитре: [XP2 Interjection, Random]
На триггерах XP2 Interjection, Non-Random и XP2 One-Liner, Non-Random в поле Advensed нужно указать номер строки в поле KeyTag.
Открываем скрипт am_ch_hen_spawn и редактируем свойства вашего помощника: Таг, и количество рандомных фраз и строк.
NSS
//======================== Add By Aiwan / WRG! Team / ==========================
// * Установка случайных строк и фраз
if (sMyTag == "AM_HENCHMAN_001") // Таг нашего помощника
{
// Количество рандомных фраз Random Pop-Ups #1
SetNumberOfRandom("X2_L_RANDOMONELINERS", OBJECT_SELF, 5);
// Количество рандомных диалогов Interjection Random Conversations #1
SetNumberOfRandom("X2_L_RANDOM_INTERJECTIONS", OBJECT_SELF, 5);
}
else
if (sMyTag == "AM_HENCHMAN_002") // Таг нашего помощника
{
// Количество рандомных фраз Random Pop-Ups #1
SetNumberOfRandom("X2_L_RANDOMONELINERS", OBJECT_SELF, 10);
// Количество рандомных диалогов Interjection Random Conversations #1
SetNumberOfRandom("X2_L_RANDOM_INTERJECTIONS", OBJECT_SELF, 10);
}
//=========================== End Aiwan Edition ==============================
В слоте
OnPlayerLevelUp модуля, в скрипте добавьте такую инклюду и строку:
NSS
#include "x0_i0_henchman"
//-------------------------------------------------------
LevelUpXP1Henchman(oPC); // Поднимаем уровень помощнику
//-------------------------------------------------------
Теперь при поднятии уровня РС и помощник будет поднимать себе уровень.
Автор: AliceDiren Oct 5 2005, 07:18
предлагаю вот такой скрипт на OnPlayerLevelUp модуля для мультиклассовых персонажей.
NSS
int DoLevelUpHenchmen(object oHench, int nLevel)
{//Переменную ClassToUp я устанавливала, чтобы в диалоге
//можно было указать, какой класс развивать.
//Это для мультиклассовых персонажей
//1 - 1 класс
//2 - 2 класс
//3 - оба
//Если уровень поднимается не во время боя, то хенчу
//все заклинания даем готовыми к употреблению.
int bSpells = !GetIsInCombat(oHench);
//Смотрим 1-й класс хенча
int nClass1 = GetClassByPosition(1, oHench);
//Смотрим 2-й класс хенча
int nClass2 = GetClassByPosition(2, oHench);
//Смотрим какой из классов прокачиваем
int nUpClass = GetLocalInt(oHench, "ClassToUp");
int nUpTo = nLevel - GetHitDice(oHench);
if(nUpTo < 1)
return FALSE;
int iUps = 0;
if(nUpClass == 1 || nClass2 != CLASS_TYPE_INVALID)
do{
if(LevelUpHenchman(oHench, nClass1, bSpells))
return FALSE;
iUps++;
}while(iUps < nUpTo);
if(nUpClass == 2)
do{
if(LevelUpHenchman(oHench, nClass2, bSpells))
return FALSE;
iUps++;
}while(iUps < nUpTo);
if(nUpClass == 3 && nUpTo >= 2)
do{
if(!LevelUpHenchman(oHench, nClass1, bSpells))
return FALSE;
iUps++;
if(iUps < nUpTo)
if(!LevelUpHenchman(oHench, nClass2, bSpells))
return FALSE;
iUps++;
}while(iUps < nUpTo);
return TRUE;
}
void main()
{
object oPC = GetPCLevellingUp();
int i = 0;
object oHenchman;
for(i = 1; i <= GetMaxHenchmen(); i++)
{
oHenchman = GetAssociate(ASSOCIATE_TYPE_HENCHMAN, oPC, i);
if(GetIsObjectValid(oHenchman))
if(!DoLevelUpHenchmen(oHenchman, GetHitDice(oPC)))
SendMessageToPC(oPC, "Ошибка поднятия уровня " + GetName(oHenchman));
}
}
Автор: Aiwan Aug 4 2006, 07:12
Если у вас несколько хеньчманов, то вам надо настроить каждую группу триггеров на каждого хеньчмана. Скрипт на вход триггеров :
Фразы Pop-Ups #1 - Триггер в палитре: [XP2 One-Liner, Non-Random]
Фразы Random Pop-Ups #1 - Триггер в палитре: [XP2 One-Liner, Random]
Строки Interjection Conversations #1 - Триггер в палитре: [XP2 Interjection, Non-Random]
Строки Interjection Random Conversations #1 - Триггер в палитре: [XP2 Interjection, Random]
Надо заменить на ваш:
NSS
//:://////////////////////////////////////////////
//:: Name: am_ten_evt_alish
//:: Copyright © 2006 WRG! Team
//:://////////////////////////////////////////////
/*
Скрипт персональных триггеров
Основан на скрипте X2_EVT_TRIGGER
*/
//:://////////////////////////////////////////////
//:: Created By: Aiwan
//:: Created On: 02.08.2006
//:://////////////////////////////////////////////
#include "x0_i0_common"
#include "x2_inc_banter"
void main()
{
object oTrigger = GetEnteringObject();
object oHenchman = GetObjectByTag("ТАГ_ВАШЕГО_ХЕНЬЧМАНА");
if(GetMaster(oHenchman) == oTrigger) // Если тот кто наступил Мастер хеньчмана
{
string sTag = GetTag(OBJECT_SELF); // What kind of trigger am I?
AttemptInterjectionOrPopup(OBJECT_SELF, sTag, oTrigger, 0, oHenchman);
}
}
Ни в коем случае не меняйте таг триггеров. Это важно.
Автор: Vedmak Jun 29 2007, 21:18
Набросайте, кто-нибудь, пожалуйста скриптик, чтобы с хенчем ходило несколько нпс-можно сказать отряд.
Автор: Chiffa Nov 28 2008, 13:56
Уважаемые гуру, ответьте "чайнику" на глупый вопрос: как прицепиить к герою второго хеньша, как в "Хордесах"? Каким скриптом? Я экпортировал на свой "Полигон" (испытательный модуль) чуть ли не всех хордесовских хеньшей и со стандартныеми диалогами, и сам писал. Скрипт для "цепляния" на втором хеньше ни один почему-то не работает. Цепляется только первый (любой из). И всплывает надпись, что одновременно ты можешь иметь только одного помощника. Дело в модульных свойствах, да? Если так, то в каких именно? Или еще в чем?
Спасибо.
Автор: Ilerien Nov 28 2008, 21:43
Копай функцию SetMaxHenchmen()
С её помощью можно задать максимальное количество хенчей у игрока.
Автор: Chiffa Nov 29 2008, 15:48
Цитата(Ilerien @ Nov 28 2008, 21:43)
Копай функцию SetMaxHenchmen()
С её помощью можно задать максимальное количество хенчей у игрока.
Ilerien, спасибо! Опять ты меня выручаешь. Только, если можно, плиз, чуть подробней. Я понял, что новый скрипт писать не надо, в "Хордесах" все же одной строкой делается. Тогда что? Инклюду мучить? Вряд ли, ведь, всплывает строка "Вы можете иметь только одного помощника". При таком раскладе остается одно: "Свойства модуля". Или нет? Я попробовал в "OnClienEnter" модуля добавить "SetMaxHenchmen(oPC) == 2);" , Аврора выдает свой дежурный глупый "отмаз": нет точки с запятой в выражении. Я ей вволю и скобки рисовал, и точку эту с запятой в компании - бесполезно! Что я не то или не так (или не туда?) делаю?
Кстати, Аврора также ругается и на записи типа "SetMaxHenchmen(oPC, 2)". И никакие точки с запятыми не помогают...
Автор: shadowdweller Nov 30 2008, 22:33
Для этого нужен скрипт, который стоит в слоте OnModuleLoad. У меня это, например "x2_mod_def_load". Нужно открыть его и добавить туда в конец строку:
Neverwinter Script
SetMaxHenchmen(***); // В скобках просто указываешь то количество хенчей, которое тебе нужно
Получившийся скрипт надо сохранить
обязательно под другим именем и поставить в свойствах мода туда, где был старый - на OnModuleLoad.
У меня работает.
Автор: Chiffa Nov 30 2008, 23:18
Огромное спасибо! Все сделаю, как надо (то, что портить стандартные скрипты - дурной тон, я в курсе). И правда, оказалось что писал и не так, и не то, и не туда! Не возьму в толк, причем тут "загрузка", но пути Авроры неисповедимы... И еще одно в толк не возьму; чтобы я без ГМ делал!
Спасибо!
Автор: Chiffa Dec 3 2008, 17:40
Цитата(shadowdweller @ Nov 30 2008, 22:33)
Для этого нужен скрипт, который стоит в слоте OnModuleLoad. У меня это, например "
x2_mod_def_load". Нужно открыть его и добавить туда в конец строку:
Neverwinter Script
SetMaxHenchmen(***); // В скобках просто указываешь то количество хенчей, которое тебе нужно
Получившийся скрипт надо сохранить
обязательно под другим именем и поставить в свойствах мода туда, где был старый - на OnModuleLoad.
У меня работает.
Сделал все точно по инструкции. Не сработало. Почесал репу и добавил точно такую же строку (в смысле "SetMaxHenchmen(***); " в скрипт "x1_playerlevelup". Ессно, сохранил под другим именем. Все заработало.
shadowdweller, у меня нет сомнений, что у тебя все работает правильно благодаря одному только "x2_mod_def_load". Просто, как я заметил, у каждой версии НВН - свои капризы. Приходится к ним приспосабливаться.
Спасибо.
Автор: Lex Dec 3 2008, 17:44
Цитата(shadowdweller @ Nov 30 2008, 22:33)
Получившийся скрипт надо сохранить обязательно под другим именем
зачем?
Автор: Chiffa Dec 4 2008, 09:38
Цитата(Lex @ Dec 3 2008, 17:44)
зачем?
ИХМО, а ведь получается что вроде и правда незачем! Точнее, не обязательно. Просто Аврора ругается: дескать, буду использовать переделанный ресурс вместо стандартного! А без нужды с Авророй ссориться - себе дороже. Думал, это глобально. Но тока что проверил: нет, дело касается только того модуля, где скрипт переделан. Во всех остальных стандартный ресурс тулсета остается, так сказать, в первозданном виде.
Скорее всего, просто чтобы не путаться...
Автор: Chiffa Nov 25 2009, 21:53
Уважаемые мастера, скажите, какой еще файл, кроме "rs_common" регулирует в ПЛ столь эксцентричное поведение Ви и ее реплики? Или поставлю вопрос шире: как заставить хеньша вести себя более живо? Дело в том, что я просто экспортнул Ви в свой модуль (благо, господа основоположники, кажется не имеют ничего против подобного самоуправства). Поменял тег, ресреф. Тщательно отредактировал "rs_common" переписал все теги, все реплики (русификатор "Джумбо" - виват, виват, виват!!!) Само собой, заменил все теги в письменах самой неписи. Не помогло. Нет, ловушки открывает, в бою ведет себя нормально. Но во всем остальном получился банальный дефолтный робот-кибер!
Автор: Aiwan Nov 26 2009, 10:34
Ви слишком сложно настраивается. Мы с Лексом ее даже не брали скрипты себе. Боюсь только ДБ мог бы сказать о том КАК...
Автор: Veronica Jan 20 2018, 02:20
Доброго дня! У меня возник вопрос по рандомным фразам хеньчмана. Изучаю модуль «Henchman_HotU.mod»
( http://www.city-of-masters.ru/forums/index...?showtopic=1761 ), скрипт am_ch_hen_spawn Вот интересующая меня часть:
Neverwinter Script
// * Установка случайных строк и фраз
if (sMyTag == "AM_HENCHMAN_001") // Таг нашего помощника
{
// Количество рандомных фраз Random Pop-Ups #1
SetNumberOfRandom("X2_L_RANDOMONELINERS", OBJECT_SELF, 5);
// Количество рандомных диалогов Interjection Random Conversations #1
SetNumberOfRandom("X2_L_RANDOM_INTERJECTIONS", OBJECT_SELF, 5);
}
Подскажите, пожалуйста, на что надо прикрепить X2_L_RANDOMONELINERS и X2_L_RANDOM_INTERJECTIONS
Автор: Aiwan Jan 20 2018, 08:03
Я могу ошибаться, так как написанному 13-й год... Но скорее всего в свойствах триггера, есть локальные переменные, вот там и пишутся фразы. Выглядит так, местность, триггер, на нем куча разных фраз по сути местности и по сюжету, хеньч наступил, всплыла фраза.
Рандомные фразы они одинаковы для всех триггеров. Ну типа ты написала сто фраз в ПАЛИТРЕ В СВОЙСТВАХ триггера и наертила пятьдесят триггеров где хочешь что бы хеньчман болтал всякую чушь не заморачиваясь что он скажет, случайное.
Вот примерно так оно должно выглядеть:
Естественно, это пример не этого триггера что в этой теме. Я показал что нашел тут в темах
Автор: Veronica Jan 22 2018, 03:09
Спасибо, ваша подсказка очень помогла.
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)