//:://///////////////////////////////////////////// //:: Example XP2 OnItemEquipped //:: x2_mod_def_unequ //:: (c) 2003 Bioware Corp. //::////////////////////////////////////////////// /* Put into: OnUnEquip Event */ //::////////////////////////////////////////////// //:: Created By: Georg Zoeller //:: Created On: 2003-07-16 //::////////////////////////////////////////////// //Modified By Guile 3/24/08 //This modifcation stops a weapon switching exploit //Which gives the makes the PC never miss!!! /////////////////////////////////////////////////// #include "x2_inc_switches" #include "x2_inc_intweapon" void main() { object oItem = GetPCItemLastUnequipped(); object oPC = GetPCItemLastUnequippedBy(); ////////////Weapon Swap PVP Exploit Fix/////////////// //Lets make sure they are in combat if(GetIsInCombat(oPC)) { //Lets make sure it's a weapon or shield they are unequipping if(GetBaseItemType(oItem) != BASE_ITEM_AMULET) {if(GetBaseItemType(oItem) != BASE_ITEM_ARROW) {if(GetBaseItemType(oItem) != BASE_ITEM_BELT) {if(GetBaseItemType(oItem) != BASE_ITEM_BOLT) {if(GetBaseItemType(oItem) != BASE_ITEM_BOOTS) {if(GetBaseItemType(oItem) != BASE_ITEM_BRACER) {if(GetBaseItemType(oItem) != BASE_ITEM_CLOAK) {if(GetBaseItemType(oItem) != BASE_ITEM_HELMET) {if(GetBaseItemType(oItem) != BASE_ITEM_BULLET) {if(GetBaseItemType(oItem) != BASE_ITEM_RING) { //This stops whatever it is they are doing & they must retarget the enemy. //And if they are using the swap while casting, they must recast the spell DelayCommand(0.5, AssignCommand(oPC, ClearAllActions())); }}}}}}}}}} } /////////Exploit Fix END//////////// // ------------------------------------------------------------------------- // Intelligent Weapon System // ------------------------------------------------------------------------- if (IPGetIsIntelligentWeapon(oItem)) { IWSetIntelligentWeaponEquipped(oPC,OBJECT_INVALID); IWPlayRandomUnequipComment(oPC,oItem); } // ------------------------------------------------------------------------- // Generic Item Script Execution Code // If MODULE_SWITCH_EXECUTE_TAGBASED_SCRIPTS is set to TRUE on the module, // it will execute a script that has the same name as the item's tag // inside this script you can manage scripts for all events by checking against // GetUserDefinedItemEventNumber(). See x2_it_example.nss // ------------------------------------------------------------------------- if (GetModuleSwitchValue(MODULE_SWITCH_ENABLE_TAGBASED_SCRIPTS) == TRUE) { SetUserDefinedItemEventNumber(X2_ITEM_EVENT_UNEQUIP); int nRet = ExecuteScriptAndReturnInt(GetUserDefinedItemEventScriptName(oItem),OBJECT_SELF); if (nRet == X2_EXECUTE_SCRIPT_END) { return; } } }