예제 #1
0
        public static void SaveHouseMap(MySql database, string mapID, HouseMap map)
        {
            bool localTransaction = false;

            if (database.IsTransactionActive == false)
            {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveMapDump(database, mapID, map);

            // Save extra data associated with instanced maps
            database.UpdateOrInsert("map_house_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Owner", map.Owner),
                database.CreateColumn(false, "Room", map.Room.ToString()),
                database.CreateColumn(false, "StartX", map.StartX.ToString()),
                database.CreateColumn(false, "StartY", map.StartY.ToString())
            });

            if (localTransaction)
            {
                database.EndTransaction();
            }
        }
예제 #2
0
        public static void SaveRDungeonMap(MySql database, string mapID, RDungeonMap map)
        {
            bool localTransaction = false;

            if (database.IsTransactionActive == false)
            {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveMapDump(database, mapID, map);

            // Save extra data associated with instanced maps
            database.UpdateOrInsert("map_rdungeon_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "RDungeonIndex", map.RDungeonIndex.ToString()),
                database.CreateColumn(false, "RDungeonFloor", map.RDungeonFloor.ToString()),
                database.CreateColumn(false, "StartX", map.StartX.ToString()),
                database.CreateColumn(false, "StartY", map.StartY.ToString())
            });

            if (localTransaction)
            {
                database.EndTransaction();
            }
        }
예제 #3
0
 public static void CreateNewAccount(MySql database, string accountName, string encryptedPassword, string email)
 {
     database.AddRow("accounts", new IDataColumn[] {
         database.CreateColumn(false, "AccountName", accountName),
         database.CreateColumn(false, "Password", encryptedPassword),
         database.CreateColumn(false, "Email", email)
     });
 }
 public static void AddMissionEnemyData(MySql database, int difficulty, int index, MissionEnemyData data)
 {
     database.AddRow("mission_enemy", new IDataColumn[] {
         database.CreateColumn(false, "Rank", difficulty.ToString()),
         database.CreateColumn(false, "EnemyIndex", index.ToString()),
         database.CreateColumn(false, "NpcNum", data.NpcNum.ToString())
     });
 }
예제 #5
0
 public static void AddMissionEnemyData(MySql database, int difficulty, int index, MissionEnemyData data)
 {
     database.AddRow("mission_enemy", new IDataColumn[] {
         database.CreateColumn(false, "Rank", difficulty.ToString()),
         database.CreateColumn(false, "EnemyIndex", index.ToString()),
         database.CreateColumn(false, "NpcNum", data.NpcNum.ToString())
     });
 }
예제 #6
0
 public static void AddGuildMember(MySql database, string guildName, string charID)
 {
     database.UpdateOrInsert("guild", new IDataColumn[] {
         database.CreateColumn(false, "CharID", charID),
         database.CreateColumn(false, "GuildName", guildName),
         database.CreateColumn(false, "GuildAccess", "1")
     });
 }
 public static void AddMissionClientData(MySql database, int difficulty, int index, MissionClientData data)
 {
     database.AddRow("mission_client", new IDataColumn[] {
         database.CreateColumn(false, "Rank", difficulty.ToString()),
         database.CreateColumn(false, "ClientIndex", index.ToString()),
         database.CreateColumn(false, "DexNum", data.DexNum.ToString()),
         database.CreateColumn(false, "FormNum", data.FormNum.ToString())
     });
 }
예제 #8
0
 public static void AddMissionClientData(MySql database, int difficulty, int index, MissionClientData data)
 {
     database.AddRow("mission_client", new IDataColumn[] {
         database.CreateColumn(false, "Rank", difficulty.ToString()),
         database.CreateColumn(false, "ClientIndex", index.ToString()),
         database.CreateColumn(false, "DexNum", data.DexNum.ToString()),
         database.CreateColumn(false, "FormNum", data.FormNum.ToString())
     });
 }
 public static void AddMissionRewardData(MySql database, int difficulty, int index, MissionRewardData data)
 {
     database.AddRow("mission_reward", new IDataColumn[] {
         database.CreateColumn(false, "Rank", difficulty.ToString()),
         database.CreateColumn(false, "RewardIndex", index.ToString()),
         database.CreateColumn(false, "ItemNum", data.ItemNum.ToString()),
         database.CreateColumn(false, "ItemAmount", data.ItemAmount.ToString()),
         database.CreateColumn(false, "ItemTag", data.ItemTag)
     });
 }
예제 #10
0
 public static void AddMissionRewardData(MySql database, int difficulty, int index, MissionRewardData data)
 {
     database.AddRow("mission_reward", new IDataColumn[] {
         database.CreateColumn(false, "Rank", difficulty.ToString()),
         database.CreateColumn(false, "RewardIndex", index.ToString()),
         database.CreateColumn(false, "ItemNum", data.ItemNum.ToString()),
         database.CreateColumn(false, "ItemAmount", data.ItemAmount.ToString()),
         database.CreateColumn(false, "ItemTag", data.ItemTag)
     });
 }
예제 #11
0
        public static void SaveShop(int shopNum)
        {
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;
                database.BeginTransaction();

                database.ExecuteNonQuery("DELETE FROM shop WHERE num = \'" + shopNum + "\'");
                database.ExecuteNonQuery("DELETE FROM shop_trade WHERE num = \'" + shopNum + "\'");

                database.UpdateOrInsert("shop", new IDataColumn[] {
                    database.CreateColumn(false, "num", shopNum.ToString()),
                    database.CreateColumn(false, "name", shops[shopNum].Name),
                    database.CreateColumn(false, "greeting", shops[shopNum].JoinSay),
                    database.CreateColumn(false, "farewell", shops[shopNum].LeaveSay)
                });

                for (int i = 0; i < Constants.MAX_TRADES; i++)
                {
                    database.UpdateOrInsert("shop_trade", new IDataColumn[] {
                        database.CreateColumn(false, "num", shopNum.ToString()),
                        database.CreateColumn(false, "trade_num", i.ToString()),
                        database.CreateColumn(false, "item", shops[shopNum].Items[i].GetItem.ToString()),
                        database.CreateColumn(false, "cost_num", shops[shopNum].Items[i].GiveItem.ToString()),
                        database.CreateColumn(false, "cost_val", shops[shopNum].Items[i].GiveValue.ToString())
                    });
                }
                database.EndTransaction();
            }
        }
예제 #12
0
        public static void SaveParty(MySql database, PartyData partyData)
        {
            database.ExecuteNonQuery("DELETE FROM parties WHERE PartyID = \'" + partyData.PartyID + "\'");
            //database.DeleteRow("friends", "CharID = \'" + playerData.CharID + "\'");

            for (int i = 0; i < partyData.Members.Count; i++)
            {
                database.UpdateOrInsert("parties", new IDataColumn[] {
                    database.CreateColumn(false, "PartyID", partyData.PartyID),
                    database.CreateColumn(false, "PartySlot", i.ToString()),
                    database.CreateColumn(false, "CharID", partyData.Members[i])
                });
            }
        }
예제 #13
0
        public static void CreateNewCharacter(MySql database, string accountName, int charNum, PlayerData playerData)
        {
            // Add the character to the 'characters' table
            database.AddRow("characters", new IDataColumn[] {
                database.CreateColumn(false, "AccountName", accountName),
                database.CreateColumn(false, "Slot", charNum.ToString()),
                database.CreateColumn(false, "CharID", playerData.CharID)
            });

            SavePlayerCharacteristics(database, playerData);
            // SavePlayerExpKit(database, playerData);
            SavePlayerLocation(database, playerData);
            SavePlayerTeam(database, playerData);
            SavePlayerItemGenerals(database, playerData);
        }
예제 #14
0
        /// <summary>
        /// Adds a new friend. Return codes are as follows:
        /// <list type="table">
        /// <item>
        /// 0 - Success
        /// </item>
        /// <item>
        /// 1 - Friend is already on list
        /// </item>
        /// </list>
        /// </summary>
        /// <param name="name"></param>
        public int AddFriend(MySql database, string name)
        {
            int error = 0;

            if (friends.Contains(name) == false)
            {
                QuickAdd(name);

                if (UpdateOnDemand && database != null)
                {
                    database.UpdateOrInsert("friends", new IDataColumn[] {
                        database.CreateColumn(false, "CharID", ownerCharID),
                        database.CreateColumn(false, "FriendListSlot", (friends.Count - 1).ToString()),
                        database.CreateColumn(false, "FriendName", name)
                    });
                }
            }
            else
            {
                error = 1;
            }
            return(error);
        }
예제 #15
0
        public static void SaveInstancedMap(MySql database, string mapID, InstancedMap map)
        {
            bool localTransaction = false;

            if (database.IsTransactionActive == false)
            {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveMapDump(database, mapID, map);

            // Save extra data associated with instanced maps
            database.UpdateOrInsert("map_instanced_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "MapBase", map.MapBase.ToString())
            });

            if (localTransaction)
            {
                database.EndTransaction();
            }
        }
예제 #16
0
        public static void SaveStandardMap(MySql database, string mapID, Map map)
        {
            bool localTransaction = false;

            if (database.IsTransactionActive == false)
            {
                database.BeginTransaction();
                localTransaction = true;
            }

            // Save the raw map
            SaveRawMap(database, mapID, map);

            // Save extra data associated with standard maps
            database.UpdateOrInsert("map_standard_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Instanced", map.Instanced.ToIntString())
            });

            if (localTransaction)
            {
                database.EndTransaction();
            }
        }
예제 #17
0
        public static void SaveMissionPool(DatabaseConnection dbConnection, int difficulty)
        {
            MySql database = dbConnection.Database;

            database.ExecuteNonQuery("DELETE FROM mission_client WHERE Rank = \'" + difficulty + "\'");

            for (int i = 0; i < missionPools.MissionPools[difficulty].MissionClients.Count; i++)
            {
                MissionClientData data = missionPools.MissionPools[difficulty].MissionClients[i];
            }

            database.ExecuteNonQuery("DELETE FROM mission_enemy WHERE Rank = \'" + difficulty + "\'");
            for (int i = 0; i < missionPools.MissionPools[difficulty].Enemies.Count; i++)
            {
                MissionEnemyData data = missionPools.MissionPools[difficulty].Enemies[i];

                database.AddRow("mission_enemy", new IDataColumn[] {
                    database.CreateColumn(false, "Rank", difficulty.ToString()),
                    database.CreateColumn(false, "EnemyIndex", i.ToString()),
                    database.CreateColumn(false, "NpcNum", data.NpcNum.ToString())
                });
            }

            database.ExecuteNonQuery("DELETE FROM mission_reward WHERE Rank = \'" + difficulty + "\'");
            for (int i = 0; i < missionPools.MissionPools[difficulty].Rewards.Count; i++)
            {
                MissionRewardData data = missionPools.MissionPools[difficulty].Rewards[i];


                database.AddRow("mission_reward", new IDataColumn[] {
                    database.CreateColumn(false, "Rank", difficulty.ToString()),
                    database.CreateColumn(false, "RewardIndex", i.ToString()),
                    database.CreateColumn(false, "ItemNum", data.ItemNum.ToString()),
                    database.CreateColumn(false, "ItemAmount", data.Amount.ToString()),
                    database.CreateColumn(false, "ItemTag", data.Tag)
                });
            }
        }
예제 #18
0
        public static void SaveHouseMap(MySql database, string mapID, HouseMap map)
        {
            bool localTransaction = false;
            if (database.IsTransactionActive == false) {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveMapDump(database, mapID, map);

            // Save extra data associated with instanced maps
            database.UpdateOrInsert("map_house_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Owner", map.Owner),
                database.CreateColumn(false, "Room", map.Room.ToString()),
                database.CreateColumn(false, "StartX", map.StartX.ToString()),
                database.CreateColumn(false, "StartY", map.StartY.ToString())
            });

            if (localTransaction) {
                database.EndTransaction();
            }
        }
예제 #19
0
 public static void SavePlayerStoryChapters(MySql database, PlayerData playerData)
 {
     for (int i = 0; i < playerData.StoryChapters.Count; i++) {
         database.UpdateOrInsert("story_chapters", new IDataColumn[] {
             database.CreateColumn(false, "CharID", playerData.CharID),
             database.CreateColumn(false, "Chapter", playerData.StoryChapters.KeyByIndex(i).ToString()),
             database.CreateColumn(false, "Complete", playerData.StoryChapters.ValueByIndex(i).ToIntString())
         });
     }
 }
예제 #20
0
 public static void SavePlayerRecruitListStatus(MySql database, string characterID, int pokemonID, byte status)
 {
     database.UpdateOrInsert("recruit_list", new IDataColumn[] {
         database.CreateColumn(false, "CharID", characterID),
         database.CreateColumn(false, "PokemonID", pokemonID.ToString()),
         database.CreateColumn(false, "Status", status.ToString())
     });
 }
예제 #21
0
        public static void SaveEvo(int evoNum)
        {
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;

                database.BeginTransaction();

                database.ExecuteNonQuery("DELETE FROM evolution WHERE num = \'" + evoNum + "\'");
                database.ExecuteNonQuery("DELETE FROM evolution_branch WHERE num = \'" + evoNum + "\'");

                database.UpdateOrInsert("evolution", new IDataColumn[] {
                    database.CreateColumn(false, "num", evoNum.ToString()),
                    database.CreateColumn(false, "name", evolution[evoNum].Name),
                    database.CreateColumn(false, "species", evolution[evoNum].Species.ToString())
                });

                for (int i = 0; i < evolution[evoNum].Branches.Count; i++)
                {
                    database.UpdateOrInsert("evolution_branch", new IDataColumn[] {
                        database.CreateColumn(false, "num", evoNum.ToString()),
                        database.CreateColumn(false, "branch", i.ToString()),
                        database.CreateColumn(false, "name", evolution[evoNum].Branches[i].Name),
                        database.CreateColumn(false, "species", evolution[evoNum].Branches[i].NewSpecies.ToString()),
                        database.CreateColumn(false, "req_script", evolution[evoNum].Branches[i].ReqScript.ToString()),
                        database.CreateColumn(false, "data1", evolution[evoNum].Branches[i].Data1.ToString()),
                        database.CreateColumn(false, "data2", evolution[evoNum].Branches[i].Data2.ToString()),
                        database.CreateColumn(false, "data3", evolution[evoNum].Branches[i].Data3.ToString())
                    });
                }
                database.EndTransaction();
            }
        }
예제 #22
0
        public static void SaveRawMap(MySql database, string mapID, RawMap rawMap)
        {
            bool localTransaction = false;

            if (database.IsTransactionActive == false)
            {
                database.BeginTransaction();
                localTransaction = true;
            }

            // Delete old map, if it exists
            DeleteMap(database, mapID);

            // Save map general information
            database.UpdateOrInsert("map_general", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Revision", rawMap.Revision.ToString()),
                database.CreateColumn(false, "MaxX", rawMap.MaxX.ToString()),
                database.CreateColumn(false, "MaxY", rawMap.MaxY.ToString())
            });

            // Save map data
            database.UpdateOrInsert("map_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Name", rawMap.Name),
                database.CreateColumn(false, "Moral", rawMap.Moral.ToString()),
                database.CreateColumn(false, "Music", rawMap.Music),
                database.CreateColumn(false, "Indoors", rawMap.Indoors.ToIntString()),
                database.CreateColumn(false, "Weather", rawMap.Weather.ToString()),
                database.CreateColumn(false, "Darkness", rawMap.Darkness.ToString()),
                database.CreateColumn(false, "HungerEnabled", rawMap.HungerEnabled.ToIntString()),
                database.CreateColumn(false, "RecruitmentEnabled", rawMap.RecruitEnabled.ToIntString()),
                database.CreateColumn(false, "ExpEnabled", rawMap.ExpEnabled.ToIntString()),
                database.CreateColumn(false, "TimeLimit", rawMap.TimeLimit.ToString()),
                database.CreateColumn(false, "MinNpcs", rawMap.MinNpcs.ToString()),
                database.CreateColumn(false, "MaxNpcs", rawMap.MaxNpcs.ToString()),
                database.CreateColumn(false, "NpcSpawnTime", rawMap.NpcSpawnTime.ToString())
            });

            // Save map switchovers
            database.UpdateOrInsert("map_switchovers", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "UpMap", rawMap.Up.ToString()),
                database.CreateColumn(false, "DownMap", rawMap.Down.ToString()),
                database.CreateColumn(false, "LeftMap", rawMap.Left.ToString()),
                database.CreateColumn(false, "RightMap", rawMap.Right.ToString())
            });

            // Save map npc presets
            MultiRowInsert multiRowInsert = new MultiRowInsert(database, "map_npcs", "MapID", "Slot", "Number", "SpawnX",
                                                               "SpawnY", "MinLevel", "MaxLevel", "AppearanceRate", "StartStatus", "StartStatusCounter", "StartStatusChance");

            if (rawMap.Npc.Count > 0)
            {
                for (int i = 0; i < rawMap.Npc.Count; i++)
                {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i, rawMap.Npc[i].NpcNum, rawMap.Npc[i].SpawnX, rawMap.Npc[i].SpawnY, rawMap.Npc[i].MinLevel,
                                                 rawMap.Npc[i].MaxLevel, rawMap.Npc[i].AppearanceRate, rawMap.Npc[i].StartStatus, rawMap.Npc[i].StartStatusCounter,
                                                 rawMap.Npc[i].StartStatusChance);

                    multiRowInsert.AddRowClosing();
                }
                database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());
            }

            // Save map tiles
            multiRowInsert.UpdateParameters("map_tiles", new string[] { "MapID", "X", "Y", "Ground", "GroundAnim", "Mask",
                                                                        "MaskAnim", "Mask2", "Mask2Anim", "Fringe", "FringeAnim", "Fringe2", "Fringe2Anim", "Type", "Data1", "Data2", "Data3", "String1",
                                                                        "String2", "String3", "Light", "GroundTileset", "GroundAnimTileset", "MaskTileset", "MaskAnimTileset",
                                                                        "Mask2Tileset", "Mask2AnimTileset", "FringeTileset", "FringeAnimTileset", "Fringe2Tileset", "Fringe2AnimTileset" });

            for (int x = 0; x <= rawMap.MaxX; x++)
            {
                for (int y = 0; y <= rawMap.MaxY; y++)
                {
                    if (rawMap.Tile[x, y] == null)
                    {
                        rawMap.Tile[x, y] = new Tile();
                    }

                    multiRowInsert.AddRowOpening();
                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(x, y);

                    Tile tile = rawMap.Tile[x, y];

                    multiRowInsert.AddColumnData(tile.Ground, tile.GroundAnim, tile.Mask, tile.Anim, tile.Mask2, tile.M2Anim,
                                                 tile.Fringe, tile.FAnim, tile.Fringe2, tile.F2Anim, tile.Type, tile.Data1, tile.Data2, tile.Data3);
                    multiRowInsert.AddColumnData(tile.String1, tile.String2, tile.String3);
                    multiRowInsert.AddColumnData(tile.RDungeonMapValue, tile.GroundSet, tile.GroundAnimSet, tile.MaskSet, tile.AnimSet,
                                                 tile.Mask2Set, tile.M2AnimSet, tile.FringeSet, tile.FAnimSet, tile.Fringe2Set, tile.F2AnimSet);

                    multiRowInsert.AddRowClosing();
                }
            }

            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            if (localTransaction)
            {
                database.EndTransaction();
            }
        }
예제 #23
0
        public static void SaveRawMap(MySql database, string mapID, RawMap rawMap)
        {
            bool localTransaction = false;
            if (database.IsTransactionActive == false) {
                database.BeginTransaction();
                localTransaction = true;
            }

            // Delete old map, if it exists
            DeleteMap(database, mapID);

            // Save map general information
            database.UpdateOrInsert("map_general", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Revision", rawMap.Revision.ToString()),
                database.CreateColumn(false, "MaxX", rawMap.MaxX.ToString()),
                database.CreateColumn(false, "MaxY", rawMap.MaxY.ToString())
            });

            // Save map data
            database.UpdateOrInsert("map_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Name", rawMap.Name),
                database.CreateColumn(false, "Moral", rawMap.Moral.ToString()),
                database.CreateColumn(false, "Music", rawMap.Music),
                database.CreateColumn(false, "Indoors", rawMap.Indoors.ToIntString()),
                database.CreateColumn(false, "Weather", rawMap.Weather.ToString()),
                database.CreateColumn(false, "Darkness", rawMap.Darkness.ToString()),
                database.CreateColumn(false, "HungerEnabled", rawMap.HungerEnabled.ToIntString()),
                database.CreateColumn(false, "RecruitmentEnabled", rawMap.RecruitEnabled.ToIntString()),
                database.CreateColumn(false, "ExpEnabled", rawMap.ExpEnabled.ToIntString()),
                database.CreateColumn(false, "TimeLimit", rawMap.TimeLimit.ToString()),
                database.CreateColumn(false, "MinNpcs", rawMap.MinNpcs.ToString()),
                database.CreateColumn(false, "MaxNpcs", rawMap.MaxNpcs.ToString()),
                database.CreateColumn(false, "NpcSpawnTime", rawMap.NpcSpawnTime.ToString())
            });

            // Save map switchovers
            database.UpdateOrInsert("map_switchovers", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "UpMap", rawMap.Up.ToString()),
                database.CreateColumn(false, "DownMap", rawMap.Down.ToString()),
                database.CreateColumn(false, "LeftMap", rawMap.Left.ToString()),
                database.CreateColumn(false, "RightMap", rawMap.Right.ToString())
            });

            // Save map npc presets
            MultiRowInsert multiRowInsert = new MultiRowInsert(database, "map_npcs", "MapID", "Slot", "Number", "SpawnX",
                "SpawnY", "MinLevel", "MaxLevel", "AppearanceRate", "StartStatus", "StartStatusCounter", "StartStatusChance");

            if (rawMap.Npc.Count > 0) {
                for (int i = 0; i < rawMap.Npc.Count; i++) {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i, rawMap.Npc[i].NpcNum, rawMap.Npc[i].SpawnX, rawMap.Npc[i].SpawnY, rawMap.Npc[i].MinLevel,
                        rawMap.Npc[i].MaxLevel, rawMap.Npc[i].AppearanceRate, rawMap.Npc[i].StartStatus, rawMap.Npc[i].StartStatusCounter,
                        rawMap.Npc[i].StartStatusChance);

                    multiRowInsert.AddRowClosing();
                }
                database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());
            }

            // Save map tiles
            multiRowInsert.UpdateParameters("map_tiles", new string[] {"MapID", "X", "Y", "Ground", "GroundAnim", "Mask",
                "MaskAnim", "Mask2", "Mask2Anim", "Fringe", "FringeAnim", "Fringe2", "Fringe2Anim", "Type", "Data1", "Data2", "Data3", "String1",
                "String2", "String3", "Light", "GroundTileset", "GroundAnimTileset", "MaskTileset", "MaskAnimTileset",
                "Mask2Tileset", "Mask2AnimTileset", "FringeTileset", "FringeAnimTileset", "Fringe2Tileset", "Fringe2AnimTileset" });

            for (int x = 0; x <= rawMap.MaxX; x++) {
                for (int y = 0; y <= rawMap.MaxY; y++) {
                    if (rawMap.Tile[x, y] == null) {
                        rawMap.Tile[x, y] = new Tile();
                    }

                    multiRowInsert.AddRowOpening();
                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(x, y);

                    Tile tile = rawMap.Tile[x, y];

                    multiRowInsert.AddColumnData(tile.Ground, tile.GroundAnim, tile.Mask, tile.Anim, tile.Mask2, tile.M2Anim,
                        tile.Fringe, tile.FAnim, tile.Fringe2, tile.F2Anim, tile.Type, tile.Data1, tile.Data2, tile.Data3);
                    multiRowInsert.AddColumnData(tile.String1, tile.String2, tile.String3);
                    multiRowInsert.AddColumnData(tile.RDungeonMapValue, tile.GroundSet, tile.GroundAnimSet, tile.MaskSet, tile.AnimSet,
                        tile.Mask2Set, tile.M2AnimSet, tile.FringeSet, tile.FAnimSet, tile.Fringe2Set, tile.F2AnimSet);

                    multiRowInsert.AddRowClosing();
                }
            }

            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            if (localTransaction) {
                database.EndTransaction();
            }
        }
예제 #24
0
        public static void SaveStandardMap(MySql database, string mapID, Map map)
        {
            bool localTransaction = false;
            if (database.IsTransactionActive == false) {
                database.BeginTransaction();
                localTransaction = true;
            }

            // Save the raw map
            SaveRawMap(database, mapID, map);

            // Save extra data associated with standard maps
            database.UpdateOrInsert("map_standard_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "Instanced", map.Instanced.ToIntString())
            });

            if (localTransaction) {
                database.EndTransaction();
            }
        }
예제 #25
0
        public static void SavePlayerRecruit(MySql database, string charID, int recruitIndex, RecruitData recruitData)
        {
            database.UpdateOrInsert("recruit_data", new IDataColumn[] {
                database.CreateColumn(false, "CharID", charID),
                database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
                database.CreateColumn(false, "UsingTempStats", recruitData.UsingTempStats.ToIntString()),
                database.CreateColumn(false, "Name", recruitData.Name),
                database.CreateColumn(false, "Nickname", recruitData.Nickname.ToIntString()),
                database.CreateColumn(false, "NpcBase", recruitData.NpcBase.ToString()),
                database.CreateColumn(false, "Species", recruitData.Species.ToString()),
                database.CreateColumn(false, "Sex", recruitData.Sex.ToString()),
                database.CreateColumn(false, "Shiny", recruitData.Shiny.ToString()),
                database.CreateColumn(false, "Form", recruitData.Form.ToString()),
                database.CreateColumn(false, "HeldItemSlot", recruitData.HeldItemSlot.ToString()),
                database.CreateColumn(false, "Level", recruitData.Level.ToString()),
                database.CreateColumn(false, "Experience", recruitData.Exp.ToString()),
                database.CreateColumn(false, "HP", recruitData.HP.ToString()),
                database.CreateColumn(false, "StatusAilment", recruitData.StatusAilment.ToString()),
                database.CreateColumn(false, "StatusAilmentCounter", recruitData.StatusAilmentCounter.ToString()),
                database.CreateColumn(false, "IQ", recruitData.IQ.ToString()),
                database.CreateColumn(false, "Belly", recruitData.Belly.ToString()),
                database.CreateColumn(false, "MaxBelly", recruitData.MaxBelly.ToString()),
                database.CreateColumn(false, "AttackBonus", recruitData.AtkBonus.ToString()),
                database.CreateColumn(false, "DefenseBonus", recruitData.DefBonus.ToString()),
                database.CreateColumn(false, "SpeedBonus", recruitData.SpeedBonus.ToString()),
                database.CreateColumn(false, "SpecialAttackBonus", recruitData.SpclAtkBonus.ToString()),
                database.CreateColumn(false, "SpecialDefenseBonus", recruitData.SpclDefBonus.ToString())
            });

            for (int i = 0; i < recruitData.Moves.Length; i++) {
                database.UpdateOrInsert("recruit_moves", new IDataColumn[] {
                    database.CreateColumn(false, "CharID", charID),
                    database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
                    database.CreateColumn(false, "UsingTempStats", recruitData.UsingTempStats.ToIntString()),
                    database.CreateColumn(false, "MoveSlot", i.ToString()),
                    database.CreateColumn(false, "MoveNum", recruitData.Moves[i].MoveNum.ToString()),
                    database.CreateColumn(false, "CurrentPP", recruitData.Moves[i].CurrentPP.ToString()),
                    database.CreateColumn(false, "MaxPP", recruitData.Moves[i].MaxPP.ToString()),
                    //database.CreateColumn(false, "Sealed", recruitData.Moves[i].Sealed.ToIntString()),
                });
            }

            // Delete extra statuses
            database.ExecuteNonQuery("DELETE FROM recruit_volatile_status WHERE CharID = \'" + charID + "\' " +
              "AND RecruitIndex = \'" + recruitIndex + "\' " +
              "AND StatusNum > " + (recruitData.VolatileStatus.Count - 1));
            // Update statuses
            for (int i = 0; i < recruitData.VolatileStatus.Count; i++) {
                database.UpdateOrInsert("recruit_volatile_status", new IDataColumn[] {
                    database.CreateColumn(false, "CharID", charID),
                    database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
                    database.CreateColumn(false, "UsingTempStats", recruitData.UsingTempStats.ToIntString()),
                    database.CreateColumn(false, "StatusNum", i.ToString()),
                    database.CreateColumn(false, "Name", recruitData.VolatileStatus[i].Name),
                    database.CreateColumn(false, "Emoticon", recruitData.VolatileStatus[i].Emoticon.ToString()),
                    database.CreateColumn(false, "Counter", recruitData.VolatileStatus[i].Counter.ToString()),
                    database.CreateColumn(false, "Tag", recruitData.VolatileStatus[i].Tag),
                });
            }
        }
예제 #26
0
 public static void ChangePassword(MySql database, string accountName, string currentPassword, string newPassword)
 {
     database.UpdateRow("accounts", new IDataColumn[] {
         database.CreateColumn(false, "Password", newPassword)
     }, "accounts.AccountName = \'" + database.VerifyValueString(accountName) + "\' AND accounts.Password = \'" + database.VerifyValueString(currentPassword) + "\'");
 }
예제 #27
0
 public static void SavePlayerTeam(MySql database, PlayerData playerData)
 {
     for (int i = 0; i < playerData.TeamMembers.Length; i++) {
         database.UpdateOrInsert("team", new IDataColumn[]
         {
             database.CreateColumn(false, "CharID", playerData.CharID),
             database.CreateColumn(false, "Slot", i.ToString()),
             database.CreateColumn(false, "RecruitIndex", playerData.TeamMembers[i].RecruitIndex.ToString()),
             database.CreateColumn(false, "UsingTempStats", playerData.TeamMembers[i].UsingTempStats.ToIntString())
         });
     }
 }
예제 #28
0
        public static void SavePlayerTriggerEvents(MySql database, PlayerData playerData)
        {
            for (int i = 0; i < playerData.TriggerEvents.Count; i++) {
                PlayerDataTriggerEvent triggerEvent = playerData.TriggerEvents[i];

                database.UpdateOrInsert("trigger_events", new IDataColumn[] {
                    database.CreateColumn(false, "CharID", playerData.CharID),
                    database.CreateColumn(false, "ID", triggerEvent.Items.GetValue("ID")),
                    database.CreateColumn(false, "Type", triggerEvent.Items.GetValue("Type")),
                    database.CreateColumn(false, "Action", triggerEvent.Items.GetValue("Action")),
                    database.CreateColumn(false, "TriggerCommand", triggerEvent.Items.GetValue("TriggerCommand")),
                    database.CreateColumn(false, "AutoRemove", triggerEvent.Items.GetValue("AutoRemove"))
                });

                switch (triggerEvent.Items.GetValue("Type")) {
                    case "1": {
                            database.UpdateOrInsert("map_load_trigger_event", new IDataColumn[] {
                                database.CreateColumn(false, "CharID", playerData.CharID),
                                database.CreateColumn(false, "ID", triggerEvent.Items.GetValue("ID")),
                                database.CreateColumn(false, "MapID", triggerEvent.Items.GetValue("MapID"))
                            });
                        }
                        break;
                    case "2": {
                            database.UpdateOrInsert("stepped_on_tile_trigger_event", new IDataColumn[] {
                                database.CreateColumn(false, "CharID", playerData.CharID),
                                database.CreateColumn(false, "ID", triggerEvent.Items.GetValue("ID")),
                                database.CreateColumn(false, "MapID", triggerEvent.Items.GetValue("MapID")),
                                database.CreateColumn(false, "X", triggerEvent.Items.GetValue("X")),
                                database.CreateColumn(false, "Y", triggerEvent.Items.GetValue("Y"))
                            });
                        }
                        break;
                    case "3": {
                            database.UpdateOrInsert("step_counter_trigger_event", new IDataColumn[] {
                                database.CreateColumn(false, "CharID", playerData.CharID),
                                database.CreateColumn(false, "ID", triggerEvent.Items.GetValue("ID")),
                                database.CreateColumn(false, "Steps", triggerEvent.Items.GetValue("Steps")),
                                database.CreateColumn(false, "StepsCounted", triggerEvent.Items.GetValue("StepsCounted")),
                            });
                        }
                        break;
                }
            }
        }
예제 #29
0
 public static void SavePlayerStoryHelperStateSettings(MySql database, PlayerData playerData)
 {
     for (int i = 0; i < playerData.StoryHelperStateSettings.Count; i++) {
         database.UpdateOrInsert("story_helper_state_settings", new IDataColumn[] {
             database.CreateColumn(false, "CharID", playerData.CharID),
             database.CreateColumn(false, "SettingKey", playerData.StoryHelperStateSettings.KeyByIndex(i)),
             database.CreateColumn(false, "Value", playerData.StoryHelperStateSettings.ValueByIndex(i))
         });
     }
 }
예제 #30
0
 public static void SavePlayerStoryGenerals(MySql database, PlayerData playerData)
 {
     database.UpdateOrInsert("story", new IDataColumn[]
     {
         database.CreateColumn(false, "CharID", playerData.CharID),
         database.CreateColumn(false, "CurrentChapter", playerData.CurrentChapter),
         database.CreateColumn(false, "CurrentSegment", playerData.CurrentSegment.ToString())
     });
 }
예제 #31
0
 public static void SavePlayerStoryChapterState(MySql database, string characterID, int chapter, bool value)
 {
     database.UpdateOrInsert("story_chapters", new IDataColumn[] {
         database.CreateColumn(false, "CharID", characterID),
         database.CreateColumn(false, "Chapter", chapter.ToString()),
         database.CreateColumn(false, "Complete", value.ToIntString())
     });
 }
예제 #32
0
        public static void SaveInstancedMap(MySql database, string mapID, InstancedMap map)
        {
            bool localTransaction = false;
            if (database.IsTransactionActive == false) {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveMapDump(database, mapID, map);

            // Save extra data associated with instanced maps
            database.UpdateOrInsert("map_instanced_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "MapBase", map.MapBase.ToString())
            });

            if (localTransaction) {
                database.EndTransaction();
            }
        }
예제 #33
0
 public static void ChangePlayerEmail(MySql database, string accountName, string currentEmail, string newEmail)
 {
     database.UpdateRow("accounts", new IDataColumn[] {
         database.CreateColumn(false, "Email", newEmail)
     }, "accounts.AccountName = \'" + database.VerifyValueString(accountName) + "\' AND accounts.Email = \'" + database.VerifyValueString(currentEmail) + "\'");
 }
예제 #34
0
        public static void SaveMapDump(MySql database, string mapID, MapDump mapDump)
        {
            mapID = database.VerifyValueString(mapID);

            bool localTransaction = false;
            if (database.IsTransactionActive == false) {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveRawMap(database, mapID, mapDump);

            // Save map state data
            database.UpdateOrInsert("mapstate_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "ActivationTime", mapDump.ActivationTime.ToString()),
                database.CreateColumn(false, "ProcessingPaused", mapDump.ProcessingPaused.ToIntString()),
                database.CreateColumn(false, "SpawnMarker", mapDump.SpawnMarker.ToString()),
                database.CreateColumn(false, "NpcSpawnWait", mapDump.NpcSpawnWait.ToString()),
                database.CreateColumn(false, "TempChange", mapDump.TempChange.ToIntString()),
                database.CreateColumn(false, "CurrentWeather", mapDump.CurrentWeather.ToString())
            });

            // Save active item data
            MultiRowInsert multiRowInsert = new MultiRowInsert(database, "mapstate_activeitem", "MapID", "Slot", "Number", "Value",
                "Sticky", "Tag", "Hidden", "X", "Y", "TimeRemaining", "ItemOwner");

            for (int i = 0; i < mapDump.ActiveItem.Length; i++) {
                if (mapDump.ActiveItem[i].Num > 0) {
                    MapItem item = mapDump.ActiveItem[i];

                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i, item.Num, item.Value);
                    multiRowInsert.AddColumnData(item.Sticky.ToIntString(), item.Tag, item.Hidden.ToIntString());
                    multiRowInsert.AddColumnData(item.X, item.Y, item.TimeRemaining);
                    multiRowInsert.AddColumnData(item.PlayerFor);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npcs
            multiRowInsert.UpdateParameters("mapstate_activenpc_data", new string[] {"MapID", "MapNpcSlot", "Name", "Shiny", "Form", "Level",
                "NpcNumber", "Sex",
                "AttackTimer", "PauseTimer", "StatusAilment", "StatusAilmentCounter", "HPStepCounter",
                "Target" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0) {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    multiRowInsert.AddColumnData(npc.Name, npc.Shiny.ToString());
                    multiRowInsert.AddColumnData(npc.Form, npc.Level, npc.Num, (int)npc.Sex);
                    multiRowInsert.AddColumnData(npc.AttackTimer, npc.PauseTimer, (int)npc.StatusAilment, npc.StatusAilmentCounter,
                        npc.HPStepCounter);
                    multiRowInsert.AddColumnData(npc.Target);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc held items
            multiRowInsert.UpdateParameters("mapstate_activenpc_helditem", new string[]  {"MapID", "MapNpcSlot",
                "ItemNumber", "Amount", "Sticky", "Tag" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0 && mapDump.ActiveNpc[i].HeldItem.Num > 0) {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    //multiRowInsert.AddColumnData(npc.ItemActive.ToIntString());
                    //if (npc.HeldItem != null) {
                        // The npc is holding an item - save the held item information
                        multiRowInsert.AddColumnData(npc.HeldItem.Num, npc.HeldItem.Amount);
                        multiRowInsert.AddColumnData(npc.HeldItem.Sticky.ToIntString(), npc.HeldItem.Tag);
                    //} else {
                        // The npc is not holding an item! Save default information
                    //    multiRowInsert.AddColumnData(-1, 0, 0);
                    //    multiRowInsert.AddColumnData("");
                    //}

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc locations
            multiRowInsert.UpdateParameters("mapstate_activenpc_location", new string[] { "MapID", "MapNpcSlot", "X", "Y", "Direction" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0) {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    multiRowInsert.AddColumnData(npc.X, npc.Y, (int)npc.Direction);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc stats
            multiRowInsert.UpdateParameters("mapstate_activenpc_stats", new string[] { "MapID", "MapNpcSlot", "IQ", "HP", "HPRemainder",
                "MaxHPBonus", "AtkBonus", "DefBonus",
                "SpdBonus", "SpclAtkBonus", "SpclDefBonus",
                "AttackBuff", "DefenseBuff", "SpAtkBuff", "SpDefBuff", "SpeedBuff", "AccuracyBuff", "EvasionBuff" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0) {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    multiRowInsert.AddColumnData(npc.IQ, npc.HP, npc.HPRemainder,
                        npc.MaxHPBonus, npc.AtkBonus, npc.DefBonus,
                        npc.SpdBonus, npc.SpclAtkBonus, npc.SpclDefBonus,
                        npc.AttackBuff, npc.DefenseBuff, npc.SpAtkBuff, npc.SpDefBuff,
                        npc.SpeedBuff, npc.AccuracyBuff, npc.EvasionBuff);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc moves
            multiRowInsert.UpdateParameters("mapstate_activenpc_moves", new string[] { "MapID", "MapNpcSlot", "MoveSlot", "CurrentPP", "MaxPP", "MoveNum" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0) {
                    for (int n = 0; n < npc.Moves.Length; n++) {
                        if (npc.Moves[n].MoveNum > 0) {
                            multiRowInsert.AddRowOpening();

                            multiRowInsert.AddColumnData(mapID);
                            multiRowInsert.AddColumnData(i, n);
                            multiRowInsert.AddColumnData(npc.Moves[n].CurrentPP, npc.Moves[n].MaxPP, npc.Moves[n].MoveNum);
                            //multiRowInsert.AddColumnData(npc.Moves[n].Sealed.ToIntString());

                            multiRowInsert.AddRowClosing();
                        }
                    }
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc mobility
            //multiRowInsert.UpdateParameters("mapstate_activenpc_mobility", new string[] { "MapID", "MapNpcSlot", "MobilitySlot", "Mobile" });
            //for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
            //    MapNpc npc = mapDump.ActiveNpc[i];

            //    for (int n = 0; n < npc.Mobility.Length; n++) {
            //        multiRowInsert.AddRowOpening();

            //        multiRowInsert.AddColumnData(mapID);
            //        multiRowInsert.AddColumnData(i, n);
            //        multiRowInsert.AddColumnData(npc.Mobility[n].ToIntString());

            //        multiRowInsert.AddRowClosing();
            //    }
            //}
            //database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc volatile status
            multiRowInsert.UpdateParameters("mapstate_activenpc_volatilestatus", new string[] { "MapID", "MapNpcSlot", "StatusIndex", "Name", "Emoticon", "Counter", "Tag" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0) {
                    for (int n = 0; n < npc.VolatileStatus.Count; n++) {
                        multiRowInsert.AddRowOpening();

                        multiRowInsert.AddColumnData(mapID);
                        multiRowInsert.AddColumnData(i, n);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Name);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Emoticon);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Counter);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Tag);

                        multiRowInsert.AddRowClosing();
                    }
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save map status
            multiRowInsert.UpdateParameters("mapstate_mapstatus", new string[] { "MapID", "StatusIndex", "Name", "Tag", "GraphicEffect", "Counter" });
            for (int i = 0; i < mapDump.TempStatus.Count; i++) {
                MapStatus status = mapDump.TempStatus[i];

                multiRowInsert.AddRowOpening();

                multiRowInsert.AddColumnData(mapID);
                multiRowInsert.AddColumnData(i);
                multiRowInsert.AddColumnData(status.Name);
                multiRowInsert.AddColumnData(status.Tag);
                multiRowInsert.AddColumnData(status.GraphicEffect);
                multiRowInsert.AddColumnData(status.Counter);

                multiRowInsert.AddRowClosing();
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            if (localTransaction) {
                database.EndTransaction();
            }
        }
예제 #35
0
 public static void SavePlayerMissionGenerals(MySql database, PlayerData playerData)
 {
     database.UpdateOrInsert("missions", new IDataColumn[]
     {
         database.CreateColumn(false, "CharID", playerData.CharID),
         database.CreateColumn(false, "MissionExp", playerData.MissionExp.ToString()),
         database.CreateColumn(false, "LastGenTime", playerData.LastGenTime.ToString()),
         database.CreateColumn(false, "Completions", playerData.MissionCompletions.ToString())
     });
 }
예제 #36
0
        public static void SaveRDungeonMap(MySql database, string mapID, RDungeonMap map)
        {
            bool localTransaction = false;
            if (database.IsTransactionActive == false) {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveMapDump(database, mapID, map);

            // Save extra data associated with instanced maps
            database.UpdateOrInsert("map_rdungeon_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "RDungeonIndex", map.RDungeonIndex.ToString()),
                database.CreateColumn(false, "RDungeonFloor", map.RDungeonFloor.ToString()),
                database.CreateColumn(false, "StartX", map.StartX.ToString()),
                database.CreateColumn(false, "StartY", map.StartY.ToString())
            });

            if (localTransaction) {
                database.EndTransaction();
            }
        }
예제 #37
0
 public static void SavePlayerStatistics(MySql database, PlayerData playerData)
 {
     database.UpdateOrInsert("character_statistics", new IDataColumn[] {
             database.CreateColumn(false, "CharID", playerData.CharID),
             database.CreateColumn(false, "TotalPlayTime", playerData.TotalPlayTime.ToString()),
             database.CreateColumn(false, "LastIPAddressUsed", playerData.LastIPAddressUsed),
             database.CreateColumn(false, "LastMacAddressUsed", playerData.LastMacAddressUsed),
             database.CreateColumn(false, "LastLogin", playerData.LastLogin.ToString("yyyy:MM:dd HH:mm:ss")),
             database.CreateColumn(false, "LastLogout", playerData.LastLogout.ToString("yyyy:MM:dd HH:mm:ss")),
             database.CreateColumn(false, "LastPlayTime", playerData.LastPlayTime.ToString()),
             database.CreateColumn(false, "LastOS", playerData.LastOS),
             database.CreateColumn(false, "LastDotNetVersion", playerData.LastDotNetVersion)
         });
 }
예제 #38
0
 public static void SavePlayerLocation(MySql database, PlayerData playerData)
 {
     database.UpdateOrInsert("location", new IDataColumn[]
     {
         database.CreateColumn(false, "CharID", playerData.CharID),
         database.CreateColumn(false, "Map", playerData.Map),
         database.CreateColumn(false, "X", playerData.X.ToString()),
         database.CreateColumn(false, "Y", playerData.Y.ToString()),
         database.CreateColumn(false, "Direction", playerData.Direction.ToString())
     });
 }
예제 #39
0
        public static void SaveStory(int storyNum)
        {
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;

                database.BeginTransaction();

                database.ExecuteNonQuery("DELETE FROM story WHERE num = \'" + storyNum + "\'");
                database.ExecuteNonQuery("DELETE FROM story_segment WHERE num = \'" + storyNum + "\'");
                database.ExecuteNonQuery("DELETE FROM story_param WHERE num = \'" + storyNum + "\'");

                database.UpdateOrInsert("story", new IDataColumn[] {
                    database.CreateColumn(false, "num", storyNum.ToString()),
                    database.CreateColumn(false, "revision", stories[storyNum].Revision.ToString()),
                    database.CreateColumn(false, "name", stories[storyNum].Name),
                    database.CreateColumn(false, "story_start", stories[storyNum].StoryStart.ToString())
                });

                for (int i = 0; i < stories[storyNum].Segments.Count; i++)
                {
                    bool isCheckPoint = false;
                    for (int j = 0; j < stories[storyNum].ExitAndContinue.Count; j++)
                    {
                        if (stories[storyNum].ExitAndContinue[j] == i)
                        {
                            isCheckPoint = true;
                            break;
                        }
                    }
                    database.UpdateOrInsert("story_segment", new IDataColumn[] {
                        database.CreateColumn(false, "num", storyNum.ToString()),
                        database.CreateColumn(false, "segment", i.ToString()),
                        database.CreateColumn(false, "action", ((int)stories[storyNum].Segments[i].Action).ToString()),
                        database.CreateColumn(false, "checkpoint", isCheckPoint.ToIntString())
                    });

                    for (int j = 0; j < stories[storyNum].Segments[i].Parameters.Count; j++)
                    {
                        database.UpdateOrInsert("story_param", new IDataColumn[] {
                            database.CreateColumn(false, "num", storyNum.ToString()),
                            database.CreateColumn(false, "segment", i.ToString()),
                            database.CreateColumn(false, "param_key", stories[storyNum].Segments[i].Parameters.KeyByIndex(j)),
                            database.CreateColumn(false, "param_val", stories[storyNum].Segments[i].Parameters.ValueByIndex(j))
                        });
                    }
                }
                database.EndTransaction();
            }
        }
예제 #40
0
        public static void SaveMapDump(MySql database, string mapID, MapDump mapDump)
        {
            mapID = database.VerifyValueString(mapID);

            bool localTransaction = false;

            if (database.IsTransactionActive == false)
            {
                database.BeginTransaction();
                localTransaction = true;
            }

            SaveRawMap(database, mapID, mapDump);

            // Save map state data
            database.UpdateOrInsert("mapstate_data", new IDataColumn[] {
                database.CreateColumn(false, "MapID", mapID),
                database.CreateColumn(false, "ActivationTime", mapDump.ActivationTime.ToString()),
                database.CreateColumn(false, "ProcessingPaused", mapDump.ProcessingPaused.ToIntString()),
                database.CreateColumn(false, "SpawnMarker", mapDump.SpawnMarker.ToString()),
                database.CreateColumn(false, "NpcSpawnWait", mapDump.NpcSpawnWait.ToString()),
                database.CreateColumn(false, "TempChange", mapDump.TempChange.ToIntString()),
                database.CreateColumn(false, "CurrentWeather", mapDump.CurrentWeather.ToString())
            });

            // Save active item data
            MultiRowInsert multiRowInsert = new MultiRowInsert(database, "mapstate_activeitem", "MapID", "Slot", "Number", "Value",
                                                               "Sticky", "Tag", "Hidden", "X", "Y", "TimeRemaining", "ItemOwner");

            for (int i = 0; i < mapDump.ActiveItem.Length; i++)
            {
                if (mapDump.ActiveItem[i].Num > 0)
                {
                    MapItem item = mapDump.ActiveItem[i];

                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i, item.Num, item.Value);
                    multiRowInsert.AddColumnData(item.Sticky.ToIntString(), item.Tag, item.Hidden.ToIntString());
                    multiRowInsert.AddColumnData(item.X, item.Y, item.TimeRemaining);
                    multiRowInsert.AddColumnData(item.PlayerFor);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npcs
            multiRowInsert.UpdateParameters("mapstate_activenpc_data", new string[] { "MapID", "MapNpcSlot", "Name", "Shiny", "Form", "Level",
                                                                                      "NpcNumber", "Sex",
                                                                                      "AttackTimer", "PauseTimer", "StatusAilment", "StatusAilmentCounter", "HPStepCounter",
                                                                                      "Target" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++)
            {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0)
                {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    multiRowInsert.AddColumnData(npc.Name, npc.Shiny.ToString());
                    multiRowInsert.AddColumnData(npc.Form, npc.Level, npc.Num, (int)npc.Sex);
                    multiRowInsert.AddColumnData(npc.AttackTimer, npc.PauseTimer, (int)npc.StatusAilment, npc.StatusAilmentCounter,
                                                 npc.HPStepCounter);
                    multiRowInsert.AddColumnData(npc.Target);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc held items
            multiRowInsert.UpdateParameters("mapstate_activenpc_helditem", new string[]  { "MapID", "MapNpcSlot",
                                                                                           "ItemNumber", "Amount", "Sticky", "Tag" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++)
            {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0 && mapDump.ActiveNpc[i].HeldItem.Num > 0)
                {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    //multiRowInsert.AddColumnData(npc.ItemActive.ToIntString());
                    //if (npc.HeldItem != null) {
                    // The npc is holding an item - save the held item information
                    multiRowInsert.AddColumnData(npc.HeldItem.Num, npc.HeldItem.Amount);
                    multiRowInsert.AddColumnData(npc.HeldItem.Sticky.ToIntString(), npc.HeldItem.Tag);
                    //} else {
                    // The npc is not holding an item! Save default information
                    //    multiRowInsert.AddColumnData(-1, 0, 0);
                    //    multiRowInsert.AddColumnData("");
                    //}

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc locations
            multiRowInsert.UpdateParameters("mapstate_activenpc_location", new string[] { "MapID", "MapNpcSlot", "X", "Y", "Direction" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++)
            {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0)
                {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    multiRowInsert.AddColumnData(npc.X, npc.Y, (int)npc.Direction);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc stats
            multiRowInsert.UpdateParameters("mapstate_activenpc_stats", new string[] { "MapID", "MapNpcSlot", "IQ", "HP", "HPRemainder",
                                                                                       "MaxHPBonus", "AtkBonus", "DefBonus",
                                                                                       "SpdBonus", "SpclAtkBonus", "SpclDefBonus",
                                                                                       "AttackBuff", "DefenseBuff", "SpAtkBuff", "SpDefBuff", "SpeedBuff", "AccuracyBuff", "EvasionBuff" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++)
            {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0)
                {
                    multiRowInsert.AddRowOpening();

                    multiRowInsert.AddColumnData(mapID);
                    multiRowInsert.AddColumnData(i);
                    multiRowInsert.AddColumnData(npc.IQ, npc.HP, npc.HPRemainder,
                                                 npc.MaxHPBonus, npc.AtkBonus, npc.DefBonus,
                                                 npc.SpdBonus, npc.SpclAtkBonus, npc.SpclDefBonus,
                                                 npc.AttackBuff, npc.DefenseBuff, npc.SpAtkBuff, npc.SpDefBuff,
                                                 npc.SpeedBuff, npc.AccuracyBuff, npc.EvasionBuff);

                    multiRowInsert.AddRowClosing();
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc moves
            multiRowInsert.UpdateParameters("mapstate_activenpc_moves", new string[] { "MapID", "MapNpcSlot", "MoveSlot", "CurrentPP", "MaxPP", "MoveNum" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++)
            {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0)
                {
                    for (int n = 0; n < npc.Moves.Length; n++)
                    {
                        if (npc.Moves[n].MoveNum > 0)
                        {
                            multiRowInsert.AddRowOpening();

                            multiRowInsert.AddColumnData(mapID);
                            multiRowInsert.AddColumnData(i, n);
                            multiRowInsert.AddColumnData(npc.Moves[n].CurrentPP, npc.Moves[n].MaxPP, npc.Moves[n].MoveNum);
                            //multiRowInsert.AddColumnData(npc.Moves[n].Sealed.ToIntString());

                            multiRowInsert.AddRowClosing();
                        }
                    }
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc mobility
            //multiRowInsert.UpdateParameters("mapstate_activenpc_mobility", new string[] { "MapID", "MapNpcSlot", "MobilitySlot", "Mobile" });
            //for (int i = 0; i < mapDump.ActiveNpc.Length; i++) {
            //    MapNpc npc = mapDump.ActiveNpc[i];

            //    for (int n = 0; n < npc.Mobility.Length; n++) {
            //        multiRowInsert.AddRowOpening();

            //        multiRowInsert.AddColumnData(mapID);
            //        multiRowInsert.AddColumnData(i, n);
            //        multiRowInsert.AddColumnData(npc.Mobility[n].ToIntString());

            //        multiRowInsert.AddRowClosing();
            //    }
            //}
            //database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save active npc volatile status
            multiRowInsert.UpdateParameters("mapstate_activenpc_volatilestatus", new string[] { "MapID", "MapNpcSlot", "StatusIndex", "Name", "Emoticon", "Counter", "Tag" });
            for (int i = 0; i < mapDump.ActiveNpc.Length; i++)
            {
                MapNpc npc = mapDump.ActiveNpc[i];
                if (mapDump.ActiveNpc[i].Num > 0)
                {
                    for (int n = 0; n < npc.VolatileStatus.Count; n++)
                    {
                        multiRowInsert.AddRowOpening();

                        multiRowInsert.AddColumnData(mapID);
                        multiRowInsert.AddColumnData(i, n);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Name);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Emoticon);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Counter);
                        multiRowInsert.AddColumnData(npc.VolatileStatus[n].Tag);

                        multiRowInsert.AddRowClosing();
                    }
                }
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            // Save map status
            multiRowInsert.UpdateParameters("mapstate_mapstatus", new string[] { "MapID", "StatusIndex", "Name", "Tag", "GraphicEffect", "Counter" });
            for (int i = 0; i < mapDump.TempStatus.Count; i++)
            {
                MapStatus status = mapDump.TempStatus[i];

                multiRowInsert.AddRowOpening();

                multiRowInsert.AddColumnData(mapID);
                multiRowInsert.AddColumnData(i);
                multiRowInsert.AddColumnData(status.Name);
                multiRowInsert.AddColumnData(status.Tag);
                multiRowInsert.AddColumnData(status.GraphicEffect);
                multiRowInsert.AddColumnData(status.Counter);

                multiRowInsert.AddRowClosing();
            }
            database.ExecuteNonQuery(multiRowInsert.GetSqlQuery());

            if (localTransaction)
            {
                database.EndTransaction();
            }
        }
예제 #41
0
        public static void SaveMove(int moveNum)
        {
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;
                database.BeginTransaction();

                database.ExecuteNonQuery("DELETE FROM move WHERE num = \'" + moveNum + "\'");

                database.UpdateOrInsert("move", new IDataColumn[] {
                    database.CreateColumn(false, "num", moveNum.ToString()),
                    database.CreateColumn(false, "name", moves[moveNum].Name),
                    database.CreateColumn(false, "max_pp", moves[moveNum].MaxPP.ToString()),
                    database.CreateColumn(false, "effect_type", ((int)moves[moveNum].EffectType).ToString()),
                    database.CreateColumn(false, "element", ((int)moves[moveNum].Element).ToString()),
                    database.CreateColumn(false, "category", ((int)moves[moveNum].MoveCategory).ToString()),
                    database.CreateColumn(false, "range_type", ((int)moves[moveNum].RangeType).ToString()),
                    database.CreateColumn(false, "range_dist", moves[moveNum].Range.ToString()),
                    database.CreateColumn(false, "target", ((int)moves[moveNum].TargetType).ToString()),
                    database.CreateColumn(false, "data1", moves[moveNum].Data1.ToString()),
                    database.CreateColumn(false, "data2", moves[moveNum].Data2.ToString()),
                    database.CreateColumn(false, "data3", moves[moveNum].Data3.ToString()),
                    database.CreateColumn(false, "effect_data1", moves[moveNum].AdditionalEffectData1.ToString()),
                    database.CreateColumn(false, "effect_data2", moves[moveNum].AdditionalEffectData2.ToString()),
                    database.CreateColumn(false, "effect_data3", moves[moveNum].AdditionalEffectData3.ToString()),
                    database.CreateColumn(false, "accuracy", moves[moveNum].Accuracy.ToString()),
                    database.CreateColumn(false, "hit_time", moves[moveNum].HitTime.ToString()),
                    database.CreateColumn(false, "hit_freeze", moves[moveNum].HitFreeze.ToIntString()),
                    database.CreateColumn(false, "per_player", moves[moveNum].PerPlayer.ToIntString()),
                    database.CreateColumn(false, "key_effect", moves[moveNum].KeyItem.ToString()),
                    database.CreateColumn(false, "sound", moves[moveNum].Sound.ToString()),
                    database.CreateColumn(false, "attack_anim_type", ((int)moves[moveNum].AttackerAnim.AnimationType).ToString()),
                    database.CreateColumn(false, "attack_anim_index", moves[moveNum].AttackerAnim.AnimationIndex.ToString()),
                    database.CreateColumn(false, "attack_anim_speed", moves[moveNum].AttackerAnim.FrameSpeed.ToString()),
                    database.CreateColumn(false, "attack_anim_cycle", moves[moveNum].AttackerAnim.Repetitions.ToString()),
                    database.CreateColumn(false, "travel_anim_type", ((int)moves[moveNum].TravelingAnim.AnimationType).ToString()),
                    database.CreateColumn(false, "travel_anim_index", moves[moveNum].TravelingAnim.AnimationIndex.ToString()),
                    database.CreateColumn(false, "travel_anim_speed", moves[moveNum].TravelingAnim.FrameSpeed.ToString()),
                    database.CreateColumn(false, "travel_anim_cycle", moves[moveNum].TravelingAnim.Repetitions.ToString()),
                    database.CreateColumn(false, "landed_anim_type", ((int)moves[moveNum].DefenderAnim.AnimationType).ToString()),
                    database.CreateColumn(false, "landed_anim_index", moves[moveNum].DefenderAnim.AnimationIndex.ToString()),
                    database.CreateColumn(false, "landed_anim_speed", moves[moveNum].DefenderAnim.FrameSpeed.ToString()),
                    database.CreateColumn(false, "landed_anim_cycle", moves[moveNum].DefenderAnim.Repetitions.ToString()),
                });

                database.EndTransaction();
            }
        }
예제 #42
0
 /*
 public static void SavePlayerMissionBoardGenerals(MySql database, PlayerData playerData) {
     database.UpdateOrInsert("mission_board", new IDataColumn[] {
         database.CreateColumn(false, "CharID", playerData.CharID),
         database.CreateColumn(false, "LastGenerationDate", playerData.MissionBoardLastGenerationDate.Ticks.ToString())
     });
 }
 */
 public static void SavePlayerMissionBoardMissions(MySql database, PlayerData playerData)
 {
     database.ExecuteNonQuery("DELETE FROM mission_board_missions WHERE CharID = \'" + playerData.CharID + "\'");
     for (int i = 0; i < playerData.MissionBoardMissions.Count; i++) {
         database.UpdateOrInsert("mission_board_missions", new IDataColumn[] {
             database.CreateColumn(false, "CharID", playerData.CharID),
             database.CreateColumn(false, "Slot", i.ToString()),
             database.CreateColumn(false, "ClientIndex", playerData.MissionBoardMissions[i].MissionClientIndex.ToString()),
             database.CreateColumn(false, "TargetIndex", playerData.MissionBoardMissions[i].TargetIndex.ToString()),
             database.CreateColumn(false, "RewardIndex", playerData.MissionBoardMissions[i].RewardIndex.ToString()),
             database.CreateColumn(false, "MissionType", playerData.MissionBoardMissions[i].MissionType.ToString()),
             database.CreateColumn(false, "Data1", playerData.MissionBoardMissions[i].Data1.ToString()),
             database.CreateColumn(false, "Data2", playerData.MissionBoardMissions[i].Data2.ToString()),
             database.CreateColumn(false, "DungeonIndex", playerData.MissionBoardMissions[i].DungeonIndex.ToString()),
             database.CreateColumn(false, "Goal", playerData.MissionBoardMissions[i].GoalMapIndex.ToString()),
             database.CreateColumn(false, "RDungeon", playerData.MissionBoardMissions[i].RDungeon.ToIntString()),
             database.CreateColumn(false, "StartScript", playerData.MissionBoardMissions[i].StartStoryScript.ToString()),
             database.CreateColumn(false, "WinScript", playerData.MissionBoardMissions[i].WinStoryScript.ToString()),
             database.CreateColumn(false, "LoseScript", playerData.MissionBoardMissions[i].LoseStoryScript.ToString())
         });
     }
 }
예제 #43
0
 /// <summary>
 /// Will mark a recruit slot as deleted, allowing it to be overwritten. If inTempMode is true, the entry will be deleted instead.
 /// </summary>
 /// <param name="database">The database.</param>
 /// <param name="charID">The char ID.</param>
 /// <param name="recruitIndex">Index of the recruit.</param>
 /// <param name="inTempMode">if set to <c>true</c>, the temporary recruit will be deleted. Otherwise, the main recruit will be deleted.</param>
 public static void DeletePlayerRecruit(MySql database, string charID, int recruitIndex, bool inTempMode)
 {
     if (inTempMode == false) {
         // Mark recruit slot as deleted
         database.UpdateOrInsert("recruit_data", new IDataColumn[] {
             database.CreateColumn(false, "CharID", charID),
             database.CreateColumn(false, "RecruitIndex", recruitIndex.ToString()),
             database.CreateColumn(false, "UsingTempStats", inTempMode.ToIntString()),
             database.CreateColumn(false, "Name", "#DELETED#"),
             database.CreateColumn(false, "Level", "-1"),
             database.CreateColumn(false, "IQ", "-1")
         });
     } else {
         // This recruit is in temp stat mode, so just delete it's temp stat mode copy
         database.ExecuteNonQuery("DELETE FROM recruit_data WHERE CharID = \'" + charID + "\' " +
           "AND RecruitIndex = \'" + recruitIndex + "\' " +
           "AND UsingTempStats = \'" + inTempMode.ToIntString() + "\'");
     }
     // Delete moves
     database.ExecuteNonQuery("DELETE FROM recruit_moves WHERE CharID = \'" + charID + "\' " +
       "AND RecruitIndex = \'" + recruitIndex + "\' " +
       "AND UsingTempStats = \'" + inTempMode.ToIntString() + "\'");
     // Delete extra statuses
     database.ExecuteNonQuery("DELETE FROM recruit_volatile_status WHERE CharID = \'" + charID + "\' " +
       "AND RecruitIndex = \'" + recruitIndex + "\' " +
       "AND UsingTempStats = \'" + inTempMode.ToIntString() + "\'");
 }
예제 #44
0
 public static void SavePlayerAvailableExpKitModules(MySql database, PlayerData playerData)
 {
     database.UpdateOrInsert("expkit", new IDataColumn[]
     {
         database.CreateColumn(false, "CharID", playerData.CharID),
         database.CreateColumn(false, "AvailableModules", playerData.AvailableModules.ToString())
     });
 }
예제 #45
0
 public static void SavePlayerBankItem(MySql database, string charID, int slot, Characters.InventoryItem item)
 {
     database.UpdateOrInsert("bank", new IDataColumn[] {
             database.CreateColumn(false, "CharID", charID),
             database.CreateColumn(false, "ItemSlot", slot.ToString()),
             database.CreateColumn(false, "ItemNum", item.Num.ToString()),
             database.CreateColumn(false, "Amount", item.Amount.ToString()),
             database.CreateColumn(false, "Sticky", item.Sticky.ToIntString()),
             database.CreateColumn(false, "Tag", item.Tag)
         });
 }
예제 #46
0
        public static void SaveNpc(int npcNum)
        {
            if (npcs.Npcs.ContainsKey(npcNum) == false)
            {
                npcs.Npcs.Add(npcNum, new Npc());
            }
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;
                database.BeginTransaction();
                database.ExecuteNonQuery("DELETE FROM npc WHERE num = \'" + npcNum + "\'");
                database.ExecuteNonQuery("DELETE FROM npc_drop WHERE npc_num = \'" + npcNum + "\'");

                database.UpdateOrInsert("npc", new IDataColumn[] {
                    database.CreateColumn(false, "num", npcNum.ToString()),
                    database.CreateColumn(false, "name", npcs[npcNum].Name),
                    database.CreateColumn(false, "attack_say", npcs[npcNum].AttackSay),
                    database.CreateColumn(false, "species", npcs[npcNum].Species.ToString()),
                    database.CreateColumn(false, "form", npcs[npcNum].Form.ToString()),
                    database.CreateColumn(false, "behavior", ((int)npcs[npcNum].Behavior).ToString()),
                    database.CreateColumn(false, "shiny_chance", npcs[npcNum].ShinyChance.ToString()),
                    database.CreateColumn(false, "dawn_spawn", npcs[npcNum].SpawnsAtDawn.ToIntString()),
                    database.CreateColumn(false, "day_spawn", npcs[npcNum].SpawnsAtDay.ToIntString()),
                    database.CreateColumn(false, "dusk_spawn", npcs[npcNum].SpawnsAtDusk.ToIntString()),
                    database.CreateColumn(false, "night_spawn", npcs[npcNum].SpawnsAtNight.ToIntString()),
                    database.CreateColumn(false, "ai_script", npcs[npcNum].AIScript),
                    database.CreateColumn(false, "recruit_rate", npcs[npcNum].RecruitRate.ToString()),
                    database.CreateColumn(false, "move1", npcs[npcNum].Moves[0].ToString()),
                    database.CreateColumn(false, "move2", npcs[npcNum].Moves[1].ToString()),
                    database.CreateColumn(false, "move3", npcs[npcNum].Moves[2].ToString()),
                    database.CreateColumn(false, "move4", npcs[npcNum].Moves[3].ToString()),
                });

                for (int i = 0; i < npcs[npcNum].Drops.Length; i++)
                {
                    database.UpdateOrInsert("npc_drop", new IDataColumn[] {
                        database.CreateColumn(false, "npc_num", npcNum.ToString()),
                        database.CreateColumn(false, "drop_num", i.ToString()),
                        database.CreateColumn(false, "item_num", npcs[npcNum].Drops[i].ItemNum.ToString()),
                        database.CreateColumn(false, "item_val", npcs[npcNum].Drops[i].ItemValue.ToString()),
                        database.CreateColumn(false, "tag", npcs[npcNum].Drops[i].Tag),
                        database.CreateColumn(false, "chance", npcs[npcNum].Drops[i].Chance.ToString()),
                    });
                }
                database.EndTransaction();
            }
        }
예제 #47
0
        public static void SaveDungeon(int dungeonNum)
        {
            if (dungeons.Dungeons.ContainsKey(dungeonNum) == false)
            {
                dungeons.Dungeons.Add(dungeonNum, new Dungeon());
            }
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;
                database.BeginTransaction();

                database.ExecuteNonQuery("DELETE FROM dungeon WHERE num = \'" + dungeonNum + "\'");
                database.ExecuteNonQuery("DELETE FROM dungeon_smap WHERE num = \'" + dungeonNum + "\'");
                database.ExecuteNonQuery("DELETE FROM dungeon_rmap WHERE num = \'" + dungeonNum + "\'");
                database.ExecuteNonQuery("DELETE FROM dungeon_script WHERE num = \'" + dungeonNum + "\'");

                database.UpdateOrInsert("dungeon", new IDataColumn[] {
                    database.CreateColumn(false, "num", dungeonNum.ToString()),
                    database.CreateColumn(false, "name", dungeons[dungeonNum].Name),
                    database.CreateColumn(false, "rescue", dungeons[dungeonNum].AllowsRescue.ToIntString())
                });

                for (int i = 0; i < dungeons[dungeonNum].StandardMaps.Count; i++)
                {
                    database.UpdateOrInsert("dungeon_smap", new IDataColumn[] {
                        database.CreateColumn(false, "num", dungeonNum.ToString()),
                        database.CreateColumn(false, "map_id", dungeons[dungeonNum].StandardMaps[i].MapNum.ToString()),
                        database.CreateColumn(false, "difficulty", ((int)dungeons[dungeonNum].StandardMaps[i].Difficulty).ToString()),
                        database.CreateColumn(false, "boss_map", dungeons[dungeonNum].StandardMaps[i].IsBadGoalMap.ToIntString())
                    });
                }

                for (int i = 0; i < dungeons[dungeonNum].RandomMaps.Count; i++)
                {
                    database.UpdateOrInsert("dungeon_rmap", new IDataColumn[] {
                        database.CreateColumn(false, "num", dungeonNum.ToString()),
                        database.CreateColumn(false, "rdungeon_num", dungeons[dungeonNum].RandomMaps[i].RDungeonIndex.ToString()),
                        database.CreateColumn(false, "rdungeon_floor", dungeons[dungeonNum].RandomMaps[i].RDungeonFloor.ToString()),
                        database.CreateColumn(false, "difficulty", ((int)dungeons[dungeonNum].RandomMaps[i].Difficulty).ToString()),
                        database.CreateColumn(false, "boss_map", dungeons[dungeonNum].RandomMaps[i].IsBadGoalMap.ToIntString())
                    });
                }

                for (int i = 0; i < dungeons[dungeonNum].ScriptList.Count; i++)
                {
                    database.UpdateOrInsert("dungeon_script", new IDataColumn[] {
                        database.CreateColumn(false, "num", dungeonNum.ToString()),
                        database.CreateColumn(false, "script_key", dungeons[dungeonNum].ScriptList.KeyByIndex(i).ToString()),
                        database.CreateColumn(false, "script_args", dungeons[dungeonNum].ScriptList.ValueByIndex(i).ToString())
                    });
                }
                database.EndTransaction();
            }
        }
예제 #48
0
        public static void SaveItem(int itemNum)
        {
            using (DatabaseConnection dbConnection = new DatabaseConnection(DatabaseID.Data))
            {
                MySql database = dbConnection.Database;
                database.BeginTransaction();
                database.ExecuteNonQuery("DELETE FROM item WHERE num = \'" + itemNum + "\'");

                database.UpdateOrInsert("item", new IDataColumn[] {
                    database.CreateColumn(false, "num", itemNum.ToString()),
                    database.CreateColumn(false, "name", items[itemNum].Name),
                    database.CreateColumn(false, "info", items[itemNum].Desc),
                    database.CreateColumn(false, "pic", items[itemNum].Pic.ToString()),
                    database.CreateColumn(false, "item_type", ((int)items[itemNum].Type).ToString()),
                    database.CreateColumn(false, "data1", items[itemNum].Data1.ToString()),
                    database.CreateColumn(false, "data2", items[itemNum].Data2.ToString()),
                    database.CreateColumn(false, "data3", items[itemNum].Data3.ToString()),
                    database.CreateColumn(false, "price", items[itemNum].Price.ToString()),
                    database.CreateColumn(false, "stack_cap", items[itemNum].StackCap.ToString()),
                    database.CreateColumn(false, "bound", items[itemNum].Bound.ToIntString()),
                    database.CreateColumn(false, "loseable", items[itemNum].Loseable.ToIntString()),
                    database.CreateColumn(false, "rarity", items[itemNum].Rarity.ToString()),
                    database.CreateColumn(false, "req_data1", items[itemNum].ReqData1.ToString()),
                    database.CreateColumn(false, "req_data2", items[itemNum].ReqData2.ToString()),
                    database.CreateColumn(false, "req_data3", items[itemNum].ReqData3.ToString()),
                    database.CreateColumn(false, "req_data4", items[itemNum].ReqData4.ToString()),
                    database.CreateColumn(false, "req_data5", items[itemNum].ReqData5.ToString()),
                    database.CreateColumn(false, "scripted_req", items[itemNum].ScriptedReq.ToString()),
                    database.CreateColumn(false, "add_hp", items[itemNum].AddHP.ToString()),
                    database.CreateColumn(false, "add_pp", items[itemNum].AddPP.ToString()),
                    database.CreateColumn(false, "add_atk", items[itemNum].AddAttack.ToString()),
                    database.CreateColumn(false, "add_def", items[itemNum].AddDefense.ToString()),
                    database.CreateColumn(false, "add_spatk", items[itemNum].AddSpAtk.ToString()),
                    database.CreateColumn(false, "add_spdef", items[itemNum].AddSpDef.ToString()),
                    database.CreateColumn(false, "add_speed", items[itemNum].AddSpeed.ToString()),
                    database.CreateColumn(false, "add_exp", items[itemNum].AddEXP.ToString()),
                    database.CreateColumn(false, "attack_speed", items[itemNum].AttackSpeed.ToString()),
                    database.CreateColumn(false, "recruit_bonus", items[itemNum].RecruitBonus.ToString())
                });

                database.EndTransaction();
            }
        }
예제 #49
0
 public static void SavePlayerRecruitList(MySql database, PlayerData playerData)
 {
     for (int i = 0; i < playerData.StoryHelperStateSettings.Count; i++) {
         database.UpdateOrInsert("recruit_list", new IDataColumn[] {
             database.CreateColumn(false, "CharID", playerData.CharID),
             database.CreateColumn(false, "PokemonID", playerData.RecruitList.KeyByIndex(i).ToString()),
             database.CreateColumn(false, "Status", playerData.RecruitList.ValueByIndex(i).ToString())
         });
     }
 }