![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
![]()
Сообщение
#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, спасибо, осталось одна мелочь выковырять это все из сер паков =)
вашаю я на предмет урной зовущийся... просто что первое попалось. |
![]()
Сообщение
#3071
|
|
Level 1 Класс: Варвар Характер: Lawful Good Раса: Полуорк ![]() |
Кто нибудь, пожалуйста, подскажите скрипт для шахида, он должен подбегать к NPC и взрываться.
|
![]() ![]()
Сообщение
#3072
|
|
Level 2 ![]() Класс: Обыватель Характер: Lawful Good Раса: Человек ![]() |
Помогите пожалуйста,у меня есть скрипт,и разговор,в котором должен этот скрипт действовать(хенч должен весь мой инвентарь положить себе)
Neverwinter Script void main() { object oMaster = GetPCSpeaker() object oItem = GetFirstItemInInventory(oMaster) object oNewMaster=GetNearestObjectByTag("HEN_GRORK",oMaster) CopyItem(oItem,oNewMaster,FALSE) { while(GetIsObjectValid(oItem)) { if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX) { CreateItemOnObject(GetResRef(oItem), oNewMaster, 1); if(iDel==TRUE) DestroyObject(oItem, 0.5); } else { CopyItem(oItem, oNewMaster, TRUE); if(iDel==TRUE) DestroyObject(oItem); } oItem = GetNextItemInInventory(oMaster); } } } Скрипт ругается на четвертую строчку,уже пробовал убирать-добавлять точку с запятой,теги вродь object,int ,сам переписал весь код-все равно ругается.НА вся кслучай сразу говорю-скрипт ставил на совершение действия хенчем в разговоре Плиз,хелп (IMG:style_emoticons/kolobok_light/shout.gif) Помогите пожалуйста,у меня есть скрипт,и разговор,в котором должен этот скрипт действовать(хенч должен весь мой инвентарь положить себе) Neverwinter Script void main() { object oMaster = GetPCSpeaker() object oItem = GetFirstItemInInventory(oMaster) object oNewMaster=GetNearestObjectByTag("HEN_GRORK",oMaster) CopyItem(oItem,oNewMaster,FALSE) { while(GetIsObjectValid(oItem)) { if(GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX) { CreateItemOnObject(GetResRef(oItem), oNewMaster, 1); if(iDel==TRUE) DestroyObject(oItem, 0.5); } else { CopyItem(oItem, oNewMaster, TRUE); if(iDel==TRUE) DestroyObject(oItem); } oItem = GetNextItemInInventory(oMaster); } } } Скрипт ругается на четвертую строчку(object oItem = GetFirstItemInInventory(oMaster)),уже пробовал убирать-добавлять точку с запятой,теги вродь object,int ,сам переписал весь код-все равно ругается.НА вся кслучай сразу говорю-скрипт ставил на совершение действия хенчем в разговоре Плиз,хелп (IMG:style_emoticons/kolobok_light/shout.gif) |
![]()
Сообщение
#3073
|
|
Level 7 ![]() ![]() Класс: Некромант Характер: True Neutral Раса: Нежить ![]() |
Плиз,хелп shout.gif Не стоят точки с запятой в конце 3-5, 7 строк. Еще лишняя пара фигурных скобок - сразу после CopyItem и закрывающая в конце. К тому же не олределена переменная iDel типа int, насколько видно. Сообщение отредактировал greye - Mar 15 2009, 16:46 |
![]()
Сообщение
#3074
|
|
Level 1 ![]() Класс: Маг Характер: Lawful Evil Раса: Дракон NWN: Скриптинг [PW] ![]() |
Цитата Кто нибудь, пожалуйста, подскажите скрипт для шахида, он должен подбегать к NPC и взрываться. Ну вот например так Neverwinter Script float fDelay = GetDistanceToObject(GetNearestObjectByTag("npc_tag"))/15; //точно не помню эту формулу AssignCommand(OBJECT_SELF, ActionForceMoveToObject(GetObjectByTag("npc_tag"), TRUE)); DelayCommand(fDelay, ExecuteScript("detonate", OBJECT_SELF)); SetLocalInt(OBJECT_SELF,"ACTIVATED_OBJECT",TRUE); и в OnDamaged такое Neverwinter Script if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) > 0 && GetCurrentHitPoints() < 0) ExecuteScript("detonate",OBJECT_SELF); detonate: Neverwinter Script void main() { object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE); while(GetIsObjectValid(oTarget)) { int nDamage = 450+d100(); nDamage = GetReflexAdjustedDamage(nDamage, oTarget, 45, SAVING_THROW_TYPE_FIRE); effect eDam = EffectDamage(nDamage, DAMAGE_TYPE_FIRE); ApplyEffectToObject(DURATION_TYPE_INSTANT, eDam, oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_FNF_FIREBALL), oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_FLAME_M), oTarget); DestroyObject(OBJECT_SELF); oTarget = GetNextObjectInShape(SHAPE_SPHERE, 10.0, GetLocation(OBJECT_SELF), FALSE, OBJECT_TYPE_DOOR | OBJECT_TYPE_CREATURE | OBJECT_TYPE_PLACEABLE); } int nCount=0; while(nCount<4) { float fRandom = GetRandomDelay(0.3,1.0); DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi sualEffect(VFX_COM_BLOOD_LRG_RED),oPC)); DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi sualEffect(VFX_COM_BLOOD_REG_RED),oPC)); DelayCommand(fRandom, ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVi sualEffect(VFX_COM_CHUNK_RED_LARGE),oPC)); nCount++; } } |
![]()
Сообщение
#3075
|
|
Level 3 ![]() Класс: Волшебник Характер: Chaotic Good Раса: Эльф ![]() |
ребята помогите. Начинаю грызть науку скриптования и главный вопрос по каст сценам. Пропишите ка создать как сцену которая наиналась бы с того что созданый вами персонаж лежал на кровати как бы в забытие и потом сцена переходила бы на воспоминания. похоже как в ПЛ, когда вас оттубасили два урка и вы валяетесь на кровати у Ви. Только наоборот. Сначала на кровати а потом сцена с забытием, которая переходит на новые и новые сценки?
СПС огромное. |
![]() ![]() |
Текстовая версия | Сейчас: 28th April 2025 - 02:24 |