This is what I use, of course I am using the NWNX2 shutdown plugin but it does either way. It restarts about every 24hrs as configured.
////////////////////////////////////////////////////////////////////////////////
//::
//:: This script will shutdown or restart your module using either NWNX2 or
//:: not. At the very bottom of the script there are two lines which depending
//:: on whether you use the NWNX2 restart plugin or not will determine your
//:: selection of code. Comment out "SetLocalString(GetModule(),"NWNX!RESETPLUGIN!SHUTDOWN","1");"
//:: if you DO NOT use the NWNX2 restart plugin.
//::
//:: This script also accounts for horses being used hence the execute "x3_mod_def_hb"
//::
////////////////////////////////////////////////////////////////////////////////
void main()
{
int iHour = GetTimeHour ();
int iMinute = GetTimeMinute ();
int iSecond = GetTimeSecond ();
int iMillisecond = GetTimeMillisecond();
SetTime(iHour, iMinute, iSecond, iMillisecond);
ExecuteScript("x3_mod_def_hb", OBJECT_SELF);
int timekeeper = GetLocalInt(GetModule(), "loadtimer");
SetLocalInt(GetModule(), "loadtimer", (timekeeper+1)) ;
if (timekeeper == 9000){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
SendMessageToPC(oWarn, "Auto Restart Sequence Will Begin In One Hour!!!");
oWarn = GetNextPC();
}
}
if (timekeeper == 9300){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
SendMessageToPC(oWarn, "Auto Restart Sequence Will Begin In Thirty Minutes!!!");
oWarn = GetNextPC();
}
}
if (timekeeper == 9450){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
SendMessageToPC(oWarn, "Auto Restart Sequence Will Begin In FIFTEEN Minutes!!!");
oWarn = GetNextPC();
}
}
if (timekeeper == 9550){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
SendMessageToPC(oWarn, "Auto Restart Sequence Will Begin In FIVE Minutes!!!");
oWarn = GetNextPC();
}
}
if (timekeeper == 9598){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
location lVis = GetLocation(oWarn);
SendMessageToPC(oWarn, "Auto Reload Sequence Active: Server will restart in two minutes.");
SendMessageToPC(oWarn, "You WILL have to reconnect.");
SendMessageToPC(oWarn, "Saving all characters.");
ExportAllCharacters();
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_FNF_TIME_STOP), lVis, 5.0);
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_FNF_SCREEN_SHAKE), lVis, 20.0);
oWarn = GetNextPC();
}
}
if (timekeeper == 9599){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
location lVis = GetLocation(oWarn);
SendMessageToPC(oWarn, "Auto Restart Sequence Active, you will have to reconnect.");
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_FNF_METEOR_SWARM), lVis, 5.0);
oWarn = GetNextPC();
}
}
if (timekeeper == 9600){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
location lVis = GetLocation(oWarn);
SendMessageToPC(oWarn, "Auto Restart Sequence Active, you will have to reconnect.");
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_FNF_METEOR_SWARM), lVis, 5.0);
oWarn = GetNextPC();
}
}
if (timekeeper == 9601){
object oWarn = GetFirstPC();
while ((oWarn != OBJECT_INVALID))
{
location lVis = GetLocation(oWarn);
SendMessageToPC(oWarn, "Auto Restart Sequence Active, you will have to reconnect.");
ApplyEffectAtLocation(DURATION_TYPE_TEMPORARY, EffectVisualEffect(VFX_FNF_METEOR_SWARM), lVis, 5.0);
oWarn = GetNextPC();
}
}
if (timekeeper >= 9602){
SetLocalInt(GetModule(), "loadtimer", 0) ;
//DelayCommand( 20.0, StartNewModule( GetModuleName() ) ); // <---- use this for module reload
SetLocalString(GetModule(),"NWNX!RESETPLUGIN!SHUTDOWN","1"); // <---- use this if using the NWNx restart plugin
}
}
Modifié par Birdman076, 19 décembre 2010 - 04:55 .