PGCC_PRC8/_module/nss/area_clean_inc.nss
Jaysyn904 e51634d39b Initial upload
Initial upload.
2024-10-09 14:17:22 -04:00

69 lines
2.6 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Area_Clean_Inc
//:: Copyright (c) 2004 Indigo-Red
//:://////////////////////////////////////////////
/*
Designed to clean the area when no players are present.
Functions/scripts contained here are used as follows for the Area:
OnEnter: [CheckForPC()]
- Keeps track of the number of players in the area
OnExit: [TimerCheck()]
- Checks to see if any players remain in the area
- Starts cleanup process when no PC is present
* In addition the following script is needed:
OnUserDefined: "area_clean_usr"
- Performs the actual clearing of the area
NOTE: The first two are presented as functions so that they can
be easily incorporated with any existing area scripts.
*/
//:://////////////////////////////////////////////
//:: Created By: Johnnie "Nekyia" Casiano
//:: Created On: 20040208
//:://////////////////////////////////////////////
// **** FUNCTION DECLARATIONS
// Function is used to keep track of the number of players present in the area
// Ex: (As part of the Area's OnEnter) CheckForPC(GetEnteringObject());
void CheckForPC(object PC, object Area=OBJECT_SELF);
// Function makes sure no PCs are left in the area before starting the clean timer
// Ex: (As part of the Area's OnExit) TimerCheck(GetExitingObject());
void TimerCheck(object PC, object Area=OBJECT_SELF);
// **** CUSTOM FUNCTIONS
void CheckForPC(object PC, object Area=OBJECT_SELF)
{
if(!GetIsPC(PC)||GetIsDM(PC)){return;}
object Last=GetLocalObject(PC,"Area");
//SendMessageToPC(PC,"Last Area: "+GetName(Last));
if(Last==Area){
int Count=GetLocalInt(Area,"PCCount");
//SendMessageToPC(PC,"Last Area Same. Count: "+IntToString(Count));
return;
}
int Count=GetLocalInt(Area,"PCCount")+1;
SetLocalInt(Area,"PCCount",Count);
SetLocalObject(PC,"Area",Area);
//SendMessageToPC(PC,"Area Set To: "+GetName(GetLocalObject(PC,"Area")));
//SendMessageToPC(PC,GetName(Area)+" Count: "+IntToString(GetLocalInt(Area,"PCCount")));
}
void TimerCheck(object PC, object Area=OBJECT_SELF)
{
if(!GetIsPC(PC)||GetIsDM(PC)){return;}
int Count=GetLocalInt(Area,"PCCount")-1;
int Timer=GetLocalInt(Area,"Timer");
if(Count==0 && Timer==0){
SetLocalInt(Area,"Timer",1);
SignalEvent(Area,EventUserDefined(69));
//SendMessageToPC(PC,"Cleanup check signal sent for "+GetName(Area));
}
SetLocalInt(Area,"PCCount",Count);
//SendMessageToPC(PC,GetName(Area)+"PC Count: "+IntToString(Count));
}