generated from Jaysyn/ModuleTemplate
167 lines
5.6 KiB
Plaintext
167 lines
5.6 KiB
Plaintext
// -----------------------------------------------------------------------------
|
|
// sj_debug_i
|
|
// -----------------------------------------------------------------------------
|
|
/*
|
|
Debug Library
|
|
/*
|
|
// -----------------------------------------------------------------------------
|
|
/*
|
|
Version: 0.00 - 26 Jun 2004 - Sunjammer
|
|
- cut-down version for use with sj_tilemagic_i
|
|
|
|
*/
|
|
// -----------------------------------------------------------------------------
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// CONSTANTS
|
|
// -----------------------------------------------------------------------------
|
|
|
|
// name of setting variables
|
|
const string SJ_VAR_DEBUG_ACTIVE = "sj_debug_active";
|
|
const string SJ_VAR_DEBUG_ERROR = "sj_debug_error";
|
|
const string SJ_VAR_DEBUG_LEVEL = "sj_debug_level";
|
|
const string SJ_VAR_DEBUG_VOLUME = "sj_debug_volume";
|
|
|
|
// debug levels
|
|
const int SJ_DEBUG_LEVEL_ERROR = 0; // errors
|
|
const int SJ_DEBUG_LEVEL_TRACE = 1; // errors & trace
|
|
const int SJ_DEBUG_LEVEL_WATCH = 2; // errors & trace & watch
|
|
|
|
// debug volumes
|
|
const int SJ_DEBUG_VOLUME_SILENT = 0; // log
|
|
const int SJ_DEBUG_VOLUME_QUIET = 1; // log & DMs
|
|
const int SJ_DEBUG_VOLUME_NOISY = 2; // log & DMs & PCs
|
|
|
|
// prefixes for printing
|
|
const string SJ_DEBUG_PREFIX_ERROR = "** ERROR: ";
|
|
const string SJ_DEBUG_PREFIX_TRACE = "** TRACE: ";
|
|
const string SJ_DEBUG_PREFIX_WATCH = "** WATCH: ";
|
|
|
|
// debug error message
|
|
const string SJ_DEBUG_TEXT_ERROR = "An error occured at time when there was no-one to notify. Please check the server log for details.";
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// PROTOTYPES
|
|
// -----------------------------------------------------------------------------
|
|
|
|
// Sends sMessage to all players
|
|
// - sMessage: string to display
|
|
void SendMessageToAllPCs(string sMessage);
|
|
|
|
// Writes sMessage to the server log file and sends it as a server message to
|
|
// all DMs and PCs as required. Arguements and module settings are interpreted
|
|
// so as to provide the most information to the most recipients.
|
|
// - sMessage: string to print/display
|
|
// - nActive: TRUE or FALSE, is subject to module settings
|
|
// - nLevel: SJ_DEBUG_LEVEL_* constant, is subject to module settings
|
|
// - nVolume: SJ_DEBUG_VOLUME_* constant, is subject to module settings
|
|
void SJ_Debug(string sMessage, int nActive = FALSE, int nLevel = 0, int nVolume = 0);
|
|
|
|
// Returns the module debug active state. The active state controls if debug
|
|
// messages are logged or displayed by default. The default active state can be
|
|
// overridden by nActive to TRUE in individual function calls.
|
|
// * Returns: TRUE or FALSE
|
|
// * OnError: returns FALSE
|
|
int SJ_Debug_GetActive();
|
|
|
|
// Returns the module debug level. The level contols which type of debug
|
|
// messages are logged or displayed. Messages exceeding the module debug level
|
|
// will be ignored.
|
|
// * Returns: SJ_DEBUG_LEVEL_* constant
|
|
// * OnError: returns 0
|
|
int SJ_Debug_GetLevel();
|
|
|
|
// Returns the module debug volume. The volume controls which clients apps will
|
|
// recieve any debug messages.
|
|
// * Returns: SJ_DEBUG_VOLUME_* constant
|
|
// * OnError: returns 0
|
|
int SJ_Debug_GetVolume();
|
|
|
|
// Returns the module debug error flag. The debug error flag ensures that at
|
|
// least one DM is notified if an error has occurred.
|
|
// - OnError: TRUE or FALSE
|
|
void SJ_Debug_SetErrorFlag(int nError);
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// FUNCTIONS
|
|
// -----------------------------------------------------------------------------
|
|
|
|
void SendMessageToAllPCs(string sMessage)
|
|
{
|
|
// find each PC and display message
|
|
object oPC = GetFirstPC();
|
|
while(GetIsObjectValid(oPC))
|
|
{
|
|
SendMessageToPC(oPC, sMessage);
|
|
oPC = GetNextPC();
|
|
}
|
|
}
|
|
|
|
void SJ_Debug(string sMessage, int nActive = FALSE, int nLevel = 0, int nVolume = 0)
|
|
{
|
|
// if either param or setting is active ...
|
|
if(nActive || SJ_Debug_GetActive())
|
|
{
|
|
// and the level is within set level ...
|
|
if(nLevel <= SJ_Debug_GetLevel())
|
|
{
|
|
// then start debugging!
|
|
int nDebugVolume = SJ_Debug_GetVolume();
|
|
|
|
// print to server log ...
|
|
PrintString(sMessage);
|
|
|
|
// and send message to DMs when either volume exceeds silent ...
|
|
if(nVolume > SJ_DEBUG_VOLUME_SILENT || nDebugVolume > SJ_DEBUG_VOLUME_SILENT)
|
|
{
|
|
object oPC = GetFirstPC();
|
|
while(GetIsObjectValid(oPC))
|
|
{
|
|
// provided at least one DM is on:
|
|
if(GetIsDM(oPC))
|
|
{
|
|
// display debug message and crop the error flag
|
|
SendMessageToAllDMs(sMessage);
|
|
SJ_Debug_SetErrorFlag(FALSE);
|
|
break;
|
|
}
|
|
oPC = GetNextPC();
|
|
}
|
|
}
|
|
|
|
// and send message to PCs when either volume exceeds quiet.
|
|
if(nVolume > SJ_DEBUG_VOLUME_QUIET || nDebugVolume > SJ_DEBUG_VOLUME_QUIET)
|
|
{
|
|
SendMessageToAllPCs(sMessage);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
int SJ_Debug_GetActive()
|
|
{
|
|
return GetLocalInt(GetModule(), SJ_VAR_DEBUG_ACTIVE);
|
|
}
|
|
|
|
|
|
int SJ_Debug_GetLevel()
|
|
{
|
|
return GetLocalInt(GetModule(), SJ_VAR_DEBUG_LEVEL);
|
|
}
|
|
|
|
|
|
int SJ_Debug_GetVolume()
|
|
{
|
|
return GetLocalInt(GetModule(), SJ_VAR_DEBUG_VOLUME);
|
|
}
|
|
|
|
|
|
void SJ_Debug_SetErrorFlag(int nError)
|
|
{
|
|
SetLocalInt(GetModule(), SJ_VAR_DEBUG_ERROR, nError);
|
|
}
|