![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3026
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
корявая организация: лишние переменные, в которых ты путаешься + сама структура перекручена, самому неудобно ее отслеживать.
+ у тебя в скриптах триггеры берутся по разным тэгам: Perd и Perd_Deru например. |
![]()
Сообщение
#3027
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
*стёрто* пришла нянька ты кнула носом, ошибка в имени тега все заработало))
всем пасибо извените... после прадников продолжем Сообщение отредактировал Teranozavr_REX - Mar 7 2007, 17:48 |
![]()
Сообщение
#3028
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
ну что могу сказать. Отдебаж.
Введи в разных местах NSS SendMessageToPC(GetFirstPC(),"TriggerState="+IntToString(GetLocalInt(oTrig1, "TriggerState"))); узнаешь, где косяк. Или не присваивается, или условие глючит. |
![]()
Сообщение
#3029
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Это на заметку возьму пасибо
не все еще заработало )) и дебаг веселые вещи показывает пока помучаюсь если не получиться я вернусь)) Сообщение отредактировал Teranozavr_REX - Mar 7 2007, 18:08 |
![]()
Сообщение
#3030
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
все косяки исправил ( вчасносте в определении тригера была рефр сылка а не тег и не работало (IMG:style_emoticons/kolobok_light/sad.gif) )
возникла новая проблема... мне надо проверить есть ли у того кто наступил на тригер некий итем. как сделатьпроверку я знаю вродебы воврос в том как определить\обьявить обект что то типа "тот кто наступил на тригер" |
![]()
Сообщение
#3031
|
|
Level 5 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Дракон NWN: Скриптинг [Sn] ![]() |
QUOTE(Teranozavr_REX @ Mar 15 2007, 17:38) [snapback]105767[/snapback] воврос в том как определить\обьявить обект что то типа "тот кто наступил на тригер" NSS // The value returned by this function depends on the object type of the caller: // 1) If the caller is a door it returns the object that last // triggered it. // 2) If the caller is a trigger, area of effect, module, area or encounter it // returns the object that last entered it. // * Return value on error: OBJECT_INVALID // When used for doors, this should only be called from the OnAreaTransitionClick // event. Otherwise, it should only be called in OnEnter scripts. object GetEnteringObject() ps: используется на onEnter триггера) |
![]()
Сообщение
#3032
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
пааасибо помогло все прикрасно работает ...
теперь последний так сказать штрих НПС что респиться по событию тригера... должен ити по некоему моршруту... я его проложил точками маршрута... так вот... 1) если просто проложить маршрут точками, то дойдя до конца маршрута НПС, возвращайеться назад, а надо что бы останавливался, это как то можно??? 2) как скриптом заставить НПС ити к поинту ??? 3) возможно ли сделатьчтото типа так: НПС идет к поинту когда доходит уничтожаеться...( как уничтожатьуже нашел... там помойму задержка естьесли я не ошибаюсь до уничтожения если мона пользоваться ею то насколько она будет подтормаживать сервер...) Сообщение отредактировал Teranozavr_REX - Mar 15 2007, 18:35 |
![]()
Сообщение
#3033
|
|
Level 7 ![]() Класс: Обыватель Характер: True Neutral Раса: Человек NWN: Модмейкер Начало Войны ![]() |
QUOTE(Teranozavr_REX @ Mar 15 2007, 18:32) [snapback]105785[/snapback] 2) как скриптом заставить НПС ити к поинту ??? NSS AssignCommand(oNPC,ActionMoveToObject(GetWayPointByTag("tag")));
|
![]()
Сообщение
#3034
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
пасибо помогло только там GetWaypointByTag если вдруг кто то еще решит воспользоваться))
как повернуть НПС так что бы он смотрел в заданом направлении?? |
![]()
Сообщение
#3035
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
SetFacing(...)
SetFacingPoint(...) лексикон бы скачал и не парился |
![]()
Сообщение
#3036
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Дальше
слот OnUsed как определить обьект (плеера) кторый использовал предмет??? P.S с вами получаеться куда лудше и быстрее а главное веселее а пролексикон уже писал естьон уменя не помогает(( Сообщение отредактировал Teranozavr_REX - Mar 16 2007, 18:57 |
![]()
Сообщение
#3037
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
омг.. ну если не Лексикон, то хоть фильр функций в скрипт-редакторе попользуй. Например попробуй саааамый тупой вариант - написать в фильтр слово "use". О!! Чудо!! Среди прочих было
NSS GetLastUsedBy(); Колдовство, ей богу. Сам не понимаю, как оно так получилось. |
![]()
Сообщение
#3038
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
Небывальщина... (IMG:style_emoticons/kolobok_light/smile.gif)
QUOTE(Teranozavr_REX @ Mar 15 2007, 18:32) [snapback]105785[/snapback] 3) возможно ли сделатьчтото типа так: НПС идет к поинту когда доходит уничтожаеться...( как уничтожатьуже нашел... там помойму задержка естьесли я не ошибаюсь до уничтожения если мона пользоваться ею то насколько она будет подтормаживать сервер...) Можно триггером на "месте прибытия", который уничтожит нужный объект. Но лучше построить очередь действий: выглядеть будет примерно так: NSS AssignCommand(oNPC,ActionMoveToObject(GetWayPointByTag("tag"))); ... AssignCommand(oNPC,ActionDoCommand(DestroySelf(...)))); Чтобы очереть не сбилась "по пути" ее надо закрыть (SetCommandable). |
![]()
Сообщение
#3039
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Доброе время суток, и снова свами я, со своими вопросами
два скриптика точнее наверное всегонавсегострочки интересуют 1) как сделать так что бы Чар получил бонус АС (скажем додж) на какой то интервал времени 2) как сделатьтак что бы Чар получил бонус к с килу (скажем Лоре) на какой то интервал времени P/S обе эти вещи закручю на палочку... при использовании думаю должнополучиться) Сообщение отредактировал Teranozavr_REX - Apr 3 2007, 15:27 |
![]()
Сообщение
#3040
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
см описания функций:
Neverwinter Script Source ApplyEffectToObject()
EffectSkillIncrease() EffectACIncrease() |
![]()
Сообщение
#3041
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Neverwinter Script Source #include "x2_inc_switches" void main() { int nEvent = GetUserDefinedItemEventNumber(); if(nEvent == X2_ITEM_EVENT_ACTIVATE) { object oPC=GetLastUsedBy(); effect eACDodg=EffectACIncrease(20,AC_DODGE_BONUS,AC_VS_DAMAGE_TYPE_ALL); ApplyEffectToObject(1,eACDodg,oPC,1.0); SendMessageToPC(oPC,"TEST"); } } И снова я. Я тут как не мучался, не заработало. Уже пол дня сижу. Но день закончлся и мне пора может кто до утра поймет в чем тут ошибка. что должно делать есть итем с тегом А (бутылочка на которой висит использовать1 раз вдень) есть скрипт с именем А ( собственноон прикреплен в начале) мало того что нет ожидаемого эфекта ( а именно 20 додж ас) так даже на строку дебага нереагирует ... да и так и не понял что дает первый параметр у ApplyEffectToObject |
![]()
Сообщение
#3042
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Teranozavr_REX @ Apr 4 2007, 19:02) [snapback]106813[/snapback] да и так и не понял что дает первый параметр у ApplyEffectToObject DURATION_TYPE - тип наложения эффекта. Примерно вот так: TEMPORARY - временный INSTANТ - постоянный PERMANENT - разовый Разница между INSTANT и PERMANENT весьма зыбкая.. но некоторые эффекты накладываются только каким-то одним (из этих 2х) образом. Подробнее см. описания или лексикон. по скрипту: Neverwinter Script Source object oPC=GetLastUsedBy(); не канает. Читай описание функции. Тебе нужна функция связанная с использованием предмета, а не взаимодействием с объектом. GetLastItemActivator() - вроде такая. |
![]()
Сообщение
#3043
|
|
Level 2 ![]() Класс: Фея Характер: Chaotic Good Раса: Фея ![]() |
DURATION_TYPE_PERMANENT это разновидность DURATION_TYPE_TEMPORARY, только при PERMANENT таймер эффекта вообще не крутится, то есть эффект будет держаться вечно(пока не будет отдиспелен). То есть, точнее:
разница между INSTANT и (PERMANENT\TEMPORARY) весьма зыбкая.. Вместо таких громоздких констант удобнее использовать их значения: DURATION_TYPE_INSTANT = 0 DURATION_TYPE_TEMPORARY = 1 DURATION_TYPE_PERMANENT = 2 В ApplyEffectToObject(1,eACDodg,oPC,1.0); используется TEMPORARY(первый параметр) на длительность __1 сек__(4ый параметр). SendMessageToPC(oPC,"TEST"); Для отладки лучше всегда использовать: SendMessageToPC(GetFirstPC(),"TEST"); а если бы Teranozavr_REX использовал SendMessageToPC(GetFirstPC(),"debug:"+GetName(oPC)); то потратил бы на отладку всего пару минут. Сразу понял бы где ошибка. Если отлаживать надо много мест в скрипте, то лучше вывод сообщений отладки сделать через свою функцию: Neverwinter Script Source #include "......." void debugm(str string){ SendMessageToPC(GetFirstPC(),"debug: "+str); } void main() { ... debugm("messaga tyt"); ... } Тогда глаза не будут так разбегаться от обилия кода. Кому как, мне вынос кусков кода в функции сильно помогает(где это возможно). |
![]()
Сообщение
#3044
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(diggers @ Apr 5 2007, 02:10) [snapback]106824[/snapback] DURATION_TYPE_PERMANENT это разновидность DURATION_TYPE_TEMPORARY, только при PERMANENT таймер эффекта вообще не крутится, то есть эффект будет держаться вечно(пока не будет отдиспелен). наверное. Хотя вроде были случаи, когда это неверно (для визуалок), но я так навскидку их не вспомню. Но на практике обычно получалось так: если нужен временный эффект - темпорари, а если постоянный, то инстант/перманент, в зависимости от описания. Цитата(diggers @ Apr 5 2007, 02:10) [snapback]106824[/snapback] Вместо таких громоздких констант удобнее использовать их значения: DURATION_TYPE_INSTANT = 0 DURATION_TYPE_TEMPORARY = 1 DURATION_TYPE_PERMANENT = 2 тоже не сказал бы. Читать удобнее константы. Цитата(diggers @ Apr 5 2007, 02:10) [snapback]106824[/snapback] то потратил бы на отладку всего пару минут. Сразу понял бы где ошибка. я потратил пару секунд чтобы понять, что не приходит сообщение потому что oPC определен неверно. Так что все относительно (IMG:style_emoticons/kolobok_light/smile.gif) . Но вынос функции дебага эт правильный ход, вроде как все так делают. |
![]()
Сообщение
#3045
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
всем спасибо заработало...
как написать условие используют только (список класов) и если есть хоть какой то другой класс то предмет не используеться... может есть какаято командочка ??? потому что мне пока только на ум приходит проверить через Neverwinter Script Source GetLevelByClass по всем классам которые не должны использовать а так как таких намногобольше чем тех ктоиспользует получаеться очень громоздкое условие |
![]()
Сообщение
#3046
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Тут Teranozavr_REX плутает в трех соснах, ему уже объяснили на пальцах, что нужно делать, но мне кажется вы его запутали (IMG:style_emoticons/kolobok_light/biggrin.gif) . А парню нужно помочь написать скрипт.
Как это все реализовать? Повесь на свои бутылки свойство «Активировать предмет», это же у тебя бутылка и ее и так используем один раз (IMG:style_emoticons/kolobok_light/biggrin.gif) . На модульные события в слот OnActivateItem кинь скрипт: Neverwinter Script Source // ДЛЯ ТЕСТА void TestEffect(int iEfTest, object oPC) { effect eFirst = GetFirstEffect(oPC); while(GetIsEffectValid(eFirst)) { if(GetEffectType(eFirst)== iEfTest) { SendMessageToPC(GetFirstPC(),"Номер тестируемого эффекта: "+IntToString(iEfTest)); break; } eFirst = GetNextEffect(oPC); } } ///////////////////////////////////////// //:: СЛОТ: OnActivateItem ///////////////////////////////////////// void main() { object oActivator = GetItemActivator(); // это активатор объекта(наш PC) object oActivated = GetItemActivated(); // это активируемый объект string sTag = GetTag(oActivated); if (sTag == "A") // Нужный ли объект использован { effect eACDodg = EffectACIncrease(20, AC_DODGE_BONUS); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eACDodg, oActivator, 120.0); DelayCommand(1.0, TestEffect(EFFECT_TYPE_AC_INCREASE, oActivator)); // Удали после теста } } В принципе проверка работы кода и не нужна, эффект появится на ПС в виде иконки и в свойствах. Но так можешь узнать номер эффекта. P.S. toAiwan: Как-то отправлял тебе на мыло (или в этом году, или в конце прошлого) демо мод просмотра визуальных эффектов. Какова его судьба? Забраковал или со спамом выкинул? (IMG:style_emoticons/kolobok_light/biggrin.gif) |
![]()
Сообщение
#3047
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Ой боюсь это ты меня запутал)))
Я задаю маленькие вопросы, некоторых они смущают своей тривиальностью*если не сказать что они думают промои познания и прото чтоя тут забыл*, но получая на них ответы я полностью начинаю понимать как работает мой скрипт))) трогать слот OnActivateItem я боюсь там стоит стандартный какойто скрипт и поставив туда свой может что то перестать работать Все равно и тебе спасибо. Как минмум, я теперь еще знаю про существование GetItemActivated что тоже есть гуд ))) пойду попытаюсь понять как работает твой вариант скрипта, можети это на пользу пойдет тоже. Вопрос написаный моим постом выше остаеться актуальный Сообщение отредактировал Teranozavr_REX - Apr 5 2007, 13:59 |
![]()
Сообщение
#3048
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Цитата(Teranozavr_REX @ Apr 5 2007, 13:19) [snapback]106842[/snapback] как написать условие используют только (список класов) и если есть хоть какой то другой класс то предмет не используеться... у тебя есть тока 2 функции для такой задачи: Neverwinter Script Source GetClassByPosition() GetLevelByClass() в принципе можно перебрать все классы игрока (макс их 3) и проверять, не являются ли эти классы запретными для данного предмета. Тут выгодно использовать свою доп. функцию, которая будет сравнивать класс со списком классов, которым запрещено/разрешено использовать предмет. что-то такое (тулса под рукой нема) Neverwinter Script Source int Check(int nPCClass) { // тут проверяешь передаваемый класс игрока с нужным списком. Придется по 1 элементу. } int StartInCondition() // или как она там называется { int i = 1; int nClass = GetClassByPosition(/*тут какие-то параметры*/,i); while (nClass!=CLASS_TYPE_INVALID) /*или какая там константа на невалидный класс*/ { if (Check(nClass)) return TRUE; /*или FALSE. Или что нужно.*/ i++; nClass = GetClassByPosition(/*тут какие-то параметры*/,i); } } Цитата(gennady @ Apr 5 2007, 13:20) [snapback]106843[/snapback] Тут Teranozavr_REX плутает в трех соснах, ему уже объяснили на пальцах, что нужно делать, но мне кажется вы его запутали имхо если человек хочет разобраться, ему надо помогать, а не решать за него задачу. Но это так.. у каждого свой подход (IMG:style_emoticons/kolobok_light/smile.gif) |
![]()
Сообщение
#3049
|
|
Level 4 ![]() ![]() Класс: Некромант Характер: Chaotic Good Раса: Нежить ![]() |
Супер !!! оно все получилось))) теперь у меня есть баночка Зщита Сагры которая дает воинским классам (и только им ) +1\2 додж ас за лвл
подем дальше Естьу меня некий сорк НПС проблема в том что заклинания он кастует по своим каким то странным соображениям. Очень бы хотелось что бы при виде воина( скорее всего принанисении фихз урона) он накладывал себе вординг и щитки, а не спелмантию и кидался огнеными стрелами по чару с поглотом огня ( кстати в случае дождиков он соображает что по 50% имен и 40 поглота дождиками лупитьбезсмысленно) если задача не очень сложная и её можнорасказатьна пальцах буду очень благодарен выкладыывать трехкилометровый готовый скрипт нестоит)) ибо сорк заработает но я мало чему научюсь с этого |
![]()
Сообщение
#3050
|
|
Миловидный Бегрюссунг ![]() Класс: Воин Характер: Chaotic Good Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Сорку надо дать пакет защитный при левел апе в визарде. Точнее специализацию и проверить в бою. Но все это призрачно. Лечится переписыванием АИ от Биовар. Скрипт такой тут не выложим форум рухнет.
|
![]() ![]() |
Текстовая версия | Сейчас: 29th April 2025 - 23:14 |