public override GuildData ReadGuild(int id, GuildRoleData[] defaultGuildRoles)
        {
            GuildData       result = null;
            MySQLRowsReader reader = ExecuteReader("SELECT * FROM guild WHERE id=@id LIMIT 1",
                                                   new MySqlParameter("@id", id));

            if (reader.Read())
            {
                result              = new GuildData(id, reader.GetString("guildName"), reader.GetString("leaderId"), defaultGuildRoles);
                result.level        = reader.GetInt16("level");
                result.exp          = reader.GetInt32("exp");
                result.skillPoint   = reader.GetInt16("skillPoint");
                result.guildMessage = reader.GetString("guildMessage");
                result.gold         = reader.GetInt32("gold");

                reader = ExecuteReader("SELECT * FROM guildrole WHERE guildId=@id",
                                       new MySqlParameter("@id", id));
                byte          guildRole;
                GuildRoleData guildRoleData;
                while (reader.Read())
                {
                    guildRole                        = reader.GetByte("guildRole");
                    guildRoleData                    = new GuildRoleData();
                    guildRoleData.roleName           = reader.GetString("name");
                    guildRoleData.canInvite          = reader.GetBoolean("canInvite");
                    guildRoleData.canKick            = reader.GetBoolean("canKick");
                    guildRoleData.shareExpPercentage = reader.GetByte("shareExpPercentage");
                    result.SetRole(guildRole, guildRoleData);
                }

                reader = ExecuteReader("SELECT id, dataId, characterName, level, guildRole FROM characters WHERE guildId=@id",
                                       new MySqlParameter("@id", id));
                SocialCharacterData guildMemberData;
                while (reader.Read())
                {
                    // Get some required data, other data will be set at server side
                    guildMemberData               = new SocialCharacterData();
                    guildMemberData.id            = reader.GetString("id");
                    guildMemberData.characterName = reader.GetString("characterName");
                    guildMemberData.dataId        = reader.GetInt32("dataId");
                    guildMemberData.level         = reader.GetInt16("level");
                    result.AddMember(guildMemberData, reader.GetByte("guildRole"));
                }

                reader = ExecuteReader("SELECT dataId, level FROM guildskill WHERE guildId=@id",
                                       new MySqlParameter("@id", id));
                while (reader.Read())
                {
                    result.SetSkillLevel(reader.GetInt32("dataId"), reader.GetInt16("level"));
                }
            }
            return(result);
        }
        public override GuildData ReadGuild(int id, GuildRoleData[] defaultGuildRoles)
        {
            GuildData result = null;

            ExecuteReader((reader) =>
            {
                if (reader.Read())
                {
                    result = new GuildData(id,
                                           reader.GetString(0),
                                           reader.GetString(1),
                                           defaultGuildRoles);
                    result.level              = reader.GetInt16(2);
                    result.exp                = reader.GetInt32(3);
                    result.skillPoint         = reader.GetInt16(4);
                    result.guildMessage       = reader.GetString(5);
                    result.guildMessage2      = reader.GetString(6);
                    result.gold               = reader.GetInt32(7);
                    result.score              = reader.GetInt32(8);
                    result.options            = reader.GetString(9);
                    result.autoAcceptRequests = reader.GetBoolean(10);
                    result.rank               = reader.GetInt32(11);
                }
            }, "SELECT `guildName`, `leaderId`, `level`, `exp`, `skillPoint`, `guildMessage`, `guildMessage2`, `gold`, `score`, `options`, `autoAcceptRequests`, `rank` FROM guild WHERE id=@id LIMIT 1",
                          new SqliteParameter("@id", id));
            if (result != null)
            {
                // Guild roles
                ExecuteReader((reader) =>
                {
                    byte guildRole;
                    GuildRoleData guildRoleData;
                    while (reader.Read())
                    {
                        guildRole                        = reader.GetByte(0);
                        guildRoleData                    = new GuildRoleData();
                        guildRoleData.roleName           = reader.GetString(1);
                        guildRoleData.canInvite          = reader.GetBoolean(2);
                        guildRoleData.canKick            = reader.GetBoolean(3);
                        guildRoleData.shareExpPercentage = reader.GetByte(4);
                        result.SetRole(guildRole, guildRoleData);
                    }
                }, "SELECT guildRole, name, canInvite, canKick, shareExpPercentage FROM guildrole WHERE guildId=@id",
                              new SqliteParameter("@id", id));
                // Guild members
                ExecuteReader((reader) =>
                {
                    SocialCharacterData guildMemberData;
                    while (reader.Read())
                    {
                        // Get some required data, other data will be set at server side
                        guildMemberData               = new SocialCharacterData();
                        guildMemberData.id            = reader.GetString(0);
                        guildMemberData.dataId        = reader.GetInt32(1);
                        guildMemberData.characterName = reader.GetString(2);
                        guildMemberData.level         = reader.GetInt16(3);
                        result.AddMember(guildMemberData, reader.GetByte(4));
                    }
                }, "SELECT id, dataId, characterName, level, guildRole FROM characters WHERE guildId=@id",
                              new SqliteParameter("@id", id));
                // Guild skills
                ExecuteReader((reader) =>
                {
                    while (reader.Read())
                    {
                        result.SetSkillLevel(reader.GetInt32(0), reader.GetInt16(1));
                    }
                }, "SELECT dataId, level FROM guildskill WHERE guildId=@id",
                              new SqliteParameter("@id", id));
            }
            return(result);
        }
示例#3
0
        public override async UniTask <GuildData> ReadGuild(int id, GuildRoleData[] defaultGuildRoles)
        {
            GuildData result = null;

            await ExecuteReader((reader) =>
            {
                if (reader.Read())
                {
                    result = new GuildData(id,
                                           reader.GetString(0),
                                           reader.GetString(1),
                                           defaultGuildRoles);
                    result.level        = reader.GetInt16(2);
                    result.exp          = reader.GetInt32(3);
                    result.skillPoint   = reader.GetInt16(4);
                    result.guildMessage = reader.GetString(5);
                    result.gold         = reader.GetInt32(6);
                }
            }, "SELECT guildName, leaderId, level, exp, skillPoint, guildMessage, gold FROM guild WHERE id=@id LIMIT 1",
                                new MySqlParameter("@id", id));

            // Read relates data if guild exists
            if (result != null)
            {
                // Guild roles
                await ExecuteReader((reader) =>
                {
                    byte guildRole;
                    GuildRoleData guildRoleData;
                    while (reader.Read())
                    {
                        guildRole                        = reader.GetByte(0);
                        guildRoleData                    = new GuildRoleData();
                        guildRoleData.roleName           = reader.GetString(1);
                        guildRoleData.canInvite          = reader.GetBoolean(2);
                        guildRoleData.canKick            = reader.GetBoolean(3);
                        guildRoleData.shareExpPercentage = reader.GetByte(4);
                        result.SetRole(guildRole, guildRoleData);
                    }
                }, "SELECT guildRole, name, canInvite, canKick, shareExpPercentage FROM guildrole WHERE guildId=@id",
                                    new MySqlParameter("@id", id));

                // Guild members
                await ExecuteReader((reader) =>
                {
                    SocialCharacterData guildMemberData;
                    while (reader.Read())
                    {
                        // Get some required data, other data will be set at server side
                        guildMemberData               = new SocialCharacterData();
                        guildMemberData.id            = reader.GetString(0);
                        guildMemberData.dataId        = reader.GetInt32(1);
                        guildMemberData.characterName = reader.GetString(2);
                        guildMemberData.level         = reader.GetInt16(3);
                        result.AddMember(guildMemberData, reader.GetByte(4));
                    }
                }, "SELECT id, dataId, characterName, level, guildRole FROM characters WHERE guildId=@id",
                                    new MySqlParameter("@id", id));

                // Guild skills
                await ExecuteReader((reader) =>
                {
                    while (reader.Read())
                    {
                        result.SetSkillLevel(reader.GetInt32(0), reader.GetInt16(1));
                    }
                }, "SELECT dataId, level FROM guildskill WHERE guildId=@id",
                                    new MySqlParameter("@id", id));
            }
            return(result);
        }