Цитата(shadowdweller @ Jun 20 2008, 00:54)

А это как? Можно поподробнее?
Шад, шад, шад... Эх-хе-хей... Начнем с самого начала!
Для начала нужно знать, что уровень его должен быть первым, иначе нам не удастся поднять его под уровень героя. Если вам необходимо поднять уровень, то можно в скрипт спавна добавить повышение или новый класс. Помните, что классы спутников такие же, как и у героя, остальные классы вам также не удастся поднять… Я добавлю еще в этот скрипт фишку, чтобы труп спутника не исчезал. Тогда скрипт смерти, вы можете переписать по своему усмотрению… Сам скрипт:
Neverwinter Script
//:://////////////////////
//:: Слот: OnSpawn
//:://////////////////////
#include "X0_INC_HENAI"
void main()
{
//User ranged weapons by default if true.
SetAssociateState(NW_ASC_USE_RANGED_WEAPON, FALSE);
SetAssociateState(NW_ASC_DISTANCE_2_METERS);
// Труп не исчезает и будет юзабельным
SetIsDestroyable(FALSE, TRUE, TRUE);
int nHenchLevel = GetHitDice(OBJECT_SELF);
if (nHenchLevel == 1)
{
if (GetTag(OBJECT_SELF) == "TAG")
{
// Класс воин
LevelUpHenchman(OBJECT_SELF, CLASS_TYPE_FIGHTER);
// Класс СВЯЩЕННИК
LevelUpHenchman(OBJECT_SELF, CLASS_TYPE_CLERIC);
}
}
}
Так вот, если ты пробила в спавне своему хенчу бессмертие, то перед дестроем его нужно убрать. Если ты в палитре настраиваешь хенчам уровень, параметры и шмотки и пытаешься базовым скриптом поменять хенчей, то вот тебе скриптик:
Neverwinter Script
void main()
{
object oPC = GetPCSpeaker();
object oSP = OBJECT_SELF;
// Снимаем бессмертие
AssignCommand(oSP, SetIsDestroyable(TRUE, TRUE, TRUE));
//Запускаем базовый скрипт замены хенчей
ExecuteScript("nw_ch_action_17", oSP); // * Henchman levels up
}
Если повышаем уровни хенча только скриптами и в палитре у него стоит
первый уровень, то читай ниже...
Чтобы уровни спутника повышались, при повышение уровня героя, нужно в модульные свойства в слот OnPlayerLevelUp, поставить базовый скрипт x1_playerlevelup, или написать свой скрипт поднятия уровня спутника. Чтобы поднять уровень спутника до уровня героя с диалога, нужно написать примерный скрипт:
Neverwinter Script
void main()
{
object oPC = GetPCSpeaker();
object oSP = GetHenchman(oPC);
int LoPC = GetHitDice(oPC);
int LoSP = GetHitDice(oSP);
while (LoPC > LoSP)
{
LevelUpHenchman(OBJECT_SELF, CLASS_TYPE_FIGHTER);
LoSP++;
}
}
/* Повысить уровень воина до уровня героя */
Так, теперь скрипт с переодеванием и заменой хенчей из палитры… Писал для своего Тузика, т.к. он собачка и класс у него только животное, но вот в отличие от первых Неверских хенчей у него есть возможность открыть инвентарь и кой куда повесить шмотку.
Neverwinter Script
//:://////////////////////////////
//:: УРОВЕНЬ ТУЗИКА
//:: File name: tuzik_level
//:: Created By: Gennady
//:://////////////////////////////
void main()
{
object oPC = GetPCSpeaker();
object oSP = OBJECT_SELF;
object oItem;
int i;
int LoPC = GetHitDice(oPC);
int LoSP = GetHitDice(oSP);
string sResRef = "dog_tuzik";
location Loc = GetLocation(oSP);
if (LoPC > 2) sResRef = "dog_tuzik_1";
if (LoPC > 4) sResRef = "dog_tuzik_2";
if (sResRef == GetResRef(oSP))
{
AssignCommand(oSP, SpeakString("Гав... Ррууу..."));
SendMessageToPC(oPC, "<cюa >Тузик грустно лает… Похоже, что сейчас он не может ничему научиться…</c>");
return;
}
object oTuz = CreateObject(OBJECT_TYPE_CREATURE, sResRef, Loc);
DelayCommand(1.0, AssignCommand(oTuz, SpeakString("Гав... Ррууу...")));
DelayCommand(1.0, SendMessageToPC(oPC, "<c у >Тузик утвердительно лает. Он может научиться всему, что вы пожелаете.</c>"));
DelayCommand(1.5, AssignCommand(oTuz, ClearAllActions()));
object oInv = GetFirstItemInInventory(oSP);
while(GetIsObjectValid(oInv))
{
CopyItem(oInv, oTuz);
oInv = GetNextItemInInventory(oSP);
}
for (i = 0; i < 14; i++)
{
oItem = GetItemInSlot(i, oSP);
if (GetIsObjectValid(oItem))
{
object oItemN = CopyItem(oItem, oTuz);
DelayCommand(1.51, AssignCommand(oTuz, ActionEquipItem(oItemN, i)));
}
}
effect eOne = EffectVisualEffect(VFX_IMP_UNSUMMON);
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, eOne, oSP));
AssignCommand(oSP, SetIsDestroyable(TRUE, TRUE, TRUE));
DestroyObject(oSP, 2.0);
AssignCommand(oPC, ClearAllActions());
DelayCommand(0.2, SetCommandable(FALSE, oPC)); // заблокировать очередь
AssignCommand(oPC, ActionWait(2.5));
AssignCommand(oPC, ActionDoCommand(AddHenchman(oPC, oTuz))); // Дать нового спутника
AssignCommand(oPC, ActionDoCommand(SetCommandable(TRUE, oPC))); // разблокировать очередь
}
P.S. В этом скрипте пробито всего 2 повышения уровня… Кому надо пробейте нужное количество… Кстати,
Шад, обрати внимание! В этом скрипте перед дестроем я снимаю бессмертие с Тузика, т.к. в спавне пробивал бессмертие… Удачи!

Neverwinter Script
int iLev = 1;
for (iLev = 1; iLev < 14; iLev++)
{if (LoPC > iLev) sResRef = "dog_tuzik_"+IntToString(iLev);}