Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > Neverwinter Nights Aurora Toolset
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74
Aiwan
QUOTE (Lex @ Jan 23 2006, 01:42)
ну.. что мешает в iprp_feats.2da поставить коэф. 1? Тогда левелрестрикт нам не помеха.

Ну дык это ж надо знать... pardon.gif
NedWarN
Помню Ктота давал Модуль, с мутацией Камней. т.е положил камень и Шмотку, и смутировал. Вот я хотел узнать у него, как сделать так чтобы бонусы пребавлялись Любому, предмету. Чтобы не давать каждому тег.
Vanes
не понял вопроса
[MoF]Darth_Nick
может имеется в виду подобие крафта?
типа положил 2 шмотки, результат - одна шмотка?
Vanes
QUOTE
типа положил 2 шмотки, результат - одна шмотка?

это сделать можно, причем достаточно легко...
самое трудоемкое будет описать, что получится из свзяки веп+щит или ботинки+шапка...
хотя, если протсоо использоваться d2() то можно и не заморачиваться...
[MoF]Darth_Nick
в его случае испл. камень.
думаю, надо просто пробежаться по инвентарю кузни(или чего там), найти камень с тагом и 1 любую другую шмотку. потом пробежаться по эффектам, перенести их на другую шмотку и удалить камень(по желанию)
помойму ничего сложного..
ф-ции:
Neverwinter Script Source
object GetFirstItemInInventory(object oTarget=OBJECT_SELF)
object GetNextItemInInventory(object oTarget=OBJECT_SELF)
itemproperty GetFirstItemProperty(object oItem)
itemproperty GetNextItemProperty(object oItem)
void AddItemProperty(int nDurationType, itemproperty ipProperty, object oItem, float fDuration=0.0f)


вроде всё...
-fenix-
А вопрос был не про то.

NedWarN, чтобы не крафтилось если "обычных" вещей больше одной нужно задать уникальные таги всем камням!
Потом в скрипте проверяешь, сколько вещей не имеющих тагов камней лежит у крафтера. Если их больше одной, то крафт отменяется, если все норм, то идет крафт. Или можно просто брать первую обычную шмотку и тогда игрок сам будет виноват.

Вот проверка.
Neverwinter Script Source
void main()
{
object oOb = GetFirstItemInInventory(OBJECT_SELF);//первый итем
int iA;//счетчик

//будет проверять пока не закончатся вещи
while(oOb != OBJECT_INVALID)
{
    //сравниваем таг взятой вещи с тагом камней
    if(GetTag(oOb) != "ТАГ ОДНОГО КАМНЯ" || GetTag(oOb) != "ТАГ ДРУГОГО КАМНЯ")
    {
        //если таг не подходит ни к одному из камней, то считаем эту вещ
        iA = iA + 1;
    }
    oOb = GetNextItemInInventory(OBJECT_SELF);//следующий итем
}

//если кол-во вещей больше 1 или скольких нужно, то возврат скрипта
if(iA>1)
return;

//если с кол-вом вещей все нормально, то пишешь, что там дальше
//...
}



2 Lex
Эм, 100 разных камней?
Не думал о таком, но если их много, то лучше так.
Lex
QUOTE (-fenix- @ Jan 25 2006, 17:41)
if(GetTag(oOb) != "ТАГ ОДНОГО КАМНЯ" || GetTag(oOb) != "ТАГ ДРУГОГО КАМНЯ")

если у нас в модуле 100 камней, ты как будешь проверять?
имхо лучше систему тэгов для камней сделать.. ITM_CSTONE_* например. Тогда просто берем 11 символов тэга с левой стороны и сравниваем с "ITM_CSTONE_"
justshurik
Народ помогите! Никак не могу заставить существо(тролль) вызвать заклинание Фаерболл на waypoint. Уже все перепробовал:и с помощью AssignCommand,и с помощью ActionDoCommand,и с помощью ApplyEffectToObject.ничего не помагает. unsure.gif
[MoF]Darth_Nick
Neverwinter Script Source
void main()
{
location lLoc = GetLocation(GetWaypointByTag("fb_way")); // вейпойнт
object oTroll = GetNearestObjectByTag("fsdfsd"); // ближайщий объект с тагом fsdfsd
AssignCommand(oTroll,ActionCastSpellAtLocation(SPELL_FIREBALL,lLoc)); // кастим
}


только в св-ах кричи должен фаер бол стоять
так же есть такая ф-ция, только последствия от нее другие...
Neverwinter Script Source
// The action subject will fake casting a spell at lLocation; the conjure and
// cast animations and visuals will occur, nothing else.
// - nSpell
// - lTarget
// - nProjectilePathType: PROJECTILE_PATH_TYPE_*
void ActionCastFakeSpellAtLocation(int nSpell, location lTarget, int nProjectilePathType=PROJECTILE_PATH_TYPE_DEFAULT)
justshurik
Спасибо! Я понял. Мне нужно было просто в свойства создания поставить фаерболл.
Nashman
Привет,
Ситуация:
Есть 4-ы Непися, два вепойнта, чтобы они ходили...
Вопрос:
- Как сделать, чтобы эти Неписи шли вместе почти ровным строем?



NedWarN
Не вы не понели. biggrin.gif
Мне недавно здесь, дали модуль шарда, где был "Ящик Валдора" куда пихаеш шмот кидаеш камень, Жмнёш рычаг и готово. Шмот с бонусом. Там каждому камню дан Тег из системы тегов Jawel_Of_.../ Да это я понимаю нада, но ещё такая же система тегов стоит и на Шмоте, который преобритает Бонусы. Я хотел узнать Можно ли сделать так чтоб, Тег шмоту не давать, а то нада будет 1000 тегов Писать. Несколько страниц назад есть ссылочка на модуль.
Добавлено в [mergetime]1138331871[/mergetime]
Nashman
1вым 2вум Приказывай идти на Ваупоинт.
А 2м. приказывай двигатся не на Ваупоинт а На 1вых 2х челов. Или на каждого по отдельности, напремер с лева чел, идёт на на другого, кто спереди слева.
Vanes
NedWarN
можно конечно...
см. скрипт vns_vswitch_use, строка 24...
именно это ограничение отвечает за то, какому предмету будут добавляться свойства...
однако просто убрать его будет недостаточно - потому как первым предметом в ящике может оказаться не меч, или щит, а тот же камушек, или вообще какой нить посторонний предмет, по-этому придется сделать хотя бы такую проверку:
Neverwinter Script Source
if(GetBaseItemType(oItem)==BASE_ITEM_*)

где * - предметы, на которые можно добавлять св-ва (амулеты, щиты, вепы и т.п.)
Добавлено в [mergetime]1138343440[/mergetime]
если же ты уверен, что ничего постороннего в ящик не положат - сделай проверку:
Neverwinter Script Source
if(GetStringLeft(sTag, 8)!="vns_ips_")

т.о. образом, если в ящике лежит камень +5 энчата и веп, то за BaseItem примут именно веп, а не камень...
-fenix-
NedWarN, тогда в чем проблема?
Бери все положенные вещи, у которых таг не соответствует тагу камней и давай бонусы.
Другое дело, что раз там есть система тегов, значит так надо! Например, на какую-то разновидность колец не может быть добавлен определенный бонус или еще для чего-то, возможно и не для крафта.
RoHaN
TNX за помощь, я уже сделал скрипт с Джампом, и модуль уже закончен . yes.gif yahoo.gif
Lex
Ссылку нам не дашь? Ну или сам модуль, я выложу. (о законченых модулях не сюда, а в мастерские.)
продолжение темы - в ПМ
virusman
Neverwinter Script Source
void CheckIsHere(object oTarget, string sOrder)
{
    if(GetDistanceBetween(OBJECT_SELF, oTarget) < 4.0)
    {
        ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.0);
        ActionDoCommand(_CreateItemOnObject(sOrder, oTarget));
    }
    else
    {
        SpeakString("Куда вы ушли??");
        ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW, 1.0, 1.0);
        ActionDoCommand(_CreateObject(OBJECT_TYPE_ITEM, sOrder, GetLocation(OBJECT_SELF), TRUE));
    }
    ActionDoCommand(SetLocalInt(OBJECT_SELF, "vir_waiter_busy", FALSE));
}

void GoToObject(object oTarget, float fTimeout)
{
    ActionForceMoveToLocation(GetLocation(oTarget), TRUE, fTimeout);
    ActionDoCommand(SetFacingPoint(GetPosition(oTarget)));
}

void WalkToObject(object oTarget, float fTimeout)
{
    ActionForceMoveToObject(oTarget, TRUE, 2.0, fTimeout);
    ActionDoCommand(SetFacingPoint(GetPosition(oTarget)));
    ActionPlayAnimation(ANIMATION_LOOPING_GET_MID, 1.0, 1.0);
}

void GoToPlayer(object oTarget, string sOrder, float fTimeout)
{
    ActionForceMoveToLocation(GetLocation(oTarget), TRUE, fTimeout);
    ActionDoCommand(SetFacingPoint(GetPosition(oTarget)));
    ActionDoCommand(CheckIsHere(oTarget, sOrder));
}

void GiveBottleTo(object oPC, string sOrder)
{
    if (oPC != oShouter)
        oPotionWaypoint = GetNearestObjectByTag(sPotionWaypointTag,oPC);
    if (GetDistanceBetween(oPC, oPotionWaypoint)<=2.5)
    {
        WalkToObject(oPotionWaypoint, 15.0);
        ActionDoCommand(_CreateObject(OBJECT_TYPE_ITEM, sOrder, RandomLocationFrom(GetLocation(oPotionWaypoint), 0.2, 0.2),TRUE));
    }
    else
    {
        GoToPlayer(oPC, sOrder, 15.0);
        //ActionDoCommand(_CreateItemOnObject(sOrder, oPC));
    }
}

void main()
{

........

    if (nGroupOrder == TRUE)
    {
        SpeakString("Group order processing...");
        oGroupMember = GetFirstFactionMember(oShouter);
        while(GetIsObjectValid(oGroupMember))
        {
            if(GetObjectSeen(oGroupMember)) GiveBottleTo(oGroupMember, sOrder);
            oGroupMember = GetNextFactionMember(oShouter);
        }
    }
    else
    {
        GiveBottleTo(oShouter, sOrder);
    }

//    ActionForceMoveToObject(GetObjectByTag(sWaiterWaypointTag), FALSE, 0.5, 10.0);
//    ActionDoCommand(SetFacing(GetFacing(GetWaypointByTag(sWaiterWaypointTag))));
    ActionDoCommand(SetLocalInt(OBJECT_SELF, "vir_waiter_busy", FALSE));
    DelayCommand(0.2, SetCommandable(FALSE));
    AssignCommand(OBJECT_SELF, ActionDoCommand(SetCommandable(TRUE)));

}
Aiwan
Лучше в коде при командах, актионах сложных не юзай OBJECT_SELF, а опиши объект. Бывает всякое г... на DelayCommand, SetCommandable и т.д.
Neverwinter Script Source
object oSelf = OBJECT_SELF;

  AssignCommand(oSelf, ActionForceMoveToObject(GetObjectByTag(sWaiterWaypointTag), FALSE, 0.5, 10.0));
  AssignCommand(oSelf, ActionDoCommand(SetFacing(GetFacing(GetWaypointByTag(sWaiterWaypointTag)))));
  AssignCommand(oSelf, ActionDoCommand(SetLocalInt(oSelf, "vir_waiter_busy", FALSE)));
  AssignCommand(oSelf, ActionDoCommand(SetCommandable(TRUE, oSelf)));
  DelayCommand(0.3, SetCommandable(FALSE, oSelf));
RoHaN
Lex конечно дам, вот только ещё раз всё проверю . moil.gif
Добавлено в [mergetime]1138532951[/mergetime]
извените, что долго не пишу(Захожу с компов друзей ) good.gif
Nashman
QUOTE
virusman
Это мне?! Ура!!! wink.gif
У меня он не работает, не потому, что не правельно написано, а потому что тулсет староват(Не все команды умеет выполнять из даного скрипта)... Но спасибо смысл понял приступаю к преобразованию....
swoon.gif
Night Elf
Люди помогите Ньюбу...
у меня проблема, я мод решил создать по собственной ДД но воть проблема нашёл как вставлять золото делать квесты допёр до эжтого дела но воть блин как Опыт едрен батон вставлять в диалог понять немогу (при выполнении квеста напремер)
Lex
опыт дается скриптом (
Neverwinter Script Source
GiveXPToCreature()
)
. То, что ты указываешь в журнале не дается просто так. Это для скрипта (там типа взять опыт с квеста).
Тебе в "вопросы новичков"
Night Elf
а скриптик не подкинешь... =(( а то зяманался... this.gif мод вроде ничаво воть тока трабла с експой ... black eye.gif
Lex
Neverwinter Script Source
/// даем игроку 100 опыта. Ставь где хошь.
void main()
{
object oPC = GetFirstPC();
GiveXPToCreature(oPC ,100);
}
justshurik
Народ, помогите нубу.
Есть некий предмет с свойством "активировать предмет:использовать собственное питание(длинная дистанция)". Так вот, необходимо, чтобы при использовании этого предмета в точке куда он активирован можно было вызвать существо или хотябы просто поставить waypoint. Если кто знает как это сделать, подскажите. Заранее благодарен.
Vanes
Lex
может быть в данном вопросе это не суть важно, но лучше использовать GetXP() и SetXP()...
в описании GiveXPToCreature() есть оговорочка
QUOTE
Gives nXpAmount to oCreature, adjusted by any multiclass penalty.

ничего катастрофичного нет, но недопонимание определенно появится, когда вместо 100 экспы дадут 60...
Night Elf
biggrin.gif good.gif спасибки pardon.gif)
Добавлено в [mergetime]1138723276[/mergetime]
To Vanes
В смысле? слухай воть я допустим квест хатю сделать,
Записи в журнале нашёл как делать и в принципе квест выполняется играет соответствующая музыка но куда и как вставлять скрипт опыта?
dumbo
2 всем задававшим последние "вопросы"
граждане, это уже перебор... имейте совесть.
я понимаю ситуацию, когда человеку нужно что-то сделать быстро, не вникая в суть и он задает такого рода вопросы (для ответа на которые нужно прочитать один абзац текста). но в случае разработки модуля такой вариант не канает. либо вникаете и учитесь, либо ищете скриптеров, которые согласятся вам помочь/присоединиться к проету.

1. качайте и читайте - FAQ по Aurora Toolset
2. читайте здесь - Вопросы и Ответы по Toolsetу!
3. потыкайтесь по форуму Neverwinter Nights Aurora Toolset.
justshurik
Ты предлагаешь больше никому здесь не задавать вопросы?
[MoF]Darth_Nick
ну есть просто элементарные вещи, которые можно в туториалах(и т.д.) найти
justshurik
Обьясните пожалуйста в чем ошибка.
поставил на OnActivateItem
CODE

void main()
{
object oPC=GetItemActivator();
object oItem=GetItemActivator();
location lTarget;
if("panel"==GetTag(oItem))
{
lTarget=GetItemActivatedTargetLocation();
AssignCommand(oPC,ActionJumpToLocation(lTarget));
};

}

(я сильно упростил код)
Нужно чтобы игрок при активации предмета с тегом panel перемещался в точку на которую он скастовал активацию(т.е. точка находиться на некотором удалении от игрока). На предмет я добавил в свойства "активировать предмет(далнее расстояние)"
Nymor
justshurik
CODE
object oPC=GetItemActivator();
object oItem=GetItemActivator();


замени оИтем на нормальную функцию
justshurik
блин. там же GetItemActivated() должно быть! Е-мое! А я с этим уже 2 дня сижу!
Добавлено в [mergetime]1138741420[/mergetime]
Кстати, все хотел узнать. Поддерживает ли редактор скриптов ООП?
[MoF]Darth_Nick
только структуры...
юзай лексикон....
justshurik
Спасибо за ответ. Лексикон уже давно использую. yes.gif
Добавлено в [mergetime]1138801732[/mergetime]
Народ, извините за глупый вопрос, но сам никак не могу додуматься.
Как преобразовать тип vector в тип location?
Nashman
QUOTE
Как преобразовать тип vector в тип location?
Что-то мне подсказывает, что этого сделать нельзя... ИМХО - невозможно!!!
А зачем тебе? Может кто-то найдеть другой способ решить задачу...
Lex
justshurik,
Neverwinter Script Source
// Create a location.
location Location(object oArea, vector vPosition, float fOrientation)

Собсна локация это и есть позиция на карте и направление.
Нэш, ну ты отразил. biggrin.gif
justshurik
Функцию я эту встречал. Единственное что меня смущает в ней, это object oArea. Зачем он здесь нужен?
-fenix-
Location(object oArea, vector vPosition, float fOrientation)
oArea - локация, карта
vPosition - местоположение на карте
fOrientation - направление взгляда
justshurik
Спасибо за ответ. Теперь понял что и как. yes.gif
Nashman
Я ничо не понял зачем эта функция. Теперь мне интересно где ее используют?


QUOTE
Нэш, ну ты отразил
- это....ааа....эээ...."ИМХО"
Добавлено в [mergetime]1138834657[/mergetime]
Ее можно использовать для определения дистанции к обекту?
mamuc
нет..для определиния расстояния вполне лостаточно просто использовать
GetDistanceBetween(object oFirst, object oSecond)
justshurik
QUOTE
Я ничо не понял зачем эта функция. Теперь мне интересно где ее используют?

Просто ты еще с этим не сталкивался. Она очень полезна при работе с координатами.
justshurik
Чето заглохла эта тема swoon.gif
Добавлено в [mergetime]1138999971[/mergetime]
Народ. Маленький вопросик. Как делать указатели и ссылки на переменные в редакторе скриптов?
Lex
QUOTE (justshurik @ Feb 3 2006, 23:46)
Чето заглохла эта тема swoon.gif

наивный. до 100 скоро дойдет smile.gif
QUOTE (justshurik @ Feb 3 2006, 23:46)
Как делать указатели и ссылки на переменные в редакторе скриптов?

никак
[MoF]Darth_Nick
а зачем? это не с++(к примеру) ...
justshurik
QUOTE ([MoF)
Darth_Nick,Feb 4 2006, 05:38]а зачем? это не с++(к примеру) ...

да просто немного неудобно без указателей. Хотя вроде бы и без них все работает
Nashman
Привет,
Такая вот ситуация: Есть у меня 4 НПС, один из них главный; есть 8 Вепов(Это как бы патруль smile.gif). На капитана я вешаю такой скрипт:

Neverwinter Script Source
void main()
{
object oCommander = GetNearestObjectByTag("ast_s_commader");
int oTrueFalse = FALSE;

if (GetIsDay())
{
oTrueFalse=FALSE;
}
else
{
oTrueFalse=TRUE;
}

if (GetDistanceBetween(oCommander, OBJECT_SELF)<3.0)
ActionDoCommand(AssignCommand(OBJECT_SELF, ClearAllActions(FALSE)));

if (GetDistanceBetween(oCommander, OBJECT_SELF)>6.0)
{
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionForceFollowObject(oCommander, 0.0)));
}
else
{
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oCommander, oTrueFalse, 1.0f)));
}
}


А на других НПС такой:

Neverwinter Script Source
void main()
{
object oW1 = GetWaypointByTag("ast_s_1level001");
object oW2 = GetWaypointByTag("ast_s_1level002");
object oW3 = GetWaypointByTag("ast_s_1level003");
object oW4 = GetWaypointByTag("ast_s_1level004");
object oW5 = GetWaypointByTag("ast_s_1level005");
object oW6 = GetWaypointByTag("ast_s_1level006");
object oW7 = GetWaypointByTag("ast_s_1level007");
object oW8 = GetWaypointByTag("ast_s_1level008");

string speak1 = "Ñ äîðîãè!!!";
string speak2 = "Ïîñòîðîíèñü!!!";
string speak3 = "Âñå ïîäîìàì!!! Íèêîãî íå äîëæíî áûòü íà óëèöàõ, íî÷üþ!!!";

object oPC = GetFirstPC();

int oTrueFalse = FALSE;

if (GetIsDay())
{
oTrueFalse=FALSE;
}
else
{
oTrueFalse=TRUE;
}

ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW1, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW3, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW2, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW3, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}

ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW4, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}

ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW5, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}

ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW6, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}

ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW7, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}

ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW8, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)
{
switch (Random(3)+1)
{
case 1:
ActionSpeakString(speak1, TALKVOLUME_SHOUT);
break;
case 2:
ActionSpeakString(speak2, TALKVOLUME_SHOUT);
break;
case 3:
ActionSpeakString(speak3, TALKVOLUME_SHOUT);
break;
}
}
}


Как оно работает(Так не должно!!!!), НПС доходит к вепу 3 останавливается, потом когда он должен произнести фразу(ночью если Вы ближе 8 футов), то это не работае, он все сразу выскажет и ВСЕ... Они еще должны нормально ходить(ВСЕСТЕ). У меня в скрипт из базы немножко не подходит...
-fenix-
Nashman, че та я не понял, ты что вообще от них хочешь???

QUOTE (Nashman @ Feb 5 2006, 04:02)
На капитана я вешаю такой скрипт:

Куда именно?
Neverwinter Script Source
//это кто, капитан или кто-то посторонний?
object oCommander = GetNearestObjectByTag("ast_s_commader");
//...

//Если oCommander это капитан и скрипт стоит на нем, то он что, сам за собой ходит? А если oCommander это не капитан, то закем он ходит?
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionForceFollowObject(oCommander, 0.0)));



oTrueFalse - это они типа днем ходят, а ночью бегают?!
QUOTE (Nashman @ Feb 5 2006, 04:02)
он должен произнести фразу(ночью если Вы ближе 8 футов)

И где проверка на текущее время?
Neverwinter Script Source
ActionDoCommand(AssignCommand(OBJECT_SELF, ActionMoveToObject(oW3, oTrueFalse, 1.0f)));
if (GetDistanceBetween(OBJECT_SELF, oPC) < 8.0)


Второй скрипт именно таким стоит на каждом рядовом?
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2024 Invision Power Services, Inc.