![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3326
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Loki87 @ Jul 11 2007, 21:46) [snapback]110464[/snapback] effect EffectAppear () Та нафик тебе этот эффект? Это типа потрясти экран. Толку то мало. Тебе надо отпраивть НПС в точку или на локальный объект. Я написал скрипт и там есть описание каждого шага. Если ты напряжешь серое вещество то все твои задачи можно решить моими командами. |
![]()
Сообщение
#3327
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Цитата дальше вроде надо написать - AssignCommand (oNPC, и какую тут функцию впихнуть??? типа надо effect EffectAppear () тока у меня не сработало. Тут два варианта появления NPC на точке: или прыжок или вызов из палитры. Neverwinter Script AssignCommand(oNPC, ActionJumpToObject(oPoint)); // Прыжок // ВЫЗОВ ИЗ ПАЛИТРЫ object oWP = GetWaypointByTag("furyspawn01"); location Loc = GetLocation(oWP); CreateObject(OBJECT_TYPE_CREATURE,"ResRef",Loc,FALSE,"newTag"); // Существо из палитры EffectAppear () накладывает на существо эффект падения с неба, т.е. существо уже должно быть! P.S. Я тут почти закончил писать мануал для чайников, можно найти в шпаргалке все часто используемые функции, плюс набор некоторых скриптов для модуля, ну и описание что откуда растет… Рекомендую ознакомиться, ну и конечно мануал Айва окажет большую помощь в модостроительстве. Игроделу: http://remmgen.narod.ru/shpora.html Цитата за вот это - location Loc = GetLocation(oWP); вылезла ошибка - ERROR: VARIABLE DEFINED WITHOUT TYPE короче или я дурак, или аврора Помедетировав, обнаружил ошибку в обозначение точки. (У тебя было oWp)... Сообщение отредактировал gennady - Oct 8 2010, 09:49 |
![]()
Сообщение
#3328
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Вот как раз из палитры самое то. но я зделал все как было сказано и в итоге вот что получил:
за вот это - location Loc = GetLocation(oWP); вылезла ошибка - ERROR: VARIABLE DEFINED WITHOUT TYPE короче или я дурак, или аврора |
![]()
Сообщение
#3329
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Loki87 @ Jul 12 2007, 13:01) [snapback]110490[/snapback] короче или я дурак, или аврора не аврора. oWP определен выше? как? Приводите или целиком скрипты, или рабочие кусочки (+ определения используемых переменных.) |
![]()
Сообщение
#3330
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Цитата(Lex @ Jul 12 2007, 11:47) [snapback]110497[/snapback] не аврора. oWP определен выше? как? Приводите или целиком скрипты, или рабочие кусочки (+ определения используемых переменных.) Neverwinter Script Source void main() { object oWp=GetWaypointByTag("furyspawn01"); object oNPC = GetObjectByTag("NW_DROWROGUE001"); location Loc = GetLocation(oWP); CreateObject(OBJECT_TYPE_CREATURE,"ResRef",Loc,FALSE,"NW_DROWROGUE001"); } по-моему я просто от незнания забыл что то добавить. |
![]()
Сообщение
#3331
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Цитата(Loki87 @ Jul 12 2007, 14:29) [snapback]110500[/snapback] по-моему я просто от незнания забыл что то добавить. Короче, пиши так: Neverwinter Script Source // ВЫЗОВ ИЗ ПАЛИТРЫ void main() { object oWP = GetWaypointByTag("furyspawn01"); location Loc = GetLocation(oWP); string ResRef = "РесРеф твоего перса в палитре, не путать с тэгом!!!"; CreateObject(OBJECT_TYPE_CREATURE, ResRef, Loc, FALSE, "NW_DROWROGUE001"); // Существо из палитры } Скрипт видит различие между большой и малой буквой в обозначении точки (P - p). Здесь и крылась ошибка! Кстати, РесРеф в скрипте можно писать как малыми, так и дольшими буквами, ошибки не будет. А вот тэг нет, будет ошибка! (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#3332
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Зделал все так все равно ошибка.
Neverwinter Script Source void main() { object oWP = GetWaypointByTag("furyspawn01"); location Loc = GetLocation(oWP); string ResRef = "fury"; CreateObject (OBJECT_TYPE_CREATURE, "ResRef", Loc, FALSE, "NW_DROWROGUE001"); } ERROR: DECLARATION DOES NOT MATCH PARAMETERS - это относилось к последней строчке - CreateObject и т.д. |
![]()
Сообщение
#3333
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Loki87 @ Jul 12 2007, 15:42) [snapback]110507[/snapback] "ResRef" там надо без ковычек |
![]()
Сообщение
#3334
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
без ковычек сначало было, но все равно не сработало. я поставил их - тоже не работает.
|
![]()
Сообщение
#3335
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
2 Loki87, ты точно делаешь все так?
Третья строка: точное указание тэга вайпоинта; Пятая строка: указание ResRef'a того NPC которого нужно создать; Седьмая строка: собственно настройка всех параметров, указание того, что нужен именно NPC (не плейс и т.д), и как мне кажется, ошибка у тебя в самом последнем параметре. Почему ошибка? Потому что может быть, ты задаешь, новый тэг: NW_DROWROGUE001, сам того не ведая, и хотя создать NPC именно по нему. По крайней мере, других причин для того что бы выше приведенный скрипт не выполнял свою функцию, я не могу найти. Проверь все еще раз, подробно и досконально. Ошибка скорее всего банальна, но за работоспособность кода, я ручаюсь. PS: вот тебе небольшой модуль в помощь (версия для игры, максимальная, на данный момент). Сообщение отредактировал Dik Morris - Jul 12 2007, 20:12 |
![]()
Сообщение
#3336
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Большое всем спасибо за помощь и потраченное время.
Dik Morris - да я все именно так написал как было сказано в постах выше. сейчас детально изучу твой модуль и попробую разобраться. я так понял при нажатии происходит тот же спавн, просто все выглядит по другому. спасибо кстати за это. плохо быть чайником... (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) (IMG:style_emoticons/kolobok_light/unsure.gif) |
![]()
Сообщение
#3337
|
|
Level 2 ![]() Класс: Клерик Характер: Chaotic Good Раса: Полуэльф ![]() |
Цитата(Dik Morris @ Jun 25 2007, 15:30) [snapback]109877[/snapback] 2 Teranozavr_REX, на будущее. Что бы знать какую использовать функцию в той или иной ситуации, будь то инициализация игрока, аль просто нужная операция, проще всего - заглянуть в Лексикон. Там они подробно рассортированы, каждая функция, к каждому эвенту. Можно так же прописать в фильтре, непосредственно в самом тулсете. Лексикон, Лексикон, Лексикон... Все говорят о лексиконе, но что-то не разу не видел что-нить конкретное. Прямо как снежный человек- все о нём знают, но никто не видел вживую. Может мне кто-нибудь разьяснить, где прячется этот чёртов лексикон?! |
![]()
Сообщение
#3338
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
2 Worldowner, он прячется в этих краях, и найти его, можно набрав в поиске слово: Lexicon.
|
![]()
Сообщение
#3339
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Почитал я лексикон - довольно таки понятно там написано. Даже первый "go fetch" квест зделал. работает. однако тут же появилась проблемка. дело в том ято я хотел зделать, чтобы НПС подходил и просил о помощи (то есть давал этот квест самый) именно тогда когда ПС наступит на триггер вокруг НПС. как в самом начале Кампании, где после наступления на триггер подходит Павел и начинает трындеть.
вобщем я поковырялся вроде нашел что надо, но то ошибка то неработает. после трех тщетных часов я решил таки спросить у профи. вот как выглядит скрипт который я повесил на onEnter триггера: Neverwinter Script Source void ActionStartConversation ( object oObjectToConverseWith = "NW_COMFEMALE001", string sDialogResRef = "janethmeet", int bPrivateConversation = FALSE, int bPlayHello = TRUE ); { string sTag = "NW_COMFEMALE001"; object oNPC = GetLocalObject(GetArea(OBJECT_SELF),"NW_G_" + sTag); object oPC = GetEnteringObject(); if(GetIsPC(oPC) && GetLocalInt(oPC,"NW_L_Init" + GetTag(oNPC)) == FALSE && IsInConversation(oNPC) == FALSE) { AssignCommand(oPC,ClearAllActions()); AssignCommand(oNPC,ClearAllActions()); AssignCommand(oNPC,ActionMoveToObject(oPC)); AssignCommand(oNPC,ActionStartConversation(oPC)); } } если верить лексикону и самим АТАРИ которые написали скрипт начинающий болтовню с Павлом, то у меня все верно. (а мож пропустил что, все таки 7 часов скриптинга, да еще и чайниковского - напрягают мозг). вобщем нажимаю save, а он ругается и пишет - ERROR: NON CONSTANT IN FUNCTION DECLARATION - относя это к шестой строке, то есть к скобке и точке с запятой! не знаю как в двух значках всего, может прятаться ошибка. помогите, люди добрые. (IMG:style_emoticons/kolobok_light/swoon.gif) |
![]()
Сообщение
#3340
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Для ошибки хватит и одного символа… Хорошо, функцию ActionStartConversation написал, а кто ее будет запускать? Нужно через void main() {} или через int StartingConditional() {}
Бывает необходимость привлечь внимание игрока к определенному персонажу, тогда вам поможет такой небольшой универсальный скрипт подхода на вход триггера, и старт диалога героя с НПС. Нужно очертить триггер вокруг НПС, и проставить в поле ключа триггера, тэг нашего НПх Сам скрипт: Neverwinter Script Source //:://////////////////////////////////////////////////
//:: Герой подходит к НПС и начинает диалог //:: File name: camera_dialog //::////////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); object oSP = GetHenchman(oPC); string sName = GetLockKeyTag(OBJECT_SELF); object oDL = GetObjectByTag(sName); vector vFace = GetPosition(oPC); float fTime = GetDistanceBetween(oPC, oDL); if(fTime < 5.0) fTime = 5.5; if (!GetIsPC(oPC)) return; DelayCommand(0.1, AssignCommand(oDL, ClearAllActions())); DelayCommand(0.2, SetCutsceneMode(oPC, TRUE)); DelayCommand(0.3, AssignCommand(oPC, ClearAllActions(TRUE))); DelayCommand(0.4, AssignCommand(oSP, ClearAllActions(TRUE))); DelayCommand(1.3, AssignCommand(oDL, SetFacingPoint(vFace))); DelayCommand(1.5, AssignCommand(oPC,ActionForceMoveToObject(oDL, FALSE, 0.0))); DelayCommand(1.5, AssignCommand(oSP,ActionForceMoveToObject(oPC, FALSE, 0.0))); DelayCommand(1.5, AssignCommand(oDL, SpeakString("Подойдите ко мне. Это очень важно!"))); DelayCommand(fTime-4.0, AssignCommand(oDL, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING))); DelayCommand(fTime-3.5, AssignCommand(oPC, SpeakString("Уже иду! Что там у вас случилось?"))); // диалог персонажа DelayCommand(fTime-0.5, AssignCommand(oDL, ActionStartConversation(oPC))); DelayCommand(fTime, SetCutsceneMode(oPC, FALSE)); DestroyObject(OBJECT_SELF, fTime+1.0); } Сообщение отредактировал gennady - Jul 16 2007, 07:13 |
![]()
Сообщение
#3341
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(gennady @ Jul 16 2007, 08:08) [snapback]110621[/snapback] string sName = GetLockKeyTag(OBJECT_SELF); object oDL = GetObjectByTag(sName); 1. тэг НПС начиная с ХОТУ можно писать в локалкку триггера. Вариант с кей-тэгом оправдан только если НВН или НВН+СОУ. 2. в данном случае (да и вообще везде где возможно) лучше использовать GetNearestObjectByTag() 3. Цитата(gennady @ Jul 16 2007, 08:08) [snapback]110621[/snapback] DelayCommand(1.5, AssignCommand(oDL, SpeakString("Подойдите ко мне. Это очень важно!"))); DelayCommand(fTime-4.0, AssignCommand(oDL, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING) )); DelayCommand(fTime-3.5, AssignCommand(oPC, SpeakString("Уже иду! Что там у вас случилось?"))); анимация это гут, а вот текст имхо делать не нужно. Лучше начать диалог и там для уже все разговоры вести. (ну не сказал бы мой хаотик-злой некромант вот так "Уже иду! Что там у вас случилось?".) |
![]()
Сообщение
#3342
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
ну я не всегда хаотик ивел сорсами играю. иногда можно попозориться и пройти кампанию палладином. но в наших кругах РПГшников это не серьезно!
ну и скрипт! зачем там строка про хенчмана? |
![]()
Сообщение
#3343
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Подскажите название скрипта Большогосвятилища
ПОдскажите названия скрипта Большогосвятилища |
![]()
Сообщение
#3344
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
NW_S0_Sanctuary.
Когда будешь открывать, не забуть поставить пометку, на то, что этот скрипт глобальный, а не ограниченный рамками модуля, иначе ничего не получится. На будущее. Что бы узнать название того или иного скрипта, например кода отвечающего за заклинания - стоит не забывать про 2DA таблицы. В данном случае, это 2DA таблица: spells.2DA, в ней, помимо различных других установок и параметров, обязательно присутствует название скрипта, который отвечает за выполнение и работу заклинания. Это так же относится и, например, к фитам. Ну, или самый простой вариант. Включаешь галочку глобального поиска, и вперед. По названию непосредственного сабжа. Я так и нашел, т.е. просто набрал в поиске san (IMG:style_emoticons/kolobok_light/smile.gif) . Сообщение отредактировал Dik Morris - Jul 18 2007, 19:50 |
![]()
Сообщение
#3345
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Dik Morris @ Jul 18 2007, 20:42) [snapback]110720[/snapback] Ну, или самый простой вариант. Включаешь галочку глобального поиска, и вперед. По названию непосредственного сабжа. Я так и нашел, т.е. просто набрал в поиске san самый основной вариант. С первой-второй попытки "найдется все". Цитата(Loki87 @ Jul 16 2007, 13:40) [snapback]110630[/snapback] ну и скрипт! зачем там строка про хенчмана? страховка. Иногда хенч может и не подойти (или ты специально оставил его в стороне). Все бы ничего но если в диалоге с НПС есть фразы хенча (как третьего в разговоре например), а сам хенч далеко - разговор просто прервется, что не гут. Можно конечно в скриптах диалога это предусматривать, но имхо самый надежный вариант просто обеспечить наличие Хенча рядом с игроком. |
![]()
Сообщение
#3346
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Лекс, спасибо за критику! Чуть модернизировал скрипт, может кому пригодится…
Бывает необходимость привлечь внимание игрока к определенному персонажу, тогда вам поможет такой небольшой универсальный скрипт подхода на вход триггера, и старт диалога героя с НПС. Нужно очертить триггер вокруг НПС, и проставить в поле ключа триггера, тэг нашего НПС Сам скрипт: Neverwinter Script Source /////////////////////////////////////////////////
//:: Герой подходит к NPC и начинает диалог //:: File name: camera_dialog //::////////////////////////////////////////////////// void main() { object oPC = GetEnteringObject(); object oSP = GetHenchman(oPC); vector vFace = GetPosition(oPC); string sName = GetLockKeyTag(OBJECT_SELF); int i = 1; float fTime; object oDL = GetNearestObjectByTag(sName, oPC, i); int iA = GetGoodEvilValue(oPC); if (!GetIsPC(oPC)) return; while (GetIsObjectValid(oDL)) { if (!GetIsInCombat(oPC)&&!GetIsInCombat(oDL)&&!GetIsEnemy(oPC, oDL)&& !GetIsDead(oDL) && GetObjectType(oDL) == OBJECT_TYPE_CREATURE) { fTime = GetDistanceBetween(oPC, oDL); SetLocalInt(OBJECT_SELF,"VALID",1); break; } i++; oDL = GetNearestObjectByTag(sName, oPC, i); } if (GetLocalInt(OBJECT_SELF, "VALID") != 1) return; // Проверить if(fTime < 5.0) fTime = 7.5; string sPC = "Заткнись! Если что не то - порву!"; if (iA>30 && iA<70) sPC = "Не кричи! Иду, иду..."; if (iA>=70 && iA<100) sPC = "Уже иду... Что случилось?"; if (iA==100) sPC = "Уже иду! Что там у вас случилось?"; AssignCommand(oDL, ClearAllActions()); AssignCommand(oDL, SetFacingPoint(vFace)); AssignCommand(oDL, ActionPlayAnimation(ANIMATION_LOOPING_PAUSE, 1.0, 2.5)); AssignCommand(oDL, ActionPlayAnimation(ANIMATION_FIREFORGET_GREETING)); AssignCommand(oDL, ActionWait(fTime-3.0)); AssignCommand(oDL, ActionStartConversation(oPC)); // диалог персонажа AssignCommand(oDL, ActionDoCommand(SetCommandable(TRUE, oDL))); // разблокировать очередь DelayCommand(0.1, SetCommandable(FALSE, oDL)); // заблокировать очередь DelayCommand(0.2, SetCutsceneMode(oPC, TRUE)); DelayCommand(0.3, AssignCommand(oPC, ClearAllActions(TRUE))); DelayCommand(0.4, AssignCommand(oSP, ClearAllActions(TRUE))); DelayCommand(1.5, AssignCommand(oPC, ActionForceMoveToObject(oDL, FALSE, 1.0, fTime-2.0))); DelayCommand(1.5, AssignCommand(oSP, ActionForceMoveToObject(oPC, FALSE, 1.0, fTime-2.0))); DelayCommand(2.0, AssignCommand(oDL, SpeakString("<c у >Подойдите ко мне! Это очень важно!</c>"))); DelayCommand(fTime-3.5, AssignCommand(oPC, SpeakString(sPC))); DelayCommand(fTime, SetCutsceneMode(oPC, FALSE)); DelayCommand(fTime, SetCommandable(TRUE, oDL)); // разблокировать очередь DelayCommand(fTime+0.1, AssignCommand(oPC, ActionStartConversation(oDL))); // диалог персонажа DestroyObject(OBJECT_SELF, fTime+1.0); } |
![]()
Сообщение
#3347
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
QUOTE(Dik Morris @ Jul 18 2007, 19:42) [snapback]110720[/snapback] NW_S0_Sanctuary. Когда будешь открывать, не забуть поставить пометку, на то, что этот скрипт глобальный, а не ограниченный рамками модуля, иначе ничего не получится. На будущее. Что бы узнать название того или иного скрипта, например кода отвечающего за заклинания - стоит не забывать про 2DA таблицы. В данном случае, это 2DA таблица: spells.2DA, в ней, помимо различных других установок и параметров, обязательно присутствует название скрипта, который отвечает за выполнение и работу заклинания. Это так же относится и, например, к фитам. Ну, или самый простой вариант. Включаешь галочку глобального поиска, и вперед. По названию непосредственного сабжа. Я так и нашел, т.е. просто набрал в поиске san (IMG:style_emoticons/kolobok_light/smile.gif) . Про 2da пасибо совсем про них забыл )) сейчас поду гляну а вот нащет "просто набрал в поиске san" к сожалению не все так просто NW_S0_Sanctuary - это скрипт насколько я понял именно для простогоили малого или как атм его еще святилища а вот то что кастит сорка на 8 круге как то по другому называеться ((( Хоть может я дето и ошибаюсь Но думаю что таки прав ибо уже десятка полтора заклов исправил что бы наступать на такие нюбские грабли )) хотя скем не бывает |
![]()
Сообщение
#3348
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Ну нафига такой огромный скрипт для одного малюсенького действа. (жаль визард не все типы скриптов помогает делать).
|
![]()
Сообщение
#3349
|
|
![]() Класс: Пьяный Мастер Характер: Lawful Good Раса: Тварь MySQL, PHP, JavaScript Порядок Времени ![]() |
Код Create_Undead 780 is_CrUndead N S vs 0x3a 0x2C NW_S0_CrUndead **** 6 **** **** **** 8 6 1500 head **** **** vco_grndskul sco_grndskul vs_chant_necr_hm vs_chant_necr_hf out 1000 **** vca_outneg **** sca_outneg 0 **** **** **** **** **** **** 0 **** **** **** **** **** 15 **** 1 6126 1 0 **** 0 **** **** **** 1 Greater_Planar_Binding 819 is_GrPlanar C S vs 0x3a 0x2E NW_S0_GrPlanar **** **** **** **** **** 8 8 1500 head **** **** vco_lgsprodd01 sco_lgsprodd01 vs_chant_conj_hm vs_chant_conj_hf up 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 15 **** 1 6166 1 0 **** 0 **** **** **** 0 Incendiary_Cloud 839 is_IncCloud V L vs 0x3f 0x2E NW_S0_IncCloud **** **** **** **** **** 8 8 1500 head **** **** vco_lgsprfire01 sco_lgsprfire01 vs_chant_evoc_hm vs_chant_evoc_hf area 1000 **** **** **** **** 1 vpr_ectofire01 homing hand spr_ectofire01 path Fire 1 **** **** **** **** **** 11 **** 1 6186 1 0 **** 1 **** **** **** 1 Mass_Blindness_and_Deafness 860 is_MassBlDf I M vs 0x3a 0x2E NW_S0_MassBlDf **** **** **** **** **** 8 8 1500 hand **** **** vco_lgrinodd01 sco_lgrinodd01 vs_chant_illu_hm vs_chant_illu_hf area 1000 **** **** **** **** 1 vpr_los accelerating hand spr_los path **** 1 **** **** **** **** **** 1 **** 1 6207 1 0 **** 1 **** **** **** 1 Mass_Charm 861 is_MsCharm E S v 0x1a 0x2E NW_S0_MsCharm **** **** **** **** **** 8 8 1500 hand **** **** vco_lgrinmind01 sco_lgrinmind01 vs_chant_ench_hm vs_chant_ench_hf touch 1000 **** **** **** **** 1 vpr_los accelerating hand spr_los path Mind_Affecting 1 **** **** **** **** **** 1 **** 1 6208 1 0 **** 1 **** **** **** 1 Mind_Blank 867 is_MindBlk A S vs 0x3a 0x2F NW_S0_MindBlk **** **** **** **** **** 8 8 1500 head vco_mehanmind01 **** **** sco_mehanmind01 vs_chant_conj_hm vs_chant_conj_hf touch 1000 **** **** **** **** 1 vpr_los accelerating hand spr_los path **** 0 **** **** **** **** **** 9 **** 1 6214 1 0 **** 0 **** **** **** 1 Premonition 884 is_Premo D T vs 0x3a 0x09 NW_S0_Premo **** **** 8 **** **** 8 8 1500 head vco_mehanelec03 **** vco_lgrinmind01 sco_lgrinmind01 vs_chant_illu_lm vs_chant_illu_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 12 **** 1 6228 1 0 **** 0 **** **** **** 0 Summon_Creature_VIII 931 is_Summon8 C S vs 0x3a 0x2C NW_S0_Summon **** 8 8 **** **** 8 8 1500 hand **** vco_mehanodd02 vco_lgrinodd01 sco_lgrinodd01 vs_chant_conj_hm vs_chant_conj_hf out 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 15 **** 1 6512 1 0 **** 0 **** **** **** 0 Horrid_Wilting 6333 is_HorrWilt N M vs 0x3d 0x2E NW_S0_HorrWilt **** **** **** **** **** 8 8 1500 head **** **** vco_lgupodd01 sco_lgupodd01 vs_chant_necr_hm vs_chant_necr_hf out 1000 **** **** **** **** 1 vpr_los homing hand spr_los path **** 0 **** **** **** **** **** 1 **** 1 6533 1 0 **** 1 **** **** **** 1 Sunburst 385 is_X1Sunbur V M vs 0x3d 0x3E x0_s0_sunburst **** **** 8 **** **** 8 8 1500 head vco_mehedholy01 **** **** sco_mehedholy01 vs_chant_evoc_hm vs_chant_evoc_hf up 1000 **** **** **** **** 0 **** **** **** **** **** Divine 1 **** **** **** **** **** 1 **** 1 1537 1 0 **** 1 **** **** **** 0 Etherealness 2364 is_X1Ether T T v 0x3a 0x09 x0_s0_ether **** 6 **** **** **** 8 7 1500 head vco_smhanholy01 **** **** sco_mehanholy01 vs_chant_evoc_lm vs_chant_evoc_lf up 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** **** **** 1 2371 1 0 **** 0 **** **** **** 0 Bigbys_Clenched_Fist 2686 is_X1Bigby4 V L vs 0x3f 0x3A x0_s0_bigby4 **** **** **** **** **** 8 8 1500 hand **** vco_mehanacid03 **** sco_mehanacid03 vs_chant_conj_hm vs_chant_conj_hf out 1000 **** **** **** **** 1 vpr_bigby_c homing hand spr_aroacid path **** 1 **** **** **** **** **** 2 **** 1 2691 1 0 **** 1 **** **** **** 1 Blackstaff 3761 is_X2Blckstff T T vs 0x3a 0x0B X2_S0_Blckstff **** **** **** **** **** 8 8 1500 hand **** vco_atomgren **** sco_atomgren vs_chant_ench_hm vs_chant_ench_lf self 1000 **** **** **** **** 0 **** **** **** **** **** **** 0 **** **** **** **** **** 9 **** 1 3762 1 0 **** 0 **** **** **** 0 таблица каста сорка/визарда 8го уровня (IMG:style_emoticons/kolobok_light/offtopic.gif) Цитата(Loki87 @ Jul 19 2007, 13:02) [snapback]110747[/snapback] Ну нафига такой огромный скрипт для одного малюсенького действа. (жаль визард не все типы скриптов помогает делать). быть может ты не прав и стоит предусмотреть гораздо большее, чем одно малюсенькое действо? (IMG:style_emoticons/kolobok_light/wink3.gif) |
![]()
Сообщение
#3350
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Цитата Ну нафига такой огромный скрипт для одного малюсенького действа. Loki, не все так просто, как кажется на первый взгляд… Диалог это ответственная функция, к тому же у меня она идет через мультик, тут вдвойне нужно быть осторожным. К тому же скрипт универсальный, а значит нужно учесть много игровых ситуаций (проверить идет ли бой, жив ли перс, не враг ли он…). Если у тебя будет перс занят, чем-то, как-то ходит или сидит на стуле или еще что, то нужно почистить ему акции, заблокировать очередь, чтобы он не сбил код. Обычно управление идет с ХБ перса, там цикл в 6 секунд… почистил это скрипт акции, и все привет – диалога нет! Тут даже в этом скрипте есть вероятность 1/60, что произойдет чистка акций во время исполнения скрипта, поэтому и сделаны блокировки, через DelayCommand. Да…, когда идет диалог, то герой переходит в режим бога, поэтому нужно знать, что он не притащил на хвосте врагов, а то получится некрасиво… Порой просто диву даешься на что способны игроки! Скрипт учитывает также и дистанцию до перса, и сделает прыжок герою, если тот где-то застрял, плюс диалог запускается как героем, так и персом (на всякий пожарный), ну и пробил разные фразы в зависимости от злобности героя (IMG:style_emoticons/kolobok_light/biggrin.gif) … это для того если все же чтой-то пойдет не так, то хоть по фразам игрок сориентируется. У меня к тому же есть плейсы одним тэгом с НПС… Так что если не хочешь ловить баги, то нужно всегда делать страховки и блокировки в скрипте. Вспоминаю, как в Невере и в ХоТу за моим героем долго бегали персы со своими диалогами с триггера (IMG:style_emoticons/kolobok_light/biggrin.gif) … Про висяки начала диалога с камеры в Леворе, вообще промолчу, т.к. ребятам на форуме за эти баги плешь проели… |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 19:20 |