/////////////////////////////////////////////////////////////////////////////// // DEEP DEBUG DUMP - By Deva Bryson Winblood /////////////////////////////////////////////////////////////////////////////// // this will dump a huge amount of information to the logs // related to this module at the time the deep debug was called // it will space out many of the parts with delays to prevent TMI errors // and hopefully cause less of an impact on the module. /////////////////////////////////////////////////////////////////////////////// // Make sure a waypoint with the tag AREA_DEBUG is dropped into each area of // the module. Drop only one per area or the stats for that area will be // counted twice. /////////////////////////////////////////////////////////////////////////////// const string sBanner="//////////////////////////////////////////////////////////"; const string sSeparater="----------------------------------------------------------"; const string sDumpPre="DEEPDUMPPREFIX"; void fnBeginDump(); // main dump routine void fnStatsByArea(int nMainC,int nC,object oArea=OBJECT_INVALID); //////////////////////////////////////////////////////////////////////// MAIN void main() { string sMsg; object oOb; int nC; sMsg="DEEP DEBUG DUMP for Module '"+GetName(GetModule())+"'"; PrintString(" "); PrintString(sBanner); PrintString(sMsg); PrintString(sSeparater); sMsg="TIME DUMP BEGAN: "+IntToString(GetTimeHour())+":"+IntToString(GetTimeMinute()); sMsg=sMsg+" Day:"+IntToString(GetCalendarDay())+" Year:"+IntToString(GetCalendarYear()); PrintString(sMsg); PrintString(sBanner); DelayCommand(1.0,fnBeginDump()); } //////////////////////////////////////////////////////////////////////// MAIN //////////////////////////////// // FUNCTIONS //////////////////////////////// void fnCleanupVariables() { // delete locals used by this script object oMod=GetModule(); DeleteLocalInt(oMod,sDumpPre+"creatures"); DeleteLocalInt(oMod,sDumpPre+"placeables"); DeleteLocalInt(oMod,sDumpPre+"useables"); DeleteLocalInt(oMod,sDumpPre+"plots"); DeleteLocalInt(oMod,sDumpPre+"containers"); DeleteLocalInt(oMod,sDumpPre+"items"); DeleteLocalInt(oMod,sDumpPre+"triggers"); DeleteLocalInt(oMod,sDumpPre+"ttrans"); DeleteLocalInt(oMod,sDumpPre+"dtrans"); DeleteLocalInt(oMod,sDumpPre+"doors"); DeleteLocalInt(oMod,sDumpPre+"players"); DeleteLocalInt(oMod,sDumpPre+"dms"); DeleteLocalInt(oMod,sDumpPre+"waypoints"); DeleteLocalInt(oMod,sDumpPre+"stores"); DeleteLocalInt(oMod,sDumpPre+"other"); DeleteLocalInt(oMod,sDumpPre+"areas"); } // fnCleanupVariables() void fnCleanupVariablesA() { // delete locals used by this script object oMod=GetModule(); DeleteLocalInt(oMod,sDumpPre+"Acreatures"); DeleteLocalInt(oMod,sDumpPre+"Aplaceables"); DeleteLocalInt(oMod,sDumpPre+"Auseables"); DeleteLocalInt(oMod,sDumpPre+"Aplots"); DeleteLocalInt(oMod,sDumpPre+"Acontainers"); DeleteLocalInt(oMod,sDumpPre+"Aitems"); DeleteLocalInt(oMod,sDumpPre+"Atriggers"); DeleteLocalInt(oMod,sDumpPre+"Adoors"); DeleteLocalInt(oMod,sDumpPre+"Attrans"); DeleteLocalInt(oMod,sDumpPre+"Adtrans"); DeleteLocalInt(oMod,sDumpPre+"Aplayers"); DeleteLocalInt(oMod,sDumpPre+"Adms"); DeleteLocalInt(oMod,sDumpPre+"Awaypoints"); DeleteLocalInt(oMod,sDumpPre+"Astores"); DeleteLocalInt(oMod,sDumpPre+"Aother"); } // fnCleanupVariables() void fnModuleStats() { object oMod=GetModule(); int nC; string sMsg; PrintString(sSeparater); PrintString("[=====================[ MODULE WIDE TOTAL ]=================]"); PrintString(sSeparater); nC=GetLocalInt(oMod,sDumpPre+"creatures"); PrintString("CREATURES :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"players"); PrintString("CREATURES Players :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"dms"); PrintString("CREATURES Players/DMs :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"placeables"); PrintString("PLACEABLES :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"plots"); PrintString("PLACEABLES Plot :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"useables"); PrintString("PLACEABLES Useable :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"containers"); PrintString("PLACEABLES Containers :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"items"); PrintString("ITEMS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"triggers"); PrintString("TRIGGERS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"ttrans"); PrintString("TRIGGERS Transitions :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"doors"); PrintString("DOORS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"dtrans"); PrintString("DOORS Transitions :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"waypoints"); PrintString("WAYPOINTS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"stores"); PrintString("STORES :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"other"); PrintString("OTHER [unclassified] :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"areas"); PrintString("AREAS :"+IntToString(nC)); PrintString(sBanner); sMsg="TIME DUMP COMPLETED: "+IntToString(GetTimeHour())+":"+IntToString(GetTimeMinute()); sMsg=sMsg+" Day:"+IntToString(GetCalendarDay())+" Year:"+IntToString(GetCalendarYear()); PrintString(sMsg); PrintString(sBanner); fnCleanupVariables(); oMod=GetLocalObject(oMod,"oRTSVoteInitiate"); if (oMod!=OBJECT_INVALID) SendMessageToPC(oMod,"The DEEP DEBUG DUMP that was voted on is COMPLETE!"); } // fnModuleStats() void fnOutputAreaStats() { // print the area stats object oMod=GetModule(); int nC; nC=GetLocalInt(oMod,sDumpPre+"Acreatures"); PrintString("CREATURES :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Aplayers"); PrintString("CREATURES Players :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Adms"); PrintString("CREATURES Players/DMs :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Aplaceables"); PrintString("PLACEABLES :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Aplots"); PrintString("PLACEABLES Plot :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Auseables"); PrintString("PLACEABLES Useable :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Acontainers"); PrintString("PLACEABLES Containers :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Aitems"); PrintString("ITEMS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Atriggers"); PrintString("TRIGGERS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Attrans"); PrintString("TRIGGERS Transitions :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Adoors"); PrintString("DOORS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Adtrans"); PrintString("DOORS Transitions :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Awaypoints"); PrintString("WAYPOINTS :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Astores"); PrintString("STORES :"+IntToString(nC)); nC=GetLocalInt(oMod,sDumpPre+"Aother"); PrintString("OTHER [unclassified] :"+IntToString(nC)); fnCleanupVariablesA(); } // fnOutputAreaStats() void fnStatsByArea(int nMainC,int nC,object oArea=OBJECT_INVALID) { // fnStatsByArea object oOb; object oWP; object oMod=GetModule(); int nCount; int nOT; if (oArea==OBJECT_INVALID&&nMainC!=-1) { // new area oWP=GetObjectByTag("AREA_DEBUG",nMainC); if (oWP!=OBJECT_INVALID) { // new area PrintString(sSeparater); PrintString("[ Area statistics for area '"+GetName(GetArea(oWP))+"' TAG:"+GetTag(GetArea(oWP))+" RESREF:"+GetResRef(GetArea(oWP))+" ]"); PrintString(sSeparater); fnCleanupVariablesA(); DelayCommand(1.0,fnStatsByArea(nMainC,0,GetArea(oWP))); } // new area else { // done with area stats DelayCommand(1.0,fnModuleStats()); } // done with area stats } // new area else { // count items oOb=GetFirstObjectInArea(oArea); nCount=0; while(oOb!=OBJECT_INVALID) { // count objects nOT=GetObjectType(oOb); if (nOT==OBJECT_TYPE_CREATURE) { // creature nCount=GetLocalInt(oMod,sDumpPre+"creatures"); nCount++; SetLocalInt(oMod,sDumpPre+"creatures",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Acreatures"); nCount++; SetLocalInt(oMod,sDumpPre+"Acreatures",nCount); if (GetIsPC(oOb)==TRUE) { // PC nCount=GetLocalInt(oMod,sDumpPre+"players"); nCount++; SetLocalInt(oMod,sDumpPre+"players",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Aplayers"); nCount++; SetLocalInt(oMod,sDumpPre+"Aplayers",nCount); } // PC if (GetIsDM(oOb)==TRUE) { // DM nCount=GetLocalInt(oMod,sDumpPre+"dms"); nCount++; SetLocalInt(oMod,sDumpPre+"dms",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Adms"); nCount++; SetLocalInt(oMod,sDumpPre+"Adms",nCount); } // DM } // creature else if (nOT==OBJECT_TYPE_ITEM) { // item nCount=GetLocalInt(oMod,sDumpPre+"items"); nCount++; SetLocalInt(oMod,sDumpPre+"items",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Aitems"); nCount++; SetLocalInt(oMod,sDumpPre+"Aitems",nCount); } // item else if (nOT==OBJECT_TYPE_PLACEABLE) { // placeable nCount=GetLocalInt(oMod,sDumpPre+"placeables"); nCount++; SetLocalInt(oMod,sDumpPre+"placeables",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Aplaceables"); nCount++; SetLocalInt(oMod,sDumpPre+"Aplaceables",nCount); if (GetPlotFlag(oOb)==TRUE) { // plot nCount=GetLocalInt(oMod,sDumpPre+"plots"); nCount++; SetLocalInt(oMod,sDumpPre+"plots",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Aplots"); nCount++; SetLocalInt(oMod,sDumpPre+"Aplots",nCount); } // plot if (GetHasInventory(oOb)==TRUE) { // container nCount=GetLocalInt(oMod,sDumpPre+"containers"); nCount++; SetLocalInt(oMod,sDumpPre+"containers",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Acontainers"); nCount++; SetLocalInt(oMod,sDumpPre+"Acontainers",nCount); } // container if (GetUseableFlag(oOb)==TRUE) { // useable nCount=GetLocalInt(oMod,sDumpPre+"usables"); nCount++; SetLocalInt(oMod,sDumpPre+"usables",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Ausables"); nCount++; SetLocalInt(oMod,sDumpPre+"Ausables",nCount); } // useable } // placeable else if (nOT==OBJECT_TYPE_STORE) { // store nCount=GetLocalInt(oMod,sDumpPre+"stores"); nCount++; SetLocalInt(oMod,sDumpPre+"stores",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Astores"); nCount++; SetLocalInt(oMod,sDumpPre+"Astores",nCount); } // store else if (nOT==OBJECT_TYPE_TRIGGER) { // trigger nCount=GetLocalInt(oMod,sDumpPre+"triggers"); nCount++; SetLocalInt(oMod,sDumpPre+"triggers",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Atriggers"); nCount++; SetLocalInt(oMod,sDumpPre+"Atriggers",nCount); if (GetTransitionTarget(oOb)!=OBJECT_INVALID) { // transition nCount=GetLocalInt(oMod,sDumpPre+"ttrans"); nCount++; SetLocalInt(oMod,sDumpPre+"ttrans",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Attrans"); nCount++; SetLocalInt(oMod,sDumpPre+"Attrans",nCount); } // transition } // trigger else if (nOT==OBJECT_TYPE_DOOR) { // door nCount=GetLocalInt(oMod,sDumpPre+"doors"); nCount++; SetLocalInt(oMod,sDumpPre+"doors",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Adoors"); nCount++; SetLocalInt(oMod,sDumpPre+"Adoors",nCount); if (GetTransitionTarget(oOb)!=OBJECT_INVALID) { // transition nCount=GetLocalInt(oMod,sDumpPre+"dtrans"); nCount++; SetLocalInt(oMod,sDumpPre+"dtrans",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Adtrans"); nCount++; SetLocalInt(oMod,sDumpPre+"Adtrans",nCount); } // transition } // door else if (nOT==OBJECT_TYPE_WAYPOINT) { // waypoints nCount=GetLocalInt(oMod,sDumpPre+"waypoints"); nCount++; SetLocalInt(oMod,sDumpPre+"waypoints",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Awaypoints"); nCount++; SetLocalInt(oMod,sDumpPre+"Awaypoints",nCount); } // waypoints else { // other nCount=GetLocalInt(oMod,sDumpPre+"other"); nCount++; SetLocalInt(oMod,sDumpPre+"other",nCount); nCount=GetLocalInt(oMod,sDumpPre+"Aother"); nCount++; SetLocalInt(oMod,sDumpPre+"Aother",nCount); } // other oOb=GetNextObjectInArea(oArea); } // count objects nCount=GetLocalInt(oMod,sDumpPre+"areas"); nCount++; SetLocalInt(oMod,sDumpPre+"areas",nCount); DelayCommand(1.0,fnOutputAreaStats()); DelayCommand(1.5,fnStatsByArea(nMainC+1,0,OBJECT_INVALID)); // next area } // count items } // fnStatsByArea void fnBeginDump() { // initiate the dump object oMod=GetModule(); SendMessageToPC(GetLocalObject(oMod,"oRTSVoteInitiate"),"The DEEP DEBUG DUMP has begun. You will be notified when it is complete."); fnCleanupVariables(); PrintString("[--- STATISTICS BROKEN DOWN BY AREA ---]"); fnStatsByArea(0,0,OBJECT_INVALID); } // initiate the dump