Помощь - Поиск - Пользователи - Календарь
Полная версия: Скрипты
Город Мастеров > РЕДАКТОРЫ > 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
Lex
у меня эта функция называется DestroyEffect(). уже давно обитает в моей библиотеке.
Tarre Talliorne
toLex - у меня тоже есть такая вещица, только до этого часа она была написана неправильно и действовала лишь на визуалы...

все, выложил я в базе скриптов... смотрите.
Phantom
Привет. Может кто подскажет чего: у меня есть прейсибл типа "Факел". Оч красивый, надо заметить. Крепится к стенам домов. Так вот. Я пытаюсь сделать так, чтобы он загорался на ночь и гас днем. Все, соответственно, делается через:
Код

       if((GetIsDusk() && GetLocalInt(OBJECT_SELF,"NW_L_AMION") == 0) ||
           (GetIsNight() && GetLocalInt(OBJECT_SELF,"NW_L_AMION") == 0))
       {
           SetLocalInt(OBJECT_SELF, "iCurrentHour", GetTimeHour());
           object oSelf = OBJECT_SELF;
           PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
           DelayCommand(0.4,SetPlaceableIllumination(oSelf, TRUE));
           SetLocalInt(OBJECT_SELF,"NW_L_AMION",1);
           effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_ORANGE_15);
           ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSelf);
       }
       else if((GetIsDawn() && GetLocalInt(OBJECT_SELF,"NW_L_AMION") == 1) ||
           (GetIsDay() && GetLocalInt(OBJECT_SELF,"NW_L_AMION") == 1))
       {
           object oSelf = OBJECT_SELF;
           PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE);
           DelayCommand(i,SetPlaceableIllumination(oSelf, FALSE));
           SetLocalInt(OBJECT_SELF,"NW_L_AMION",0);
           effect eEffect = GetFirstEffect(oSelf);
           while (GetIsEffectValid(eEffect) == TRUE)
           {
               if (GetEffectType(eEffect) == EFFECT_TYPE_VISUALEFFECT)
                   RemoveEffect(oSelf, eEffect);
               eEffect = GetNextEffect(oSelf);
           }

       }


Ну и, конечно, RecomputeStaticLighting(). Его приходится привешивать на "сердцебиение" арены - иначе перерисовывается только некая область около игрока. А в том месте, куда я ставлю ("сердцебиение" арены) - это конкретно тормозит. Помогите. Хочется сделать так, чтобы обновлялся статический свет по всей арене сразу, или может кто еще чего предложит…
DBColl
Ты вот что. Воспользуйся SignalEvent'ом. То есть на Хертбите(HB) арены ставишь лишь проверки дня/ночи. Если "что-то" наступило, то сигнал эвент зажигается (к примеру 3000-день/4000-ночь).

Далее пишешь скрипт в UserDefined арены, где идет разбор: если это эвент 3000, то циклом тушим все факелы. Если эвент 4000, то, соотв, зажигаем в цикле.

Тормозит все это из-за "массовой" команды в один момент RecomputeStaticLighting. Сделай, чтобы каждый факел зажигался/тушился через DelayCommand(n/2, RecomputeStaticLighting()), где n - это циклическая переменная, увеличивающаяся для каждого объекта-факела на 1. Этим ты дашь возможность движку просчитывать освещение и в то же время плавно обрабатывать остальные события (эвенты). wink3.gif Удачи!
Auren
Ой, ой, ой. Какие вы все умные rolleyes.gif


---------------

Сорри, просто я удрючен portal serverom=((
DBColl
Auren[LFL]
Че за оффтоп?!
Конечно умные! Пост завтра удалю. :cruel:
[MoF]Darth_Nick
ставится на OnLevelingPlayer(помойму так biggrin.gif )
Код

/*
Created By: [MoF]Darth_Nick
Data Of Creating: 02.07.2004 11:03
Discription: So, this script is do following - when you have a level up, after up
script founding your alignment(GOOD, EVIL, NEUTRAL) and doing something visual effects
for you. Also effects maybe change if you change Constans...Sample:
VFX_FNF_SUMMON_EPIC_UNDEAD - this is first constant of evil leveling, delete that and
enter something yours in the list of constants, an example - VFX_FNF_IMPLOSION.
*/

void main()
{
object oPC = GetPCLevellingUp();

if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_EVIL)
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUMMON_EPIC_UNDEAD), oPC));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HARM), oPC));
}
else if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_GOOD)
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HOLY_AID), oPC));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SUNBEAM), oPC));
}
else if(GetAlignmentGoodEvil(oPC) == ALIGNMENT_NEUTRAL)
{
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_SOUND_BURST), oPC));
DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_HEALING_X), oPC));
}
}

<small>Добавлено в 02:37</small>
Ставиться на OnEnter тригераа
Код

/*
Created By: [MoF]Darth_Nick
Data Of Creating: 11:37
Discription: Script is stand on a OnEnter of Generic Triger, you also can use it in the
trap, but unexpectandlly is be very other!
*/

void main()
{
object oPC = GetEnteringObject();
effect eBall = EffectVisualEffect(VFX_FNF_FIREBALL);

if (GetIsPC(oPC) == GetCurrentHitPoints(oPC) < 70)
{
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, eBall, oPC));
DelayCommand(0.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oPC));
}
else if (GetIsPC(oPC) == GetCurrentHitPoints(oPC) > 70)
{
FloatingTextStringOnCreature("Heh...This trick is not for me!", oPC);
}
}

<small>Добавлено в 02:39</small>
На OnEnter ловухи
Код

//::///////////////////////////////////////////////////////////
//:: Created By: [MoF]Darth_Nick
//:: Created On: 20.06.2004
//:://////////////////////////////////////////////////////////
/*
Итак, мой первый скрипт!!
Ставиться он на OnEnter ловушки.(Да, да! именно на ловушку,а не на
триггер т.к. если ставить на триггер - то никто и некогда не сможет увидеть,
эту смертельную зону.)
Когда чар на нее наступает на нем "делается" визуальный(!)
эффект имплозии и неизбежная смерть.
Эффекты можно менять изменив вот это - VFX_FNF_IMPLOSION на
другой визуальный эффект.(кажется их кто-то перечислял на 1 странице топика).
З.Ы. это можно использовать для проверки воров(всмысле при вступлении в гильдию).
*/
//:://////////////////////////////////////////////////////////

void main()
{
object oTarget = GetEnteringObject();

DelayCommand(0.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_IMPLOSION), oTarget));
DelayCommand(0.1, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectDeath(), oTarget));
}
Tarre Talliorne
Несколько вопрософф:
1. Как убрать только один вид уммуна, если наложен, скажем, 2 или 3? ActionRemoveEffect из базы скриптов убирает все.
2. Какой стандартный скрипт управляет поведением барда в таверне(есть только TalentBardSong из nw_i0_generic, но если использовать этот талант, бард просто использует умение... Просто стоит с эффектом нот над головой. Смотрится не очень. Может, в официале есть то же, но с анимацией, подходящей для пения?)
3. Как лечится катсценовский баг, когда после окончания оной сцены камера переносится внутрь игрока (в позицию 0, -1, -1)
4. Можно ли вешать локалки на вейпы?
DBColl
Цитата
1. Как убрать только один вид уммуна, если наложен, скажем, 2 или 3? ActionRemoveEffect из базы скриптов убирает все.

По-моему никак... Я как-то пытался снять один из многих вижуал эффектов, на персе... Не получалось sad.gif.
Цитата
2. Какой стандартный скрипт управляет поведением барда в таверне(есть только TalentBardSong из nw_i0_generic, но если использовать этот талант, бард просто использует умение... Просто стоит с эффектом нот над головой. Смотрится не очень. Может, в официале есть то же, но с анимацией, подходящей для пения?)

А де ты видел, чтобы барды в NWN реально пели? Я че-то не припомню...
Цитата
3. Как лечится катсценовский баг, когда после окончания оной сцены камера переносится внутрь игрока (в позицию 0, -1, -1)

Не ставить скрипт катсцены на OnEnter локации wink3.gif... И на триггер, на который перс попадает сразу же при входе в локу. wink3.gif Не лечится это... У меня не получилось во всяком случае sad.gif.
Цитата
4. Можно ли вешать локалки на вейпы?

Имхо, нет smile.gif. А зачем? shok.gif
Аваддон
3. Нет такого бага.
4. Можно
DBColl
Цитата
4. Можно

Точно?.. unsure.gif
Аваддон
Проверял однакоsmile.gif)
DBColl
Цитата
3. Как лечится катсценовский баг, когда после окончания оной сцены камера переносится внутрь игрока (в позицию 0, -1, -1)

А вообще попробуй RestoreCameraFacing(); предварительно (перед сценой) установив StoreCameraFacing();.
Аваддон
Интересно, а как сделана система языков?
ну например стоят два полурослика один пишет в толке:
"-halfing: Привет Братишка как дела?"
Другой полурослик это так и видит, а эльф стоящий рядом это видит как:
"Ghbdtn <hfnbirf rfr ltkf?"
Tarre Talliorne
Цитата
По-моему никак... Я как-то пытался снять один из многих вижуал эффектов, на персе... Не получалось .

Буду думать... Мож чего-нить придет. Действительно, мне надо убрать один эффект из двух... Вроде мылсь есть, завтра отпишу.

Цитата
А де ты видел, чтобы барды в NWN реально пели? Я че-то не припомню...

Нет. Я в НВН играл только час-полтора в оригинал, час СоУ и полчаса в ХотУ. Просто я хочу, чтоб бард нормально пел. Вообще я так подумал, надо ему в он_перц талант бардсонг + попутная анимация разговора + с ранодмной задержкой разные салюты... Сейчас попробую чего-нибудь сотворить...

Цитата
3. Как лечится катсценовский баг, когда после окончания оной сцены камера переносится внутрь игрока (в позицию 0, -1, -1)

Я залечил так:
Код
DelayCommand(25.00, SetCutsceneMode(oPC, FALSE));
DelayCommand(25.00, AssignCommand(oPC, SetCameraFacing(/*любая позиция камеры*/200.0, 11.0, 35.0, TRANSITION_TYPE_SNAP)));

Все гениталь... тьфу ты, все гениальное просто!.. :-)

Цитата
4. Можно ли вешать локалки на вейпы?
Имхо, нет . А зачем? 

Чистый академический интерес :-)
Добавлено в [mergetime]1089222896[/mergetime]
Аваддон интересный вопрос, кстати. Надо спросить у Ранмы (это на Экзисе было). Стандартными средствами это не реализовать, нужно какое-то извращение...
DBColl
Цитата
Я залечил так:

Код
DelayCommand(25.00, SetCutsceneMode(oPC, FALSE));
DelayCommand(25.00, AssignCommand(oPC, SetCameraFacing(/*любая позиция камеры*/200.0, 11.0, 35.0, TRANSITION_TYPE_SNAP)));


Все гениталь... тьфу ты, все гениальное просто!.. :-)

Так ты ж вроде хотел вернуть камеру в первоначальное положение после сцены? Так-то, как ты описал, хех, 100% будет работать... Ты же жестко меняешь после сцены положение. wink3.gif
_kaa_
Цитата
1. Как убрать только один вид уммуна, если наложен, скажем, 2 или 3? ActionRemoveEffect из базы скриптов убирает все.


DBColl прав, сложно убрать какой-то определенный эффект. В некоторых случаях тебе может помочь функции
GetEffectCreator() - кто навесил эффект
GetEffectSubType() - можешь те эффекты, что нужно убрать, вешать с одним из флагов (SUBTYPE_EXTRAORDINARY,SUBTYPE_MAGICAL,SUBTYPE_SUPERNATURAL)
GetEffectSpellId() - возращает номер спелла, вызвавшего эффект. (для вижуал эффекта - мало полезно, но все-же)

Из этого наиболее полезным может оказаться GetEffectSubType(), тебе просто нужно на те эффекты, которые хочешь убрать, вешать флажок SupernaturalEffect(), ExtraordinaryEffect() или MagicalEffect()
LEX: Каа, отличная идея. Всем знать!



Цитата
4. Можно ли вешать локалки на вейпы? 

Вешать локалки можно на любой объект. Вейпоинт - это объект.



Цитата
Аваддон интересный вопрос, кстати. Надо спросить у Ранмы (это на Экзисе было). Стандартными средствами это не реализовать, нужно какое-то извращение...

Делается реакция на onConversation. Вся сложность - сделать так, чтобы игрока все время кто-то слушал. Если не ошибаюсь у Ранмы за каждым игроком летает невидимый моб, который и перевариает все фразы. А вообще - почему бы не попробовать повесить обработку этого события на самого игрока? smile.gif Ведь SetListening() и SetListenPattern() принимают в качестве параметра объект. Вся проблема - будет ли модульный OnUserDefined() срабатывать на onConversation() для PC. Может кто пробовал?
Tarre Talliorne
Цитата
Так ты ж вроде хотел вернуть камеру в первоначальное положение после сцены? Так-то, как ты описал, хех, 100% будет работать... Ты же жестко меняешь после сцены положение. 


Я не хотел возвращать в первоначальное!.. Я хотел от бага избавиться. Что и сделал. :-)

Цитата
Делается реакция на onConversation. Вся сложность - сделать так, чтобы игрока все время кто-то слушал. Если не ошибаюсь у Ранмы за каждым игроком летает невидимый моб, который и перевариает все фразы. А вообще - почему бы не попробовать повесить обработку этого события на самого игрока?  Ведь SetListening() и SetListenPattern() принимают в качестве параметра объект. Вся проблема - будет ли модульный OnUserDefined() срабатывать на onConversation() для PC. Может кто пробовал?


В этом вопросе помочь может только сам Ранма.

Цитата
DBColl прав, сложно убрать какой-то определенный эффект. В некоторых случаях тебе может помочь функции
GetEffectCreator() - кто навесил эффект
GetEffectSubType() - можешь те эффекты, что нужно убрать, вешать с одним из флагов (SUBTYPE_EXTRAORDINARY,SUBTYPE_MAGICAL,SUBTYPE_SUPERNATURAL)
GetEffectSpellId() - возращает номер спелла, вызвавшего эффект. (для вижуал эффекта - мало полезно, но все-же)

Из этого наиболее полезным может оказаться GetEffectSubType(), тебе просто нужно на те эффекты, которые хочешь убрать, вешать флажок SupernaturalEffect(), ExtraordinaryEffect() или MagicalEffect()


_kaa_ , спасибо.
DBColl
Цитата
Из этого наиболее полезным может оказаться GetEffectSubType(), тебе просто нужно на те эффекты, которые хочешь убрать, вешать флажок SupernaturalEffect(), ExtraordinaryEffect() или MagicalEffect()

Спасибо, Каа. И как я сам не догадался?.. smile.gif Век живи - век учись!..
Tarre Talliorne
Хм... Народ, как на ваш взгяд лучше всего организвоавать поведение простолюдинов(имитация рассудочной деятельности в действиях, не связанных с ПС). Моя идея: он спавн составляется список(требование: все простолюдины должны иметь одинаковый тэг и диалог) типа:

Код
object OS = OBJECT_SELF;
object o1= GetNearestObjectByTag(GetTag(OS), OS, 1);
object o2= GetNearestObjectByTag(GetTag(OS), OS, 2);
. . .


Потом. Наш непись поочередно подходит к о1, они смотрят друг на друга

Код
AssignCommand(o1, SetFacing(OS));
AssignCommand(OS, SetFacing(o1));


и начинают диалог. Потом наш непись идет к другому и третьему и т.д.
Система, конечно же не идельна. Есть другие предложения?
DBColl
Tarre
А чем тебе не нравится стандартный AMBIENT_ANMATION?
Tarre Talliorne
Тот, что отвечает за треп? Он используется, но в другом месте. И вообще хочется до всего дойти самому и создать имитацию кастомный событийности. И сделать лучше, чем биовар (хотя почти ни у кого это не получилось)
DBColl
Там достаточно гибко ее можно настроить. Взимодействие непися с другими неписями, с плэйсэблами, районы "гуляния"... Чего не хватает?
Если ты за принципиальность нового, то я тебя понимаю. В свое время сам хотел сделать это... но... подумал, сколько времени на это уйдет и решил, что не надо smile.gif. С меня хватило полного AI хенчши, который, кстати, отлично уже работает smile.gif...
Tarre Talliorne
Цитата
Там достаточно гибко ее можно настроить.

Подскажешь? :-)
Аваддон
У меня такой вопрос:
Можно ли скриптами поменять APPEARANCE брони? Например сменить Neck? Ну как то био-твари это при крафте делают ведь...
DBColl
Цитата
Подскажешь? :-)

Тарре, я думал ты знаешь... unsure.gif Хех. Ладно.
Смотри спавн скрипт любого непися. Посмотри на комментрии внимательно (закомментированные) SetSpawnInCondition... Если непонятно - копни глубже, залезь в инклюд... Там более подробно описано. Уверен, что если ты еще не смотрел туды, то найдешь много вкуснятины smile.gif. Я вон в модуле стандартными раскомметировками настраивал летучих мышей (летают стайно, рандомно взлетая вверх и приземляясь... EffectDisappearAppear), в Проклятии жители города, продавцы, настроены стандартными средствами Биовар. Есть такие вейпы в стандартной палитре - WP_HOME, WP_TAVERN... и прочее. Ими и настраивается все wink3.gif.
Tarre Talliorne
Нет, про SetSpawnInCondition() знал и раньше, но с моим английским :-). Лана, попробую. Спасибо.

ЗЫ: EffectDisappearAppear() - попробуй с драконом. Вот такм рельная тема :-)
DBColl
Цитата
ЗЫ: EffectDisappearAppear() - попробуй с драконом. Вот такм рельная тема :-)

Пробовали. Давно smile.gif. Круто. wink3.gif.
Цитата
Нет, про SetSpawnInCondition() знал и раньше, но с моим английским :-). Лана, попробую. Спасибо.

А куда ж программер без английского?! unknw.gif Технический нужно понимать. yes3.gif
Dark Lord
Долго думал куда притулить этот вопрос решил не плодить тем т.к. вопрос то как раз к скриптам, причем мучает меня довольно таки давно и не только как оказалось меня... (Текст подготавливал заранее - как поему smile.gif)

{Сподвигло меня на задание сего вопроса две вещи : а) окончание работы над такими веселыми вещами как дульные газы и выброс гильз в огнестреле - вроде работает нормально и б) высказанные некоторыми участниками форумов ВРГ мыслей о модерн-модах в различных темах :ss:}

Итак, я долго думал над этой проблеммой ну и не токо думал пытался даже коечто сам сворганить но это нечто что выше моих сил. Итак, цель наша (надеюсь что наша а пока моя) - достичь полного или частичного реализъма стрельбы из автоматического оружия за счет введения стрельбы очередями. Требования к скрипту :
1) объяснить куда и как его совать ! т.е. не сказать "на он-хит боеприпаса" а именно разъяснить как т.к. в редакторе никакой вкалдки скриптов у Айтемов я вообще не нашол sad.gif
2) рассчитан на тяжелый/легкий арбалет (соотв. автомат, пистолет-пулемет)
3) что делает : при выстреле первой стрелы (пули) выстреливает рандомно от 2 до 3-4 пуль (кол-во неважно это легко настроить) причем не точно в противника а (по возможности) так ну... кучно вокруг первой причем желательно чтобы они поражали сразу нескольких неписей (ну это уже наверное грань ненаучной фантастики, т.е. сделать можно но выглядеть будет малореалистично, хотя в реале такое конечно возможно. дело в визуальном воплощении сего) и при этом НЕ все стрелы ТОЧНО попадали в целевого НПС (как например стрела мельфа которая всегда бьет в цель даже огиьая препятствия - от так быть не должно)
4) скрипт должен проверять есть ли в ТЭГЕ оружия (т.е. есть ли вы нем ЭТА СТРОЧКА а не сам тэг такой) строчка "avtomat" или "PP" (например 762_akm_avtomat или 9_mp40_PP - это моя система обозначения оружия и патронов)- ну ясно что это значит - и срабатывать только при наличии этой строчки.
5) если будет удовлетворены хотьябы основные запросы (выпуск нескольких стрел после одной) я буду очень рад.


Варианты релиза как ЙА их вижу :
а) фитом типа быстрого выстрела. Тогда все почти пучком только надо приспособить этот фит к арбалетам, в общем неплохая вещь, я могу даж сам сделать наверно, если вы мне скажете в каком файле находится скрипт фита Рапид Схот и как ввести свой новый фит.

б) спеллом. Вариант не лишен своей харизмы чтоли но имеет (разделяя его с первым вариантом) недостаток : все стрелы-пули только ОДНОМУ неписю, а это имхо нехорошо как-то, зачем тогда очередь - не по груповушке ли пулять ? Спелл надо делать естественно свой по типу той ж стрелы мельфа но вопрос : надо чтоб стрела (пуля) летела точно по прямой. Как ?

в) моделью стрелы-в виде нескольких пуль. Идея прожективная, выглядит этот кентавр не очень. Пробовал. Можно конечно но плохо как-то, в том числе из-за соображения опять же попадания всех пуль в одного челокантропа (без промахов) и годится наверно только для дробовика (там уж выхода нет).

г) какй нето ваш собственный вариант даже не берусь сказать какой.


Подозреваю что вещь для опытного скриптера несложная, но беда в том что я не отношусь к ним sad.gif Плюс объясните или дайте плиз ссылку где сказано где лежат фиты - особенно естественно интересует фит РапидШот и как ихъ клепать.

{Я бросил донимать моделлеров теперь возьмуся за скриптеров lol.gif lol.gif lol.gif spiteful.gif crazy.gif }
Аваддон
Фиты если я не ошибаюсь лежат в feats.2da
Dark Lord
Ясно что в feats.2da я имел в виду не сами фиты а их скрипты, то как они действуют.
Tarre Talliorne
Dark Lord Ни фига то себе... Неа, я, конечно, НВН поковыряю, но... думаю этот вопрос к ДБКоллу и Айс Блейду. Блин. Ужас.
Dark Lord
А чо ужас то чо ужас то хочу просто переписать скрипт быстрого выстрела чтобы распространить его на арбалет и увеличить число выстреливаемых стрел... Что такого ужасного ?
Добавлено в [mergetime]1089540633[/mergetime]
А при чем тут АйсБлэйд ? Я не совсем понял, таварищ Айс сам вэд сказал : "Я нэ скриптэр, таварищи !"
Tarre Talliorne
Не, просто варианты (а) и (б) явно для 2да специалиста а (в) для моделлера. Скриптерам остается только гипотетический (г)... Ужас в том, что ни обна мылсь насчет этого самого (г) так и не приходит :-)
Dark Lord
Цитата
Ужас в том, что ни обна мылсь насчет этого самого (г) так и не приходит :-)


Да, именно. У меня та же проблемма =)

Цитата
а (в) для моделлера


Да, для моделлера, но я и сам кххм.м..м моделлер ! Выложил вариант в) просто чтобы убедить народ в его несостоятельности !
Lex
Хм..у меня тут возник вопрос.
Ситуация такая: небольшая (2х4) локация. Дорога между двумя округами. Хочу, чтобы каждый раз, когда там появлялся игрок появлялась группа бандитов.

Сейчас сделал так: положил энкаунтер. Но проблема в том, что срабатывает только один раз, что меня не устраивает.

вопросы:
- Можно ли решить проблему только энкаунтером, не создавая скрипт спавна бандитов?
- Что происходит с энкаунтером типа "single shot" после спавна? Удаляется? Убирается флажок "active"?
Aiwan
Лекс, можно настроить с интервалом 10 секунд табун орков.
Цитата

СТОЛКНОВЕНИЯ С МОНСТРАМИ.

Пришло время настроить наши встречи с монстрами. В палитре достаточно стандартных encounter-ов, но мы сделаем новый. Работают encounters так же как и триггеры и устанавливаются так же. Запустим Encounter Wizard и сделаем новый encounter, нам предложат выбрать монстров, которые будут появляться при активизации. Если у вас есть свои, то выбирайте их из пользовательской палитры, я сделал из стандартных гоблинов. Выбрал их слева в окне и завершил создание боевки с тегом «AM_ENC_HARD_01». Зайдем в свойства и посмотрим основные параметры.

Basic – из основных свойств нам важны: Difficulty – сложность, Maximum Creatures – максимальное число появляющихся противников, Minimum Creatures – минимальные предел количества, меньше не будет; Spawn Option – каким будет столкновение, одиночным или с промежутками, а может бесконечное количество раз.

Creature list – список противников. Возможно изменить, добавить или убавить. Главное, это параметр CR (Challenge Rating) – это сложность NPC для боя, складывается из общих параметров таких как: уровень, класс, хитпоинты и т.д. Unique – может сделать персонально каждого NPC уникальным при срабатывании боевки. Это значит, например, босс будет один, шаман или колдун, а пехоты можно по несколько одинаковых. При активации encounter-а просчитывается CR в зависимости от уровня игрока, т.е. если наступить на него 1-м уровнем и 10-м, то список и сложность монстров в каждой ситуации будет разные.

Advanced – в этих свойствах нам надо разобраться основательно. Приступим. Фракция encounter-а должна быть враждебной (!) по отношению к тому, кто его активировал. Это значит, если установить фракцию обывателей то, наступив encounter не сработает. А вот если на него наступит монстр, то он запустит его. Поэтому, будьте внимательны с фракцией.  Active – делает  активным или не активным, это нужно, например, для того, что бы в скриптах мы могли его включать-отключать. Encounter Respawns – сколько столкновений будет, это меню активируется, ТОЛЬКО если вы свойствах Basic выберите Spawn Option> Continuous. При Single Shot столкновение произойдет только один раз.

Если оставить наш  encounter, нарисованным на локации как есть, то монстры появятся по всему периметру. Если вам необходимо что бы нападение произошло из заданной точки, то нужно нажать на очерченный encounter правой кнопкой мыши и выбрать пункт «Add spawn point» (Рис. 46.). Появиться стрелка, указывающая на черный треугольник, этот треугольник и будет точкой spawn-а монстров. Точек spawn-а может быть несколько, сделайте их и перетащите мышкой в нужное место.

Изображение

Рис. 46.

Важно! При точках spawn-а монстры будут появляться лицом в ту сторону, в которую направлена самая маленькая сторона, являющаяся основанием равнобедренного  треугольника. И монстры будут появляться только из той точки, которая находится впереди наступившего объекта (NPC, PC)  на область encounter-а. Выглядит это так: вы делаете столкновение и ставите три точки spawn-а в разные стороны. Если вы подойдете с каждой из трех сторон, то противник всегда будет появляться с точки, которая впереди.

В слотах скриптов, новый единственный слот, который мы не разбирали – OnExhausted. Этот слот срабатывает, когда вы выбрали опцию «Single-Shot spawn» и противники перестали появляться (spawn- спавниться) на локации. 


Добавлено в [mergetime]1089572826[/mergetime]
Вот статья, еще не опубликована...
Lex
Мне как раз это НЕ НАДО. Надо так: наступил - появились и пока из локи не ушел дальнейшие наступания ни к чему не приводят. Ушел, снова, как попадаешь, наступаешт и дерешся. Во как
_kaa_
imho пока энкаунтер не перебит полностью - новая партия спавниться не должна.
Но в стандартных энкаунтерах есть одна неприятная вещь - если мобы отспавнились, их никто не уберет. Так что хорошей идеей будет доработать стандартный скрипт спавна мобов, чтобы по прошествии некоторого времени проверять - если игроков тут давно не было - убирать мобов. Иначе очень напряжно для шарда, ведь у каждого моба нехилый по объему список скриптов, которые в холостую крутятся. Для примера - посмотри модуль Cormyr'а, там _куча_ спавнов и через сутки-двое сервак просто загибается.
Многие шарды НЕ используют стандартные энкаунтеры (хотя дизайнерам куда проще работать с ними) по причинам глюков и переполнений, которые до сих пор не пофиксили.
DBColl
Цитата
Ситуация такая: небольшая (2х4) локация. Дорога между двумя округами. Хочу, чтобы каждый раз, когда там появлялся игрок появлялась группа бандитов.

Лекс, ты "Начало Пути" видел ваще?! biggrin.gif Скажи чем тя не устроило, как это дело выпадает у меня? С глобальной карты...
2GoDoom
Вопрос такой: МОжно ли в НВНе как-то обрабатывать стринги? (то есть отделять от начала стринга 3 символа, добавлять и т.п.)
Аваддон
Да, там есть что то вроде GetStringLeft и Right. Там надо стринг вписать и число. Это число отсчитывает буквы слева или справа стринга
2GoDoom
отсчитывает - это значит типа присваивает в переменную букву N слева или справа? Или же она удаляет все до... ?
Аваддон
2GoDoom, скачай лексикон и почитайsmile.gif
Tarre Talliorne
Цитата
Вопрос такой: МОжно ли в НВНе как-то обрабатывать стринги? (то есть отделять от начала стринга 3 символа, добавлять и т.п.)

Конечно. Набери в филттре string . Вот все операторы.
Смотри: тебе надо отделить от начала 3 стринга , пишешь:
Neverwinter Script Source
GetStringLeft(sYourString, 3);
где sYourString - твой стринг, от которого отделяешь.
Про переменные: нет. Эта функция - string , она - самостоятельная. Напр .
Neverwinter Script Source
SpeakString(GetStringLeft(sYourString, 3));
DBColl
Еще есть функция GetSubString(...) - она более привычна для тех кто учился скриптам на основе Си wink3.gif.
Вообще в NWN-скриптинге достаточно гибкая система работы со стрингами. Так что по сути любая проблема с ними решаема wink3.gif.
Tarre Talliorne
ОФФТОП: ДБ, ты знаешь, появилась такая штука(hak), как SetName. Рильная вещь. Теперь можно делать отбивание памяти ПС :-)
DBColl
ГДЕ???? КОГДА??? В ЧЕМ??? Какой хак? shok.gif shok.gif
2GoDoom
Я тоже о такой фишке не слышал smile.gif

Не... GetSubString - я слышал но мне не привычнее... Мне привычнее str_replace и т.д. smile.gif

Еще вопрос:
Neverwinter Script Source
string sCheck = "1234567890";
int iCheck1 =GetStringLenght(sCheck);


Кусок вырван из всего скрипта... Но ругается именно на вторую строку в приведенном примере. Говорит: PARSING VARIABLE LIST.
Переводить не надо - лучше скажите что это означает и как лечится smile.gif

ЗЫ
Перевод: Анализ листа переменных
Tarre Talliorne
С помощью С++ проникают под оболочку НВН и делают такие функции как SetTag, SetName, редактировагние описание и т.д. На ваульте набери SetName.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Invision Power Board © 2001-2025 Invision Power Services, Inc.