![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3321
|
|
Вечно меняющийся ![]() Класс: Монах Характер: True Neutral Раса: Человек NWN: Скриптинг [Sn] ![]() |
2 Teranozavr_REX, эта функция вызывает то существо что выбрал сам игрок. А так как у тебя это NPC, у него по умолчанию и стоит этот звирь. Посмотрев фит, непосредственно в тулсете, понял что изменить там что-либо, по моему нельзя. Может стоит копнуть в направление 2DA таблиц. Но игра стоит свеч? ИМХО, совсем не стоит, так что используй вместо "SummonAnimalCompanion", что-нибуть другое, благо не одной ей ограничены, и вариантов много.
|
![]()
Сообщение
#3322
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Если быть более точным, то я просто не знаю самой системы создания скриптов. Не понимаю как она работает.
Английский мой второй родной язык, так что проблем не будет. Просто "живые люди" объяснят лучше любой инструкции. В любом случае спасибо. |
![]()
Сообщение
#3323
|
|
![]() Класс: Пьяный Мастер Характер: Lawful Good Раса: Тварь MySQL, PHP, JavaScript Порядок Времени ![]() |
(IMG:style_emoticons/kolobok_light/offtopic.gif)
Цитата(Loki87 @ Jul 11 2007, 13:33) [snapback]110459[/snapback] Если быть более точным, то я просто не знаю самой системы создания скриптов. Не понимаю как она работает.Английский мой второй родной язык, так что проблем не будет. Цитата(Aiwan @ Jul 11 2007, 09:42) [snapback]110450[/snapback] Скрипты это язык. Не зная иностранного языка петь песенки и сочинять стихи довольно сложновато. (IMG:style_emoticons/kolobok_light/secret.gif) скрипты == c, delphi и иже с ними, не английский, английский нужен для мануалов (IMG:style_emoticons/kolobok_light/wink3.gif) |
![]()
Сообщение
#3324
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Loki87 @ Jul 11 2007, 13:33) [snapback]110459[/snapback] росто "живые люди" объяснят лучше любой инструкции. не совсем так.. точнее совсем не так. Рассказывать базу и общие принципы на пальцах на форуме - это на самом деле крайне неэффективно. (на досуге попробуйте изложить все принципы программирования в 1-2 постах. Словите неимоверный кайф.) Базу надо набирать самому по мануалам и статьям. Когда она будет, тогда и разговор с живыми людьми по этой теме будет и интересен и продуктивен. |
![]()
Сообщение
#3325
|
|
Level 3 ![]() Класс: Некромант Характер: Chaotic Evil Раса: Эльф ![]() |
Lex - я понял. Как было выше замечено, мне следует быть более конструктивным. Так вот. я вроде как понемногу въезжать начал. Попробовал написать первый скрипт и тут же сел на пятую точку. Вобщем идея такова, что начинается диалог с НПС, в таверне. В этом диалоге есть 4 концовки, из которых 3 по смыслу одинаковые и четвертая отличная от первых трех. то есть при первых трех НПС просит героя сходить на встречу со вторым НПС (который уже не в таверне, а должен появиться снаружи в лесу) и тот соглашается, а в четвертом варианте герой посылает НПС так сказать на три буквы.
Я хочу зделать чтобы после первых трех "правильных" концовок диалога, тут же в лесу в определенной точке извне спавнился НПС 2. то есть чтобы он там появился только после удачного диалога с НПС 1. А при плохом, четвертом раскладе диалога, хочу чтобы НПС 1 атаковал героя, а НПС 2 снаружи не спавнился. начал писать скрипт я первого варианта развития событий. ясное дело что скрипт надо просто привязать к последней фразе диалога. тут я понял. так вот про скрипт: Neverwinter Script Source void main() { object oNPC=GetObjectByTag("NW_DROWROGUE001"); object oWp=GetWaypointByTag("furyspawn01"); дальше вроде надо написать - AssignCommand (oNPC, и какую тут функцию впихнуть??? типа надо effect EffectAppear () тока у меня не сработало. |
![]()
Сообщение
#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] ну и скрипт! зачем там строка про хенчмана? страховка. Иногда хенч может и не подойти (или ты специально оставил его в стороне). Все бы ничего но если в диалоге с НПС есть фразы хенча (как третьего в разговоре например), а сам хенч далеко - разговор просто прервется, что не гут. Можно конечно в скриптах диалога это предусматривать, но имхо самый надежный вариант просто обеспечить наличие Хенча рядом с игроком. |
![]() ![]() |
Текстовая версия | Сейчас: 2nd August 2025 - 11:34 |