Example #1
0
        public static string NpcName()
        {
            var result = "";

            if (Storage.UnitTemplates.IsEmpty())
                return String.Empty;

            if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.creature_template))
                return string.Empty;

            const string tableName = "creature_template";

            if (SQLConnector.Enabled)
            {
                var rowsUpd = new List<QueryBuilder.SQLUpdateRow>();

                foreach (var npcName in Storage.UnitTemplates)
                {
                    var query = string.Format("SELECT name FROM {0}.creature_template WHERE entry={1};",
                        Settings.TDBDatabase, npcName.Key);

                    using (var reader = SQLConnector.ExecuteQuery(query))
                    {
                        if (reader.HasRows) // possible update
                        {
                            while (reader.Read())
                            {
                                var row = new QueryBuilder.SQLUpdateRow();

                                if (!Utilities.EqualValues(reader.GetValue(0), npcName.Value.Item1.Name))
                                    row.AddValue("name", npcName.Value.Item1.Name);

                                if (Utilities.EqualValues(reader.GetValue(0), npcName.Value.Item1.Name) && npcName.Value.Item1.femaleName != null)
                                    row.AddValue("femaleName", npcName.Value.Item1.femaleName);

                                row.AddWhere("entry", npcName.Key);

                                row.Table = tableName;

                                if (row.ValueCount != 0)
                                    rowsUpd.Add(row);
                            }
                        }
                    }
                }

                result += new QueryBuilder.SQLUpdate(rowsUpd).Build();
            }

            return result;
        }
Example #2
0
        public static string Gossip()
        {
            // TODO: This should be rewritten

            if (Storage.Gossips.IsEmpty())
            {
                return(string.Empty);
            }

            var result = "";

            // `gossip`
            if (Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.gossip_menu))
            {
                if (SQLConnector.Enabled)
                {
                    var query =
                        new StringBuilder(string.Format("SELECT `entry`,`text_id` FROM {0}.`gossip_menu` WHERE ",
                                                        Settings.TDBDatabase));
                    foreach (Tuple <uint, uint> gossip in Storage.Gossips.Keys())
                    {
                        query.Append("(`entry`=").Append(gossip.Item1).Append(" AND ");
                        query.Append("`text_id`=").Append(gossip.Item2).Append(") OR ");
                    }
                    query.Remove(query.Length - 4, 4).Append(";");

                    var rows = new List <QueryBuilder.SQLInsertRow>();
                    using (var reader = SQLConnector.ExecuteQuery(query.ToString()))
                    {
                        if (reader != null)
                        {
                            while (reader.Read())
                            {
                                var values = new object[2];
                                var count  = reader.GetValues(values);
                                if (count != 2)
                                {
                                    break; // error in query
                                }
                                var entry  = Convert.ToUInt32(values[0]);
                                var textId = Convert.ToUInt32(values[1]);

                                // our table is small, 2 fields and both are PKs; no need for updates
                                if (!Storage.Gossips.ContainsKey(Tuple.Create(entry, textId)))
                                {
                                    var row = new QueryBuilder.SQLInsertRow();
                                    row.AddValue("entry", entry);
                                    row.AddValue("text_id", textId);
                                    row.Comment = StoreGetters.GetName(StoreNameType.Unit,
                                                                       // BUG: GOs can send gossips too
                                                                       (int)entry, false);
                                    rows.Add(row);
                                }
                            }
                        }
                    }
                    result += new QueryBuilder.SQLInsert("gossip_menu", rows, 2).Build();
                }
                else
                {
                    var rows = new List <QueryBuilder.SQLInsertRow>();
                    foreach (var gossip in Storage.Gossips)
                    {
                        var row = new QueryBuilder.SQLInsertRow();

                        row.AddValue("entry", gossip.Key.Item1);
                        row.AddValue("text_id", gossip.Key.Item2);
                        row.Comment = StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.Item1.ObjectType),
                                                           (int)gossip.Value.Item1.ObjectEntry, false);

                        rows.Add(row);
                    }

                    result += new QueryBuilder.SQLInsert("gossip_menu", rows, 2).Build();
                }
            }

            // `gossip_menu_option`
            if (Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.gossip_menu_option))
            {
                if (SQLConnector.Enabled)
                {
                    var rowsIns = new List <QueryBuilder.SQLInsertRow>();
                    var rowsUpd = new List <QueryBuilder.SQLUpdateRow>();

                    foreach (var gossip in Storage.Gossips)
                    {
                        if (gossip.Value.Item1.GossipOptions == null)
                        {
                            continue;
                        }
                        foreach (var gossipOption in gossip.Value.Item1.GossipOptions)
                        {
                            var query = //         0     1       2         3         4        5         6
                                        string.Format(
                                "SELECT menu_id,id,option_icon,box_coded,box_money,box_text,option_text " +
                                "FROM {2}.gossip_menu_option WHERE menu_id={0} AND id={1};", gossip.Key.Item1,
                                gossipOption.Index, Settings.TDBDatabase);
                            using (var reader = SQLConnector.ExecuteQuery(query))
                            {
                                if (reader.HasRows) // possible update
                                {
                                    while (reader.Read())
                                    {
                                        var row = new QueryBuilder.SQLUpdateRow();

                                        if (!Utilities.EqualValues(reader.GetValue(2), gossipOption.OptionIcon))
                                        {
                                            row.AddValue("option_icon", gossipOption.OptionIcon);
                                        }

                                        if (!Utilities.EqualValues(reader.GetValue(3), gossipOption.Box))
                                        {
                                            row.AddValue("box_coded", gossipOption.Box);
                                        }

                                        if (!Utilities.EqualValues(reader.GetValue(4), gossipOption.RequiredMoney))
                                        {
                                            row.AddValue("box_money", gossipOption.RequiredMoney);
                                        }

                                        if (!Utilities.EqualValues(reader.GetValue(5), gossipOption.BoxText))
                                        {
                                            row.AddValue("box_text", gossipOption.BoxText);
                                        }

                                        if (!Utilities.EqualValues(reader.GetValue(6), gossipOption.OptionText))
                                        {
                                            row.AddValue("option_text", gossipOption.OptionText);
                                        }

                                        row.AddWhere("menu_id", gossip.Key.Item1);
                                        row.AddWhere("id", gossipOption.Index);

                                        row.Comment =
                                            StoreGetters.GetName(
                                                Utilities.ObjectTypeToStore(gossip.Value.Item1.ObjectType),
                                                (int)gossip.Value.Item1.ObjectEntry, false);

                                        row.Table = "gossip_menu_option";

                                        if (row.ValueCount != 0)
                                        {
                                            rowsUpd.Add(row);
                                        }
                                    }
                                }
                                else // insert
                                {
                                    var row = new QueryBuilder.SQLInsertRow();

                                    row.AddValue("menu_id", gossip.Key.Item1);
                                    row.AddValue("id", gossipOption.Index);
                                    row.AddValue("option_icon", gossipOption.OptionIcon);
                                    row.AddValue("option_text", gossipOption.OptionText);
                                    row.AddValue("box_coded", gossipOption.Box);
                                    row.AddValue("box_money", gossipOption.RequiredMoney);
                                    row.AddValue("box_text", gossipOption.BoxText);

                                    row.Comment =
                                        StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.Item1.ObjectType),
                                                             (int)gossip.Value.Item1.ObjectEntry, false);

                                    rowsIns.Add(row);
                                }
                            }
                        }
                    }
                    result += new QueryBuilder.SQLInsert("gossip_menu_option", rowsIns, 2).Build() +
                              new QueryBuilder.SQLUpdate(rowsUpd).Build();
                }
                else
                {
                    var rows = new List <QueryBuilder.SQLInsertRow>();
                    foreach (var gossip in Storage.Gossips)
                    {
                        if (gossip.Value.Item1.GossipOptions != null)
                        {
                            foreach (var gossipOption in gossip.Value.Item1.GossipOptions)
                            {
                                var row = new QueryBuilder.SQLInsertRow();

                                row.AddValue("menu_id", gossip.Key.Item1);
                                row.AddValue("id", gossipOption.Index);
                                row.AddValue("option_icon", gossipOption.OptionIcon);
                                row.AddValue("option_text", gossipOption.OptionText);
                                row.AddValue("box_coded", gossipOption.Box);
                                row.AddValue("box_money", gossipOption.RequiredMoney);
                                row.AddValue("box_text", gossipOption.BoxText);

                                row.Comment =
                                    StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.Item1.ObjectType),
                                                         (int)gossip.Value.Item1.ObjectEntry, false);

                                rows.Add(row);
                            }
                        }
                    }

                    result += new QueryBuilder.SQLInsert("gossip_menu_option", rows, 2).Build();
                }
            }

            return(result);
        }
Example #3
0
        public static string DefenseMessage()
        {
            if (Storage.DefenseMessages.IsEmpty())
            {
                return(String.Empty);
            }

            if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.defense_message))
            {
                return(string.Empty);
            }

            const string tableName = "defense_message";

            var rows = new List <QueryBuilder.SQLInsertRow>();

            foreach (var message in Storage.DefenseMessages)
            {
                foreach (var messageValue in message.Value)
                {
                    var row = new QueryBuilder.SQLInsertRow();

                    var query = new StringBuilder(string.Format("SELECT Id FROM {1}.broadcast_text WHERE MaleText='{0}' OR FemaleText='{0}';", MySqlHelper.DoubleQuoteString(messageValue.Item1.text), Settings.TDBDatabase));

                    string broadcastTextId = "";

                    if (Settings.DevMode)
                    {
                        using (var reader = SQLConnector.ExecuteQuery(query.ToString()))
                        {
                            if (reader != null)
                            {
                                while (reader.Read())
                                {
                                    var values = new object[1];
                                    var count  = reader.GetValues(values);
                                    if (count != 1)
                                    {
                                        break; // error in query
                                    }
                                    if (!String.IsNullOrWhiteSpace(broadcastTextId))
                                    {
                                        broadcastTextId += " - " + Convert.ToInt32(values[0]);
                                    }
                                    else
                                    {
                                        broadcastTextId += Convert.ToInt32(values[0]);
                                    }
                                }
                            }
                        }
                    }

                    row.AddValue("ZoneId", message.Key);
                    row.AddValue("Id", "x", false, true);
                    row.AddValue("Text", messageValue.Item1.text);
                    if (Settings.DevMode)
                    {
                        row.AddValue("BroadcastTextId", broadcastTextId);
                    }

                    rows.Add(row);
                }
            }

            return(new QueryBuilder.SQLInsert(tableName, rows, 1, false).Build());
        }
Example #4
0
        public static string CreatureText()
        {
            if (Storage.CreatureTexts.IsEmpty())
            {
                return(string.Empty);
            }

            if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.creature_text))
            {
                return(string.Empty);
            }

            // For each sound and emote, if the time they were send is in the +1/-1 seconds range of
            // our texts, add that sound and emote to our Storage.CreatureTexts

            foreach (var text in Storage.CreatureTexts)
            {
                // For each text
                foreach (var textValue in text.Value)
                {
                    // For each emote
                    foreach (var emote in Storage.Emotes)
                    {
                        // Emote packets always have a sender (guid);
                        // skip this one if it was sent by a different creature
                        if (emote.Key.GetEntry() != text.Key)
                        {
                            continue;
                        }

                        foreach (var emoteValue in emote.Value)
                        {
                            var timeSpan = textValue.Item2 - emoteValue.Item2;
                            if (timeSpan != null && timeSpan.Value.Duration() <= TimeSpan.FromSeconds(1))
                            {
                                textValue.Item1.Emote = emoteValue.Item1;
                            }
                        }
                    }

                    // For each sound
                    foreach (var sound in Storage.Sounds)
                    {
                        var timeSpan = textValue.Item2 - sound.Item2;
                        if (timeSpan != null && timeSpan.Value.Duration() <= TimeSpan.FromSeconds(1))
                        {
                            textValue.Item1.Sound = sound.Item1;
                        }
                    }
                }
            }

            /* can't use compare DB without knowing values of groupid or id
             * var entries = Storage.CreatureTexts.Keys.ToList();
             * var creatureTextDb = SQLDatabase.GetDict<uint, CreatureText>(entries);
             */

            const string tableName = "creature_text";

            var rows = new List <QueryBuilder.SQLInsertRow>();

            foreach (var text in Storage.CreatureTexts)
            {
                foreach (var textValue in text.Value)
                {
                    var row = new QueryBuilder.SQLInsertRow();

                    var query = new StringBuilder(string.Format("SELECT Id FROM {1}.broadcast_text WHERE MaleText='{0}' OR FemaleText='{0}';", MySqlHelper.DoubleQuoteString(textValue.Item1.Text), Settings.TDBDatabase));

                    string broadcastTextId = "";
                    if (Settings.DevMode)
                    {
                        using (var reader = SQLConnector.ExecuteQuery(query.ToString()))
                        {
                            if (reader != null)
                            {
                                while (reader.Read())
                                {
                                    var values = new object[1];
                                    var count  = reader.GetValues(values);
                                    if (count != 1)
                                    {
                                        break; // error in query
                                    }
                                    if (!String.IsNullOrWhiteSpace(broadcastTextId))
                                    {
                                        broadcastTextId += " - " + Convert.ToInt32(values[0]);
                                    }
                                    else
                                    {
                                        broadcastTextId += Convert.ToInt32(values[0]);
                                    }
                                }
                            }
                        }
                    }

                    row.AddValue("entry", text.Key);
                    row.AddValue("groupid", "x", false, true);
                    row.AddValue("id", "x", false, true);
                    row.AddValue("text", textValue.Item1.Text);
                    row.AddValue("type", textValue.Item1.Type);
                    row.AddValue("language", textValue.Item1.Language);
                    row.AddValue("probability", 100.0);
                    row.AddValue("emote", textValue.Item1.Emote);
                    row.AddValue("duration", 0);
                    row.AddValue("sound", textValue.Item1.Sound);
                    if (Settings.DevMode)
                    {
                        row.AddValue("BroadcastTextID", broadcastTextId);
                    }
                    row.AddValue("comment", textValue.Item1.Comment);

                    rows.Add(row);
                }
            }

            return(new QueryBuilder.SQLInsert(tableName, rows, 1, false).Build());
        }
Example #5
0
        public static string QuestObjective()
        {
            var result = "";

            if (Storage.QuestObjectives.IsEmpty())
            {
                return(String.Empty);
            }

            if (!Settings.SQLOutputFlag.HasAnyFlagBit(SQLOutput.quest_template))
            {
                return(String.Empty);
            }

            var entries     = Storage.QuestObjectives.Keys();
            var templatesDb = SQLDatabase.GetDict <uint, QuestInfoObjective>(entries, "Id");

            result += SQLUtil.CompareDicts(Storage.QuestObjectives, templatesDb, StoreNameType.QuestObjective, "Id");

            var rowsIns = new List <QueryBuilder.SQLInsertRow>();
            var rowsUpd = new List <QueryBuilder.SQLUpdateRow>();

            foreach (var questObjectives in Storage.QuestObjectives)
            {
                foreach (var visualEffectIds in questObjectives.Value.Item1.VisualEffectIds)
                {
                    if (SQLConnector.Enabled)
                    {
                        var query = string.Format("SELECT `VisualEffect`, `VerifiedBuild` FROM {0}.quest_visual_effect WHERE `Id`={1} AND `Index`={2};",
                                                  Settings.TDBDatabase, questObjectives.Key, visualEffectIds.Index);

                        using (var reader = SQLConnector.ExecuteQuery(query))
                        {
                            if (reader.HasRows) // possible update
                            {
                                while (reader.Read())
                                {
                                    var row = new QueryBuilder.SQLUpdateRow();

                                    if (!Utilities.EqualValues(reader.GetValue(0), visualEffectIds.VisualEffect))
                                    {
                                        row.AddValue("VisualEffect", visualEffectIds.VisualEffect);
                                    }

                                    if (!Utilities.EqualValues(reader.GetValue(1), questObjectives.Value.Item1.VerifiedBuild))
                                    {
                                        row.AddValue("VerifiedBuild", questObjectives.Value.Item1.VerifiedBuild);
                                    }

                                    row.AddWhere("Id", questObjectives.Key);
                                    row.AddWhere("Index", visualEffectIds.Index);

                                    row.Table = "quest_visual_effect";

                                    if (row.ValueCount != 0)
                                    {
                                        rowsUpd.Add(row);
                                    }
                                }
                            }
                            else // insert
                            {
                                var row = new QueryBuilder.SQLInsertRow();

                                row.AddValue("Id", questObjectives.Key);
                                row.AddValue("Index", visualEffectIds.Index);
                                row.AddValue("VisualEffect", visualEffectIds.VisualEffect);
                                row.AddValue("VerifiedBuild", questObjectives.Value.Item1.VerifiedBuild);

                                rowsIns.Add(row);
                            }
                        }
                    }
                    else // insert
                    {
                        var row = new QueryBuilder.SQLInsertRow();

                        row.AddValue("Id", questObjectives.Key);
                        row.AddValue("Index", visualEffectIds.Index);
                        row.AddValue("VisualEffect", visualEffectIds.VisualEffect);
                        row.AddValue("VerifiedBuild", questObjectives.Value.Item1.VerifiedBuild);

                        rowsIns.Add(row);
                    }
                }
            }

            result += new QueryBuilder.SQLInsert("quest_visual_effect", rowsIns, 2).Build() + new QueryBuilder.SQLUpdate(rowsUpd).Build();

            return(result);
        }
Example #6
0
        public static string Gossip()
        {
            if (Storage.Gossips.IsEmpty)
            {
                return(String.Empty);
            }

            // `creature_template`
            var gossipIds = new Dictionary <uint, UnitGossip>();

            foreach (var gossip in Storage.Gossips)
            {
                if (gossip.Value.ObjectType != ObjectType.Unit)
                {
                    continue;
                }
                // no support for entries with multiple gossips (i.e changed by script)
                if (gossipIds.ContainsKey(gossip.Value.ObjectEntry))
                {
                    continue;
                }

                UnitGossip a;
                a.GossipId = gossip.Key.Item1;
                gossipIds.Add(gossip.Value.ObjectEntry, a);
            }

            var entries     = gossipIds.Keys.ToList();
            var gossipIdsDb = SQLDatabase.GetDict <uint, UnitGossip>(entries);
            var result      = SQLUtil.CompareDicts(gossipIds, gossipIdsDb, StoreNameType.Unit);

            // `gossip`
            if (SQLConnector.Enabled)
            {
                var query = new StringBuilder("SELECT `entry`,`text_id` FROM `world`.`gossip_menu` WHERE ");
                foreach (Tuple <uint, uint> gossip in Storage.Gossips.Keys)
                {
                    query.Append("(`entry`=").Append(gossip.Item1).Append(" AND ");
                    query.Append("`text_id`=").Append(gossip.Item2).Append(") OR ");
                }
                query.Remove(query.Length - 4, 4).Append(";");

                var rows = new List <QueryBuilder.SQLInsertRow>();
                using (var reader = SQLConnector.ExecuteQuery(query.ToString()))
                {
                    if (reader != null)
                    {
                        while (reader.Read())
                        {
                            var values = new object[2];
                            var count  = reader.GetValues(values);
                            if (count != 2)
                            {
                                break; // error in query
                            }
                            var entry  = Convert.ToUInt32(values[0]);
                            var textId = Convert.ToUInt32(values[1]);

                            // our table is small, 2 fields and both are PKs; no need for updates
                            if (!Storage.Gossips.ContainsKey(Tuple.Create(entry, textId)))
                            {
                                var row = new QueryBuilder.SQLInsertRow();
                                row.AddValue("entry", entry);
                                row.AddValue("text_id", textId);
                                row.Comment = StoreGetters.GetName(StoreNameType.Unit, // BUG: GOs can send gossips too
                                                                   (int)entry, false);
                                rows.Add(row);
                            }
                        }
                    }
                }
                result += new QueryBuilder.SQLInsert("gossip_menu", rows, 2).Build();
            }
            else
            {
                var rows = new List <QueryBuilder.SQLInsertRow>();
                foreach (var gossip in Storage.Gossips)
                {
                    var row = new QueryBuilder.SQLInsertRow();

                    row.AddValue("entry", gossip.Key.Item1);
                    row.AddValue("text_id", gossip.Key.Item2);
                    row.Comment = StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.ObjectType),
                                                       (int)gossip.Value.ObjectEntry, false);

                    rows.Add(row);
                }

                result += new QueryBuilder.SQLInsert("gossip_menu", rows, 2).Build();
            }

            // `gossip_menu_option`
            if (SQLConnector.Enabled)
            {
                var rowsIns = new List <QueryBuilder.SQLInsertRow>();
                var rowsUpd = new List <QueryBuilder.SQLUpdateRow>();

                foreach (var gossip in Storage.Gossips)
                {
                    if (gossip.Value.GossipOptions == null)
                    {
                        continue;
                    }
                    foreach (var gossipOption in gossip.Value.GossipOptions)
                    {
                        var query =       //         0     1       2         3         4        5         6
                                    string.Format("SELECT menu_id,id,option_icon,box_coded,box_money,box_text,option_text " +
                                                  "FROM world.gossip_menu_option WHERE menu_id={0} AND id={1};", gossip.Key.Item1,
                                                  gossipOption.Index);
                        using (var reader = SQLConnector.ExecuteQuery(query))
                        {
                            if (reader.HasRows) // possible update
                            {
                                while (reader.Read())
                                {
                                    var row = new QueryBuilder.SQLUpdateRow();

                                    if (!Utilities.EqualValues(reader.GetValue(2), gossipOption.OptionIcon))
                                    {
                                        row.AddValue("option_icon", gossipOption.OptionIcon);
                                    }

                                    if (!Utilities.EqualValues(reader.GetValue(3), gossipOption.Box))
                                    {
                                        row.AddValue("box_coded", gossipOption.Box);
                                    }

                                    if (!Utilities.EqualValues(reader.GetValue(4), gossipOption.RequiredMoney))
                                    {
                                        row.AddValue("box_money", gossipOption.RequiredMoney);
                                    }

                                    if (!Utilities.EqualValues(reader.GetValue(5), gossipOption.BoxText))
                                    {
                                        row.AddValue("box_text", gossipOption.BoxText);
                                    }

                                    if (!Utilities.EqualValues(reader.GetValue(6), gossipOption.OptionText))
                                    {
                                        row.AddValue("option_text", gossipOption.OptionText);
                                    }

                                    row.AddWhere("menu_id", gossip.Key.Item1);
                                    row.AddWhere("id", gossipOption.Index);

                                    row.Comment =
                                        StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.ObjectType),
                                                             (int)gossip.Value.ObjectEntry, false);

                                    row.Table = "gossip_menu_option";

                                    if (row.ValueCount != 0)
                                    {
                                        rowsUpd.Add(row);
                                    }
                                }
                            }
                            else // insert
                            {
                                var row = new QueryBuilder.SQLInsertRow();

                                row.AddValue("menu_id", gossip.Key.Item1);
                                row.AddValue("id", gossipOption.Index);
                                row.AddValue("option_icon", gossipOption.OptionIcon);
                                row.AddValue("option_text", gossipOption.OptionText);
                                row.AddValue("box_coded", gossipOption.Box);
                                row.AddValue("box_money", gossipOption.RequiredMoney);
                                row.AddValue("box_text", gossipOption.BoxText);

                                row.Comment = StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.ObjectType),
                                                                   (int)gossip.Value.ObjectEntry, false);

                                rowsIns.Add(row);
                            }
                        }
                    }
                }
                result += new QueryBuilder.SQLInsert("gossip_menu_option", rowsIns, 2).Build() +
                          new QueryBuilder.SQLUpdate(rowsUpd).Build();
            }
            else
            {
                var rows = new List <QueryBuilder.SQLInsertRow>();
                foreach (var gossip in Storage.Gossips)
                {
                    if (gossip.Value.GossipOptions != null)
                    {
                        foreach (var gossipOption in gossip.Value.GossipOptions)
                        {
                            var row = new QueryBuilder.SQLInsertRow();

                            row.AddValue("menu_id", gossip.Key.Item1);
                            row.AddValue("id", gossipOption.Index);
                            row.AddValue("option_icon", gossipOption.OptionIcon);
                            row.AddValue("option_text", gossipOption.OptionText);
                            row.AddValue("box_coded", gossipOption.Box);
                            row.AddValue("box_money", gossipOption.RequiredMoney);
                            row.AddValue("box_text", gossipOption.BoxText);

                            row.Comment = StoreGetters.GetName(Utilities.ObjectTypeToStore(gossip.Value.ObjectType),
                                                               (int)gossip.Value.ObjectEntry, false);

                            rows.Add(row);
                        }
                    }
                }

                result += new QueryBuilder.SQLInsert("gossip_menu_option", rows, 2).Build();
            }

            return(result);
        }