Changed folder name.
Changed folder name.
This commit is contained in:
75
_module/nss/exploitfix.nss
Normal file
75
_module/nss/exploitfix.nss
Normal file
@@ -0,0 +1,75 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: 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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user