![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#3041
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
Я понял в чем суть проблемы - Диалог и скрипт смерти находились в других локациях, нежели в той, где должны были создаваться объекты.
Сегодня написал еще один скрипт и поместил его на onEnter триггера в одной локации (тоже на создание НПС). Он дестроился, но НПС не создавал (В другой локации). Как только поставил его на вход этой локации - Сразу же заработал. Поэтому придется делать триггеры, а простым диалогом не обойтись... |
![]()
Сообщение
#3042
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Поэтому придется делать триггеры, а простым диалогом не обойтись... Чё за чушь... (IMG:style_emoticons/kolobok_light/biggrin.gif) Бери в диалоге объекты как GetObjectByTag или же запиши так:Neverwinter Script void main()
{ object oWP = GetObjectByTag("sigil2"); //точка в нужной области с уникальным тегом (определяет объекты во всем модуле) object oArea = GetArea(oWP); //сама область // ближайшие к выбранной точке объекты (объекты должны быть только в одной области с oWP) object oDoor = GetNearestObjectByTag("door", oWP); object oMark = GetNearestObjectByTag("PlanarBeacon", oWP); location lSigil = GetLocation(oWP); object oSigil = CreateObject(OBJECT_TYPE_PLACEABLE,"blueprint",lSigil); AssignCommand(oDoor,ActionCloseDoor(oDoor)); AssignCommand(oDoor,ActionLockObject(oDoor)); DestroyObject(oMark); // ПРОВЕРКА SpeakString("В области" +GetName(oArea)+" создали плейс " +GetName(oSigil)); } Сообщение отредактировал gennady - Jan 18 2009, 15:15 |
![]()
Сообщение
#3043
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
Хм... А вот этого не знал. Зато теперь буду знать. Спасибо, gennady.
P.S. На досуге не заглянешь в тему Threads of Truth в Главном Зале? Хочется все-таки узнать мнение общественности (IMG:style_emoticons/kolobok_light/rolleyes.gif) |
![]()
Сообщение
#3044
|
|
Level 9 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек NWN: Модмейкер Рыцарская Сага ![]() |
Кто знает в каком скрипте описана кнопочка отмены полиморфа??? Нужно срочно! (IMG:style_emoticons/kolobok_light/biggrin.gif)
|
![]()
Сообщение
#3045
|
|
Level 17 ![]() Класс: Волшебник Характер: Neutral Good Раса: Человек NWN: Скриптинг [PW] Axistown SR 1.9 NWNX ![]() |
Кто знает в каком скрипте описана кнопочка отмены полиморфа??? Нужно срочно! (IMG:style_emoticons/kolobok_light/biggrin.gif) Она вшита в движок.
|
![]()
Сообщение
#3046
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Доброго всем! Народ, мучает такой вопрос, возможно ли как нить написать на скриптах бота для онлайн шарда?.. Чтобы не писать доп. приложений. Догадываюсь что нет, но хочется в этом убидится. И если вдруг я не прав, киньте линк плз.
--- к вышенаписаному топику --- В смысле есть ли в НВНке скрипты, для клиентской части, вот) можно ли выполнить runscript без прописи DebugMode 1 на шарде? народ, хелп плиз, очень срочно нада... |
![]()
Сообщение
#3047
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
лучше по этому поводу теребить шардовиков, но мне с моей сингловой колокольни видится только 1 вариант запуска скрипта со стороны пользователя - default.nss. Те ХБ чара, причем не только своего, а вообще всех на шарде. Теоретически бота с его помощью написать можно, простенького, типа "убийство всех монстров на карте". Но практически, без данных типа тэгов, точек и зон перехода, будет сложновато сделать что-то путное, если вообще возможно.
|
![]()
Сообщение
#3048
|
|
Level 1 Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
лучше по этому поводу теребить шардовиков, но мне с моей сингловой колокольни видится только 1 вариант запуска скрипта со стороны пользователя - default.nss. Те ХБ чара, причем не только своего, а вообще всех на шарде. Теоретически бота с его помощью написать можно, простенького, типа "убийство всех монстров на карте". Но практически, без данных типа тэгов, точек и зон перехода, будет сложновато сделать что-то путное, если вообще возможно. А моно поподробней про default.nss... Де должен находится/как запускать?) Пробывал писать пробные скрипты и запускать на шарде, не хочет =( Одно дело запустуть в модуле через runscript, а тут это не катит =( |
![]()
Сообщение
#3049
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
default.nss - это onHeartbeat скрипт игрока, исполняется каждый раунд. Можно попробовать написать какой-нибудь аи для игрового чара, основанный только на этом скрипте, но, думаю, игра не стоит свеч.
|
![]()
Сообщение
#3050
|
|
Level 1 Класс: Монах Характер: Lawful Good Раса: Гном ![]() |
короче так. нада чтоб у мобов генерировался дроп. желательно с ооочень маленким процентом выпадания.
заранее спасиба |
![]()
Сообщение
#3051
|
|
Level 3 ![]() Класс: Монах Характер: Lawful Good Раса: Эльф ![]() |
Привет Всем Снова Я вернулся, а пдскажите плиз, как сделать так что бы игроков Одной команды, фракции скажем Злой, автоматически бросало в Одну Пати к игрокам, а игкроков противоположной команды Гуд, бросало в другую пати?, я знаю что так можно сделать, я играл долго время на Alestorm Lotr Team PvP, у них это сделано, и к тому же даже после перезахода в игру ты всеравно автоматически в пати, в этой же команде.
Примечание в их сервере Alestorm Lotr team PvP, стоит Game Type: Team, PvP Mode: Party , может это как то может помочь, в помощи для меня, подскажите плиз, я знаю что это не просто но возможно. P.S.: Вот этот скрипт на дислайки работает просто замечательно, НО, он против всех, может его как то надо настроить, чтобы к игрокам своей команды , ты не был враждебен, ну или просто сделать то что я описал, одних игроков в одну команду(Good Team) других(Evil Team) в другу. Neverwinter Script // The PC who entered the trigger is set to dislike all the PC's in the module void main() { // Get entering PC object oEnterer = GetEnteringObject(); // make sure they are not a DM if(GetIsPC(oEnterer) && !GetIsDM(oEnterer)) { // Loop all PC's in the module and set this PC to dislike them - uh oh object oPC = GetFirstPC(); while(GetIsObjectValid(oPC)) { // Set to dislike SetPCDislike(oEnterer, oPC); // Get next PC oPC = GetNextPC(); } } } |
![]()
Сообщение
#3052
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script void main()
{ object oPlayer = GetEnteringObject(); string VarName = "имя переменной на игроке"; //Переменную под этим именем надо проставить на каждого игрока в зависимости от выбранной фракции if (GetIsPC(oPlayer) && !GetIsDM(oPlayer)) { object oPC = GetFirstPC(); int nFaction = GetLocalInt(oPlayer, VarName); while (GetIsObjectValid(oPC)) { int nSame = GetLocalInt(oPC, VarName) == nFaction; int nDone = 0; if (nSame) { if (!(nDone || oPC == oPlayer)) { RemoveFromParty(oPlayer); AddToParty(oPlayer, oPC); nDone++; } } else SetPCDislike(oPlayer, oPC); } } } Сообщение отредактировал greye - Feb 15 2009, 14:44 |
![]()
Сообщение
#3053
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
Вообщем появилась проблема в одной скриптовой сцене - Точнее, в самой последней строчке. (Диалог не начинается) И в том, что эффект unsummon не проигрывается (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Neverwinter Script void main()
{ object oPC = GetPCSpeaker(); object oKiller = GetObjectByTag("assassin"); object oValsh = GetObjectByTag("valsh"); object oKaj = GetObjectByTag("Kaj"); object oMarsia = GetObjectByTag("MarsiaLab"); location lKillEx = GetLocation(GetObjectByTag("AssassinEnter")); effect E1 = EffectVisualEffect(VFX_IMP_DEATH_L); effect E2 = EffectDeath(); effect E3 = EffectVisualEffect(VFX_IMP_UNSUMMON); SetCutsceneMode(oPC); AssignCommand(oKiller, ClearAllActions()); AssignCommand(oPC, ClearAllActions()); AssignCommand(oMarsia, ClearAllActions()); AssignCommand(oValsh, ClearAllActions()); DelayCommand(0.1, AssignCommand(oPC,SetCameraFacing(120.0,12.0,49.0,CAMERA_TRANSITION_TYPE_FAST))); DelayCommand(0.2, AssignCommand(oKiller, SetFacingPoint(GetPosition(oValsh)))); DelayCommand(0.9, AssignCommand(oKiller, ActionCastFakeSpellAtObject(SPELL_FINGER_OF_DEATH, oValsh))); DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_INSTANT, E1, oValsh)); DelayCommand(3.5, ApplyEffectToObject(DURATION_TYPE_PERMANENT, E2, oValsh)); DelayCommand(3.8, AssignCommand(oKiller,DestroyObject(oKiller))); DelayCommand(3.8, ApplyEffectAtLocation(DURATION_TYPE_INSTANT, E3, lKillEx)); DelayCommand(4.0,AssignCommand(oMarsia,ActionStartConversation(oPC ))); DelayCommand(4.1,SetCutsceneMode(oPC, FALSE)); } Сообщение отредактировал Latiss - Feb 17 2009, 16:16 |
![]()
Сообщение
#3054
|
|
Level 12 ![]() Класс: Оборотень Характер: Chaotic Neutral Раса: Нежить NWN: Скриптинг [Sn] ![]() |
может быть у тебя этот скрипт на объекте "assassin" стоит?, тогда после его удаления удалятся и за-делай-еные действия, правда тогда в этом случае не должно ещё работать выключение катсцены...
Сообщение отредактировал azathoth - Feb 17 2009, 21:48 |
![]()
Сообщение
#3055
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
У меня скрипт стоит на диалоге Вальшерада. После окончания диалога стартует катсцена. Но assassin-то удаляется! А диалог не стартует и эффект не проигрывается
Мистика - Переделал немного диалоги и поставил вместо oMarsia, oKaj, то игрок без труда начинал диалог с Кайусом! Дело улажено. Всем спасибо, все свободны. |
![]()
Сообщение
#3056
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
Вновь требуется помощь: Как создать вэйпоинт на месте смерти одного НПС (На OnDeath должен стоять). И еще - ExecuteScript запускает же какой-то скрипт? И еще - Можно или нельзя запускат таким образом катсцену. То есть на OnDeath этого НПС?
|
![]()
Сообщение
#3057
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Цитата Как создать вэйпоинт на месте смерти одного НПС (На OnDeath должен стоять). В onDeath скрипт добавить строку:Neverwinter Script CreateObject(OBJECT_TYPE_WAYPOINT, "<ресреф вейпа>", GetLocation(OBJECT_SELF)); Цитата ExecuteScript запускает же какой-то скрипт? Запускает.Цитата Можно или нельзя запускат таким образом катсцену. То есть на OnDeath этого НПС? Не вижу к этому препятствий (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3058
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Neverwinter Script int StartingConditional() { string sGrave = GetLocalString(OBJECT_SELF,"GRAVE"); if(sGrave == "NEFZEN") { return TRUE; break; } if(sGrave == "VESSEL") { return TRUE; break; } return FALSE; } Имеется код примерно такого вида, редактор категорически отказывается его компилировать, ругается на break. Кто виноват и что делать? По сути кода - обработчик для могил, хочу организовать универсальную систему, чтоб не плодить файлы скриптов/диалогов - один скрипт и один диалог с универсальным скриптом-условием. Сообщение отредактировал Talarasha - Feb 28 2009, 18:34 |
![]()
Сообщение
#3059
|
|
Level 11 ![]() Класс: Волшебник Характер: Lawful Evil Раса: Эльф NWN: Скриптинг [PW] Gem of the North ![]() |
Брейки убери совсем, не нужны они тут (IMG:style_emoticons/kolobok_light/smile.gif)
|
![]()
Сообщение
#3060
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Убрал, скрипт компилируется, но не пашет. Впрочем, он и не должен. (IMG:style_emoticons/kolobok_light/rolleyes.gif)
Объясняю. Есть диалог из, допустим, двух строк: 1.Натали Нефзен, 1351 - 1390, покойся с миром. 2.Курт Вессел, 1351 - 1390, покойся с миром. На каждой из строк висит скрипт-условие, приведенное мной выше. На каждой могилке висит переменная со значением похороненного лица. При щелчке на надгробие срабатывает диалог и запускается проверка скрипта: 1)Проверяем первую строку диалога 2)Если переменная Нефзен, выводим диалог. Бриком выходим из скрипта. 3)Проверяем вторую строку диалога. 4)Если переменная Вессел, то первая проверка не срабатывает и мы переходим ко второй. Если же не будет брика, то скрипт будет выдавать первую строку диалога в любом случае, а не делать то, что мне надо. Так что вопрос - почему не компилирует, или можно ли кк-то по-другому решить эту задачу? В принципе, я понимаю, что брика после возврата значения быть не может... Но как тогда поступить? =) Сообщение отредактировал Talarasha - Feb 28 2009, 19:04 |
![]()
Сообщение
#3061
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
Talarasha, может быть просто привязать к каждой могилей свой "диалог"?
|
![]()
Сообщение
#3062
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script int StartingConditional() { string sGrave = GetLocalString(OBJECT_SELF,"GRAVE"); int IsFirst = GetLocalInt(OBJECT_SELF, "GRAVE"); if (sGrave == "NEFZEN" && IsFirst) return TRUE; if (sGrave == "VESSEL" && !IsFirst) return TRUE; return FALSE; } На каждую могилу ставится переменная GRAVE целочисленного типа со значениями TRUE для NEFZEN и FALSE для VESSEL(вообще говоря, можно даже не ставить вторую). Хотя пара условий может была бы и лучше. Сообщение отредактировал greye - Mar 1 2009, 10:28 |
![]()
Сообщение
#3063
|
|
Level 6 ![]() ![]() Класс: Маг Характер: Lawful Evil Раса: Нежить ![]() |
Цитата На каждую могилу ставится переменная GRAVE целочисленного типа со значениями TRUE для NEFZEN и FALSE для VESSEL. Хотя пара условий может была бы и лучше. Не работает, к сожалению (IMG:style_emoticons/kolobok_light/scratch_one-s_head.gif) Обе могилы выдают первую строку диалога. Ведь если взять вторую могилу (VESSEL) и щелкнуть по ней, первое условие не срабатывает, а второе срабатывает и выводит первую строку диалога. Цитата Talarasha, может быть просто привязать к каждой могилей свой "диалог" Ну да, это проще реализуемо. Но зачем нужны кучи диалоговых файлов, если можно уместить все в один? Хм... Попробую без диалога вообще сделать, просто вывод строки в зависимости от переменной. Добавлено: Заработало =). Neverwinter Script void main() { string sGrave = GetLocalString(OBJECT_SELF,"GRAVE"); if(sGrave == "NEFZEN") { ActionSpeakString("Натали Нефзен, 1351 - 1390, покойся с миром."); } if(sGrave == "VESSEL") { ActionSpeakString("Курт Вессел, 1351 - 1390, покойся с миром."); } } Хотя если кто-нибудь сможет сделать для диалогового файла, с удовольствием погляжу. Сообщение отредактировал Talarasha - Mar 1 2009, 10:39 |
![]()
Сообщение
#3064
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Neverwinter Script int StartingConditional() { string sName = GetLocalString(OBJECT_SELF, "GRAVE"); int nCheck = GetLocalInt(OBJECT_SELF, "GRAVE"); if (!nCheck) if (sName == "NEFZEN") return TRUE; SetLocalInt(OBJECT_SELF, "GRAVE", !nCheck); return nCheck; } Работает только для диалога с 2 строками; ничего, кроме имен в переменных не нужно. ------------------------------------------------- Для общего случая: Neverwinter Script const int nCountMax = 99;
const string sVariableName = "<Variable_Name>"; int StartingConditional() { string sName = GetLocalString(OBJECT_SELF, sVariableName); int nPosition = GetLocalInt(OBJECT_SELF, sVariableName); int bTRUE = FALSE; switch (nPosition) { case 0: if (sName == "<Name_00>") bTRUE = TRUE; break; case 1: if (sName == "<Name_01>") bTRUE = TRUE; break; case 2: if (sName == "<Name_02>") bTRUE = TRUE; break; //... case nCountMax: if (sName == "<Name_nCountMax>") bTRUE = TRUE; break; } if (bTRUE || nPosition == nCountMax) nPosition = 0; else nPosition++; SetLocalInt(OBJECT_SELF, sVariableName, nPosition); return bTRUE; } Сообщение отредактировал greye - Mar 1 2009, 13:42 |
![]()
Сообщение
#3065
|
|
Level 3 ![]() Класс: Псионик Характер: Chaotic Neutral Раса: Тварь ![]() |
Люди - Как создать некое подобие струи пара (огня?), которая бы через определенный промежуток времени выстреливала из одного вэйпоинта, проносилась бы по прямой до другого вэйпоинта и гасла. А если игрок попал бы в него, то его бы "ошпарило" - нанеслось бы 1d12 огненного урона.
|
![]() ![]() |
Текстовая версия | Сейчас: 6th May 2025 - 18:20 |