private static void SaveThread() { while (true) { Thread.Sleep(8389); try { TSPlayer[] players = TShock.Players; foreach (TSPlayer tSPlayer in players) { if (tSPlayer != null && SrvPlayers[tSPlayer.Index] != null) { PlayTime[(byte)tSPlayer.Index].Stop(); SrvPlayers[tSPlayer.Index].PlayTime += (long)PlayTime[(byte)tSPlayer.Index].Elapsed.TotalSeconds; PlayTime[(byte)tSPlayer.Index].Restart(); DataBase.UpdatePlayTime(tSPlayer.Account, SrvPlayers[tSPlayer.Index].PlayTime); DataBase.SrvPlayerUpdate(SrvPlayers[tSPlayer.Index]); } } Goals.ProgressUpdate(); } catch (Exception) { //Ignore } } }
private void OnWorldSave(WorldSaveEventArgs args) { TSPlayer[] players = TShock.Players; foreach (TSPlayer tSPlayer in players) { if (tSPlayer != null && tSPlayer.Account != null) { DataBase.SrvPlayerUpdate(SrvPlayers[tSPlayer.Index]); } } Goals.ProgressUpdate(); }
protected override void Dispose(bool disposing) { if (disposing) { Goals.ProgressUpdate(); ServerApi.Hooks.GameInitialize.Deregister(this, global::SurvivalCore.Economy.Economy.OnInitialize); ServerApi.Hooks.WorldSave.Deregister(this, OnWorldSave); ServerApi.Hooks.NetGetData.Deregister(this, OnGetData); ServerApi.Hooks.ServerJoin.Deregister(this, OnJoin); ServerApi.Hooks.ServerLeave.Deregister(this, OnLeave); ServerApi.Hooks.ServerConnect.Deregister(this, OnConnect); ServerApi.Hooks.NetSendData.Deregister(this, OnSendData); AccountHooks.AccountCreate -= OnAccountC; AccountHooks.AccountDelete -= OnAccountD; PlayerHooks.PlayerPostLogin -= OnPlayerPostLogin; Hooks.Npc.PostUpdate -= NpcPostUpdate; } base.Dispose(disposing); }