void OnPlayerDisconnected(ref HookContext ctx, ref HookArgs.PlayerLeftGame args) { if (Terraria.Main.ServerSideCharacter) { #if ENTITY_FRAMEWORK_7 using (var dbCtx = new TContext()) #elif DAPPER using (var dbCtx = DatabaseFactory.CreateConnection()) #endif { using (var txn = dbCtx.BeginTransaction()) { CharacterManager.SavePlayerData(dbCtx, txn, true, ctx.Player); txn.Commit(); } } } if (ctx.Player != null) { if (CommandDictionary.ContainsKey(ctx.Player.name)) { CommandDictionary.Remove(ctx.Player.name); } //ProgramLog.Log("{0}", ctx.Player.name); //, args.Prefix + " " + args.ArgumentString); } #if TDSMServer if (RestartWhenNoPlayers && ClientConnection.All.Count - 1 == 0) { PerformRestart(); } #endif }
void OnPlayerDisconnected(ref HookContext ctx, ref HookArgs.PlayerLeftGame args) { #if TDSMServer if (RestartWhenNoPlayers && ClientConnection.All.Count - 1 == 0) { PerformRestart(); } #endif }
void OnPlayerLeave(ref HookContext ctx, ref HookArgs.PlayerLeftGame args) { var player = ctx.Player; if (properties.RememberPlayerPositions && player != null && player.AuthenticatedAs != null) { SpawnPositions[player.Name] = player.Position / 16; } }
public static void OnPlayerLeave(Player player) { #if Full_API var ctx = new HookContext { Player = player, Sender = player }; var args = new HookArgs.PlayerLeftGame { Slot = player.whoAmI }; ctx.SetResult(HookResult.DEFAULT, false); HookPoints.PlayerLeftGame.Invoke(ref ctx, ref args); #endif }
public static void OnPlayerLeft(Player player, ServerSlot slot, bool announced) { player.active = false; if (announced) { ProgramLog.Log("{0} @ {1}: LEAVE {2}", slot.remoteAddress, slot.Id, player.name); var msg = NewNetMessage.PrepareThreadInstance(); msg.SynchBegin(player.whoAmI, 0 /*inactive*/); if (player.DisconnectReason != null) { msg.PlayerChat(255, string.Concat(player.Name, " disconnected (", player.DisconnectReason, ")."), 255, 165, 0); } else { msg.PlayerChat(255, string.Concat(player.name, " has left."), 255, 240, 20); } msg.BroadcastExcept(player.whoAmI); } var ctx = new HookContext { Player = player, Sender = player, }; var args = new HookArgs.PlayerLeftGame { Slot = slot.Id }; HookPoints.PlayerLeftGame.Invoke(ref ctx, ref args); }
void AlertIP(ref HookContext ctx, ref HookArgs.PlayerLeftGame args) { string msg = String.Format("User: {0} has left :(", ctx.Player.name); instance.SendMessage(msg, _userName, _channel, _iconEmoji); }