![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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 огненного урона.
|
![]()
Сообщение
#3066
|
|
Level 2 ![]() Класс: Самурай Характер: True Neutral Раса: Человек ![]() |
Добрый день скриптеры и семпаи =)
надеюсь поможете мудрыми словами. Есть модуль (нордок + сер 2.2) так вот нужно создать предмет который бы менял навсегда игроку внешний вид на модель входящую в состав сер'овских паков, видел на форуме скрипты на смену модели (в темах об оборотнях и не только) но скриптер из меня похоже никакой. может кто поможет разобраться в сути проблемы? (IMG:style_emoticons/kolobok_light/unsure.gif) нужно на несколько моделей, но думаю с остальными потом сам разберусь существо Guardinal: Ayala(в списке числиться так) в скрипте записывал так - GUARDINAL_AYALA правда в оригинале в названиях нету двоеточия... |
![]()
Сообщение
#3067
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
Люди - Как создать некое подобие струи пара (огня?), которая бы через определенный промежуток времени выстреливала из одного вэйпоинта, проносилась бы по прямой до другого вэйпоинта и гасла. А если игрок попал бы в него, то его бы "ошпарило" - нанеслось бы 1d12 огненного урона. не просто. Визуальный эффект где-то в базе скриптов был. См феерверки. А чтобы еще урон был - тут есть несколько вариантов, и все довольно сложные. Проще создавать с интервалом огненную стену. Эффект примерно такой же, но делать заметно легче. Добрый день скриптеры и семпаи =) надеюсь поможете мудрыми словами. Есть модуль (нордок + сер 2.2) так вот нужно создать предмет который бы менял навсегда игроку внешний вид на модель входящую в состав сер'овских паков, видел на форуме скрипты на смену модели (в темах об оборотнях и не только) но скриптер из меня похоже никакой. может кто поможет разобраться в сути проблемы? (IMG:style_emoticons/kolobok_light/unsure.gif) нужно на несколько моделей, но думаю с остальными потом сам разберусь существо Guardinal: Ayala(в списке числиться так) в скрипте записывал так - GUARDINAL_AYALA правда в оригинале в названиях нету двоеточия... см функцию SetAppearanceType. Собсна кроме нее почти ничего и не нужно. Но имхо такое изменение внешности будет выходить боком при полиморфе (магия или способность, не суть). Лучше всего через лето поправить файл персонажа, поменяв ему внешность. Или, тк это шард, делать через NWNX, что еще лучше и эффектнее. Но с этим вопросом надо к шардовикам, к Вирусману например. |
![]()
Сообщение
#3068
|
|
Level 2 ![]() Класс: Самурай Характер: True Neutral Раса: Человек ![]() |
Lex, возможно я совсем туповат в плане скриптов, в принцепи весь скрипт по идее состоит из нее одной с прописаной кокраз моделькой и повесит на онклилк\онюсе предмета, но пока что у меня получался нулевой эфект.
Свойственно можно редактировать чаров и отдельно правда лето у меня как-то не работает. попробуем через "NWNX" и покопаюсь еще с скриптом. |
![]()
Сообщение
#3069
|
|
Level 5 ![]() Класс: Обыватель Характер: Lawful Neutral Раса: Человек NWN: Модмейкер Проклятие Левора Порядок Времени ![]() |
onClick|onUsed.. ты на плейс вешаешь чтоль?
если на юз, то кроме GetLastUsedBy и SetAppearanceType ничего и нет. Да, и учти что вбивать константу GUARDINAL_AYALA в параметры функции бесполезно, если эта константа не прописана или там, где все консты прописаны (script.nss или как-то так) или в той библиотеке, которая будет подключена к скрипту. Если влом прописывать - просто ставь вместо константы номер из табылицы appearance.2da, где у тебя эта внешность/существо описано. |
![]()
Сообщение
#3070
|
|
Level 2 ![]() Класс: Самурай Характер: True Neutral Раса: Человек ![]() |
Lex, спасибо, осталось одна мелочь выковырять это все из сер паков =)
вашаю я на предмет урной зовущийся... просто что первое попалось. |
![]() ![]() |
Текстовая версия | Сейчас: 30th July 2025 - 13:40 |