Neverwinter Script Source |
//вставить в onUnequip int isCursed(object oItem) { if (!GetIsObjectValid(oItem)) { return FALSE; } if (GetLocalInt(oItem,"ImmediateUncursed")) { return FALSE; } else if (GetLocalInt(oItem,"Cursed")) { return TRUE; } else if (GetStringRight(GetTag(oItem),6) == "Cursed") { return TRUE; } else { return FALSE; } } void main() { object oItem = GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); if (isCursed(oItem)) { object oCopy = CopyItem(oItem,oPC,TRUE); int nSlot = GetLocalInt(oItem,"InventorySlot"); if (nSlot != -1) { if (nSlot == INVENTORY_SLOT_RIGHTHAND) { object oRightHand = GetItemInSlot(nSlot,oPC); object oLeftHand = GetItemInSlot(INVENTORY_SLOT_LEFTHAND,oPC); if (isCursed(oRightHand)) { if (isCursed(oLeftHand)) { SetLocalInt(oRightHand,"ImmediateUncursed",1); DelayCommand(0.05, AssignCommand(oPC, ActionEquipItem(oCopy, INVENTORY_SLOT_RIGHTHAND))); DelayCommand(0.1, SetLocalInt(oRightHand, "ImmediateUncursed", 0)); } else { DelayCommand(0.05, AssignCommand(oPC, ActionEquipItem(oCopy, INVENTORY_SLOT_LEFTHAND))); } } else { DelayCommand(0.05, AssignCommand(oPC, ActionEquipItem(oCopy, nSlot))); } } else { object oCurrent = GetItemInSlot(nSlot,oPC); if (isCursed(oCurrent)) { SetLocalInt(oCurrent,"ImmediateUncursed",1); DelayCommand(0.1, SetLocalInt(oCurrent, "ImmediateUncursed", 0)); } DelayCommand(0.05, AssignCommand(oPC, ActionEquipItem(oCopy, nSlot))); } } DestroyObject(oItem,0.01); } } //вставить в onEquip void main() { object oItem = GetPCItemLastEquipped(); object oPC = GetPCItemLastEquippedBy(); //AssignCommand(oPC,SpeakString("Item Equipped!",TALKVOLUME_SILENT_SHOUT)); if ((GetLocalInt(oItem,"Cursed") == 1) || (GetStringRight(GetTag(oItem),6) == "Cursed")) { effect eCurse = EffectLinkEffects(EffectVisualEffect(VFX_DUR_CESSATE_NEGATIVE), EffectCurse(2, 2, 2, 2, 4, 2)); ApplyEffectToObject(DURATION_TYPE_PERMANENT,eCurse,oPC); ApplyEffectToObject(DURATION_TYPE_INSTANT, SupernaturalEffect(EffectVisualEffect(VFX_IMP_NEGATIVE_ENERGY)), oPC); int nSlot = 0; int nSlotEquipped = -1; while ((nSlot < 18) && (nSlotEquipped == -1)) { if (GetItemInSlot(nSlot,oPC) == oItem) { nSlotEquipped = nSlot; } nSlot++; } SetLocalInt(oItem,"InventorySlot",nSlotEquipped); FloatingTextStringOnCreature(GetName(oPC) + " equipped a cursed item.",oPC); } } //а этот файл сохраните под именем nw_s0_remeffect #include "X0_I0_SPELLS" #include "x2_inc_spellhook" void main() { if (!X2PreSpellCastCode()){} int nSpellID = GetSpellId(); object oTarget = GetSpellTargetObject(); int nEffect1; int nEffect2; int nEffect3; int bAreaOfEffect = FALSE; effect eVis = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION); if(nSpellID == SPELL_REMOVE_BLINDNESS_AND_DEAFNESS) { nEffect1 = EFFECT_TYPE_BLINDNESS; nEffect2 = EFFECT_TYPE_DEAF; bAreaOfEffect = TRUE; } else if(nSpellID == SPELL_REMOVE_CURSE) { nEffect1 = EFFECT_TYPE_CURSE; int nSlot = 0; object oItem; object oUncursed; string sUncursedForm; while (nSlot < 18) { oItem = GetItemInSlot(nSlot,oTarget); if ((GetLocalInt(oItem,"Cursed") == 1) || (GetStringRight(GetTag(oItem),6) == "Cursed")) { sUncursedForm = GetLocalString(oItem,"UncursedVersion"); if (sUncursedForm == "") { sUncursedForm = GetStringLeft(GetStringLowerCase(GetTag(oItem)),GetStringLength(GetTag(oItem)) - 6); } oUncursed = CreateItemOnObject(sUncursedForm,oTarget); if (GetIdentified(oItem)) { SetIdentified(oUncursed,TRUE); } SetLocalInt(oItem,"ImmediateUncursed",1); DestroyObject(oItem,0.1); FloatingTextStringOnCreature(GetName(oItem) + " is no longer cursed.",oTarget,FALSE); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PULSE_HOLY_SILENT), oTarget); ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(VFX_IMP_PULSE_HOLY_SILENT), oTarget); } nSlot++; } } else if(nSpellID == SPELL_REMOVE_DISEASE || nSpellID == SPELLABILITY_REMOVE_DISEASE) { nEffect1 = EFFECT_TYPE_DISEASE; nEffect2 = EFFECT_TYPE_ABILITY_DECREASE; } else if(nSpellID == SPELL_NEUTRALIZE_POISON) { nEffect1 = EFFECT_TYPE_POISON; nEffect2 = EFFECT_TYPE_DISEASE; nEffect3 = EFFECT_TYPE_ABILITY_DECREASE; } if (bAreaOfEffect == TRUE) { effect eImpact = EffectVisualEffect(VFX_FNF_LOS_HOLY_30); effect eLink; spellsGenericAreaOfEffect(OBJECT_SELF, GetSpellTargetLocation(), SHAPE_SPHERE, RADIUS_SIZE_MEDIUM, SPELL_REMOVE_BLINDNESS_AND_DEAFNESS, eImpact, eLink, eVis, DURATION_TYPE_INSTANT, 0.0, SPELL_TARGET_ALLALLIES, FALSE, TRUE, nEffect1, nEffect2); return; } SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, nSpellID, FALSE)); RemoveSpecificEffect(nEffect1, oTarget); if(nEffect2 != 0) { RemoveSpecificEffect(nEffect2, oTarget); } if(nEffect3 != 0) { RemoveSpecificEffect(nEffect3, oTarget); } ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); } // чтобы создать проклЯтую(неснимаемую) вещь, надо просто присвоить ей тэг 39;XCursed39;, где Х - уникальное имя //шмотки. Авторство - CelestialRyan. |
Neverwinter Script Source |
//::////////////////////////////////////////////// //:: Copyright © 2004 WRG! www.wrg.ru //:: am_pc_stinki_go2 //::////////////////////////////////////////////// /* ПЕРЕДВИЖЕНИЕ оРС ЗА НПС, СКРИПТ СТАВИТСЯ НА СТРОКУ В ДИАЛОГЕ oPC (!) */ //::////////////////////////////////////////////// //:: Created By: Aiwan Aiwan@e-mail.ru //:: Created On: 20.03.2004 //::////////////////////////////////////////////// void main() { object oPC = GetPCSpeaker(); object oStinki = GetObjectByTag("MM_STINKI"); object oWp01 = GetObjectByTag("WP_STINKI_01"); object oWp02 = GetObjectByTag("WP_STINKI_02"); object oWp03 = GetObjectByTag("WP_STINKI_03"); object oWp04 = GetObjectByTag("WP_STINKI_04"); object oWp05 = GetObjectByTag("WP_STINKI_05"); object oWp06 = GetObjectByTag("WP_STINKI_06"); object oWp07 = GetObjectByTag("WP_STINKI_07"); object oWp08 = GetObjectByTag("WP_STINKI_08"); object oWp09 = GetObjectByTag("WP_STINKI_09"); object oWp10 = GetObjectByTag("WP_STINKI_10"); object oWp11 = GetObjectByTag("WP_STINKI_11"); object oDoor = GetObjectByTag("AM_DOOR_FLEG_NO"); effect eHaste = EffectHaste(); // ЧТО БЫ ИГРОК НЕ ОТСТАВАЛ! SetLocalInt(oPC, "STINKI", 3); AssignCommand(oStinki, ActionPauseConversation()); AssignCommand(oPC, ActionForceFollowObject(oStinki, 4.0f)); ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eHaste, oPC, 9999.0); AssignCommand(oStinki, ActionDoCommand(SetCommandable(FALSE, oPC))); AssignCommand(oStinki, ActionForceMoveToObject(oWp02, TRUE, 4.0)); AssignCommand(oStinki, ActionDoCommand(SetFacingPoint(GetPosition(oPC)))); AssignCommand(oStinki, ActionDoCommand(SpeakString("Не отставай!"))); AssignCommand(oStinki, ActionWait(1.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp03, TRUE, 4.0)); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp04, TRUE, 4.0)); AssignCommand(oStinki, ActionDoCommand(SetFacingPoint(GetPosition(oPC)))); AssignCommand(oStinki, ActionDoCommand(SpeakString("Не сильно быстро?"))); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp05, TRUE, 4.0)); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oDoor, TRUE, 4.0)); AssignCommand(oStinki, ActionDoCommand(SpeakString("Не обращай внимание, нас никто не тронет."))); AssignCommand(oStinki, ActionForceMoveToObject(oWp06, TRUE, 4.0)); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp07, TRUE, 4.0)); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp08, TRUE, 1.0)); AssignCommand(oStinki, ActionDoCommand(SpeakString("Мы почти пришли!"))); AssignCommand(oStinki, ActionForceMoveToObject(oWp09, TRUE, 1.0)); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp10, TRUE, 1.0)); AssignCommand(oStinki, ActionWait(2.0)); AssignCommand(oStinki, ActionForceMoveToObject(oWp11, TRUE, 1.0)); AssignCommand(oStinki, ActionDoCommand(SetFacingPoint(GetPosition(oPC)))); AssignCommand(oStinki, ActionDoCommand(RemoveEffect(oPC, eHaste))); AssignCommand(oStinki, ActionDoCommand(SetCommandable(TRUE, oPC))); AssignCommand(oStinki, ActionResumeConversation()); } |
Neverwinter Script Source |
SetLocalInt(oPC, "KILL", GetLocalInt(oPC, "KILL") + 1); // На каждом НПС при смерти будет для оРС +1 переменная Как только она будет равна количеству твоих враггов, например их 10 в локации... if (GetLocalInt(oPC, "KILL") >= 10) { AddJournalQuestEntry("TAG_JRNALA", 1, оPC); } |
Neverwinter Script Source |
{ object oNPC = GetFirstObjectInShape(SHAPE_CUBE, 250.0, GetLocation(GetFirstPC())); object oBOSS = GetObjectByTag("KRUSHIMORDA_FACTION_LEADER"); while (GetIsObjectValid(oNPC)) { if (GetFactionEqual(oNPC, oBOSS)) { return FALSE; } oNPC = GetNextObjectInShape(SHAPE_CUBE, 250.0, GetLocation(GetFirstPC())); } return TRUE; } // КОД DBColl-a |
Neverwinter Script Source |
// GetFirstObjectInShape // ВЗЯТЬ GetFirstObjectInArea object oArea= GetArea(OBJECT_SELF); // ТИПА ТУТА ![]() |