public static void LoadForGuest(Player player) { var ssc = new ServerCharacter(StartingOutInfo, player); ssc.ApplyToPlayer(player); //TODO add guest events //Check to make sure the player is the same player (ie skin, clothes) //Add hooks for pre and post apply // var ctx = new HookContext() // { // Player = player, // Sender = player // }; // // var args = new TDSM.Core.Events.HookArgs.PreApplyServerSideCharacter() // { // Character = ssc // }; // // TDSM.Core.Events.HookPoints.PreApplyServerSideCharacter.Invoke(ref ctx, ref args); // args.Character.ApplyToPlayer(player); // var args1 = new TDSM.Core.Events.HookArgs.PostApplyServerSideCharacter(); // TDSM.Core.Events.HookPoints.PostApplyServerSideCharacter.Invoke(ref ctx, ref args1); }
public static ServerCharacter SavePlayerData(Player player) { if (player.AuthenticatedAs != null) { var file = Path.Combine(Globals.CharacterDataPath, player.AuthenticatedAs, ".ssc"); var data = new ServerCharacter(player); var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(file, json); } return(null); }
public static bool SavePlayerData(IDbConnection ctx, IDbTransaction txn, bool save, Player player) #endif { if (!player.IsAuthenticated()) { return(false); } //If using a flat based system ensure the MODE is stored string authName = null; if (Mode == CharacterMode.AUTH) { var auth = player.GetAuthenticatedAs(); if (!String.IsNullOrEmpty(auth)) { authName = auth; } } else if (Mode == CharacterMode.UUID) { if (!String.IsNullOrEmpty(player.ClientUUId)) { authName = player.ClientUUId + '@' + player.name; } } if (!String.IsNullOrEmpty(authName)) { if (Storage.IsAvailable) { var auth = player.GetAuthenticatedAs(); #if ENTITY_FRAMEWORK_6 int userId = 0; if (Mode == CharacterMode.AUTH) { var user = AuthenticatedUsers.GetUser(auth); if (user == null) { OTA.Logging.ProgramLog.Error.Log("No user found "); return(false); } userId = user.Id; } else if (Mode != CharacterMode.UUID) { return(false); } //Sync the character var character = ctx.GetCharacter(Mode, userId, player.ClientUUId); if (null == character) { character = ctx.AddCharacter(userId, player); } else { character.UpdateCharacter(userId, player); } //Sync items var items = ctx.Items.Where(x => x.CharacterId == character.Id).ToArray(); if (!SaveCharacterItems(ctx, save, player, character.Id, player.inventory, ItemType.Inventory, items)) { return(false); } if (!SaveCharacterItems(ctx, save, player, character.Id, player.armor, ItemType.Armor, items)) { return(false); } if (!SaveCharacterItems(ctx, save, player, character.Id, player.dye, ItemType.Dye, items)) { return(false); } if (!SaveCharacterItems(ctx, save, player, character.Id, player.miscEquips, ItemType.Equipment, items)) { return(false); } if (!SaveCharacterItems(ctx, save, player, character.Id, player.miscDyes, ItemType.MiscDyes, items)) { return(false); } if (!SaveCharacterItem(ctx, save, player, character.Id, ItemType.Trash, player.trashItem, 0, items)) { return(false); } #elif ENTITY_FRAMEWORK_7 #else var character = Tables.CharacterTable.GetCharacter(ctx, txn, Mode, auth, player.ClientUUId); if (character == null) { // if (player.ClearPluginData(Key_NewCharacter)) // { character = Tables.CharacterTable.NewCharacter ( ctx, txn, Mode, auth, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); // } // else // { // ProgramLog.Error.Log("Failed to save SSC for player: {0}", player.name); // return false; // } } else { character = Tables.CharacterTable.UpdateCharacter ( ctx, txn, Mode, auth, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); } if (character != null) { if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.inventory, ItemType.Inventory)) { return(false); } if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.armor, ItemType.Armor)) { return(false); } if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.dye, ItemType.Dye)) { return(false); } if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.miscEquips, ItemType.Equipment)) { return(false); } if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.miscDyes, ItemType.MiscDyes)) { return(false); } if (!SaveCharacterItem(ctx, txn, save, player, character.Id, ItemType.Trash, player.trashItem, 0)) { return(false); } // for (var i = 0; i < player.inventory.Length; i++) // { // var item = player.inventory[i]; // var netId = 0; // var prefix = 0; // var stack = 0; // var favorite = false; // // if (item != null) // { // netId = item.netID; // prefix = item.prefix; // stack = item.stack; // favorite = item.favorited; // } // // var itemId = Tables.ItemTable.GetItem(ItemType.Inventory, i, characterId); // if (itemId > 0) // { // if (!Tables.ItemTable.UpdateItem(ItemType.Inventory, netId, prefix, stack, favorite, i, characterId)) // { // ProgramLog.Error.Log("Failed to save Inventory for player: {0}", player.name); // return false; // } // } // else // { // itemId = Tables.ItemTable.NewItem(ItemType.Inventory, netId, prefix, stack, favorite, i, characterId); // } // } // for (var i = 0; i < player.armor.Length; i++) // { // var item = player.armor[i]; // var netId = 0; // var prefix = 0; // var stack = 0; // var favorite = false; // // if (item != null) // { // netId = item.netID; // prefix = item.prefix; // stack = item.stack; // favorite = item.favorited; // } // // var itemId = Tables.ItemTable.GetItem(ItemType.Armor, i, characterId); // if (itemId > 0) // { // if (!Tables.ItemTable.UpdateItem(ItemType.Armor, netId, prefix, stack, favorite, i, characterId)) // { // ProgramLog.Error.Log("Failed to save Armor for player: {0}", player.name); // return false; // } // } // else // { // itemId = Tables.ItemTable.NewItem(ItemType.Armor, netId, prefix, stack, favorite, i, characterId); // } // } // for (var i = 0; i < player.dye.Length; i++) // { // var item = player.dye[i]; // var netId = 0; // var prefix = 0; // var stack = 0; // var favorite = false; // // if (item != null) // { // netId = item.netID; // prefix = item.prefix; // stack = item.stack; // favorite = item.favorited; // } // // var itemId = Tables.ItemTable.GetItem(ItemType.Dye, i, characterId); // if (itemId > 0) // { // if (!Tables.ItemTable.UpdateItem(ItemType.Dye, netId, prefix, stack, favorite, i, characterId)) // { // ProgramLog.Error.Log("Failed to save Dye for player: {0}", player.name); // return false; // } // } // else // { // itemId = Tables.ItemTable.NewItem(ItemType.Dye, netId, prefix, stack, favorite, i, characterId); // } // } } #endif } else { var dir = Path.Combine(Globals.CharacterDataPath, Mode.ToString()); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var file = Path.Combine(dir, authName + ".ssc"); var data = new ServerCharacter(player); // if (data.Buffs != null && data.BuffTime != null) // { // var max = Math.Min(data.Buffs.Length, data.BuffTime.Length); // for (var x = 0; x < max; x++) // { // if (data.Buffs[x] > 0) // { // var time = data.BuffTime[x] * 60; // // ProgramLog.Plugin.Log("Saving buff {0} for {1}/{2}", data.Buffs[x], time, data.BuffTime[x]); // } // } // } var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(file, json); return(true); } } return(false); }
public static ServerCharacter SavePlayerData(Player player) { if (player.AuthenticatedAs != null) { var file = Path.Combine(Globals.CharacterDataPath, player.AuthenticatedAs, ".ssc"); var data = new ServerCharacter(player); var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(file, json); } return null; }
public static bool SavePlayerData(IDbConnection ctx, IDbTransaction txn, bool save, Player player) #endif { if (!player.IsAuthenticated()) return false; //If using a flat based system ensure the MODE is stored string authName = null; if (Mode == CharacterMode.AUTH) { var auth = player.GetAuthenticatedAs(); if (!String.IsNullOrEmpty(auth)) authName = auth; } else if (Mode == CharacterMode.UUID) { if (!String.IsNullOrEmpty(player.ClientUUId)) authName = player.ClientUUId + '@' + player.name; } if (!String.IsNullOrEmpty(authName)) { if (Storage.IsAvailable) { var auth = player.GetAuthenticatedAs(); #if ENTITY_FRAMEWORK_6 int userId = 0; if (Mode == CharacterMode.AUTH) { var user = AuthenticatedUsers.GetUser(auth); if (user == null) { OTA.Logging.ProgramLog.Error.Log("No user found "); return false; } userId = user.Id; } else if (Mode != CharacterMode.UUID) return false; //Sync the character var character = ctx.GetCharacter(Mode, userId, player.ClientUUId); if (null == character) { character = ctx.AddCharacter(userId, player); } else character.UpdateCharacter(userId, player); //Sync items var items = ctx.Items.Where(x => x.CharacterId == character.Id).ToArray(); if (!SaveCharacterItems(ctx, save, player, character.Id, player.inventory, ItemType.Inventory, items)) return false; if (!SaveCharacterItems(ctx, save, player, character.Id, player.armor, ItemType.Armor, items)) return false; if (!SaveCharacterItems(ctx, save, player, character.Id, player.dye, ItemType.Dye, items)) return false; if (!SaveCharacterItems(ctx, save, player, character.Id, player.miscEquips, ItemType.Equipment, items)) return false; if (!SaveCharacterItems(ctx, save, player, character.Id, player.miscDyes, ItemType.MiscDyes, items)) return false; if (!SaveCharacterItem(ctx, save, player, character.Id, ItemType.Trash, player.trashItem, 0, items)) return false; #elif ENTITY_FRAMEWORK_7 #else var character = Tables.CharacterTable.GetCharacter(ctx, txn, Mode, auth, player.ClientUUId); if (character == null) { // if (player.ClearPluginData(Key_NewCharacter)) // { character = Tables.CharacterTable.NewCharacter ( ctx, txn, Mode, auth, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); // } // else // { // ProgramLog.Error.Log("Failed to save SSC for player: {0}", player.name); // return false; // } } else { character = Tables.CharacterTable.UpdateCharacter ( ctx, txn, Mode, auth, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); } if (character != null) { if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.inventory, ItemType.Inventory)) return false; if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.armor, ItemType.Armor)) return false; if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.dye, ItemType.Dye)) return false; if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.miscEquips, ItemType.Equipment)) return false; if (!SaveCharacterItems(ctx, txn, save, player, character.Id, player.miscDyes, ItemType.MiscDyes)) return false; if (!SaveCharacterItem(ctx, txn, save, player, character.Id, ItemType.Trash, player.trashItem, 0)) return false; // for (var i = 0; i < player.inventory.Length; i++) // { // var item = player.inventory[i]; // var netId = 0; // var prefix = 0; // var stack = 0; // var favorite = false; // // if (item != null) // { // netId = item.netID; // prefix = item.prefix; // stack = item.stack; // favorite = item.favorited; // } // // var itemId = Tables.ItemTable.GetItem(ItemType.Inventory, i, characterId); // if (itemId > 0) // { // if (!Tables.ItemTable.UpdateItem(ItemType.Inventory, netId, prefix, stack, favorite, i, characterId)) // { // ProgramLog.Error.Log("Failed to save Inventory for player: {0}", player.name); // return false; // } // } // else // { // itemId = Tables.ItemTable.NewItem(ItemType.Inventory, netId, prefix, stack, favorite, i, characterId); // } // } // for (var i = 0; i < player.armor.Length; i++) // { // var item = player.armor[i]; // var netId = 0; // var prefix = 0; // var stack = 0; // var favorite = false; // // if (item != null) // { // netId = item.netID; // prefix = item.prefix; // stack = item.stack; // favorite = item.favorited; // } // // var itemId = Tables.ItemTable.GetItem(ItemType.Armor, i, characterId); // if (itemId > 0) // { // if (!Tables.ItemTable.UpdateItem(ItemType.Armor, netId, prefix, stack, favorite, i, characterId)) // { // ProgramLog.Error.Log("Failed to save Armor for player: {0}", player.name); // return false; // } // } // else // { // itemId = Tables.ItemTable.NewItem(ItemType.Armor, netId, prefix, stack, favorite, i, characterId); // } // } // for (var i = 0; i < player.dye.Length; i++) // { // var item = player.dye[i]; // var netId = 0; // var prefix = 0; // var stack = 0; // var favorite = false; // // if (item != null) // { // netId = item.netID; // prefix = item.prefix; // stack = item.stack; // favorite = item.favorited; // } // // var itemId = Tables.ItemTable.GetItem(ItemType.Dye, i, characterId); // if (itemId > 0) // { // if (!Tables.ItemTable.UpdateItem(ItemType.Dye, netId, prefix, stack, favorite, i, characterId)) // { // ProgramLog.Error.Log("Failed to save Dye for player: {0}", player.name); // return false; // } // } // else // { // itemId = Tables.ItemTable.NewItem(ItemType.Dye, netId, prefix, stack, favorite, i, characterId); // } // } } #endif } else { var dir = Path.Combine(Globals.CharacterDataPath, Mode.ToString()); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); var file = Path.Combine(dir, authName + ".ssc"); var data = new ServerCharacter(player); // if (data.Buffs != null && data.BuffTime != null) // { // var max = Math.Min(data.Buffs.Length, data.BuffTime.Length); // for (var x = 0; x < max; x++) // { // if (data.Buffs[x] > 0) // { // var time = data.BuffTime[x] * 60; // // ProgramLog.Plugin.Log("Saving buff {0} for {1}/{2}", data.Buffs[x], time, data.BuffTime[x]); // } // } // } var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(file, json); return true; } } return false; }
public static bool SavePlayerData(Player player) { //If using a flat based system ensure the MODE is stored string authName = null; if (Mode == CharacterMode.AUTH) { if (!String.IsNullOrEmpty(player.AuthenticatedAs)) authName = player.AuthenticatedAs; } else if (Mode == CharacterMode.UUID) { if (!String.IsNullOrEmpty(player.ClientUUId)) authName = player.ClientUUId + '@' + player.name; } if (!String.IsNullOrEmpty(authName)) { if (Storage.IsAvailable) { // var create = player.GetPluginData<Boolean>(Key_NewCharacter, false); var existingId = Tables.CharacterTable.GetCharacterId(Mode, player.AuthenticatedAs, player.ClientUUId); if (existingId <= 0) { if (player.ClearPluginData(Key_NewCharacter)) { var characterId = Tables.CharacterTable.NewCharacter ( Mode, player.AuthenticatedAs, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); if (characterId > 0) { } } else { ProgramLog.Error.Log("Failed to save SSC for player: {0}", player.Name); } } else { Tables.CharacterTable.UpdateCharacter ( Mode, player.AuthenticatedAs, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); var characterId = Tables.CharacterTable.GetCharacterId(Mode, player.AuthenticatedAs, player.ClientUUId); if (characterId > 0) { } } } else { var dir = Path.Combine(Globals.CharacterDataPath, Mode.ToString()); if (!Directory.Exists(dir)) Directory.CreateDirectory(dir); var file = Path.Combine(dir, authName + ".ssc"); var data = new ServerCharacter(player); // if (data.Buffs != null && data.BuffTime != null) // { // var max = Math.Min(data.Buffs.Length, data.BuffTime.Length); // for (var x = 0; x < max; x++) // { // if (data.Buffs[x] > 0) // { // var time = data.BuffTime[x] * 60; // // ProgramLog.Plugin.Log("Saving buff {0} for {1}/{2}", data.Buffs[x], time, data.BuffTime[x]); // } // } // } var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(file, json); return true; } } return false; }
public static bool SavePlayerData(Player player) { //If using a flat based system ensure the MODE is stored string authName = null; if (Mode == CharacterMode.AUTH) { if (!String.IsNullOrEmpty(player.AuthenticatedAs)) { authName = player.AuthenticatedAs; } } else if (Mode == CharacterMode.UUID) { if (!String.IsNullOrEmpty(player.ClientUUId)) { authName = player.ClientUUId + '@' + player.name; } } if (!String.IsNullOrEmpty(authName)) { if (Storage.IsAvailable) { // var create = player.GetPluginData<Boolean>(Key_NewCharacter, false); var existingId = Tables.CharacterTable.GetCharacterId(Mode, player.AuthenticatedAs, player.ClientUUId); if (existingId <= 0) { if (player.ClearPluginData(Key_NewCharacter)) { var characterId = Tables.CharacterTable.NewCharacter ( Mode, player.AuthenticatedAs, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); if (characterId > 0) { } } else { ProgramLog.Error.Log("Failed to save SSC for player: {0}", player.Name); } } else { Tables.CharacterTable.UpdateCharacter ( Mode, player.AuthenticatedAs, player.ClientUUId, player.statLife, player.statLifeMax, player.statMana, player.statManaMax, player.SpawnX, player.SpawnY, player.hair, player.hairDye, player.hideVisual, player.difficulty, player.hairColor, player.skinColor, player.eyeColor, player.shirtColor, player.underShirtColor, player.pantsColor, player.shoeColor, player.anglerQuestsFinished ); var characterId = Tables.CharacterTable.GetCharacterId(Mode, player.AuthenticatedAs, player.ClientUUId); if (characterId > 0) { } } } else { var dir = Path.Combine(Globals.CharacterDataPath, Mode.ToString()); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } var file = Path.Combine(dir, authName + ".ssc"); var data = new ServerCharacter(player); // if (data.Buffs != null && data.BuffTime != null) // { // var max = Math.Min(data.Buffs.Length, data.BuffTime.Length); // for (var x = 0; x < max; x++) // { // if (data.Buffs[x] > 0) // { // var time = data.BuffTime[x] * 60; // // ProgramLog.Plugin.Log("Saving buff {0} for {1}/{2}", data.Buffs[x], time, data.BuffTime[x]); // } // } // } var json = Newtonsoft.Json.JsonConvert.SerializeObject(data); System.IO.File.WriteAllText(file, json); return(true); } } return(false); }