
Neverwinter Script Source |
#include "x2_inc_spellhook" void main() { if (!X2PreSpellCastCode()) { return; } //Declare major variables object oTarget = GetSpellTargetObject(); effect eVis = EffectVisualEffect(VFX_DUR_MAGICAL_SIGHT); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); // effect eSight = EffectTrueSeeing(); //-> effect eSight = EffectSeeInvisible(); //<- effect eLink = EffectLinkEffects(eVis, eSight); effect eSpot = EffectSkillIncrease(SKILL_SPOT, 20); eLink = EffectLinkEffects(eLink, eDur); //-> eLink = EffectLinkEffects(eLink, eSpot); //<- //Fire cast spell at event for the specified target // SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_TRUE_SEEING, FALSE)); //-> SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_SEE_INVISIBILITY, FALSE)); //<- int nDuration = GetCasterLevel(OBJECT_SELF); int nMetaMagic = GetMetaMagicFeat(); //Enter Metamagic conditions if (nMetaMagic == METAMAGIC_EXTEND) { nDuration = nDuration * 2; //Duration is +100% } //Apply the VFX impact and effects ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, TurnsToSeconds(nDuration)); } |
QUOTE (DEM @ Jul 24 2005, 20:06) |
Вот у меня вопрос... как сделать так, если монстр далеко убежал от определённой точки гоняясь за игроком, предположим на X футов, он вернёться назад. Можно ли сделать, что бы НеПиСь давал квест на убийство монстра, а этот монстр появился бы в какой нибудь локации (наугад из трёх определённых)... И как сделать что бу если у героя здоровье 0, он не погибал, а экран темнел и он оказывался в определённой локе (например больница), его вещи находились в определённом ящики и отнялось пару золотых... |
Neverwinter Script Source |
#include "x2_inc_switches" #include "am_inc_debug" void main() { object oItem = GetModuleItemLost(); // Сам Item объект object oPC = GetModuleItemLostBy(); // Тот кто выложил его object oItemBy = GetItemPossessor(oItem); // Тот кому достается объект string sTagItem = GetTag(oItem); // Таг Item-a string sTagItemBy = GetTag(oItemBy); // Таг нового хозяина // ------------------------------------------------------------------------- // // ------------------------------------------------------------------------- if (GetStringLeft(sTagItem, 10) =="AM_IT_BOOK") // Первые 10 знаков тага книг { // ВОТ ТУТ БЫ ПРОВЕРКУ, ЧТО ТИПА ЕСЛИ КНИГА В КОНТЕЙНЕРЕ ТО return; location lLoc = GetLocation(oItem); if (!GetHasInventory(oItemBy)) // Если нет инвентаря туда, куда кладем { object oBook = CreateObject(OBJECT_TYPE_PLACEABLE, "am_plc_usedbook1", lLoc); // Присвоим стоку равную ResRef-у, что бы потом создать такую же книгу SetLocalString(oBook, "PUT_DOWN_BOOK", GetResRef(oItem)); DestroyObject(oItem); } } |
Neverwinter Script Source |
if (GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX) return; |
Neverwinter Script Source |
if (GetBaseItemType(oItem) == BASE_ITEM_LARGEBOX) return; |
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: OnItemUnAcquireScript am_mod_unacquire //:: Copyright © 2005 WRG! //::////////////////////////////////////////////// /* OnItemUnAcquireScript */ //::////////////////////////////////////////////// //:: Created By: Aiwan //:: Created On: 26.07.2005 //::////////////////////////////////////////////// #include "x2_inc_switches" #include "am_inc_debug" void main() { object oItem = GetModuleItemLost(); // Сам Item объект object oPC = GetModuleItemLostBy(); // Тот кто выложил его object oPossessor = GetItemPossessor(oItem); // Тот кому достается объект string sTagItem = GetTag(oItem); // Таг Item-a string sTagPossessor = GetTag(oPossessor); // Таг нового хозяина // ------------------------------------------------------------------------- // // ------------------------------------------------------------------------- if (GetStringLeft(sTagItem, 10) =="AM_IT_BOOK") // Первые 10 знаков тага книг { if (sTagPossessor == GetTag(GetArea(oItem)) || GetObjectType(oPossessor) == OBJECT_TYPE_PLACEABLE) { return; } else { object oBook; location lLoc = GetLocation(oItem); oBook=CreateObject(OBJECT_TYPE_PLACEABLE, "am_plc_usedbook1", lLoc); // Присвоим строку равную ResRef-у, что бы потом создать такую же книгу SetLocalString(oBook, "PUT_DOWN_BOOK", GetResRef(oItem)); DestroyObject(oItem); } } } |
Neverwinter Script Source |
if (sTagPossessor == GetTag(GetArea(oItem)) || GetObjectType(oPossessor) == OBJECT_TYPE_PLACEABLE) { return; } |
Neverwinter Script Source |
if (sTagPossessor == GetTag(GetArea(oItem)) || GetObjectType(oPossessor) == OBJECT_TYPE_PLACEABLE || GetObjectType(oPossessor) == OBJECT_TYPE_STORE || GetIsAssociate(oPC, oPossessor)) { return; } |
Neverwinter Script Source |
void DropItemDestroy(object oItem) { if (GetIsObjectValid(GetAreaFromLocation(GetLocation(oItem)))) { DestroyObject(oItem); } } void ActionDropItem(object oItem, object oPC, object oPossessor) { switch (GetObjectType(oPossessor)) { // Передать вещь существу case OBJECT_TYPE_CREATURE: break; // Продать вещь case OBJECT_TYPE_STORE: SetLocalInt(oItem, "ASG_PWCLEANSTORE", TRUE); break; // Положить вещь в контейнер case OBJECT_TYPE_PLACEABLE: break; // Выбросить вещь на локацию default: if (GetIsObjectValid(GetAreaFromLocation(GetLocation(oItem)))) DelayCommand(60.0, DropItemDestroy(oItem)); break; } } void main() { object oItem = GetModuleItemLost(); object oPC = GetModuleItemLostBy(); object oPossessor = GetItemPossessor(oItem); ActionDropItem(oItem, oPC, oPossessor); } |
QUOTE (Zirrex @ Jul 27 2005, 21:35) |
-fenix-, а ты сделай "ActionSpeakString". И внимательно проверь, верен ли объект, которого ты просишь произнести фразу. |
QUOTE (Мефистофель @ Jul 28 2005, 01:27) |
-fenix- Сделай лучше так. есть ряд преимуществ. Можно добавить голос, можно добавить анимацию. диалог заранее напиши. а тег в скрипт поставиш. DelayCommand(3.5, AssignCommand(oNPC, ActionStartConversation(oNPC, "Тег диалога", FALSE,FALSE))); |
QUOTE (Zirrex @ Jul 28 2005, 00:35) |
Aiwan, я обычно такое дерево использую, чтобы не строить большое условие: |
QUOTE (-fenix- @ Jul 28 2005, 16:38) |
Я же говорю, что этот чел совсем отказывается говорить, так же как и челы с его внешностью такое ощущение, что это глюк модели(но такое может быть???). |
QUOTE (-fenix- @ Jul 27 2005, 19:13) |
однако она отображается в информационном окне(или как оно правельно называется). |
QUOTE (Zirrex @ Jul 28 2005, 19:24) |
-fenix- поменяй ему внешность или расу, если думаешь, что проблема в этом. Но на самом деле, это сущий бред, ибо скрипты все едины для любой модели существа, отличаться могут только настройками АИ. |
QUOTE (Zirrex @ Jul 28 2005, 19:24) |
поменяй ему внешность или расу |
QUOTE (Zirrex @ Jul 28 2005, 19:24) |
если хочешь, можешь прислать мне скрипт, все равно в конкурсе не участвую |
QUOTE (Aiwan @ Jul 28 2005, 20:57) |
Ты случаем скрипты не потер у него в слотах дефолтовые? |
QUOTE (Aiwan @ Jul 28 2005, 20:57) |
ГЫ, а ты эти фразы не расскарсил часом? Тегами для актиона или проверок скиллов (зелененьким или красненьким)? biggrin.gif Тогда так и будет. |
QUOTE |
Мефистофель, самое простое, найти сценку, когда ты сражаешься в одиночной версии игры с Арибет. Помнишь момент, ты ее бьешь, у нее становится мало жизни, и тут она просит о пощаде, бой обрывается, Арибет завязывает диалог. Посмотри, как там сделано, и выполни по оригиналу, только c использованием кутсцены |
Neverwinter Script Source |
void ExecuteScript(string sScript, object oTarget) |
Neverwinter Script Source |
void ExecuteScript(string sScript, object oTarget) { object oPC = GetLastKiller(); string sSkript = GetName("Cut_Scene"); } void main() { DelayCommand(3.0, ExecuteScript(oPC)); } |
QUOTE (Мефистофель @ Jul 31 2005, 02:39) |
Ха ха блин даже смешно, lol.gif ну я такую парашу сделал |
Neverwinter Script Source |
ExecuteScript("имя скрипта", oTarget); //где oTarget - объект, который будет доступен в вызываемом скрипте под "именем" OBJECT_SELF ... // пару вариантов использования: // отложенный по времени вызов DelayCommand(1.0, ExecuteScript("mymegascript", oPC)); // поставленный в очередь действий ActionDoCommand(ExecuteScript("kill_me", oNPC)); |
Neverwinter Script Source |
void main() { int nUser = GetUserDefinedEventNumber(); if (nUser == 1002) { if (GetLocalInt(OBJECT_SELF,"L") ==0) { SetLocalInt(OBJECT_SELF,"L",1); } } else if(nUser == 1006) { int nMaxHP = GetMaxHitPoints(); int nCurrHP = GetCurrentHitPoints(); if (GetLocalInt(OBJECT_SELF,"L") == 0) if((nCurrHP * 3) <= nMaxHP && GetLocalInt(OBJECT_SELF,"Generic_Surrender") == 0) { SurrenderToEnemies(); SetLocalInt(OBJECT_SELF,"Generic_Surrender",1) ; SpeakOneLinerConversation(); SetLocalInt(OBJECT_SELF,"L",1); } } } void Morag_Death(object oPC) { DelayCommand(0.0, Morag_Death(oPC)); object oPC = GetLastKiller(); object oVB = GetObjectByTag("BIG_Morag"); effect eBio = EffectVisualEffect(VFX_DUR_GHOST_SMOKE); effect eBio2 = EffectVisualEffect(VFX_DUR_GHOSTLY_VISAGE); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBio, OBJECT_SELF); ApplyEffectToObject(DURATION_TYPE_PERMANENT, eBio2, OBJECT_SELF); |
Neverwinter Script Source |
void Morag_Death(object oPC) |
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: Created By: NedWarN //:: Created On: Koha //::////////////////////////////////////////////// #include "x2_inc_cutscene" void main() { int CUTSCENE_NUMBER = 13; object oPC = GetPCSpeaker();//Dis_is PC of Playing for Games object oMorag = GetObjectByTag("GLAV_Morag");//Morag AND Boss for one Modules/ //---------------------------------------------- object oW1 = GetObjectByTag("MS_War1");//Wars1/ object oW2 = GetObjectByTag("MS_War2");//Wars2/ object oW3 = GetObjectByTag("MS_War3");//Wars3/ object oW4 = GetObjectByTag("MS_War4");//Wars4/ object oW5 = GetObjectByTag("MS_War5");//Wars5/ object oW6 = GetObjectByTag("MS_War6");//Wars6/ object oW7 = GetObjectByTag("MS_War7");//Wars7/ object oW8 = GetObjectByTag("MS_War8");//Wars8/ JJJo object oWboss = GetObjectByTag("JJJo");// JJJo //Wars13/ //--------------------------------------------- //--///////////////////////////////////////////////////////// object oBE1 = GetObjectByTag("Wp_Morag_War1");//Object of Beam effect// object oBE2 = GetObjectByTag("WP_Morag_War2");//Object of Beam effect// //Object of Beam effect// //-------------------------------------------- object oWpST1 = GetObjectByTag("MS_LU1");//Object of Beam effect// object oWpST2 = GetObjectByTag("MS_LU2");//Object of Beam effect// //--///////////////////////////////////////////////////////// effect eMo1 = EffectVisualEffect(VFX_FNF_SUMMON_EPIC_UNDEAD); effect eMo2 = EffectVisualEffect(VFX_FNF_BLINDDEAF); effect eMo3 = EffectResurrection(); effect eMo4 = EffectDeath(); effect eMo5 = EffectVisualEffect(VFX_DUR_CUTSCENE_INVISIBILITY); //------------------------------------------- if (GetIsPC(oPC) == FALSE)//fOR PC IT IS! FOR INVISION CUT-SCENE//GetISPC(oPC)= FALSE! fun of PC! return; // Minu and du for Disable/ is cut-scene. Go_Morag_War1 //-------------------------------------------one partia// ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eMo5, oPC); RemoveEffect(oPC,eMo5); SetCutsceneMode(oPC,FALSE); DelayCommand(3.0, AssignCommand(oW1, ActionJumpToObject(oBE1))); DelayCommand(4.0, AssignCommand(oW2, ActionJumpToObject(oBE2))); DelayCommand(3.5, AssignCommand(oW1, ActionJumpToObject(oBE1,TRUE))); DelayCommand(3.5, AssignCommand(oW2, ActionJumpToObject(oBE2,TRUE))); //------------------------------------------Spell Morag of PC DelayCommand(20.5, AssignCommand(oMorag, ActionCastSpellAtObject(SPELL_SHADES_FIREBALL,oPC, METAMAGIC_ANY, 2))); //-------------------------------------------two partia// DelayCommand(71.0, AssignCommand(oW3, ActionJumpToObject(oBE1))); DelayCommand(72.0, AssignCommand(oW4, ActionJumpToObject(oBE2))); DelayCommand(74.5, AssignCommand(oW3, ActionJumpToObject(oBE1,TRUE))); DelayCommand(74.5, AssignCommand(oW4, ActionJumpToObject(oBE2,TRUE))); //------------------------------------------ DelayCommand(80.5, AssignCommand(oMorag, ActionCastSpellAtObject(SPELLABILITY_BG_CREATEDEAD,oPC, METAMAGIC_ANY, 2))); //------------------------------------------ DelayCommand(83.0, AssignCommand(oWboss, ActionJumpToObject(oPC))); DelayCommand(120.0, AssignCommand(oW5, ActionJumpToObject(oBE1))); DelayCommand(121.0, AssignCommand(oW6, ActionJumpToObject(oBE2))); DelayCommand(124.5, AssignCommand(oW5, ActionJumpToObject(oBE1,TRUE))); DelayCommand(124.5, AssignCommand(oW6, ActionJumpToObject(oBE2,TRUE))); //------------------------------------------ DelayCommand(140.5, AssignCommand(oMorag, ActionCastSpellAtObject(SPELL_WAIL_OF_THE_BANSHEE,oPC, METAMAGIC_ANY, 2))); //----------------------------------------- DelayCommand(160.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMo2, oWpST1)); DelayCommand(160.9, ApplyEffectToObject(DURATION_TYPE_INSTANT, eMo2, oWpST2)); DelayCommand(164.0, AssignCommand(oW7, ActionJumpToObject(oWpST1))); DelayCommand(164.0, AssignCommand(oW8, ActionJumpToObject(oWpST2))); } |
Neverwinter Script Source |
GetLocation(GetNearestObjectByTag(oBE1)) |
Neverwinter Script Source |
void Resurrect(object oPC, object oJump) { ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPC)), oPC); AssignCommand(oPC, ActionJumpToObject(oJump)); } void main() { object oPC = GetLastRespawnButtonPresser(); object oJump = GetObjectByTag("wp_respawn"); Resurrect(oPC, oJump); } |
Neverwinter Script Source |
string sArea = GetTag(GetArea(GetLastDied())); // Вот насчет GetLastDied() точно не помню // чет типа того там есть if(sArea == "тег локации") { // А дальше просто меняешь вэйпоинт регенерации } |
Neverwinter Script Source |
GetCurrentHitPoints(object oObject=OBJECT_SELF) //возращает текущее значение хитов объекта (oObject) GetMaxHitPoints(object oObject=OBJECT_SELF) //возращает максимальное значение хитов объекта (oObject) GetAppearanceType(object oCreature) //"вернет" текущий облик создания (oCreature). т.е. надо его "запомнить", чтобы можно было вернуть игрока к начальному виду SetCreatureAppearanceType(object oCreature, int nAppearanceType) //изменяет внешний вид (nAppearanceType) объекта (oCreature). (nAppearanceType = APPEARANCE_TYPE_*) - подставляешь тот тип, который тебе нужен. пример: SetCreatureAppearanceType (oPC, APPEARANCE_TYPE_DRAGON_GOLD); - превратит игрока (надо зявить object oPC = GetFirstPC() ![]() GetNearestObject(int nObjectType=OBJECT_TYPE_ALL, object oTarget=OBJECT_SELF, int nNth=1) //берет ближайший к oTarget объект типа nObjectType ( соответсвенно тебе нужно: nObjectType=OBJECT_TYPE_CREATURE). если нужен не первый объект, а к примеру, третий, то nNth=3. пример: GetNearestObject(OBJECT_TYPE_CREATURE, oPC, 3); GetObjectSeen(object oTarget, object oSource=OBJECT_SELF) //это видит ли объект (oSource) (oTarget) GetDistanceToObject(object oObject) //возвращает расстояние до цели (oObject) до предмета, с которого вызыватеся функция. Т.е. здесь делаешь проверку на расстояние. if (GetDistanceToObject(oNPC) < 5.0) { SetCreatureAppearanceType (oPC, APPEARANCE_TYPE_DRAGON_GOLD); } GetRacialType(object oCreature) //возвращает текущу расу |
Neverwinter Script Source |
ExecuteScript("имя скрипта", GetFirstPC()); |
Neverwinter Script Source |
int nMax = GetMaxHitPoints(OBJECT_SELF); int nCur = GetCurrentHitPoints(OBJECT_SELF); int nTwenty = (nMax / 100) * 20; // 20% от общего хит-поинта ![]() // Проверка. Тебе нужно 20% - пожалуйста if(nCur <= nTwenty && GetRacialType(OBJECT_SELF) == НУЖНАЯ_РАССА) { int nAppearance = GetAppearanceType(OBJECT_SELF); // Как сказал товарищ Tiger - запомним // облик object oEnemy = GetNearestObject(OBJECT_TYPE_CREATURE, OBJECT_SELF); if(GetDistanceToObject(oEnemy) < 3.0 && GetIsObjectValid(oEnemy)) // Тут сам смотри какой // радиус тебе нужен SetLocalInt(OBJECT_SELF, "START_ATTACK", TRUE); } |
Neverwinter Script Source |
if(GetLocalInt(OBJECT_SELF, "START_ATTACK") == TRUE) { object oEnemy = GetNearestObject(OBJECT_TYPE_CREATURE, OBJECT_SELF); if(GetDistanceToObject(oEnemy) < 3.0) { int nAppearance = GetAppearanceType(OBJECT_SELF); SetCreatureAppearanceType(OBJECT_SELF, НУЖНЫЙ_ВИД); ActionAttack(oEnemy); } else { SetCreatureAppearanceType(OBJECT_SELF, nAppearance); ClearAllActions(); SetLocalInt(OBJECT_SELF, "START_ATTACK", FALSE); } } |
Neverwinter Script Source |
void BlindPC(object oPC) { effect eBlind = EffectBlindness(); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eBlind, oPC, 7.0); } void RemoveBlindPC(object oPC) { effect eBad = GetFirstEffect(oPC); while(GetIsEffectValid(eBad)) { int nEtype=GetEffectType(eBad); if (nEtype == EFFECT_TYPE_BLINDNESS) { RemoveEffect(oPC, eBad); } eBad = GetNextEffect(oPC); } } void main() { object oPC = GetEnteringObject(); if(GetIsPC(oPC) == TRUE) { object oWP = GetNearestObjectByTag("wp_bed_in", oPC); if(oWP == OBJECT_INVALID) AssignCommand(oPC, SpeakString("No wp_bed_in tag nearby.")); AssignCommand(oPC, ClearAllActions()); AssignCommand(oPC, JumpToObject(oWP)); DelayCommand(1.0, AssignCommand(oPC, PlayAnimation(ANIMATION_LOOPING_DEAD_FRONT, 1.0, 99999.0))); DelayCommand(1.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_SLEEP), oPC, 10.0)); DelayCommand(6.0, ApplyEffectToObject(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_IMP_SLEEP), oPC, 10.0)); DelayCommand(2.0, SetCommandable(FALSE, oPC)); //DelayCommand(3.0, BlindPC(oPC)); //DelayCommand(10.0, RemoveBlindPC(oPC)); DelayCommand(10.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPC)), oPC)); DelayCommand(10.0, AssignCommand(oPC, SpeakString("You are healed, though you must rest to regain spells."))); DelayCommand(9.8, SetCommandable(TRUE, oPC)); } } |