PoA_PRC8/_module/nss/inv_system_old.nss

682 lines
19 KiB
Plaintext
Raw Permalink Normal View History

2022-10-07 14:20:31 -04:00
//Script Name: inv_system_ou
//////////////////////////////////////////
//Created By: Genisys (Guile)
//Created On: 8/05/08
/////////////////////////////////////////
/*
This goes in the OnUsed event of any
useable placeable object without an
inventory, it seperates all of the PC's
items into bags, destroy all previous
bags they had, nobody can use this
system while another is using it!
*/
////////////////////////////////////////
//Redundant Variable
object oPC;
////////////////////////////////////////
//PROTOTYPES DECLARED
int GetNum(object oTarget);
void Seperate(object oTarget);
void Disperse(object oTarget);
void TakeAll(object oTarget);
void ReturnUndroppables(object oTarget);
void SortContainer(object oTarget);
void SortBox(object oTarget);
void GiveAll(object oTarget);
//NO INCLUDES required (It's all required to be in this script!)
//////////////////////////////////////////////////////////
//Main Script
void main()
{
//Declare All Major Variables
oPC = GetLastUsedBy();
object oSelf = OBJECT_SELF;
object oItem;
//This is an important conditional fix to Module Events
//We don't want the aquire / unaquire Events firing on the PC!
//Otherwise it could cause some MAJOR Problems!
if(GetLocalInt(GetModule(), "ORGANIZING")==1)
{
FloatingTextStringOnCreature("This system is busy, try again later", oPC, FALSE);
//Stop the script here!
return;
}
else
{
//This is a fix to Module Event Scripts (Prevents them from firing on PC)
SetLocalInt(GetModule(), "ORGANIZING", 1);
//Allow the system to be useable again after some time..
DelayCommand(24.1, SetLocalInt(GetModule(), "ORGANIZING", 0));
}
//The holding tank!
object oNPC = GetObjectByTag("ihold4u");
object oBox;
oBox = GetObjectByTag("ibox");
object oBox1;
oBox1 = GetObjectByTag("plotbox");
object oBox2;
oBox2 = GetObjectByTag("potbox");
object oBox3;
oBox3 = GetObjectByTag("wepbox");
object oBox4;
oBox4 = GetObjectByTag("armbox");
object oBox5;
oBox5 = GetObjectByTag("obox");
object oBox6;
oBox6 = GetObjectByTag("ammobox");
object oBox7;
oBox7= GetObjectByTag("rswbox");
object oBox8;
oBox8= GetObjectByTag("ihold4u");
//If this system is in use, tell them to try later..
if(GetLocalInt(oSelf, "INUSENOW")==1)
{
FloatingTextStringOnCreature("System in use, try again later.", oPC, FALSE);
//Stop here!
return;
}
//Otherwise allow them to use it and set that it's in use
else
{
SetLocalInt(oSelf, "INUSENOW", 1);
}
//First, take all items from inside of bags first!
oItem = GetFirstItemInInventory(oPC);
while(GetIsObjectValid(oItem))
{
if(GetHasInventory(oItem))
{
//Have the proper container take the item.
DelayCommand(1.0, Seperate(oItem));
}
//continue the loop..
oItem = GetNextItemInInventory(oPC);
}
//After Bags have been emptied, take the rest of the items and
//destroy all remaining bags..
DelayCommand(10.5, TakeAll(oPC));
//Now put the items into the proper sorting box..
DelayCommand(18.0, ReturnUndroppables(oBox));
//Sort the Boxes now holding the copied items
DelayCommand(20.1, SortBox(oBox1));
DelayCommand(21.2, SortBox(oBox2));
DelayCommand(22.3, SortBox(oBox3));
DelayCommand(23.4, SortBox(oBox4));
DelayCommand(24.5, SortBox(oBox5));
DelayCommand(25.6, SortBox(oBox6));
DelayCommand(26.7, SortBox(oBox7));
DelayCommand(27.8, SortBox(oBox));
//Return ALL Items in ALL Boxes (Safe Guard!)
DelayCommand(28.1, GiveAll(oBox1));
DelayCommand(28.2, GiveAll(oBox2));
DelayCommand(28.3, GiveAll(oBox3));
DelayCommand(28.4, GiveAll(oBox4));
DelayCommand(28.5, GiveAll(oBox5));
DelayCommand(28.6, GiveAll(oBox6));
DelayCommand(28.7, GiveAll(oBox7));
DelayCommand(28.8, GiveAll(oBox8));
DelayCommand(28.9, GiveAll(oBox));
DelayCommand(30.0, FloatingTextStringOnCreature(
"Organizing Complete.", oPC, TRUE));
DelayCommand(30.1, SetLocalInt(oSelf, "INUSENOW", 0));
//Main Script End
}
/////////////////////////////////////////////////////
//DEFINE ALL PROTOTYPES//////////////////////////////
/////////////////////////////////////////////////////
////////////////////////////////////////////////////////
//PROTOTYPE DEFINED
// Return the number of items oTarget possesses in thier inventory
int GetNum(object oTarget)
{
int nNum = 0;
object oItem = GetFirstItemInInventory(oTarget);
while (GetIsObjectValid(oItem) == TRUE)
{
nNum = nNum +1;
oItem = GetNextItemInInventory(oTarget);
}
return nNum;
//END PROTOTYPE
}
////////////////////////////////////////////////////////////////////////
//PROTOTYPE DEFINED
void Seperate(object oTarget)
{
object oPC = oTarget;
object oBox;
oBox = GetObjectByTag("ibox");
object oBox1;
oBox1 = GetObjectByTag("plotbox");
object oBox2;
oBox2 = GetObjectByTag("potbox");
object oBox3;
oBox3 = GetObjectByTag("wepbox");
object oBox4;
oBox4 = GetObjectByTag("armbox");
object oBox5;
oBox5 = GetObjectByTag("obox");
object oBox6;
oBox6 = GetObjectByTag("ammobox");
object oBox7;
oBox7= GetObjectByTag("rswbox");
object oItem;
//Now lets deal with the items in the box now..
oItem = GetFirstItemInInventory(oTarget);
while(GetIsObjectValid(oItem))
{
//If in fact the item in Undroppable, then give it back to the PC
if(GetItemCursedFlag(oItem))
{
DelayCommand(0.2, AssignCommand(oBox, ActionTakeItem(oItem, oPC)));
}
//Otherwise assign the item to the proper box!
else
{
//Put all weapons in the weapon box..
if(GetBaseItemType(oItem)== BASE_ITEM_BASTARDSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_BATTLEAXE ||
GetBaseItemType(oItem)== BASE_ITEM_CLUB ||
GetBaseItemType(oItem)== BASE_ITEM_DAGGER ||
GetBaseItemType(oItem)== BASE_ITEM_DIREMACE ||
GetBaseItemType(oItem)== BASE_ITEM_DOUBLEAXE ||
GetBaseItemType(oItem)== BASE_ITEM_DWARVENWARAXE ||
GetBaseItemType(oItem)== BASE_ITEM_GREATAXE ||
GetBaseItemType(oItem)== BASE_ITEM_GREATSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_HALBERD ||
GetBaseItemType(oItem)== BASE_ITEM_HANDAXE ||
GetBaseItemType(oItem)== BASE_ITEM_HEAVYFLAIL ||
GetBaseItemType(oItem)== BASE_ITEM_KAMA ||
GetBaseItemType(oItem)== BASE_ITEM_KATANA ||
GetBaseItemType(oItem)== BASE_ITEM_KUKRI ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTFLAIL ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTHAMMER ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTMACE ||
GetBaseItemType(oItem)== BASE_ITEM_LONGSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_MORNINGSTAR ||
GetBaseItemType(oItem)== BASE_ITEM_QUARTERSTAFF ||
GetBaseItemType(oItem)== BASE_ITEM_RAPIER ||
GetBaseItemType(oItem)== BASE_ITEM_SCIMITAR ||
GetBaseItemType(oItem)== BASE_ITEM_SCYTHE ||
GetBaseItemType(oItem)== BASE_ITEM_SHORTSPEAR ||
GetBaseItemType(oItem)== BASE_ITEM_SHORTSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_SICKLE ||
GetBaseItemType(oItem)== BASE_ITEM_TRIDENT ||
GetBaseItemType(oItem)== BASE_ITEM_TWOBLADEDSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_WARHAMMER ||
GetBaseItemType(oItem)== BASE_ITEM_WHIP ||
GetBaseItemType(oItem)== BASE_ITEM_HEAVYCROSSBOW ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTCROSSBOW ||
GetBaseItemType(oItem)== BASE_ITEM_LONGBOW ||
GetBaseItemType(oItem)== BASE_ITEM_SHORTBOW ||
GetBaseItemType(oItem)== BASE_ITEM_SLING)
{
DelayCommand(0.2, AssignCommand(oBox3, ActionTakeItem(oItem, oPC)));
}
//Put all ammunitions in the ammobox
else if(GetBaseItemType(oItem)== BASE_ITEM_ARROW ||
GetBaseItemType(oItem)== BASE_ITEM_BOLT ||
GetBaseItemType(oItem)== BASE_ITEM_BULLET ||
GetBaseItemType(oItem)== BASE_ITEM_DART ||
GetBaseItemType(oItem)== BASE_ITEM_SHURIKEN ||
GetBaseItemType(oItem)== BASE_ITEM_THROWINGAXE)
{
DelayCommand(0.2, AssignCommand(oBox6, ActionTakeItem(oItem, oPC)));
}
//Serpate ALL Potions, Scrolls, & Healer's Kits into the potbox
else if(GetBaseItemType(oItem)==BASE_ITEM_POTIONS ||
GetBaseItemType(oItem)==BASE_ITEM_ENCHANTED_POTION ||
GetBaseItemType(oItem)==BASE_ITEM_ENCHANTED_SCROLL ||
GetBaseItemType(oItem)==BASE_ITEM_HEALERSKIT ||
GetBaseItemType(oItem)==BASE_ITEM_SPELLSCROLL)
{
DelayCommand(0.2, AssignCommand(oBox2, ActionTakeItem(oItem, oPC)));
}
//Seperate the Armor & Worn Items into the armbox
else if(GetBaseItemType(oItem)==BASE_ITEM_AMULET ||
GetBaseItemType(oItem)==BASE_ITEM_ARMOR ||
GetBaseItemType(oItem)==BASE_ITEM_BELT ||
GetBaseItemType(oItem)==BASE_ITEM_BOOTS ||
GetBaseItemType(oItem)==BASE_ITEM_BRACER ||
GetBaseItemType(oItem)==BASE_ITEM_CLOAK ||
GetBaseItemType(oItem)==BASE_ITEM_GLOVES ||
GetBaseItemType(oItem)==BASE_ITEM_HELMET ||
GetBaseItemType(oItem)==BASE_ITEM_LARGESHIELD ||
GetBaseItemType(oItem)==BASE_ITEM_RING ||
GetBaseItemType(oItem)==BASE_ITEM_SMALLSHIELD ||
GetBaseItemType(oItem)==BASE_ITEM_TOWERSHIELD)
{
DelayCommand(0.2, AssignCommand(oBox4, ActionTakeItem(oItem, oPC)));
}
//Now let's seperate plot items next before we do the other seperations
else if(GetPlotFlag(oItem)==TRUE)
{
DelayCommand(0.2, AssignCommand(oBox1, ActionTakeItem(oItem, oPC)));
}
//Seperate all Rods / Staves / Wands into the srwbox
else if(GetBaseItemType(oItem)==BASE_ITEM_MAGICROD ||
GetBaseItemType(oItem)==BASE_ITEM_MAGICSTAFF ||
GetBaseItemType(oItem)==BASE_ITEM_MAGICWAND)
{
DelayCommand(0.2, AssignCommand(oBox7, ActionTakeItem(oItem, oPC)));
}
//now let's seperate all the miscellaneous items
//Grenades, Trapkits, and Thieving Tools into the oBox
else if(GetBaseItemType(oItem)==BASE_ITEM_MISCSMALL ||
GetBaseItemType(oItem)==BASE_ITEM_MISCMEDIUM ||
GetBaseItemType(oItem)==BASE_ITEM_MISCLARGE ||
GetBaseItemType(oItem)==BASE_ITEM_MISCTHIN ||
GetBaseItemType(oItem)==BASE_ITEM_MISCWIDE ||
GetBaseItemType(oItem)==BASE_ITEM_MISCTALL ||
GetBaseItemType(oItem)==BASE_ITEM_GRENADE ||
GetBaseItemType(oItem)==BASE_ITEM_THIEVESTOOLS ||
GetBaseItemType(oItem)==BASE_ITEM_TRAPKIT)
{
DelayCommand(0.2, AssignCommand(oBox5, ActionTakeItem(oItem, oPC)));
}
//Otherwise put the item in the ibox!
else
{
DelayCommand(0.2, AssignCommand(oBox, ActionTakeItem(oItem, oPC)));
}
//Else statement end..
}
//Continue the loop
oItem = GetNextItemInInventory(oTarget);
}
//PROTOTYPE END
}
////////////////////////////////////////////////////////////////////////
//PROTOTYPE DEFINED
void Disperse(object oTarget)
{
oPC = GetLastUsedBy();
object oBox;
oBox = GetObjectByTag("ibox");
object oBox1;
oBox1 = GetObjectByTag("plotbox");
object oBox2;
oBox2 = GetObjectByTag("potbox");
object oBox3;
oBox3 = GetObjectByTag("wepbox");
object oBox4;
oBox4 = GetObjectByTag("armbox");
object oBox5;
oBox5 = GetObjectByTag("obox");
object oBox6;
oBox6 = GetObjectByTag("ammobox");
object oBox7;
oBox7= GetObjectByTag("rswbox");
object oItem = oTarget;
//If in fact the item in Undroppable, then give it back to the PC
if(GetItemCursedFlag(oItem)==TRUE)
{
DelayCommand(0.2, AssignCommand(oBox, ActionTakeItem(oItem, oPC)));
}
//Otherwise assign the item to the proper box!
else
{
//Put all weapons in the weapon box..
if(GetBaseItemType(oItem)== BASE_ITEM_BASTARDSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_BATTLEAXE ||
GetBaseItemType(oItem)== BASE_ITEM_CLUB ||
GetBaseItemType(oItem)== BASE_ITEM_DAGGER ||
GetBaseItemType(oItem)== BASE_ITEM_DIREMACE ||
GetBaseItemType(oItem)== BASE_ITEM_DOUBLEAXE ||
GetBaseItemType(oItem)== BASE_ITEM_DWARVENWARAXE ||
GetBaseItemType(oItem)== BASE_ITEM_GREATAXE ||
GetBaseItemType(oItem)== BASE_ITEM_GREATSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_HALBERD ||
GetBaseItemType(oItem)== BASE_ITEM_HANDAXE ||
GetBaseItemType(oItem)== BASE_ITEM_HEAVYFLAIL ||
GetBaseItemType(oItem)== BASE_ITEM_KAMA ||
GetBaseItemType(oItem)== BASE_ITEM_KATANA ||
GetBaseItemType(oItem)== BASE_ITEM_KUKRI ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTFLAIL ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTHAMMER ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTMACE ||
GetBaseItemType(oItem)== BASE_ITEM_LONGSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_MORNINGSTAR ||
GetBaseItemType(oItem)== BASE_ITEM_QUARTERSTAFF ||
GetBaseItemType(oItem)== BASE_ITEM_RAPIER ||
GetBaseItemType(oItem)== BASE_ITEM_SCIMITAR ||
GetBaseItemType(oItem)== BASE_ITEM_SCYTHE ||
GetBaseItemType(oItem)== BASE_ITEM_SHORTSPEAR ||
GetBaseItemType(oItem)== BASE_ITEM_SHORTSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_SICKLE ||
GetBaseItemType(oItem)== BASE_ITEM_TRIDENT ||
GetBaseItemType(oItem)== BASE_ITEM_TWOBLADEDSWORD ||
GetBaseItemType(oItem)== BASE_ITEM_WARHAMMER ||
GetBaseItemType(oItem)== BASE_ITEM_WHIP ||
GetBaseItemType(oItem)== BASE_ITEM_HEAVYCROSSBOW ||
GetBaseItemType(oItem)== BASE_ITEM_LIGHTCROSSBOW ||
GetBaseItemType(oItem)== BASE_ITEM_LONGBOW ||
GetBaseItemType(oItem)== BASE_ITEM_SHORTBOW ||
GetBaseItemType(oItem)== BASE_ITEM_SLING)
{
DelayCommand(0.2, AssignCommand(oBox3, ActionTakeItem(oItem, oPC)));
}
//Put all ammunitions in the ammobox
else if(GetBaseItemType(oItem)== BASE_ITEM_ARROW ||
GetBaseItemType(oItem)== BASE_ITEM_BOLT ||
GetBaseItemType(oItem)== BASE_ITEM_BULLET ||
GetBaseItemType(oItem)== BASE_ITEM_DART ||
GetBaseItemType(oItem)== BASE_ITEM_SHURIKEN ||
GetBaseItemType(oItem)== BASE_ITEM_THROWINGAXE)
{
DelayCommand(0.2, AssignCommand(oBox6, ActionTakeItem(oItem, oPC)));
}
//Serpate ALL Potions, Scrolls, & Healer's Kits into the potbox
else if(GetBaseItemType(oItem)==BASE_ITEM_POTIONS ||
GetBaseItemType(oItem)==BASE_ITEM_ENCHANTED_POTION ||
GetBaseItemType(oItem)==BASE_ITEM_ENCHANTED_SCROLL ||
GetBaseItemType(oItem)==BASE_ITEM_HEALERSKIT ||
GetBaseItemType(oItem)==BASE_ITEM_SPELLSCROLL)
{
DelayCommand(0.2, AssignCommand(oBox2, ActionTakeItem(oItem, oPC)));
}
//Seperate the Armor & Worn Items into the armbox
else if(GetBaseItemType(oItem)==BASE_ITEM_AMULET ||
GetBaseItemType(oItem)==BASE_ITEM_ARMOR ||
GetBaseItemType(oItem)==BASE_ITEM_BELT ||
GetBaseItemType(oItem)==BASE_ITEM_BOOTS ||
GetBaseItemType(oItem)==BASE_ITEM_BRACER ||
GetBaseItemType(oItem)==BASE_ITEM_CLOAK ||
GetBaseItemType(oItem)==BASE_ITEM_GLOVES ||
GetBaseItemType(oItem)==BASE_ITEM_HELMET ||
GetBaseItemType(oItem)==BASE_ITEM_LARGESHIELD ||
GetBaseItemType(oItem)==BASE_ITEM_RING ||
GetBaseItemType(oItem)==BASE_ITEM_SMALLSHIELD ||
GetBaseItemType(oItem)==BASE_ITEM_TOWERSHIELD)
{
DelayCommand(0.2, AssignCommand(oBox4, ActionTakeItem(oItem, oPC)));
}
//Now let's seperate plot items next before we do the other seperations
else if(GetPlotFlag(oItem)==TRUE)
{
DelayCommand(0.2, AssignCommand(oBox1, ActionTakeItem(oItem, oPC)));
}
//Seperate all Rods / Staves / Wands into the srwbox
else if(GetBaseItemType(oItem)==BASE_ITEM_MAGICROD ||
GetBaseItemType(oItem)==BASE_ITEM_MAGICSTAFF ||
GetBaseItemType(oItem)==BASE_ITEM_MAGICWAND)
{
DelayCommand(0.2, AssignCommand(oBox7, ActionTakeItem(oItem, oPC)));
}
//now let's seperate all the miscellaneous items
//Grenades, Trapkits, and Thieving Tools into the oBox
else if(GetBaseItemType(oItem)==BASE_ITEM_MISCSMALL ||
GetBaseItemType(oItem)==BASE_ITEM_MISCMEDIUM ||
GetBaseItemType(oItem)==BASE_ITEM_MISCLARGE ||
GetBaseItemType(oItem)==BASE_ITEM_MISCTHIN ||
GetBaseItemType(oItem)==BASE_ITEM_MISCWIDE ||
GetBaseItemType(oItem)==BASE_ITEM_MISCTALL ||
GetBaseItemType(oItem)==BASE_ITEM_GRENADE ||
GetBaseItemType(oItem)==BASE_ITEM_THIEVESTOOLS ||
GetBaseItemType(oItem)==BASE_ITEM_TRAPKIT)
{
DelayCommand(0.2, AssignCommand(oBox5, ActionTakeItem(oItem, oPC)));
}
//Otherwise put the item in the ibox!
else
{
DelayCommand(0.2, AssignCommand(oBox, ActionTakeItem(oItem, oPC)));
}
//Else statement end
}
//PROTOTYPE END
}
//////////////////////////////////////////////////////////////
void TakeAll(object oTarget)
{
object oBox = GetObjectByTag("ihold4u");
object oItem;
//Copy all Non-Bags in the PC's inventory into the box
//Then destroy the originals and then the bags.
oItem = GetFirstItemInInventory(oTarget);
while(GetIsObjectValid(oItem))
{
//If it's not a container..
if(!GetHasInventory(oItem))
{
//Have the proper container take it!
Disperse(oItem);
}
//if It's a Container, then remove it's contents!
if(GetHasInventory(oItem))
{
DelayCommand(7.0, DestroyObject(oItem, 0.0f));
}
//continue the loop..
oItem = GetNextItemInInventory(oTarget);
}
//END PROTOTYPE
}
///////////////////////////////////////////////////////
void ReturnUndroppables(object oTarget)
{
object oItem;
oPC = GetLastUsedBy();
oItem = GetFirstItemInInventory(oTarget);
while(GetIsObjectValid(oItem))
{
//return all containers to the PC!
if(GetItemCursedFlag(oItem))
{
//Give everything to the PC..
AssignCommand(oTarget, ActionGiveItem(oItem, oPC));
}
oItem = GetNextItemInInventory(oTarget);
}
//PROTOTYPE END
}
/////////////////////////////////////////////////
//PROTOTYPE DEFINED
void SortContainer(object oTarget)
{
//Declare Major Variables
object oPC = GetLastUsedBy();
object oNPC = GetObjectByTag("ihold4u");
object oBox = GetObjectByTag(GetTag(oTarget));
object oMine;
object oBag = GetItemPossessedBy(oNPC, GetTag(oTarget));
//Determine what script fired this function!
if(GetLocalInt(oNPC, "iFired")==1)
{
oPC = GetItemActivator();
}
else
{
oPC = GetLastUsedBy();
}
//First Put all the items that will fit into the bag
//on the NPC into the bag..
oMine = GetFirstItemInInventory(oTarget);
while(GetIsObjectValid(oMine)==TRUE)
{
AssignCommand(oTarget, ActionGiveItem(oMine, oBag));
oMine = GetNextItemInInventory(oTarget);
}
//Make the bags unsellable and undroppable!!
SetItemCursedFlag(oBag, TRUE);
SetPlotFlag(oBag, TRUE);
string sName;
if(GetTag(oTarget) == "ibox")
{
sName = "<cr<63> >Other Items";
}
if(GetTag(oTarget) == "plotbox")
{
sName = "<c<><63> >Plot Items";
}
if(GetTag(oTarget) == "potbox")
{
sName = "<c <20><>>Potions & Scrolls";
}
if(GetTag(oTarget) == "wepbox")
{
sName = "<c<> >Weapons";
}
if(GetTag(oTarget) == "armbox")
{
sName = "<c=w<>>Armor & Clothing";
}
if(GetTag(oTarget) == "obox")
{
sName = "<c<><63>~>Miscellaneous Items";
}
if(GetTag(oTarget) == "ammobox")
{
sName = "<c<><63> >Ammunition";
}
if(GetTag(oTarget) == "rswbox")
{
sName = "<c<><63> >Rods/Staves/Wands";
}
//Give the bag a the proper name with color :)
DelayCommand(0.1,SetName(oBag, sName));
//Give the PC the bag now that it has items in it!
DelayCommand(0.4, AssignCommand(oNPC, ActionGiveItem(oBag, oPC)));
//PROTOTYPE END
}
//////////////////////////////////////////////////
//PROTOTYPE DEFINED
void SortBox(object oTarget)
{
//Declare Major Variables
object oPC = GetLastUsedBy();
object oBox = GetObjectByTag(GetTag(oTarget));
object oItem;
object oNPC = GetObjectByTag("ihold4u");
//We only continue if the box has items!
if(GetNum(oBox)>0)
{
//Give the NPC a Bag to store items in!
//Give the bag the tagname of the box!
CreateItemOnObject("NW_IT_CONTAIN006", oNPC, 1, GetTag(oBox));
//Start putting items in the bag on the NPC
DelayCommand(0.1, SortContainer(oTarget));
//Continue to sort the box till nothing is left!
DelayCommand(0.5, SortBox(oTarget));
}
//NOTE: If the box has 0 items, no need to continue!
//PROTOTYPES End
}
///////////////////////////////////////////////////////
void GiveAll(object oTarget)
{
object oItem;
oPC = GetLastUsedBy();
oItem = GetFirstItemInInventory(oTarget);
while(GetIsObjectValid(oItem))
{
//Give everything to the PC..
AssignCommand(oTarget, ActionGiveItem(oItem, oPC));
oItem = GetNextItemInInventory(oTarget);
}
//PROTOTYPE END
}