public void SaveCharacterData(DatabaseConnection dbConnection) { if (loaded && !SavingLocked) { dataLock.EnterWriteLock(); try { if (playerData.AvailableModules == null) { playerData.AvailableModules = ""; } PlayerDataManager.SavePlayerAvailableExpKitModules(dbConnection.Database, playerData); PlayerDataManager.SavePlayerCharacteristics(dbConnection.Database, playerData); PlayerDataManager.SavePlayerGuild(dbConnection.Database, playerData); PlayerDataManager.SavePlayerItemGenerals(dbConnection.Database, playerData); JobList.SaveJobList(dbConnection); //PlayerDataManager.SavePlayerJobList(dbConnection.Database, playerData); PlayerDataManager.SavePlayerLocation(dbConnection.Database, playerData); //PlayerDataManager.SavePlayerMissionBoardGenerals(dbConnection.Database, playerData); missionBoard.SaveMissionBoardData(); PlayerDataManager.SavePlayerMissionBoardMissions(dbConnection.Database, playerData); PlayerDataManager.SavePlayerMissionGenerals(dbConnection.Database, playerData); PlayerDataManager.SavePlayerStoryGenerals(dbConnection.Database, playerData); PlayerDataManager.SavePlayerStoryHelperStateSettings(dbConnection.Database, playerData); PlayerDataManager.SavePlayerStatistics(dbConnection.Database, playerData); // Save inventory ListPair<int, Characters.InventoryItem> updatedInventory = new ListPair<int, Characters.InventoryItem>(); for (int i = 1; i <= Inventory.Count; i++) { if (Inventory[i].Updated) { updatedInventory.Add(i, Inventory[i].BaseInventoryItem); Inventory[i].Updated = false; } } PlayerDataManager.SavePlayerInventoryUpdates(dbConnection.Database, CharID, updatedInventory); // Save bank ListPair<int, Characters.InventoryItem> updatedBank = new ListPair<int, Characters.InventoryItem>(); for (int i = 1; i <= Bank.Count; i++) { if (Bank[i].Updated) { updatedBank.Add(i, Bank[i].BaseInventoryItem); Bank[i].Updated = false; } } PlayerDataManager.SavePlayerBankUpdates(dbConnection.Database, CharID, updatedBank); // Save trigger events playerData.TriggerEvents.Clear(); for (int i = 0; i < triggerEvents.Count; i++) { PlayerDataTriggerEvent triggerEvent = new PlayerDataTriggerEvent(); triggerEvents[i].Save(triggerEvent); playerData.TriggerEvents.Add(triggerEvent); } PlayerDataManager.SavePlayerTriggerEvents(dbConnection.Database, playerData); // Save team for (int i = 0; i < team.Length; i++) { playerData.TeamMembers[i].RecruitIndex = team[i].RecruitIndex; playerData.TeamMembers[i].UsingTempStats = team[i].InTempMode; if (team[i].Loaded) { team[i].Save(dbConnection); } } PlayerDataManager.SavePlayerTeam(dbConnection.Database, playerData); IMap map = GetCurrentMap(); if (map != null && (map.MapType == Enums.MapType.Instanced || map.MapType == Enums.MapType.RDungeonMap || map.MapType == Enums.MapType.House)) { map.Save(); //mInstancedMapManager.SaveActiveMap(); } lock (mapsToDelete) { AI.AIProcessor.mapGC.AddMaps(mapsToDelete); mapsToDelete.Clear(); } } catch (Exception ex) { System.Windows.Forms.MessageBox.Show("Map: " + MapID + System.Environment.NewLine + ex.ToString()); } finally { dataLock.ExitWriteLock(); } } }
public static void LoadPlayerTriggerEvents(MySql database, PlayerData playerData) { string query = "SELECT trigger_events.ID, trigger_events.Type, trigger_events.Action, " + "trigger_events.TriggerCommand, trigger_events.AutoRemove " + "FROM trigger_events " + "WHERE trigger_events.CharID = \'" + playerData.CharID + "\'"; foreach (DataColumnCollection columnCollection in database.RetrieveRowsEnumerable(query)) { PlayerDataTriggerEvent triggerEvent = new PlayerDataTriggerEvent(); triggerEvent.Items.Add("Type", columnCollection["Type"].ValueString); triggerEvent.Items.Add("ID", columnCollection["ID"].ValueString); triggerEvent.Items.Add("Action", columnCollection["Action"].ValueString); triggerEvent.Items.Add("TriggerCommand", columnCollection["TriggerCommand"].ValueString); triggerEvent.Items.Add("AutoRemove", columnCollection["AutoRemove"].ValueString); playerData.TriggerEvents.Add(triggerEvent); } for (int i = 0; i < playerData.TriggerEvents.Count; i++) { if (playerData.TriggerEvents[i].Items.GetValue("Type") == "1") { query = "SELECT map_load_trigger_event.MapID " + "FROM map_load_trigger_event " + "WHERE map_load_trigger_event.CharID = \'" + playerData.CharID + "\' " + "AND map_load_trigger_event.ID = \'" + playerData.TriggerEvents[i].Items.GetValue("ID") + "\'"; foreach (DataColumnCollection columnCollection in database.RetrieveRowsEnumerable(query)) { playerData.TriggerEvents[i].Items.Add("MapID", columnCollection["MapID"].ValueString); } } else if (playerData.TriggerEvents[i].Items.GetValue("Type") == "2") { query = "SELECT stepped_on_tile_trigger_event.MapID, stepped_on_tile_trigger_event.X, " + "stepped_on_tile_trigger_event.Y " + "FROM stepped_on_tile_trigger_event " + "WHERE stepped_on_tile_trigger_event.CharID = \'" + playerData.CharID + "\' " + "AND stepped_on_tile_trigger_event.ID = \'" + playerData.TriggerEvents[i].Items.GetValue("ID") + "\'"; foreach (DataColumnCollection columnCollection in database.RetrieveRowsEnumerable(query)) { playerData.TriggerEvents[i].Items.Add("MapID", columnCollection["MapID"].ValueString); playerData.TriggerEvents[i].Items.Add("X", columnCollection["X"].ValueString); playerData.TriggerEvents[i].Items.Add("Y", columnCollection["Y"].ValueString); } } else if (playerData.TriggerEvents[i].Items.GetValue("Type") == "3") { query = "SELECT step_counter_trigger_event.Steps, step_counter_trigger_event.StepsCounted " + "FROM step_counter_trigger_event " + "WHERE step_counter_trigger_event.CharID = \'" + playerData.CharID + "\' " + "AND step_counter_trigger_event.ID = \'" + playerData.TriggerEvents[i].Items.GetValue("ID") + "\'"; foreach (DataColumnCollection columnCollection in database.RetrieveRowsEnumerable(query)) { playerData.TriggerEvents[i].Items.Add("Steps", columnCollection["Steps"].ValueString); playerData.TriggerEvents[i].Items.Add("StepsCounted", columnCollection["StepsCounted"].ValueString); } } } }