120 lines
3.2 KiB
Plaintext
120 lines
3.2 KiB
Plaintext
|
//Script Name: area_clean_horse
|
||
|
//////////////////////////////////////////
|
||
|
//Created By: Genisys (Guile)
|
||
|
//Created On: 9/17/08
|
||
|
/////////////////////////////////////////
|
||
|
/*
|
||
|
This script goes in the OnExit event
|
||
|
for all areas within your module, if
|
||
|
you want to clean inventories of placeable
|
||
|
objects, in some areas I suggest you save
|
||
|
this under a new name FIRST!
|
||
|
|
||
|
This script destroys all horses which are
|
||
|
not assigned to a PC left in the area
|
||
|
IF there are no more PCs in the area the
|
||
|
script will fire.
|
||
|
|
||
|
*/
|
||
|
////////////////////////////////////////
|
||
|
//Required Horse Include
|
||
|
#include "x3_inc_horse"
|
||
|
|
||
|
////////////////////////////////////////
|
||
|
|
||
|
//OPTIONS/////
|
||
|
|
||
|
//Note: This is a very important script, it should go on the exit event of
|
||
|
//all area you create. (with some exceptions) This reduces lagg too!
|
||
|
|
||
|
//IMPORTANT: If you change this option change the script name! (Save As)
|
||
|
// Set this to TRUE if you want placeable object's inventories cleared
|
||
|
int nClearPlaceInv = FALSE;
|
||
|
|
||
|
// Set the amount of time to wait for cleaning here in seconds
|
||
|
float fDelayTime = 5.0;
|
||
|
|
||
|
/////////////////WARNING: DON'T TOUCH ANYTHING BELOW!!!////////////
|
||
|
|
||
|
void CleanArea(object oArea)
|
||
|
{
|
||
|
object oTrash = GetFirstObjectInArea(oArea);
|
||
|
object oInvItem;
|
||
|
|
||
|
//Check for PCs
|
||
|
object oPC = GetFirstPC();
|
||
|
while (GetIsObjectValid(oPC)) {
|
||
|
if (GetArea(oPC) == oArea) {
|
||
|
DeleteLocalInt(oArea, "CleanArea");
|
||
|
return;
|
||
|
}
|
||
|
oPC = GetNextPC();
|
||
|
}
|
||
|
|
||
|
while(GetIsObjectValid(oTrash)) {
|
||
|
string sTagPrefix = GetStringLeft(GetTag(oTrash), 15);
|
||
|
// Clear remains, dropped items
|
||
|
if(GetObjectType(oTrash)==OBJECT_TYPE_ITEM ||
|
||
|
GetStringLowerCase(GetName(oTrash)) == "remains") {
|
||
|
AssignCommand(oTrash, SetIsDestroyable(TRUE));
|
||
|
if (GetHasInventory(oTrash)) {
|
||
|
oInvItem = GetFirstItemInInventory(oTrash);
|
||
|
while(GetIsObjectValid(oInvItem)) {
|
||
|
DestroyObject(oInvItem,0.0);
|
||
|
oInvItem = GetNextItemInInventory(oTrash);
|
||
|
}
|
||
|
}
|
||
|
else DestroyObject(oTrash, 0.0);
|
||
|
}
|
||
|
// Clear placeable inventories
|
||
|
if(GetObjectType(oTrash)==OBJECT_TYPE_PLACEABLE &&
|
||
|
nClearPlaceInv == TRUE) {
|
||
|
if (GetHasInventory(oTrash))
|
||
|
{
|
||
|
object oInvItem = GetFirstItemInInventory(oTrash);
|
||
|
while(GetIsObjectValid(oInvItem)) {
|
||
|
DestroyObject(oInvItem,0.0);
|
||
|
oInvItem = GetNextItemInInventory(oTrash);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
else if (GetIsEncounterCreature(oTrash) ||
|
||
|
sTagPrefix == "PWFSE_SPAWNERID")
|
||
|
{
|
||
|
AssignCommand(oTrash, SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oTrash, 0.0);
|
||
|
}
|
||
|
|
||
|
// If it's a mountable creature!
|
||
|
else if (HorseGetIsAMount(oTrash))
|
||
|
{
|
||
|
//If the mount has no master!
|
||
|
if(HorseGetOwner(oTrash)== OBJECT_INVALID)
|
||
|
{
|
||
|
AssignCommand(oTrash, SetIsDestroyable(TRUE));
|
||
|
DestroyObject(oTrash, 0.0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
|
||
|
oTrash = GetNextObjectInArea(oArea);
|
||
|
}
|
||
|
DeleteLocalInt(oArea, "CleanArea");
|
||
|
}
|
||
|
|
||
|
void main()
|
||
|
{
|
||
|
object oArea = OBJECT_SELF;
|
||
|
object oPC = GetExitingObject();
|
||
|
if (!GetIsPC(oPC)) return;
|
||
|
|
||
|
if (GetLocalInt(oArea, "CleanArea") != 1)
|
||
|
{
|
||
|
DelayCommand(fDelayTime, CleanArea(oArea));
|
||
|
SetLocalInt(oArea, "CleanArea", 1);
|
||
|
}
|
||
|
|
||
|
}
|