Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > 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
NedWarN
Я никак немогу догадатся как сделать такой скрипт.
если у ПК, ранел непися на 50 НР, то произайдёт скрипт. я попробовал так, но нихрена не вышло, поставил скрипт на ОнФзДиференд.
Neverwinter Script Source
void main()
{
object oPC = GetFirstPC();
object oVavi = OBJECT_SELF;
object oArea = GetArea(OBJECT_SELF);
int iMaxHP = GetMaxHitPoints(OBJECT_SELF);
int iCol = GetFogColor(FOG_COLOR_RED_DARK,oArea);
int iHP = GetCurrentHitPoints(OBJECT_SELF);
int iStatus = GetLocalInt(GetArea(OBJECT_SELF), "VAVILON");
effect eVis1 = EffectVisualEffect(VFX_DUR_STONEHOLD);
effect eVis2 = EffectVisualEffect(VFX_FNF_HOWL_WAR_CRY_FEMALE);
effect eTimeStop = EffectTimeStop();
object oWP = GetWaypointByTag("VAVI_CUT_POST");
if(iStatus == 0 && iHP < iMaxHP - 50)
{
SetFogColor(iCol,FOG_TYPE_MOON,oArea);
SpeakString("Ñìåðòü Òåáå Ñâîëî÷");
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis1, oVavi);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis2, oVavi);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eTimeStop, oPC);
AssignCommand(oVavi,ActionJumpToObject(oWP,TRUE));
DelayCommand(1.5,AssignCommand(oPC,ActionJumpToObject(oWP)));
}
}
2.Помогите со скриптом, если ПК встает на триггег, то на него падает эффект, и стоящие рядом злые Неписи перестают видеть ПК. я пробовал так и опять ничего.
Neverwinter Script Source
#include "nw_i0_generic"
void main()
{
if (GetArea(OBJECT_SELF) != GetArea(GetFirstPC()))return;
{
object oPC = GetLastPerceived();
object oBR = GetItemInSlot(INVENTORY_SLOT_NECK, oPC);
object oHench = GetObjectByTag("HENCHMEN");
object oBB = GetObjectByTag("");
int nHench = GetLastPerceptionSeen();
if (GetLastPerceptionSeen() && GetIsPC(oPC)&& nHench)
{
if (GetTag(oBR) != "PLASH" && GetLocalInt(oPC,"ALARM") != 1)
{
            SetLocalInt(oPC, "ALARM", 1);
            SetFacingPoint(GetPosition(oPC));
            DetermineCombatRound(oPC);
            AdjustReputation(oPC, OBJECT_SELF, -100);
            AdjustReputation(OBJECT_SELF, oPC, -100);
            AssignCommand(OBJECT_SELF, ActionAttack(oPC,TRUE));
            }
            else if (GetLocalInt(OBJECT_SELF, "LOOK") != 1 && GetTag(oBR) == "PLASH" &&
            GetLocalInt(oPC,"ALARM") != 1)
            {
            AssignCommand(OBJECT_SELF, ClearAllActions());
            AssignCommand(OBJECT_SELF, ActionPlayAnimation(ANIMATION_FIREFORGET_HEAD_TURN_RIGHT, 0.0, 3.0));
            SpeakString("Õìì ß ÷òî-òî ñëûøàë.");
            AssignCommand(OBJECT_SELF,WalkWayPoints(TRUE, 2.0));
            }
            if (GetLocalInt(oPC,"ALARM") != 1)
            {
            SetFacingPoint(GetPosition(oPC));
            DetermineCombatRound(oPC);
            AdjustReputation(oPC, OBJECT_SELF, -100);
            AdjustReputation(OBJECT_SELF, oPC, -100);
            AssignCommand(OBJECT_SELF, ActionAttack(oPC,TRUE));
            if (GetIsInCombat(OBJECT_SELF))
            {
            SetLocalInt(oPC, "ALARM", 0);
            }
            else if (GetIsEnemy(oPC,OBJECT_SELF) == TRUE)
            {
            SetLocalInt(oPC, "ALARM", 0);
            }
            if(GetDistanceToObject(oPC) >= 25.0 && GetDistanceToObject(OBJECT_SELF) <= 25.0 && GetIsObjectValid(oHench))
            {
            SpeakString("Îí ñêðûëñß, åãî íå âèäíî, îòñòàâèòü òðåâîãó");
            SetLocalInt(oPC, "ALARM", 1);
            AssignCommand(OBJECT_SELF,WalkWayPoints());
            ClearAllActions(TRUE);
            AdjustReputation(OBJECT_SELF,oPC, 100);
            }
            effect eInv = EffectVisualEffect(EFFECT_TYPE_INVISIBILITY);
            if(GetEffectType(eInv) == GetIsPC(oPC) == TRUE)
            {
            AssignCommand(OBJECT_SELF,WalkWayPoints(TRUE, 0.0));
            SpeakString("Îí ñêðûëñß, åãî íå âèäíî, îòñòàâèòü òðåâîãó");
            SetLocalInt(oPC, "ALARM", 1);
            ClearAllActions(TRUE);
            AdjustReputation(OBJECT_SELF,oPC, 100);
            }
            if (GetTag(oBR) == "PLASH")
            {
            SpeakString("Îí ñêðûëñß, åãî íå âèäíî, îòñòàâèòü òðåâîãó");
            SetLocalInt(oPC, "ALARM", 1);
            ClearAllActions(TRUE);
            AdjustReputation(OBJECT_SELF,oPC, 100);
            AssignCommand(OBJECT_SELF,WalkWayPoints(TRUE, 0.0));
            }
            if(!GetHasEffect(VFX_DUR_INVISIBILITY,oPC))
            {
            AssignCommand(OBJECT_SELF,WalkWayPoints(TRUE, 0.0));
            SpeakString("Îí ñêðûëñß, åãî íå âèäíî, îòñòàâèòü òðåâîãó");
            SetLocalInt(oPC, "ALARM", 1);
            ClearAllActions(TRUE);
            AdjustReputation(OBJECT_SELF,oPC, 100);
            }
            if(oPC == GetEnteringObject() == GetTag(oBR))
            {
            }

}
}
}
}

3. Очень тупит Кут сценка. если кут сценку, поставить на ОнЭнтер месности, и зайти в месность с "нуля", то все нормально пашит, мне именно так и нужно подскажите как поставить условия на ОнЭнтер месности, т.е. если ПК убил непися скрипт произайдет если нет, дак return.
PS^ Пробовал ставить Локалку, не помогло. или я что-то не то поставил.
-fenix-
QUOTE
Я никак немогу догадатся как сделать такой скрипт.
если у ПК, ранел непися на 50 НР, то произайдёт скрипт. я попробовал так, но нихрена не вышло, поставил скрипт на ОнФзДиференд.


Вот скрипт, который будет считать демейдж ПС и демейдж всех остальных
Neverwinter Script Source
void main()
{
object oPC = GetLastDamager();
int iMaxHit = GetMaxHitPoints();
int iCurHit = GetCurrentHitPoints();


if(GetIsPC(oPC))
{
    int iDamage = iMaxHit - iCurHit;

    SetLocalInt(OBJECT_SELF,"DamagePC",(iDamage-GetLocalInt(OBJECT_SELF,"DamageOther")-GetLocalInt(OBJECT_SELF,"DamagePC"))+GetLocalInt(OBJECT_SELF,"DamagePC"));
    SendMessageToPC(oPC, IntToString(GetLocalInt(OBJECT_SELF, "DamagePC")));
}
else
{
    int iDamage = iMaxHit - iCurHit;

    SetLocalInt(OBJECT_SELF,"DamageOther",(iDamage-GetLocalInt(OBJECT_SELF,"DamagePC")-GetLocalInt(OBJECT_SELF,"DamageOther"))+GetLocalInt(OBJECT_SELF,"DamageOther"));
    SendMessageToPC(oPC, IntToString(GetLocalInt(OBJECT_SELF, "DamageOther")));
}
}
NedWarN
-fenix-Считать та он считает, а вот мне то нужно, типа если ПК снёс Неписю 50 хелов то... yes.gif
PS: Одного не пойму, dntknw.gif зачем ты так сложно всё составил, когда нужно посчитать, делается в 3раза проще. yes.gif
Добавлено в [mergetime]1130088844[/mergetime]
ещё вопросик, как сделать так чтобы предмет, например медленно опустился под землю, я эксперементировал, и нифига не получил, пробовал так.
vector vZ = Vector(vT.x, vT.y, vT.z - (IntToFloat 4.0));
нифига не вышло, хотя всё компилится. как всегда. эхь. Может кто подскажет.
-fenix-
QUOTE (NedWarN @ Oct 23 2005, 21:27)
-fenix-Считать та он считает, а вот мне то нужно, типа если ПК снёс Неписю 50 хелов то...

NedWarN, а ты не знаешь, как сделать условие shok.gif

QUOTE (NedWarN @ Oct 23 2005, 21:27)
PS: Одного не пойму, dntknw.gif зачем ты так сложно всё составил, когда нужно посчитать, делается в 3раза проще.

Ну попробуй, я посмотрю!
Или ты не понял?!
Этот скрипт будет работать, да же если объект атакует кто-то кроме ПС!!!!!
Тоесть, если объект атакует ПС и хенч, то будет считаться отдельно и урон ПС и урон хенча!!!!!
L33t
QUOTE (Lex @ Oct 15 2005, 22:28)
нет. Если игрок не шевелится, то нет.
А вот если кто-то еще на триггер войдет, а скрипт написан не сильно умно, то может случиться проблема, но не та, что ты описал.
Вообще ставя вопрос, выклыдывай исходники. Те скрипт триггера и скрипт посылания непися далеко и на долго.

Скрипт там из стандартного пакета - Attack on End of Conversation, я уже не помню как он называется. Я просто в диалоге по выбору фразы посылания следующей ставлю End of Dialog и вешаю на экшн этот скрипт. Просто так работает - т.е. когда с неписем разговариваешь "по собственному желанию". А вот когда наступаешь на триггер - диалог начинается, но при посылании почему-то никто тебя не атакует и вылетает ошибка. Более того - Hostile даже не выставляется против персонажа.
-fenix-
L33t, в первом посте ты писал, что
QUOTE (L33t @ Oct 15 2005, 23:00)
игра выдает сообщение об ошибке и пишет чего-то про деление на ноль с упоминанием названия скрипта.

Можно посмотреть скрипты стоящие на тригере и на ветке в разговоре?
NedWarN
Очень нужен Скриптик, на опускание или поднимание, плактаблов. скажите такое возможно. сам я не дадумался и Vector не помог.
AliceDiren
Насколько я знаю, нельзя передвигать объекты только по оси Z, не двигая при этом по осям X и Y. Во всяком случае у меня не получилось. dntknw.gif
NedWarN
QUOTE (AliceDiren @ Oct 28 2005, 23:22)
Насколько я знаю, нельзя передвигать объекты только по оси Z, не двигая при этом по осям X и Y. Во всяком случае у меня не получилось. dntknw.gif

Дык, скажи какой функцыей, и как вообще, у меня не выходит некак.
Daemonix
А как после смерти ПС и нажатия кнопы РЕСПАУН сделать, чтобы перс респаунился в определённом вэйпоинте?
Lex
разбирали вопрос уже 100 раз.
Поищи.
вообще в свойствах модуля слот onRespawn или как-то так. Допиши туда ActionJumpToObject нужный и будет тебе счастье
Friedrich
QUOTE (NedWarN @ Oct 28 2005, 23:20)
Очень нужен Скриптик, на опускание или поднимание, плактаблов. скажите такое возможно. сам я не дадумался и Vector не помог.

Помнится, в первом модуле СоУ в пещере дракона кобольды прыгали в корзину спец. подъемника (сделанную из плйсового колодца) чтобы перевесить большую каменную голову, хакрывающую какой-то проход. При этом колодец опускался, а голова поднималась. ХЗ как такое было сделано. Наверное дестрой/криэйтом. Можно покапаться, посмотреть.
2_advanced
колодец это не плейсабл был, а визуальный эффект this.gif хотя нужно покопаться pardon.gif
2_advanced
QUOTE (Lex @ Oct 29 2005, 03:02)
разбирали вопрос уже 100 раз.
Поищи.
вообще в свойствах модуля слот onRespawn или как-то так. Допиши туда ActionJumpToObject  нужный и будет тебе счастье

ActionJumpToObject можно сбить ТСом, кноком и т.п. pardon.gif что не очень хорошо.. лучше JumpToObject
Добавлено в 02:31
\\ злостный оффтоп - сообщения не всегда добавляются к предыдущим black eye.gif



LEX:
QUOTE (2_advanced @ Oct 30 2005, 02:30)
\\ злостный оффтоп - сообщения не всегда добавляются к предыдущим black eye.gif

а вот это странно...
Friedrich
QUOTE (2_advanced @ Oct 30 2005, 01:28)
колодец это не плейсабл был, а визуальный эффект this.gif хотя нужно покопаться pardon.gif

Ы?
И башка - визуальный эффект?
Можно эффектом симулировать плейсабл?
// а копаться лень drag.gif
2_advanced
CODE

visualeffects.2da :
   Label            Imp_Root_M_Node
404 SCENE_FORMIAN1   ttr01_p05_01
ttr01_p05_01 - это ведь тайл :p
можно и бошку прикрутить.. хотя в визуальных эффектах вроде ее нет
тролля в анимацию спелла =) вместо файрболла
NedWarN
Помогите со скриптом, На изменение погоды. например я хотел чтобы пошол снег, и сделал так.
Neverwinter Script Source
DelayCommand(20.0,SetWeather(oPC,WEATHER_SNOW));
DelayCommand(20.0,SetWeather(oArea,WEATHER_SNOW));

И канечноже ничего не вышло.
2_advanced
SetWeather(GetModule(), WEATHER_SNOW); swoon.gif
Добавлено в [mergetime]1130694693[/mergetime]
а вобще оно на локу(открытую..)/модуль
NedWarN
2_advanced Пасиба.
Дык если на локалку, чё значит на отдельную карту работать не будет? drag.gif
Aiwan
Neverwinter Script Source
// script to make it snow (module wide)  NWN Lexicon (с)
void main()
{
    object oModule = GetModule();
    SetWeather(oModule, WEATHER_SNOW);
}

NedWarN лексикон иногда со словарем читай. Меньше вопросов будет. Просто кидай в оглавление свою функцию и читай пример из него. Ты ж вроде грамотный парень. pardon.gif
Белатрис
Сделал вот такой скрипт(не сделал а списал, с какого то сайта, ну решил попробывать что получится), переписал все без ошибок, но когда нажал сохранить, то Тулсет выделил мне цыфру красным со стракой:
Neverwinter Script Source
AssingCommand(oGuard, ActionDoCommand(SpeakString("Taste my blade you bloody thief")));
т.е. третьей

Neverwinter Script Source
void main()
{
object oGuard = GetObjectByTag("CHEST_GUARD");
object oPlayer = GetLastOpenedBy();
AssingCommand(oGuard, ActionDoCommand(SpeakString("Taste my blade you bloody thief")));
AssingCommand(OGuard, ActionAttack(oPlayer));
}
Dik Morris
Вот замени, ты там немного не так скопировал, этот рабочий 1000%
Neverwinter Script Source
void main()
{
object oGuard = GetObjectByTag("CHEST_GUARD");
object oPlayer = GetLastOpenedBy();
AssignCommand(oGuard, ActionDoCommand(SpeakString("Taste my blade you bloody thief")));
AssignCommand(oGuard, ActionAttack(oPlayer));
}

CHEST_GUARD это таг стража.
Так... Ну в принципе скрипт можно засунуть в oDamage (см. в свойствах сундука)
Тогда НПС нападет на тебя, когда ты попытаешся атаковать сундук.
Или в onUser. (тоже см. в свойствах сундука)
НПС нападет на тебя, когда ты будешь использовать сундук.
Белатрис
Урррааа!!!!!!!!! yahoo.gif
Заработало!! yahoo.gif
Добавлено в [mergetime]1130742645[/mergetime]
Какой скрипт нужен для того что бы NPC не погибал после отаки PC, а только отлижался без сознания определенное время и все?
Добавлено в [mergetime]1130752115[/mergetime]
Еще вопрос, какой скрипт нужен для создания мультфильма, я имею ввиду начало скрипта, как действовать дальше попробую сам разобратся...
Lex
QUOTE (Dik Morris @ Oct 31 2005, 08:17)
AssignCommand(oGuard, ActionDoCommand(SpeakString("Taste my blade you bloody thief")));

тут нафиг не нужет ActionDoCommand
QUOTE (Белатрис @ Oct 31 2005, 08:52)
Какой скрипт нужен для того что бы NPC не погибал после отаки PC, а только отлижался без сознания определенное время и все?

смотри в Вопросах и Ответах. Там есть.
Белатрис
QUOTE (Lex @ Oct 31 2005, 14:51)
смотри в Вопросах и Ответах. Там есть.

Все попорядку прочитал, нет... dntknw.gif
-fenix-
QUOTE (Белатрис @ Oct 31 2005, 08:52)
Еще вопрос, какой скрипт нужен для создания мультфильма, я имею ввиду начало скрипта, как действовать дальше попробую сам разобратся...


Neverwinter Script Source
// Sets the given creature into cutscene mode.  This prevents the player from
// using the GUI and camera controls.
// - oCreature: creature in a cutscene
// - nInCutscene: TRUE to move them into cutscene, FALSE to remove cutscene mode
// Note: SetCutsceneMode(oPlayer, TRUE) will also make the player 'plot' (unkillable).
// SetCutsceneMode(oPlayer, FALSE) will restore the player's plot flag to what it
// was when SetCutsceneMode(oPlayer, TRUE) was called.
void SetCutsceneMode(object oCreature, int nInCutscene=TRUE)
NedWarN
Aiwan Нефига, не работает
Белатрис
QUOTE (-fenix- @ Oct 31 2005, 16:29)
Neverwinter Script Source
// Sets the given creature into cutscene mode.  This prevents the player from
// using the GUI and camera controls.
// - oCreature: creature in a cutscene
// - nInCutscene: TRUE to move them into cutscene, FALSE to remove cutscene mode
// Note: SetCutsceneMode(oPlayer, TRUE) will also make the player 'plot' (unkillable).
// SetCutsceneMode(oPlayer, FALSE) will restore the player's plot flag to what it
// was when SetCutsceneMode(oPlayer, TRUE) was called.
void SetCutsceneMode(object oCreature, int nInCutscene=TRUE)

А можно по русски, только рабочий...
-fenix-
Белатрис, ты просил функцию, которая устанавливает на игроке режим кутсцены - вот я ее и дал.

Neverwinter Script Source
void SetCutsceneMode(object oCreature, int nInCutscene=TRUE)


В режиме кутсцены убираются GUI панели, а у игрока отнимается управления персонажом. Еще перс становется плотовым. При сняти режима кутсцены, восстанавливаются GUI панели, игроку возвращается управление, на персе снимается плотовый флаг.
object oCreature - объект,к которому применить функцию
int nInCutscene=TRUE - если TRUE, то установить режим кутсцены, если FALSE, то снять режим кутсцены.
-fenix-
QUOTE

Known Bugs
If you make several calls of SetCutsceneMode to TRUE on a PC without first setting it to FALSE in between, the PC will become permanently invulnerable as the plot flag will remain set to TRUE.
Белатрис
Напишите пожалуйсто скрипт, который будет заставлять НПС атаковать "цель для стрельбы из лука" и "боевую мешень виде человека. И еще ПС'у нельзя отаковать эту мишень.
И еще как сделать цели бессмертными?
Dik Morris
Ставь, вот этот скрипт на онSpawn, НПС.
Neverwinter Script Source
void main()
{
object oMik=GetObjectByTag("Таг мишени");
ActionAttack(oMik);
}

Oбрати внимание, на TRUE, если ты заменишь на FALSE, непись, будет атаковать мишень в ближнем бою, а TRUE наоборот, в дальнем
QUOTE
И еще как сделать цели бессмертными?

Поставь, галочку в свойствах нужного НПС/плейса, сюжетный.
QUOTE
И еще ПС'у нельзя отаковать эту мишень

Самый простой вариант сделать мишень статик ( то есть не юзабельную. См. в свойствах плейса.)
PS: На будущее, перед тем как что нибуть спрашивать, хотя бы немного пробегись по темам. Ты сейчас начинающий, а подобные вопросы, разбераются очень часто.
-----------------------------------------
02.11.05
8-30
-----------------------------------------

Слушай, что ты кричишь?
Что конкретно не работает?
Куда ты вообще его ставишь?
Что не так идет?
Скрипт рабочий, это ты не так что то делаешь, хватит тему загрязнять! Форум, то не резиновый!:DB:
Я уже говорил, ставь скриптик на оnSpawn нужного НПС, вводи ТАГ мишени, и в добры путь.
Белатрис
QUOTE (Dik Morris @ Nov 1 2005, 15:36)
PS: На будущее, перед тем как что нибуть спрашивать, хотя бы немного пробегись по темам. Ты сейчас начинающий, а подобные вопросы, разбераются очень часто.

Я уже облазил темы "Вопросы и ответы", на остальное времени не хватает.
Lex
QUOTE (Белатрис @ Nov 1 2005, 16:54)
на остальное времени не хватает.

а нам хватает времени отвечать на вопросы 20 раз?
Темы Одиночные вопросы и Вопросы по скриптам начинающим стоит почитать. Много полезного себе найдут. Вопросы новичков тома 1 и 2 в ВиО, другие тома (3 и 4) пока так не ужаты.
2_advanced
biggrin.gif кнопка поиск есть...
Добавлено в [mergetime]1130856511[/mergetime]
зы. а можно сделать ссылки отличимыми от обычного текста? this.gif
NedWarN
Никогда, не изучал и хочу узнать, как делается условие. "если ПК встав на определённый триггер, нажмёт отдых то.... "
2_advanced
Neverwinter Script Source
онрест swoon.gif
if(GetIsInSubArea(GetLastPCRested(), триггер) &&
    GetLastRestEventType()==REST_EVENTTYPE_REST_STARTED)

Добавлено в 02:19
QUOTE
то герой перенесется в страну снов
biggrin.gif
Добавлено в 02:20
}


LEX: Мм.. с GetIsInSubArea раньше не сталкивался. smile.gif Пасиб за новую функцию. biggrin.gif
2_advanced
QUOTE
Пасиб за новую функцию.

biggrin.gif lol.gif
еще есть SetName & SetDescription biggrin.gif но в НВНХе..
весь крафт на этом стоит pardon.gif если подобного не будет в НВН2 - убьюсь нафиг biggrin.gif
кстати, а что там с SQL? самим приделывать придется? drag.gif
Добавлено в [mergetime]1130890569[/mergetime]
зы. изврат этот тут
Добавлено в [mergetime]1130890934[/mergetime]
© biggrin.gif
Белатрис
QUOTE (Dik Morris @ Nov 1 2005, 15:36)
Я уже говорил, ставь скриптик на оnSpawn нужного НПС, вводи ТАГ мишени, и в добры путь.

Именно так я все сделал, 101% правильности! Но он не работает, т.е. работает на половину. Если НПС поставить в друго конце помещения, то он подойдет к мишени и будет стоять(как идиот!).
Незнаю чего я там мудрю. dntknw.gif Кажись все правильно... Кстати без этого скрипта первая моя местность будет совершенно Безталковой.
AliceDiren
Белатрис, а ты убрал галочку статик с мишени? Если нет, тогда, конечно, NPC ее атаковать не будет dntknw.gif Я бы убрала галочку статик и указала, что это сюжетный плэйс, тогда скрипт заработает и NPC будет до бесконечности стрелять в мишень. ИХМО так.
Dik Morris
Народ сори, вопрос отпадает, я сам додумался.
Но возник другой, функция
Neverwinter Script Source
SetAILevel(object oTarget, int nAILevel)

Она идет только под сценки? Или есть ли смысл использовать ее, в игре?
PS: Скажем, увеличить «мозги» хенчу.
AliceDiren
QUOTE
убрал галочку статик с мишени?

У меня он атакует, даже если плейс статик. wink.gif
-fenix-
QUOTE (Dik Morris @ Nov 2 2005, 19:11)
Она идет только под сценки? Или есть ли смысл использовать ее, в игре? PS: Скажем, увеличить «мозги» хенчу.

Dik Morris, можно увеличить кому угодно и где угодно, НО чем больше уровень АИ, тем больше нагрузка на проц. Лучше всего использовать это, как временное увеличение мозгов, скажем в сценки, чтобы в рассчитанном по секундам скрипте не случалось багов, по причине тупости ПС.
Lex
аи ставится 0 у нпс, если игрока нет в локе
аи ставится лоу у нпс, если игрок в локе, но с нпс не контачит
аи ставится хай у нпс во время боя
аи хай у хенчшей, фамильяров и прочих пр умолчанию

Вроде так
-fenix-
Но если изменить АИ, то дефолт отменится, поэтому не забывайте переустанавливать АИ, после поправки мозгов.
У хенчей наверное ставется, но ИМХО, если таких много, то лаги будут.

QUOTE

Description
Sets the AI level of a creature. By default, the game will determine the best AI level to use, but by using this function the default value will be overridden. This function does not work on players. Reserve AI_LEVEL_HIGH for special use only as it causes a creature to consume a lot of CPU time.

Remarks
A good thing you can do with this function is to take load off the CPU when doing scripted battles, e.g. for cutscenes. If you set the AI level of most of the creatures very low, and then use a single "commander" to AssignCommand actions to all the different creatures, you can save a lot of CPU time.
Белатрис
Почему не работает скрипт?
Neverwinter Script Source
void main()
{
    object oMod = GetModule(); // Наш модуль
    object oPC = GetEnteringObject(); // Того кто вошел

    // Если это не игрок (а ДМ к примеру) или уже было раз, то сделаем возврат
    // скрипта, т.е. дальше он не пойдет.
    if (!GetIsPC(oPC) || GetLocalInt(oMod, "START_GAME"))
      {return;}
      {
      SetLocalInt(oMod, "START_GAME", TRUE); // Что бы сработал только один раз

//--------- Откроем туман над локацией если вам надо. К примеру в городе -------
      ExploreAreaForPlayer(GetObjectByTag("CITY_01"), oPC);

//--------------- Проводим деноминацию денежных накоплений ---------------------
      TakeGoldFromCreature(GetGold(oPC),oPC,TRUE); // Заберем все денежки

//------------------ Убиваем весь инвентарь ------------------------------------
        object oItem = GetFirstItemInInventory(oPC); // Первый итем в инвентаре
        while(GetIsObjectValid(oItem)) // Пока такой объект существует
        {
            DestroyObject(oItem); // Удаляем его
            oItem = GetNextItemInInventory(oPC); // Берем другой объект...
        }

//------------------ Убиваем всю амуницию -------------------------------------
        int i=0;
        while(i<14) // ПОКА i меньше 14. 14 - это количество всех слот у объекта
        {
        DestroyObject(GetItemInSlot(i, oPC)); //
        i++; // Это значит i увеличится на еденичку от своего значения
            // Было ноль к примеру, станет 1 и т.д.
        }
//------------------------ Создаем предметы ------------------------------------
        // Если вам нужны отдельно каждому классу по несколько предметов, то
        // скопируйте кусок кода еще и измените CLASS_TYPE_ Наведите курсор,
        // нажми F2 и выберите нужное значение константы

//      int Class = GetClassByPosition(1, oPC);
//      switch (Class) // В зависимости от класса
//        {
//          case CLASS_TYPE_BARBARIAN:
//          {
//            CreateItemOnObject("ResRef_Объекта", oPC,1);
//          }
//          case CLASS_TYPE_FIGHTER:
//          {
//            CreateItemOnObject("ResRef_Объекта", oPC,1);
//          }
//        }
        GiveGoldToCreature(oPC, 500); // Даем золотишко
        CreateItemOnObject("item_998gu", oPC, 1);
        CreateItemOnObject("item001", oPC, 1);
        CreateItemOnObject("item002", oPC, 4);
        CreateItemOnObject("item003", oPC, 1);
        // 1 - это количество в стеке, если вам надо 30 стрел, то ставьте там 30

//----------------------  Опознаем предметы  -----------------------------------
        object oItemCr = GetFirstItemInInventory(oPC);
        while(GetIsObjectValid(oItemCr))
            {
            SetIdentified(oItemCr,TRUE);
            oItemCr = GetNextItemInInventory(oPC);
            }
&#092;
//----------------------  Оденем нашего игрока ---------------------------------
        AssignCommand(oPC, ActionEquipMostEffectiveArmor());

//---------------------------------- END ---------------------------------------
    }
}

Это скрипт Айва, я только убрал здесь че-то, ну то что мне не нужно было.
Lex
а что не работает?
\\ удаление всех вещей не корректное. А имено некорректно сработает, если в инвентаре будет сумка с вещами.
+ лишние скобки.. а так вроде ок
Белатрис
Мож из-за скобок? А вообще не надо уже, мне только что один пользователь в ЛС прислал другой скрипт.
Aiwan
Белатрис он работает, так как взят с моего нынешнего модуля и подправлен. А если лыжи не катются... то это не ко мне.
Добавлено в [mergetime]1131178074[/mergetime]
QUOTE (Белатрис @ Nov 5 2005, 05:11)
Это скрипт Айва, я только убрал здесь че-то, ну то что мне не нужно было.

lol.gif lol.gif lol.gif
Neverwinter Script Source
}
&#092; // ВОТ ЭТУ ЗАГОГУЛИНУ УБЕРИ
//----------------------  Оденем нашего игрока ---------------------------------
Белатрис
Не смешно!
У меня скрипт одежду дает, раздевает ПС, а вот одеть... фиг!
Kavin
фуф. Устал и вновь обращаюсь к вам за помощью.

Вопрос такой:
Делаю скрипт, в результате которого патрульный стражник, если увидит отдыхающего игрока, будет бежать к нему.

Сначала пробовал писать индивидуальный скрипт на основе стандартного x2_def_percept, который вставлял в слот "OnPerception" стражника, в этот скрипт после строки
ExecuteScript("nw_c2_default2", OBJECT_SELF);

Вставлял следующие строки:

object oPC=GetLastPerceived();
if (GetIsPC(oPC)&&GetIsResting(oPC))
{
ClearAllActions();
ActionMoveToObject(oPC, TRUE, 3.0);
}
но в результате несчастный стражник, уйдя за три квартала от меня, с какого-то перепугу прибегал опять. this.gif

Рассмотрев повнимательнее скрипт nw_c2_default2, я понял, что игнорировать его полностью - нельзя, так как он включает действия и для случая, когда замечен враг, и т.п.
Тогда я решил поставить на UserDefined те же самые строки, ведь в конце nw_c2_default2 идет вызов Event-а UserDefined.
Теперь стражнику вообще чхать на меня, отдыхай хоть у него под ногами... aggressive.gif

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