72 lines
2.2 KiB
Plaintext
72 lines
2.2 KiB
Plaintext
|
// -----------------------------------------------------------------------------
|
||
|
// PROTOTYPES
|
||
|
// -----------------------------------------------------------------------------
|
||
|
|
||
|
// Send message to all players
|
||
|
void SE_MessageToAllPC(string sMsg);
|
||
|
|
||
|
// Restart module timer message
|
||
|
void SE_SendResetMsg();
|
||
|
|
||
|
// See the onmoduleload script to adjust the variables below.
|
||
|
// Restart module on a certain game month/s
|
||
|
// nMonth - game month to reset server
|
||
|
// fDelay - check the current calender month interval
|
||
|
// fTimer - count down timer prior to server reset
|
||
|
void SE_NWNX_ResetModuleCheck(int nMonth, float fDelay, float fTimer);
|
||
|
|
||
|
// -----------------------------------------------------------------------------
|
||
|
// FUNCTIONS
|
||
|
// -----------------------------------------------------------------------------
|
||
|
void SE_MessageToAllPC(string sMsg)
|
||
|
{
|
||
|
object oPC = GetFirstPC();
|
||
|
while (GetIsObjectValid(oPC))
|
||
|
{
|
||
|
SendMessageToPC(oPC, sMsg);
|
||
|
oPC = GetNextPC();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void SE_SendResetMsg()
|
||
|
{
|
||
|
float fMsgTimer = GetLocalFloat(GetModule(), "ResetTimer");
|
||
|
SetLocalFloat(GetModule(), "ResetTimer", fMsgTimer - 1.0);
|
||
|
SE_MessageToAllPC("Server reset in " + FloatToString(fMsgTimer, 0, 0) + " seconds.");
|
||
|
if(fMsgTimer != 0.0)
|
||
|
{
|
||
|
DelayCommand(1.0, SE_SendResetMsg());
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
|
||
|
object oPC = GetFirstPC();
|
||
|
ExportSingleCharacter(oPC);
|
||
|
oPC = GetNextPC();
|
||
|
|
||
|
while (GetIsObjectValid(oPC))
|
||
|
{
|
||
|
BootPC(oPC);
|
||
|
oPC = GetNextPC();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
void SE_NWNX_ResetModuleCheck(int nMonth, float fDelay, float fTimer)
|
||
|
{
|
||
|
//If the current calender month is greater than the nMonth*
|
||
|
//*see the onmoduleload script @ SE_NWNX_ResetModuleCheck( *, 30, 120);
|
||
|
int aMonth = GetCalendarMonth();
|
||
|
if( aMonth >= nMonth)
|
||
|
{
|
||
|
SE_MessageToAllPC(IntToString(nMonth) + " game months reached - Automated server reset initiated.");
|
||
|
SetLocalFloat(GetModule(), "ResetTimer", fTimer);
|
||
|
DelayCommand(GetLocalFloat(GetModule(), "ResetTimer") + 4.0, SetLocalString(GetModule(), "NWNX!RESETPLUGIN!SHUTDOWN", "1"));
|
||
|
SE_SendResetMsg();
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
DelayCommand(fDelay, SE_NWNX_ResetModuleCheck(nMonth, fDelay, fTimer));
|
||
|
}
|
||
|
}
|
||
|
|