/// <summary> /// [addedInVersion, +inf[ /// </summary> /// <param name="name">database field name</param> /// <param name="locale">initial locale</param> /// <param name="isPrimaryKey">true if field is a primary key</param> public DBFieldNameAttribute(string name, LocaleConstant locale, bool isPrimaryKey = false) { Name = name; IsPrimaryKey = isPrimaryKey; Count = 1; Locale = locale; }
/// <summary> /// [addedInVersion, +inf[ /// </summary> /// <param name="name">database field name</param> /// <param name="addedInVersion">initial version</param> /// <param name="locale">initial locale</param> /// <param name="isPrimaryKey">true if field is a primary key</param> public DBFieldNameAttribute(string name, TargetedDatabase addedInVersion, LocaleConstant locale, bool isPrimaryKey = false) { Name = name; IsPrimaryKey = isPrimaryKey; Count = 1; Locale = locale; _addedInVersion = addedInVersion; }
/// <summary> /// [addedInVersion, +inf[ /// </summary> /// <param name="name">database field name</param> /// <param name="locale">initial locale</param> /// <param name="isPrimaryKey">true if field is a primary key</param> public DBFieldNameAttribute(string name, LocaleConstant locale, bool isPrimaryKey = false, bool noQuotes = false, bool nullable = false) { Name = name; IsPrimaryKey = isPrimaryKey; NoQuotes = noQuotes; Nullable = nullable; Count = 1; Locale = locale; }
/// <summary> /// [addedInVersion, +inf[ /// </summary> /// <param name="name">database field name</param> /// <param name="locale">initial locale</param> public DBFieldNameAttribute(string name, LocaleConstant locale) { if (BinaryPacketReader.GetLocale() == locale) { Name = name; Count = 1; } else { Name = null; Count = 0; } }
public void LoadData(uint indexField, DBClientHelper[] helpers, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale) { SQLResult result = DB.Hotfix.Query(DB.Hotfix.GetPreparedStatement(preparedStatement)); if (!result.IsEmpty()) { do { var idValue = result.Read <uint>((int)indexField); var obj = new T(); int index = 0; for (var fieldIndex = 0; fieldIndex < helpers.Length; fieldIndex++) { var helper = helpers[fieldIndex]; if (helper.IsArray) { Array array = (Array)helper.Getter(obj); for (var i = 0; i < array.Length; ++i) { switch (Type.GetTypeCode(helper.RealType)) { case TypeCode.SByte: helper.SetValue(array, result.Read <sbyte>(index++), i); break; case TypeCode.Byte: helper.SetValue(array, result.Read <byte>(index++), i); break; case TypeCode.Int16: helper.SetValue(array, result.Read <short>(index++), i); break; case TypeCode.UInt16: helper.SetValue(array, result.Read <ushort>(index++), i); break; case TypeCode.Int32: helper.SetValue(array, result.Read <int>(index++), i); break; case TypeCode.UInt32: helper.SetValue(array, result.Read <uint>(index++), i); break; case TypeCode.Single: helper.SetValue(array, result.Read <float>(index++), i); break; case TypeCode.String: helper.SetValue(array, result.Read <string>(index++), i); break; case TypeCode.Object: switch (helper.FieldType.Name) { case "Vector2": var vector2 = new Vector2(); vector2.X = result.Read <float>(index++); vector2.Y = result.Read <float>(index++); helper.SetValue(array, vector2, i); break; case "Vector3": var vector3 = new Vector3(); vector3.X = result.Read <float>(index++); vector3.Y = result.Read <float>(index++); vector3.Z = result.Read <float>(index++); helper.SetValue(array, vector3, i); break; case "LocalizedString": LocalizedString locString = new LocalizedString(); locString[Global.WorldMgr.GetDefaultDbcLocale()] = result.Read <string>(index++); helper.SetValue(array, locString, i); break; default: Log.outError(LogFilter.ServerLoading, "Wrong Array Type: {0}", helper.FieldType.Name); break; } break; default: Log.outError(LogFilter.ServerLoading, "Wrong Array Type: {0}", helper.FieldType.Name); break; } } } else { switch (Type.GetTypeCode(helper.RealType)) { case TypeCode.SByte: helper.SetValue(obj, result.Read <sbyte>(index++)); break; case TypeCode.Byte: helper.SetValue(obj, result.Read <byte>(index++)); break; case TypeCode.Int16: helper.SetValue(obj, result.Read <short>(index++)); break; case TypeCode.UInt16: helper.SetValue(obj, result.Read <ushort>(index++)); break; case TypeCode.Int32: helper.SetValue(obj, result.Read <int>(index++)); break; case TypeCode.UInt32: helper.SetValue(obj, result.Read <uint>(index++)); break; case TypeCode.Single: helper.SetValue(obj, result.Read <float>(index++)); break; case TypeCode.String: string str = result.Read <string>(index++); helper.SetValue(obj, str); break; case TypeCode.Object: switch (helper.FieldType.Name) { case "Vector2": var vector2 = new Vector2(); vector2.X = result.Read <float>(index++); vector2.Y = result.Read <float>(index++); helper.SetValue(obj, vector2); break; case "Vector3": var vector3 = new Vector3(); vector3.X = result.Read <float>(index++); vector3.Y = result.Read <float>(index++); vector3.Z = result.Read <float>(index++); helper.SetValue(obj, vector3); break; case "LocalizedString": LocalizedString locString = new LocalizedString(); locString[Global.WorldMgr.GetDefaultDbcLocale()] = result.Read <string>(index++); helper.SetValue(obj, locString); break; default: Log.outError(LogFilter.ServerLoading, "Wrong Array Type: {0}", helper.FieldType.Name); break; } break; default: Log.outError(LogFilter.ServerLoading, "Wrong Array Type: {0}", helper.FieldType.Name); break; } } } base[idValue] = obj; }while (result.NextRow()); } if (preparedStatementLocale == 0) { return; } for (LocaleConstant locale = 0; locale < LocaleConstant.OldTotal; ++locale) { if (Global.WorldMgr.GetDefaultDbcLocale() == locale || locale == LocaleConstant.None) { continue; } PreparedStatement stmt = DB.Hotfix.GetPreparedStatement(preparedStatementLocale); stmt.AddValue(0, locale.ToString()); SQLResult localeResult = DB.Hotfix.Query(stmt); if (localeResult.IsEmpty()) { continue; } do { int index = 0; var obj = this.LookupByKey(localeResult.Read <uint>(index++)); if (obj == null) { continue; } for (var i = 0; i < helpers.Length; i++) { var fieldInfo = helpers[i]; if (fieldInfo.FieldType != typeof(LocalizedString)) { continue; } LocalizedString locString = (LocalizedString)fieldInfo.Getter(obj); locString[locale] = localeResult.Read <string>(index++); } } while (localeResult.NextRow()); } }
/// <summary> /// [addedInVersion, removedInVersion[ /// </summary> /// <param name="name">database field name</param> /// <param name="addedInVersion">initial version</param> /// <param name="removedInVersion">final version</param> /// <param name="locale">initial locale</param> /// <param name="isPrimaryKey">true if field is a primary key</param> public DBFieldNameAttribute(string name, TargetedDatabase addedInVersion, TargetedDatabase removedInVersion, LocaleConstant locale, bool isPrimaryKey = false, bool noQuotes = false, bool nullable = false) { Name = name; IsPrimaryKey = isPrimaryKey; NoQuotes = noQuotes; Nullable = nullable; Count = 1; Locale = locale; _addedInVersion = addedInVersion; _removedInVersion = removedInVersion; }
public bool HasString(LocaleConstant locale = SharedConst.DefaultLocale) { return(!string.IsNullOrEmpty(stringStorage[(int)locale])); }
public string GetName(LocaleConstant locale = SharedConst.DefaultLocale) { return(ExtendedData.Display[locale]); }
public void SetLocale(LocaleConstant locale) { _locale = locale; }
public void SendQuestGiverQuestDetails(Quest quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup) { QuestGiverQuestDetails packet = new QuestGiverQuestDetails(); packet.QuestTitle = quest.LogTitle; packet.LogDescription = quest.LogDescription; packet.DescriptionText = quest.QuestDescription; packet.PortraitGiverText = quest.PortraitGiverText; packet.PortraitGiverName = quest.PortraitGiverName; packet.PortraitTurnInText = quest.PortraitTurnInText; packet.PortraitTurnInName = quest.PortraitTurnInName; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref packet.QuestTitle); ObjectManager.GetLocaleString(localeData.LogDescription, locale, ref packet.LogDescription); ObjectManager.GetLocaleString(localeData.QuestDescription, locale, ref packet.DescriptionText); ObjectManager.GetLocaleString(localeData.PortraitGiverText, locale, ref packet.PortraitGiverText); ObjectManager.GetLocaleString(localeData.PortraitGiverName, locale, ref packet.PortraitGiverName); ObjectManager.GetLocaleString(localeData.PortraitTurnInText, locale, ref packet.PortraitTurnInText); ObjectManager.GetLocaleString(localeData.PortraitTurnInName, locale, ref packet.PortraitTurnInName); } } packet.QuestGiverGUID = npcGUID; packet.InformUnit = _session.GetPlayer().GetDivider(); packet.QuestID = quest.Id; packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.AutoLaunched = autoLaunched; packet.DisplayPopup = displayPopup; packet.QuestFlags[0] = (uint)quest.Flags; packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.SuggestedPartyMembers = quest.SuggestedPlayers; if (quest.SourceSpellID != 0) { packet.LearnSpells.Add(quest.SourceSpellID); } quest.BuildQuestRewards(packet.Rewards, _session.GetPlayer()); for (int i = 0; i < SharedConst.QuestEmoteCount; ++i) { var emote = new QuestDescEmote(quest.DetailsEmote[i], quest.DetailsEmoteDelay[i]); packet.DescEmotes.Add(emote); } var objs = quest.Objectives; for (int i = 0; i < objs.Count; ++i) { var obj = new QuestObjectiveSimple(); obj.ID = objs[i].ID; obj.ObjectID = objs[i].ObjectID; obj.Amount = objs[i].Amount; obj.Type = (byte)objs[i].Type; packet.Objectives.Add(obj); } _session.SendPacket(packet); }
public void SendQuestGiverOfferReward(Quest quest, ObjectGuid npcGUID, bool autoLaunched) { QuestGiverOfferRewardMessage packet = new QuestGiverOfferRewardMessage(); packet.QuestTitle = quest.LogTitle; packet.RewardText = quest.OfferRewardText; packet.PortraitGiverText = quest.PortraitGiverText; packet.PortraitGiverName = quest.PortraitGiverName; packet.PortraitTurnInText = quest.PortraitTurnInText; packet.PortraitTurnInName = quest.PortraitTurnInName; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref packet.QuestTitle); ObjectManager.GetLocaleString(localeData.PortraitGiverText, locale, ref packet.PortraitGiverText); ObjectManager.GetLocaleString(localeData.PortraitGiverName, locale, ref packet.PortraitGiverName); ObjectManager.GetLocaleString(localeData.PortraitTurnInText, locale, ref packet.PortraitTurnInText); ObjectManager.GetLocaleString(localeData.PortraitTurnInName, locale, ref packet.PortraitTurnInName); } QuestOfferRewardLocale questOfferRewardLocale = Global.ObjectMgr.GetQuestOfferRewardLocale(quest.Id); if (questOfferRewardLocale != null) { ObjectManager.GetLocaleString(questOfferRewardLocale.RewardText, locale, ref packet.RewardText); } } QuestGiverOfferReward offer = new QuestGiverOfferReward(); quest.BuildQuestRewards(offer.Rewards, _session.GetPlayer()); offer.QuestGiverGUID = npcGUID; // Is there a better way? what about game objects? Creature creature = ObjectAccessor.GetCreature(_session.GetPlayer(), npcGUID); if (creature) { offer.QuestGiverCreatureID = creature.GetCreatureTemplate().Entry; } offer.QuestID = quest.Id; offer.AutoLaunched = autoLaunched; offer.SuggestedPartyMembers = quest.SuggestedPlayers; for (uint i = 0; i < SharedConst.QuestEmoteCount && quest.OfferRewardEmote[i] != 0; ++i) { offer.Emotes.Add(new QuestDescEmote(quest.OfferRewardEmote[i], quest.OfferRewardEmoteDelay[i])); } offer.QuestFlags[0] = (uint)quest.Flags; offer.QuestFlags[1] = (uint)quest.FlagsEx; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.PortraitGiver = quest.QuestGiverPortrait; packet.QuestPackageID = quest.PackageID; packet.QuestData = offer; _session.SendPacket(packet); }
public virtual void Invoke(List <ServerPacket> data, LocaleConstant locale = LocaleConstant.enUS) { }
public void AddGreetingLocale(LocaleConstant locale, string greeting) { _greeting[(int)locale] = greeting; }
public virtual ServerPacket Invoke(LocaleConstant locale = LocaleConstant.enUS) { return(null); }
static bool HandleLearnAllRecipesCommand(StringArguments args, CommandHandler handler) { // Learns all recipes of specified profession and sets skill to max // Example: .learn all_recipes enchanting Player target = handler.GetSelectedPlayer(); if (!target) { handler.SendSysMessage(CypherStrings.PlayerNotFound); return(false); } if (args.Empty()) { return(false); } // converting string that we try to find to lower case string namePart = args.NextString().ToLower(); string name = ""; uint skillId = 0; foreach (var skillInfo in CliDB.SkillLineStorage.Values) { if ((skillInfo.CategoryID != SkillCategory.Profession && skillInfo.CategoryID != SkillCategory.Secondary) || skillInfo.CanLink == 0) // only prof with recipes have set { continue; } LocaleConstant locale = handler.GetSessionDbcLocale(); name = skillInfo.DisplayName[locale]; if (string.IsNullOrEmpty(name)) { continue; } if (!name.Like(namePart)) { locale = 0; for (; locale < LocaleConstant.Total; ++locale) { if (locale == handler.GetSessionDbcLocale()) { continue; } name = skillInfo.DisplayName[locale]; if (name.IsEmpty()) { continue; } if (name.Like(namePart)) { break; } } } if (locale < LocaleConstant.Total) { skillId = skillInfo.Id; break; } } if (skillId == 0) { return(false); } HandleLearnSkillRecipesHelper(target, skillId); ushort maxLevel = target.GetPureMaxSkillValue((SkillType)skillId); target.SetSkill(skillId, target.GetSkillStep((SkillType)skillId), maxLevel, maxLevel); handler.SendSysMessage(CypherStrings.CommandLearnAllRecipes, name); return(true); }
public override String GetSQLRequest() { String returnSql = ""; if (m_creatureTemplateData.id == 0 || isError) { return(returnSql); } // Creature Template if (IsCheckboxChecked("template")) { switch (GetVersion()) { case "7.3.5.26972": { m_creatureTemplateBuilder = new SqlBuilder("creature_template", "entry"); m_creatureTemplateBuilder.SetFieldsNames("minlevel", "maxlevel", "name", "subname", "modelid1", "rank", "type", "family"); m_creatureTemplateBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.minlevel, m_creatureTemplateData.maxlevel, m_creatureTemplateData.name, m_subname ?? "", m_modelid, m_isBoss ? "3" : "0", m_creatureTemplateData.type, m_creatureTemplateData.family); returnSql += m_creatureTemplateBuilder.ToString() + "\n"; } break; default: // 8.0.1.28153 { m_creatureTemplateBuilder = new SqlBuilder("creature_template", "entry"); m_creatureTemplateBuilder.SetFieldsNames("minlevel", "maxlevel", "name", "subname", "rank", "type", "family"); m_creatureTemplateBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.minlevel, m_creatureTemplateData.maxlevel, m_creatureTemplateData.name, m_subname ?? "", m_isBoss ? "3" : "0", m_creatureTemplateData.type, m_creatureTemplateData.family); returnSql += m_creatureTemplateBuilder.ToString() + "\n"; // models are now saved in creature_template_model as of BFA m_creatureTemplateModelBuilder = new SqlBuilder("creature_template_model", "CreatureID"); m_creatureTemplateModelBuilder.SetFieldsNames("Idx", "CreatureDisplayID", "Probability"); m_creatureTemplateModelBuilder.AppendFieldsValue(m_creatureTemplateData.id, "0", m_modelid, "1"); returnSql += m_creatureTemplateModelBuilder.ToString() + "\n"; } break; } } if (IsCheckboxChecked("health modifier") && m_creatureTemplateData.health != null) { SqlBuilder builder = new SqlBuilder("creature_template", "entry", SqlQueryType.Update); builder.SetFieldsNames("HealthModifier"); String healthModifier = Tools.GetHealthModifier(float.Parse(m_creatureTemplateData.health), 6, m_creatureTemplateData.minlevel, 1); builder.AppendFieldsValue(m_creatureTemplateData.id, healthModifier); returnSql += builder.ToString() + "\n"; } // faction if (IsCheckboxChecked("simple faction")) { SqlBuilder m_creatureFactionBuilder = new SqlBuilder("creature_template", "entry", SqlQueryType.Update); m_creatureFactionBuilder.SetFieldsNames("faction"); m_creatureFactionBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_faction); returnSql += m_creatureFactionBuilder.ToString() + "\n"; } // Creature Template if (IsCheckboxChecked("money")) { SqlBuilder m_creatureMoneyBuilder = new SqlBuilder("creature_template", "entry", SqlQueryType.Update); m_creatureMoneyBuilder.SetFieldsNames("mingold", "maxgold"); m_creatureMoneyBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.minGold, m_creatureTemplateData.maxGold); returnSql += m_creatureMoneyBuilder.ToString() + "\n"; } // Locales if (IsCheckboxChecked("locale")) { LocaleConstant localeIndex = (LocaleConstant)Properties.Settings.Default.localIndex; String localeName = localeIndex.ToString(); if (localeIndex != 0) { m_creatureLocalesBuilder = new SqlBuilder("creature_template_locales", "entry"); m_creatureLocalesBuilder.SetFieldsNames("locale", "Name", "Title"); m_creatureLocalesBuilder.AppendFieldsValue(m_creatureTemplateData.id, localeIndex.ToString(), m_creatureTemplateData.name, m_subname ?? ""); returnSql += m_creatureLocalesBuilder.ToString() + "\n"; } else { m_creatureLocalesBuilder = new SqlBuilder("creature_template", "entry"); m_creatureLocalesBuilder.SetFieldsNames("name", "subname"); m_creatureLocalesBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.name, m_subname ?? ""); returnSql += m_creatureLocalesBuilder.ToString() + "\n"; } } if (IsCheckboxChecked("vendor") && m_npcVendorDatas != null) { m_npcVendorBuilder = new SqlBuilder("npc_vendor", "entry", SqlQueryType.DeleteInsert); m_npcVendorBuilder.SetFieldsNames("slot", "item", "maxcount", "incrtime", "ExtendedCost", "type", "PlayerConditionID"); foreach (NpcVendorParsing npcVendorData in m_npcVendorDatas) { m_npcVendorBuilder.AppendFieldsValue(m_creatureTemplateData.id, npcVendorData.slot, npcVendorData.id, npcVendorData.avail, npcVendorData.incrTime, npcVendorData.integerExtendedCost, 1, 0); } returnSql += m_npcVendorBuilder.ToString() + "\n"; } if (IsCheckboxChecked("loot") && m_creatureLootDatas != null) { bool referenceAdded = false; int maxReferenceLoot = 2; // A voir si on peut trouver int templateEntry = m_creatureTemplateData.id; m_creatureLootBuilder = new SqlBuilder("creature_loot_template", "entry", SqlQueryType.DeleteInsert); m_creatureLootBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); m_creatureReferenceLootBuilder = new SqlBuilder("reference_loot_template", "entry", SqlQueryType.DeleteInsert); m_creatureReferenceLootBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); returnSql += "UPDATE creature_template SET lootid = " + templateEntry + " WHERE entry = " + templateEntry + " AND lootid = 0;\n"; foreach (CreatureLootParsing creatureLootData in m_creatureLootDatas) { List <int> entryList = new List <int>(); CreatureLootItemParsing creatureLootItemData = null; try { creatureLootItemData = (CreatureLootItemParsing)creatureLootData; } catch (Exception ex) { } CreatureLootCurrencyParsing creatureLootCurrencyData = null; try { creatureLootCurrencyData = (CreatureLootCurrencyParsing)creatureLootData; } catch (Exception ex) { } int minLootCount = creatureLootData.stack.Length >= 1 ? creatureLootData.stack[0] : 1; int maxLootCount = creatureLootData.stack.Length >= 2 ? creatureLootData.stack[1] : minLootCount; // If bonuses, certainly an important loot, set to references if (!IsCheckboxChecked("is dungeon/raid boss") || (creatureLootItemData == null || creatureLootItemData.bonustrees == null)) { switch (creatureLootData.mode) { default: entryList.Add(templateEntry); break;; } foreach (int entry in entryList) { int idMultiplier = creatureLootCurrencyData != null ? -1 : 1; if (idMultiplier < 1) { continue; } m_creatureLootBuilder.AppendFieldsValue(entry, // Entry creatureLootData.id * idMultiplier, // Item 0, // Reference creatureLootData.percent, // Chance creatureLootData.questRequired, // QuestRequired 1, // LootMode 0, // GroupId minLootCount, // MinCount maxLootCount, // MaxCount ""); // Comment } } else { if (!referenceAdded) { m_creatureLootBuilder.AppendFieldsValue(templateEntry, // Entry 0, // Item templateEntry, // Reference 100, // Chance 0, // QuestRequired 1, // LootMode 0, // GroupId maxReferenceLoot, // MinCount maxReferenceLoot, // MaxCount ""); // Comment referenceAdded = true; } m_creatureReferenceLootBuilder.AppendFieldsValue(templateEntry, // Entry creatureLootData.id, // Item 0, // Reference creatureLootData.percent, // Chance creatureLootData.questRequired, // QuestRequired 1, // LootMode 1, // GroupId minLootCount, // MinCount maxLootCount, // MaxCount ""); // Comment } if (creatureLootData.percent == "0") { m_zeroPercentLootChance = true; } } returnSql += m_creatureLootBuilder.ToString() + "\n"; returnSql += m_creatureReferenceLootBuilder.ToString() + "\n"; } if (IsCheckboxChecked("skinning") && m_creatureSkinningDatas != null) { m_creatureSkinningBuilder = new SqlBuilder("skinning_loot_template", "entry", SqlQueryType.DeleteInsert); m_creatureSkinningBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); returnSql += "UPDATE creature_template SET skinloot = " + m_creatureTemplateData.id + " WHERE entry = " + m_creatureTemplateData.id + " AND skinloot = 0;\n"; foreach (CreatureLootParsing creatureSkinningData in m_creatureSkinningDatas) { m_creatureSkinningBuilder.AppendFieldsValue(m_creatureTemplateData.id, // Entry creatureSkinningData.id, // Item 0, // Reference creatureSkinningData.percent, // Chance 0, // QuestRequired 1, // LootMode 0, // GroupId creatureSkinningData.stack[0], // MinCount creatureSkinningData.stack[1], // MaxCount ""); // Comment } returnSql += m_creatureSkinningBuilder.ToString() + "\n"; } if (IsCheckboxChecked("trainer") && m_creatureTrainerDatas != null) { m_creatureTrainerBuilder = new SqlBuilder("npc_trainer", "entry", SqlQueryType.DeleteInsert); m_creatureTrainerBuilder.SetFieldsNames("spell", "spellcost", "reqskill", "reqskillvalue", "reqlevel"); returnSql += "UPDATE creature_template SET npc_flag = 16 WHERE entry = " + m_creatureTemplateData.id + ";\n"; foreach (CreatureTrainerParsing creatureTrainerData in m_creatureTrainerDatas) { int reqskill = creatureTrainerData.learnedat > 0 ? creatureTrainerData.skill[0] : 0; m_creatureTrainerBuilder.AppendFieldsValue(m_creatureTemplateData.id, creatureTrainerData.id, creatureTrainerData.trainingcost, reqskill, creatureTrainerData.learnedat, creatureTrainerData.level); } returnSql += m_creatureTrainerBuilder.ToString() + "\n"; } if (IsCheckboxChecked("quest starter") && m_creatureQuestStarterDatas != null) { m_creatureQuestStarterBuilder = new SqlBuilder("creature_queststarter", "entry", SqlQueryType.DeleteInsert); m_creatureQuestStarterBuilder.SetFieldsNames("quest"); foreach (QuestStarterEnderParsing creatureQuestStarterData in m_creatureQuestStarterDatas) { m_creatureQuestStarterBuilder.AppendFieldsValue(m_creatureTemplateData.id, creatureQuestStarterData.id); } returnSql += m_creatureQuestStarterBuilder.ToString() + "\n"; } if (IsCheckboxChecked("quest ender") && m_creatureQuestEnderDatas != null) { m_creatureQuestEnderBuilder = new SqlBuilder("creature_questender", "entry", SqlQueryType.DeleteInsert); m_creatureQuestEnderBuilder.SetFieldsNames("quest"); foreach (QuestStarterEnderParsing creatureQuestEnderData in m_creatureQuestEnderDatas) { m_creatureQuestEnderBuilder.AppendFieldsValue(m_creatureTemplateData.id, creatureQuestEnderData.id); } returnSql += m_creatureQuestEnderBuilder.ToString() + "\n"; } return(returnSql); }
void HandleCreatureQuery(QueryCreature packet) { QueryCreatureResponse response = new QueryCreatureResponse(); response.CreatureID = packet.CreatureID; CreatureTemplate creatureInfo = Global.ObjectMgr.GetCreatureTemplate(packet.CreatureID); if (creatureInfo != null) { response.Allow = true; CreatureStats stats = new CreatureStats(); stats.Leader = creatureInfo.RacialLeader; string name = creatureInfo.Name; string nameAlt = creatureInfo.FemaleName; stats.Flags[0] = (uint)creatureInfo.TypeFlags; stats.Flags[1] = creatureInfo.TypeFlags2; stats.CreatureType = (int)creatureInfo.CreatureType; stats.CreatureFamily = (int)creatureInfo.Family; stats.Classification = (int)creatureInfo.Rank; for (uint i = 0; i < SharedConst.MaxCreatureKillCredit; ++i) { stats.ProxyCreatureID[i] = creatureInfo.KillCredit[i]; } stats.CreatureDisplayID[0] = creatureInfo.ModelId1; stats.CreatureDisplayID[1] = creatureInfo.ModelId2; stats.CreatureDisplayID[2] = creatureInfo.ModelId3; stats.CreatureDisplayID[3] = creatureInfo.ModelId4; stats.HpMulti = creatureInfo.ModHealth; stats.EnergyMulti = creatureInfo.ModMana; stats.CreatureMovementInfoID = creatureInfo.MovementId; stats.RequiredExpansion = creatureInfo.RequiredExpansion; stats.HealthScalingExpansion = creatureInfo.HealthScalingExpansion; stats.VignetteID = creatureInfo.VignetteID; stats.Title = creatureInfo.SubName; stats.TitleAlt = creatureInfo.TitleAlt; stats.CursorName = creatureInfo.IconName; var items = Global.ObjectMgr.GetCreatureQuestItemList(packet.CreatureID); foreach (uint item in items) { stats.QuestItems.Add(item); } LocaleConstant localeConstant = GetSessionDbLocaleIndex(); if (localeConstant != LocaleConstant.enUS) { CreatureLocale creatureLocale = Global.ObjectMgr.GetCreatureLocale(packet.CreatureID); if (creatureLocale != null) { ObjectManager.GetLocaleString(creatureLocale.Name, localeConstant, ref name); ObjectManager.GetLocaleString(creatureLocale.NameAlt, localeConstant, ref nameAlt); ObjectManager.GetLocaleString(creatureLocale.Title, localeConstant, ref stats.Title); ObjectManager.GetLocaleString(creatureLocale.TitleAlt, localeConstant, ref stats.TitleAlt); } } stats.Name[0] = name; stats.NameAlt[0] = nameAlt; response.Stats = stats; } SendPacket(response); }
static bool HandleCharacterReputationCommand(StringArguments args, CommandHandler handler) { Player target; if (!handler.extractPlayerTarget(args, out target)) { return(false); } LocaleConstant loc = handler.GetSessionDbcLocale(); var targetFSL = target.GetReputationMgr().GetStateList(); foreach (var pair in targetFSL) { FactionState faction = pair.Value; FactionRecord factionEntry = CliDB.FactionStorage.LookupByKey(faction.ID); string factionName = factionEntry != null ? factionEntry.Name[loc] : "#Not found#"; ReputationRank rank = target.GetReputationMgr().GetRank(factionEntry); string rankName = handler.GetCypherString(ReputationMgr.ReputationRankStrIndex[(int)rank]); StringBuilder ss = new StringBuilder(); if (handler.GetSession() != null) { ss.AppendFormat("{0} - |cffffffff|Hfaction:{0}|h[{1} {2}]|h|r", faction.ID, factionName, loc); } else { ss.AppendFormat("{0} - {1} {2}", faction.ID, factionName, loc); } ss.AppendFormat(" {0} ({1})", rankName, target.GetReputationMgr().GetReputation(factionEntry)); if (faction.Flags.HasAnyFlag(FactionFlags.Visible)) { ss.Append(handler.GetCypherString(CypherStrings.FactionVisible)); } if (faction.Flags.HasAnyFlag(FactionFlags.AtWar)) { ss.Append(handler.GetCypherString(CypherStrings.FactionAtwar)); } if (faction.Flags.HasAnyFlag(FactionFlags.PeaceForced)) { ss.Append(handler.GetCypherString(CypherStrings.FactionPeaceForced)); } if (faction.Flags.HasAnyFlag(FactionFlags.Hidden)) { ss.Append(handler.GetCypherString(CypherStrings.FactionHidden)); } if (faction.Flags.HasAnyFlag(FactionFlags.InvisibleForced)) { ss.Append(handler.GetCypherString(CypherStrings.FactionInvisibleForced)); } if (faction.Flags.HasAnyFlag(FactionFlags.Inactive)) { ss.Append(handler.GetCypherString(CypherStrings.FactionInactive)); } handler.SendSysMessage(ss.ToString()); } return(true); }
public void WriteRecord(uint id, LocaleConstant locale, ByteBuffer buffer) { T entry = this.LookupByKey(id); foreach (var fieldInfo in entry.GetType().GetFields()) { if (fieldInfo.Name == "Id") { continue; } var type = fieldInfo.FieldType; if (type.IsArray) { WriteArrayValues(entry, fieldInfo, buffer); continue; } switch (Type.GetTypeCode(type)) { case TypeCode.Boolean: buffer.WriteUInt8(fieldInfo.GetValue(entry)); break; case TypeCode.SByte: buffer.WriteInt8(fieldInfo.GetValue(entry)); break; case TypeCode.Byte: buffer.WriteUInt8(fieldInfo.GetValue(entry)); break; case TypeCode.Int16: buffer.WriteInt16(fieldInfo.GetValue(entry)); break; case TypeCode.UInt16: buffer.WriteUInt16(fieldInfo.GetValue(entry)); break; case TypeCode.Int32: buffer.WriteInt32(fieldInfo.GetValue(entry)); break; case TypeCode.UInt32: buffer.WriteUInt32(fieldInfo.GetValue(entry)); break; case TypeCode.Int64: buffer.WriteInt64(fieldInfo.GetValue(entry)); break; case TypeCode.UInt64: buffer.WriteUInt64(fieldInfo.GetValue(entry)); break; case TypeCode.Single: buffer.WriteFloat(fieldInfo.GetValue(entry)); break; case TypeCode.Object: switch (type.Name) { case "LocalizedString": LocalizedString locStr = (LocalizedString)fieldInfo.GetValue(entry); if (!locStr.HasString(locale)) { locale = 0; if (!locStr.HasString(locale)) { buffer.WriteUInt16(0); break; } } string str = locStr[locale]; buffer.WriteCString(str); break; } break; } } }
public void SendGossipMenu(uint titleTextId, ObjectGuid objectGUID) { _interactionData.Reset(); _interactionData.SourceGuid = objectGUID; GossipMessagePkt packet = new GossipMessagePkt(); packet.GossipGUID = objectGUID; packet.GossipID = (int)_gossipMenu.GetMenuId(); packet.TextID = (int)titleTextId; uint count = 0; foreach (var pair in _gossipMenu.GetMenuItems()) { ClientGossipOptions opt = new ClientGossipOptions(); GossipMenuItem item = pair.Value; opt.ClientOption = (int)pair.Key; opt.OptionNPC = item.MenuItemIcon; opt.OptionFlags = (byte)(item.IsCoded ? 1 : 0); // makes pop up box password opt.OptionCost = (int)item.BoxMoney; // money required to open menu, 2.0.3 opt.Text = item.Message; // text for gossip item opt.Confirm = item.BoxMessage; // accept text (related to money) pop up box, 2.0.3 packet.GossipOptions.Add(opt); ++count; } count = 0; for (byte i = 0; i < _questMenu.GetMenuItemCount(); ++i) { QuestMenuItem item = _questMenu.GetItem(i); uint questID = item.QuestId; Quest quest = Global.ObjectMgr.GetQuestTemplate(questID); if (quest != null) { ClientGossipText text = new ClientGossipText(); text.QuestID = (int)questID; text.QuestType = item.QuestIcon; text.QuestLevel = quest.Level; text.QuestMaxScalingLevel = quest.MaxScalingLevel; text.QuestFlags = (int)quest.Flags; text.QuestFlagsEx = (int)quest.FlagsEx; text.Repeatable = quest.IsRepeatable(); text.QuestTitle = quest.LogTitle; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref text.QuestTitle); } } packet.GossipText.Add(text); ++count; } } _session.SendPacket(packet); }
public void LoadData(int indexField, HotfixStatements preparedStatement, HotfixStatements preparedStatementLocale) { SQLResult result = DB.Hotfix.Query(DB.Hotfix.GetPreparedStatement(preparedStatement)); if (!result.IsEmpty()) { do { var id = result.Read <uint>(indexField == -1 ? 0 : indexField); var obj = new T(); int dbIndex = 0; foreach (var f in typeof(T).GetFields()) { Type type = f.FieldType; if (type.IsArray) { Type arrayElementType = type.GetElementType(); if (arrayElementType.IsEnum) { arrayElementType = arrayElementType.GetEnumUnderlyingType(); } Array array = (Array)f.GetValue(obj); switch (Type.GetTypeCode(arrayElementType)) { case TypeCode.SByte: f.SetValue(obj, ReadArray <sbyte>(result, dbIndex, array.Length)); break; case TypeCode.Byte: f.SetValue(obj, ReadArray <byte>(result, dbIndex, array.Length)); break; case TypeCode.Int16: f.SetValue(obj, ReadArray <short>(result, dbIndex, array.Length)); break; case TypeCode.UInt16: f.SetValue(obj, ReadArray <ushort>(result, dbIndex, array.Length)); break; case TypeCode.Int32: f.SetValue(obj, ReadArray <int>(result, dbIndex, array.Length)); break; case TypeCode.UInt32: f.SetValue(obj, ReadArray <uint>(result, dbIndex, array.Length)); break; case TypeCode.Single: f.SetValue(obj, ReadArray <float>(result, dbIndex, array.Length)); break; case TypeCode.String: f.SetValue(obj, ReadArray <string>(result, dbIndex, array.Length)); break; case TypeCode.Object: if (arrayElementType == typeof(Vector3)) { f.SetValue(obj, new Vector3(ReadArray <float>(result, dbIndex, 3))); } break; default: Log.outError(LogFilter.ServerLoading, "Wrong Array Type: {0}", arrayElementType.Name); break; } dbIndex += array.Length; } else { if (type.IsEnum) { type = type.GetEnumUnderlyingType(); } switch (Type.GetTypeCode(type)) { case TypeCode.SByte: f.SetValue(obj, result.Read <sbyte>(dbIndex++)); break; case TypeCode.Byte: f.SetValue(obj, result.Read <byte>(dbIndex++)); break; case TypeCode.Int16: f.SetValue(obj, result.Read <short>(dbIndex++)); break; case TypeCode.UInt16: f.SetValue(obj, result.Read <ushort>(dbIndex++)); break; case TypeCode.Int32: f.SetValue(obj, result.Read <int>(dbIndex++)); break; case TypeCode.UInt32: f.SetValue(obj, result.Read <uint>(dbIndex++)); break; case TypeCode.Single: f.SetValue(obj, result.Read <float>(dbIndex++)); break; case TypeCode.String: string str = result.Read <string>(dbIndex++); f.SetValue(obj, str); break; case TypeCode.Object: if (type == typeof(LocalizedString)) { LocalizedString locString = new LocalizedString(); locString[Global.WorldMgr.GetDefaultDbcLocale()] = result.Read <string>(dbIndex++); f.SetValue(obj, locString); } else if (type == typeof(Vector2)) { f.SetValue(obj, new Vector2(ReadArray <float>(result, dbIndex, 2))); dbIndex += 2; } else if (type == typeof(Vector3)) { f.SetValue(obj, new Vector3(ReadArray <float>(result, dbIndex, 3))); dbIndex += 3; } else if (type == typeof(FlagArray128)) { f.SetValue(obj, new FlagArray128(ReadArray <uint>(result, dbIndex, 4))); dbIndex += 4; } break; default: Log.outError(LogFilter.ServerLoading, "Wrong Type: {0}", type.Name); break; } } } base[id] = obj; }while (result.NextRow()); } if (preparedStatementLocale == 0) { return; } for (LocaleConstant locale = 0; locale < LocaleConstant.Total; ++locale) { if (Global.WorldMgr.GetDefaultDbcLocale() == locale || locale == LocaleConstant.None) { continue; } PreparedStatement stmt = DB.Hotfix.GetPreparedStatement(preparedStatementLocale); stmt.AddValue(0, locale.ToString()); SQLResult localeResult = DB.Hotfix.Query(stmt); if (localeResult.IsEmpty()) { continue; } do { int index = 0; var obj = this.LookupByKey(localeResult.Read <uint>(index++)); if (obj == null) { continue; } foreach (var f in typeof(T).GetFields()) { if (f.FieldType != typeof(LocalizedString)) { continue; } LocalizedString locString = (LocalizedString)f.GetValue(obj); locString[locale] = localeResult.Read <string>(index++); } } while (localeResult.NextRow()); } }
public void SendQuestQueryResponse(Quest quest) { QueryQuestInfoResponse packet = new QueryQuestInfoResponse(); packet.Allow = true; packet.QuestID = quest.Id; packet.Info.LogTitle = quest.LogTitle; packet.Info.LogDescription = quest.LogDescription; packet.Info.QuestDescription = quest.QuestDescription; packet.Info.AreaDescription = quest.AreaDescription; packet.Info.QuestCompletionLog = quest.QuestCompletionLog; packet.Info.PortraitGiverText = quest.PortraitGiverText; packet.Info.PortraitGiverName = quest.PortraitGiverName; packet.Info.PortraitTurnInText = quest.PortraitTurnInText; packet.Info.PortraitTurnInName = quest.PortraitTurnInName; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale questTemplateLocale = Global.ObjectMgr.GetQuestLocale(quest.Id); if (questTemplateLocale != null) { ObjectManager.GetLocaleString(questTemplateLocale.LogTitle, locale, ref packet.Info.LogTitle); ObjectManager.GetLocaleString(questTemplateLocale.LogDescription, locale, ref packet.Info.LogDescription); ObjectManager.GetLocaleString(questTemplateLocale.QuestDescription, locale, ref packet.Info.QuestDescription); ObjectManager.GetLocaleString(questTemplateLocale.AreaDescription, locale, ref packet.Info.AreaDescription); ObjectManager.GetLocaleString(questTemplateLocale.QuestCompletionLog, locale, ref packet.Info.QuestCompletionLog); ObjectManager.GetLocaleString(questTemplateLocale.PortraitGiverText, locale, ref packet.Info.PortraitGiverText); ObjectManager.GetLocaleString(questTemplateLocale.PortraitGiverName, locale, ref packet.Info.PortraitGiverName); ObjectManager.GetLocaleString(questTemplateLocale.PortraitTurnInText, locale, ref packet.Info.PortraitTurnInText); ObjectManager.GetLocaleString(questTemplateLocale.PortraitTurnInName, locale, ref packet.Info.PortraitTurnInName); } } packet.Info.QuestID = quest.Id; packet.Info.QuestType = (int)quest.Type; packet.Info.QuestLevel = quest.Level; packet.Info.QuestMaxScalingLevel = quest.MaxScalingLevel; packet.Info.QuestPackageID = quest.PackageID; packet.Info.QuestMinLevel = quest.MinLevel; packet.Info.QuestSortID = quest.QuestSortID; packet.Info.QuestInfoID = quest.QuestInfoID; packet.Info.SuggestedGroupNum = quest.SuggestedPlayers; packet.Info.RewardNextQuest = quest.NextQuestInChain; packet.Info.RewardXPDifficulty = quest.RewardXPDifficulty; packet.Info.RewardXPMultiplier = quest.RewardXPMultiplier; if (!quest.HasFlag(QuestFlags.HiddenRewards)) { packet.Info.RewardMoney = quest.RewardMoney < 0 ? quest.RewardMoney : (int)_session.GetPlayer().GetQuestMoneyReward(quest); } packet.Info.RewardMoneyDifficulty = quest.RewardMoneyDifficulty; packet.Info.RewardMoneyMultiplier = quest.RewardMoneyMultiplier; packet.Info.RewardBonusMoney = quest.RewardBonusMoney; for (byte i = 0; i < SharedConst.QuestRewardDisplaySpellCount; ++i) { packet.Info.RewardDisplaySpell[i] = quest.RewardDisplaySpell[i]; } packet.Info.RewardSpell = quest.RewardSpell; packet.Info.RewardHonor = quest.RewardHonor; packet.Info.RewardKillHonor = quest.RewardKillHonor; packet.Info.RewardArtifactXPDifficulty = (int)quest.RewardArtifactXPDifficulty; packet.Info.RewardArtifactXPMultiplier = quest.RewardArtifactXPMultiplier; packet.Info.RewardArtifactCategoryID = (int)quest.RewardArtifactCategoryID; packet.Info.StartItem = quest.SourceItemId; packet.Info.Flags = (uint)quest.Flags; packet.Info.FlagsEx = (uint)quest.FlagsEx; packet.Info.RewardTitle = quest.RewardTitleId; packet.Info.RewardArenaPoints = quest.RewardArenaPoints; packet.Info.RewardSkillLineID = quest.RewardSkillId; packet.Info.RewardNumSkillUps = quest.RewardSkillPoints; packet.Info.RewardFactionFlags = quest.RewardReputationMask; packet.Info.PortraitGiver = quest.QuestGiverPortrait; packet.Info.PortraitTurnIn = quest.QuestTurnInPortrait; for (byte i = 0; i < SharedConst.QuestItemDropCount; ++i) { packet.Info.ItemDrop[i] = (int)quest.ItemDrop[i]; packet.Info.ItemDropQuantity[i] = (int)quest.ItemDropQuantity[i]; } if (!quest.HasFlag(QuestFlags.HiddenRewards)) { for (byte i = 0; i < SharedConst.QuestRewardItemCount; ++i) { packet.Info.RewardItems[i] = quest.RewardItemId[i]; packet.Info.RewardAmount[i] = quest.RewardItemCount[i]; } for (byte i = 0; i < SharedConst.QuestRewardChoicesCount; ++i) { packet.Info.UnfilteredChoiceItems[i].ItemID = quest.RewardChoiceItemId[i]; packet.Info.UnfilteredChoiceItems[i].Quantity = quest.RewardChoiceItemCount[i]; } } for (byte i = 0; i < SharedConst.QuestRewardReputationsCount; ++i) { packet.Info.RewardFactionID[i] = quest.RewardFactionId[i]; packet.Info.RewardFactionValue[i] = quest.RewardFactionValue[i]; packet.Info.RewardFactionOverride[i] = quest.RewardFactionOverride[i]; packet.Info.RewardFactionCapIn[i] = (int)quest.RewardFactionCapIn[i]; } packet.Info.POIContinent = quest.POIContinent; packet.Info.POIx = quest.POIx; packet.Info.POIy = quest.POIy; packet.Info.POIPriority = quest.POIPriority; packet.Info.AllowableRaces = quest.AllowableRaces; packet.Info.QuestRewardID = (int)quest.QuestRewardID; packet.Info.Expansion = quest.Expansion; foreach (QuestObjective questObjective in quest.Objectives) { if (locale != LocaleConstant.enUS) { QuestObjectivesLocale questObjectivesLocaleData = Global.ObjectMgr.GetQuestObjectivesLocale(questObjective.ID); if (questObjectivesLocaleData != null) { ObjectManager.GetLocaleString(questObjectivesLocaleData.Description, locale, ref questObjective.Description); } } packet.Info.Objectives.Add(questObjective); } for (int i = 0; i < SharedConst.QuestRewardCurrencyCount; ++i) { packet.Info.RewardCurrencyID[i] = quest.RewardCurrencyId[i]; packet.Info.RewardCurrencyQty[i] = quest.RewardCurrencyCount[i]; } packet.Info.AcceptedSoundKitID = quest.SoundAccept; packet.Info.CompleteSoundKitID = quest.SoundTurnIn; packet.Info.AreaGroupID = quest.AreaGroupID; packet.Info.TimeAllowed = quest.LimitTime; _session.SendPacket(packet); }
public WorldSession(uint id, string name, uint battlenetAccountId, WorldSocket sock, AccountTypes sec, Expansion expansion, long mute_time, string os, LocaleConstant locale, uint recruiter, bool isARecruiter) { m_muteTime = mute_time; AntiDOS = new DosProtection(this); m_Socket[(int)ConnectionType.Realm] = sock; _security = sec; _accountId = id; _accountName = name; _battlenetAccountId = battlenetAccountId; m_accountExpansion = expansion; m_expansion = (Expansion)Math.Min((byte)expansion, WorldConfig.GetIntValue(WorldCfg.Expansion)); _os = os; m_sessionDbcLocale = Global.WorldMgr.GetAvailableDbcLocale(locale); m_sessionDbLocaleIndex = locale; recruiterId = recruiter; isRecruiter = isARecruiter; expireTime = 60000; // 1 min after socket loss, session is deleted m_currentBankerGUID = ObjectGuid.Empty; _battlePetMgr = new BattlePetMgr(this); _collectionMgr = new CollectionMgr(this); m_Address = sock.GetRemoteIpAddress().ToString(); ResetTimeOutTime(); DB.Login.Execute("UPDATE account SET online = 1 WHERE id = {0};", GetAccountId()); // One-time query }
public void SendQuestGiverRequestItems(Quest quest, ObjectGuid npcGUID, bool canComplete, bool autoLaunched) { // We can always call to RequestItems, but this packet only goes out if there are actually // items. Otherwise, we'll skip straight to the OfferReward if (!quest.HasSpecialFlag(QuestSpecialFlags.Deliver) && canComplete) { SendQuestGiverOfferReward(quest, npcGUID, true); return; } QuestGiverRequestItems packet = new QuestGiverRequestItems(); packet.QuestTitle = quest.LogTitle; packet.CompletionText = quest.RequestItemsText; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref packet.QuestTitle); } QuestRequestItemsLocale questRequestItemsLocale = Global.ObjectMgr.GetQuestRequestItemsLocale(quest.Id); if (questRequestItemsLocale != null) { ObjectManager.GetLocaleString(questRequestItemsLocale.CompletionText, locale, ref packet.CompletionText); } } packet.QuestGiverGUID = npcGUID; // Is there a better way? what about game objects? Creature creature = ObjectAccessor.GetCreature(_session.GetPlayer(), npcGUID); if (creature) { packet.QuestGiverCreatureID = creature.GetCreatureTemplate().Entry; } packet.QuestID = quest.Id; if (canComplete) { packet.CompEmoteDelay = quest.EmoteOnCompleteDelay; packet.CompEmoteType = quest.EmoteOnComplete; } else { packet.CompEmoteDelay = quest.EmoteOnIncompleteDelay; packet.CompEmoteType = quest.EmoteOnIncomplete; } packet.QuestFlags[0] = (uint)quest.Flags; packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.SuggestPartyMembers = quest.SuggestedPlayers; // incomplete: FD // incomplete quest with item objective but item objective is complete DD packet.StatusFlags = canComplete ? 0xFF : 0xFD; packet.MoneyToGet = 0; foreach (QuestObjective obj in quest.Objectives) { switch (obj.Type) { case QuestObjectiveType.Item: packet.Collect.Add(new QuestObjectiveCollect((uint)obj.ObjectID, obj.Amount, (uint)obj.Flags)); break; case QuestObjectiveType.Currency: packet.Currency.Add(new QuestCurrency((uint)obj.ObjectID, obj.Amount)); break; case QuestObjectiveType.Money: packet.MoneyToGet += obj.Amount; break; default: break; } } packet.AutoLaunched = autoLaunched; _session.SendPacket(packet); }
public void Initialize(ChatMsg chatType, Language language, WorldObject sender, WorldObject receiver, string message, uint achievementId = 0, string channelName = "", LocaleConstant locale = LocaleConstant.enUS, string addonPrefix = "") { // Clear everything because same packet can be used multiple times Clear(); SenderGUID.Clear(); SenderAccountGUID.Clear(); SenderGuildGUID.Clear(); PartyGUID.Clear(); TargetGUID.Clear(); SenderName = ""; TargetName = ""; _ChatFlags = ChatFlags.None; SlashCmd = chatType; _Language = language; if (sender) { SetSender(sender, locale); } if (receiver) { SetReceiver(receiver, locale); } SenderVirtualAddress = Global.WorldMgr.GetVirtualRealmAddress(); TargetVirtualAddress = Global.WorldMgr.GetVirtualRealmAddress(); AchievementID = achievementId; Channel = channelName; Prefix = addonPrefix; ChatText = message; }
public BattlenetRpcErrorCode JoinRealm(uint realmAddress, uint build, IPAddress clientAddress, Array <byte> clientSecret, LocaleConstant locale, string os, string accountName, Bgs.Protocol.GameUtilities.V1.ClientResponse response) { Realm realm = GetRealm(new RealmHandle(realmAddress)); if (realm != null) { if (realm.Flags.HasAnyFlag(RealmFlags.Offline) || realm.Build != build) { return(BattlenetRpcErrorCode.UserServerNotPermittedOnRealm); } RealmListServerIPAddresses serverAddresses = new RealmListServerIPAddresses(); AddressFamily addressFamily = new AddressFamily(); addressFamily.Id = 1; var address = new Address(); address.Ip = realm.GetAddressForClient(clientAddress).Address.ToString(); address.Port = realm.Port; addressFamily.Addresses.Add(address); serverAddresses.Families.Add(addressFamily); byte[] compressed = Json.Deflate("JSONRealmListServerIPAddresses", serverAddresses); byte[] serverSecret = new byte[0].GenerateRandomKey(32); byte[] keyData = clientSecret.ToArray().Combine(serverSecret); PreparedStatement stmt = DB.Login.GetPreparedStatement(LoginStatements.UPD_BNET_GAME_ACCOUNT_LOGIN_INFO); stmt.AddValue(0, keyData.ToHexString()); stmt.AddValue(1, clientAddress.ToString()); stmt.AddValue(2, locale); stmt.AddValue(3, os); stmt.AddValue(4, accountName); DB.Login.DirectExecute(stmt); Bgs.Protocol.Attribute attribute = new Bgs.Protocol.Attribute(); attribute.Name = "Param_RealmJoinTicket"; attribute.Value = new Bgs.Protocol.Variant(); attribute.Value.BlobValue = Google.Protobuf.ByteString.CopyFrom(accountName, System.Text.Encoding.UTF8); response.Attribute.Add(attribute); attribute = new Bgs.Protocol.Attribute(); attribute.Name = "Param_ServerAddresses"; attribute.Value = new Bgs.Protocol.Variant(); attribute.Value.BlobValue = Google.Protobuf.ByteString.CopyFrom(compressed); response.Attribute.Add(attribute); attribute = new Bgs.Protocol.Attribute(); attribute.Name = "Param_JoinSecret"; attribute.Value = new Bgs.Protocol.Variant(); attribute.Value.BlobValue = Google.Protobuf.ByteString.CopyFrom(serverSecret); response.Attribute.Add(attribute); return(BattlenetRpcErrorCode.Ok); } return(BattlenetRpcErrorCode.UtilServerUnknownRealm); }
/// <summary> /// [addedInVersion, +inf[ /// </summary> /// <param name="name">database field name</param> /// <param name="addedInVersion">initial version</param> /// <param name="locale">initial locale</param> public DBFieldNameAttribute(string name, ClientVersionBuild addedInVersion, LocaleConstant locale) { if (ClientVersion.AddedInVersion(addedInVersion) && BinaryPacketReader.GetLocale() == locale) { Name = name; Count = 1; } else { Name = null; Count = 0; } }
public void SendQuestGiverQuestListMessage(WorldObject questgiver) { ObjectGuid guid = questgiver.GetGUID(); LocaleConstant localeConstant = _session.GetSessionDbLocaleIndex(); QuestGiverQuestListMessage questList = new QuestGiverQuestListMessage(); questList.QuestGiverGUID = guid; QuestGreeting questGreeting = Global.ObjectMgr.GetQuestGreeting(questgiver.GetTypeId(), questgiver.GetEntry()); if (questGreeting != null) { questList.GreetEmoteDelay = questGreeting.EmoteDelay; questList.GreetEmoteType = questGreeting.EmoteType; questList.Greeting = questGreeting.Text; if (localeConstant != LocaleConstant.enUS) { QuestGreetingLocale questGreetingLocale = Global.ObjectMgr.GetQuestGreetingLocale(questgiver.GetTypeId(), questgiver.GetEntry()); if (questGreetingLocale != null) { ObjectManager.GetLocaleString(questGreetingLocale.Greeting, localeConstant, ref questList.Greeting); } } } for (var i = 0; i < _questMenu.GetMenuItemCount(); ++i) { QuestMenuItem questMenuItem = _questMenu.GetItem(i); uint questID = questMenuItem.QuestId; Quest quest = Global.ObjectMgr.GetQuestTemplate(questID); if (quest != null) { string title = quest.LogTitle; if (localeConstant != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, localeConstant, ref title); } } GossipText text = new GossipText(); text.QuestID = questID; text.QuestType = questMenuItem.QuestIcon; text.QuestLevel = (uint)quest.Level; text.QuestMaxScalingLevel = (uint)quest.MaxScalingLevel; text.QuestFlags = (uint)quest.Flags; text.QuestFlagsEx = (uint)quest.FlagsEx; text.Repeatable = false; // NYI text.QuestTitle = title; questList.QuestDataText.Add(text); } } _session.SendPacket(questList); }
public void SendQuestGiverQuestDetails(Quest quest, ObjectGuid npcGUID, bool autoLaunched, bool displayPopup) { QuestGiverQuestDetails packet = new QuestGiverQuestDetails(); packet.QuestTitle = quest.LogTitle; packet.LogDescription = quest.LogDescription; packet.DescriptionText = quest.QuestDescription; packet.PortraitGiverText = quest.PortraitGiverText; packet.PortraitGiverName = quest.PortraitGiverName; packet.PortraitTurnInText = quest.PortraitTurnInText; packet.PortraitTurnInName = quest.PortraitTurnInName; LocaleConstant locale = _session.GetSessionDbLocaleIndex(); if (locale != LocaleConstant.enUS) { QuestTemplateLocale localeData = Global.ObjectMgr.GetQuestLocale(quest.Id); if (localeData != null) { ObjectManager.GetLocaleString(localeData.LogTitle, locale, ref packet.QuestTitle); ObjectManager.GetLocaleString(localeData.LogDescription, locale, ref packet.LogDescription); ObjectManager.GetLocaleString(localeData.QuestDescription, locale, ref packet.DescriptionText); ObjectManager.GetLocaleString(localeData.PortraitGiverText, locale, ref packet.PortraitGiverText); ObjectManager.GetLocaleString(localeData.PortraitGiverName, locale, ref packet.PortraitGiverName); ObjectManager.GetLocaleString(localeData.PortraitTurnInText, locale, ref packet.PortraitTurnInText); ObjectManager.GetLocaleString(localeData.PortraitTurnInName, locale, ref packet.PortraitTurnInName); } } packet.QuestGiverGUID = npcGUID; packet.InformUnit = _session.GetPlayer().GetDivider(); packet.QuestID = quest.Id; packet.PortraitGiver = quest.QuestGiverPortrait; packet.PortraitGiverMount = quest.QuestGiverPortraitMount; packet.PortraitTurnIn = quest.QuestTurnInPortrait; packet.QuestSessionBonus = 0; //quest.GetQuestSessionBonus(); // this is only sent while quest session is active packet.AutoLaunched = autoLaunched; packet.DisplayPopup = displayPopup; packet.QuestFlags[0] = (uint)(quest.Flags & (WorldConfig.GetBoolValue(WorldCfg.QuestIgnoreAutoAccept) ? ~QuestFlags.AutoAccept : ~QuestFlags.None)); packet.QuestFlags[1] = (uint)quest.FlagsEx; packet.SuggestedPartyMembers = quest.SuggestedPlayers; // RewardSpell can teach multiple spells in trigger spell effects. But not all effects must be SPELL_EFFECT_LEARN_SPELL. See example spell 33950 if (quest.RewardSpell != 0) { SpellInfo spellInfo = Global.SpellMgr.GetSpellInfo(quest.RewardSpell); if (spellInfo.HasEffect(SpellEffectName.LearnSpell)) { var effects = spellInfo.GetEffectsForDifficulty(Difficulty.None); foreach (var spellEffectInfo in effects) { if (spellEffectInfo.IsEffect(SpellEffectName.LearnSpell)) { packet.LearnSpells.Add(spellEffectInfo.TriggerSpell); } } } } quest.BuildQuestRewards(packet.Rewards, _session.GetPlayer()); for (int i = 0; i < SharedConst.QuestEmoteCount; ++i) { var emote = new QuestDescEmote(quest.DetailsEmote[i], quest.DetailsEmoteDelay[i]); packet.DescEmotes.Add(emote); } var objs = quest.Objectives; for (int i = 0; i < objs.Count; ++i) { var obj = new QuestObjectiveSimple(); obj.Id = objs[i].Id; obj.ObjectID = objs[i].ObjectID; obj.Amount = objs[i].Amount; obj.Type = (byte)objs[i].Type; packet.Objectives.Add(obj); } _session.SendPacket(packet); }
public override String GetSQLRequest() { String returnSql = ""; if (m_creatureTemplateData.id == 0 || isError) { return(returnSql); } // Creature Template if (IsCheckboxChecked("template")) { m_creatureTemplateBuilder = new SqlBuilder("creature_template", "entry"); m_creatureTemplateBuilder.SetFieldsNames("minlevel", "maxlevel", "name", "subname", "modelid1", "rank", "type", "family"); m_creatureTemplateBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.minlevel, m_creatureTemplateData.maxlevel, m_creatureTemplateData.name, m_subname ?? "", m_modelid, m_isBoss ? "3" : "0", m_creatureTemplateData.type, m_creatureTemplateData.family); returnSql += m_creatureTemplateBuilder.ToString() + "\n"; } // faction if (IsCheckboxChecked("simple faction")) { SqlBuilder m_creatureFactionBuilder = new SqlBuilder("creature_template", "entry", SqlQueryType.Update); m_creatureFactionBuilder.SetFieldsNames("faction"); m_creatureFactionBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_faction); returnSql += m_creatureFactionBuilder.ToString() + "\n"; } // Creature Template if (IsCheckboxChecked("money")) { SqlBuilder m_creatureMoneyBuilder = new SqlBuilder("creature_template", "entry", SqlQueryType.Update); m_creatureMoneyBuilder.SetFieldsNames("mingold", "maxgold"); m_creatureMoneyBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.minGold, m_creatureTemplateData.maxGold); returnSql += m_creatureMoneyBuilder.ToString() + "\n"; } // Locales if (IsCheckboxChecked("locale")) { LocaleConstant localeIndex = (LocaleConstant)Properties.Settings.Default.localIndex; String localeName = localeIndex.ToString(); if (localeIndex != 0) { m_creatureLocalesBuilder = new SqlBuilder("creature_template_locales", "entry"); m_creatureLocalesBuilder.SetFieldsNames("locale", "Name", "Title"); m_creatureLocalesBuilder.AppendFieldsValue(m_creatureTemplateData.id, localeIndex.ToString(), m_creatureTemplateData.name, m_subname ?? ""); returnSql += m_creatureLocalesBuilder.ToString() + "\n"; } else { m_creatureLocalesBuilder = new SqlBuilder("creature_template", "entry"); m_creatureLocalesBuilder.SetFieldsNames("name", "subname"); m_creatureLocalesBuilder.AppendFieldsValue(m_creatureTemplateData.id, m_creatureTemplateData.name, m_subname ?? ""); returnSql += m_creatureLocalesBuilder.ToString() + "\n"; } } if (IsCheckboxChecked("vendor") && m_npcVendorDatas != null) { m_npcVendorBuilder = new SqlBuilder("npc_vendor", "entry", SqlQueryType.DeleteInsert); m_npcVendorBuilder.SetFieldsNames("slot", "item", "maxcount", "incrtime", "ExtendedCost", "type", "PlayerConditionID"); foreach (NpcVendorParsing npcVendorData in m_npcVendorDatas) { m_npcVendorBuilder.AppendFieldsValue(m_creatureTemplateData.id, npcVendorData.slot, npcVendorData.id, npcVendorData.avail, npcVendorData.incrTime, npcVendorData.integerExtendedCost, 1, 0); } returnSql += m_npcVendorBuilder.ToString() + "\n"; } if (IsCheckboxChecked("loot") && m_creatureLootDatas != null) { bool referenceAdded = false; int maxReferenceLoot = 2; // A voir si on peut trouver int templateEntry = m_creatureTemplateData.id; m_creatureLootBuilder = new SqlBuilder("creature_loot_template", "entry", SqlQueryType.DeleteInsert); m_creatureLootBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); m_creatureReferenceLootBuilder = new SqlBuilder("reference_loot_template", "entry", SqlQueryType.DeleteInsert); m_creatureReferenceLootBuilder.SetFieldsNames("item", "ChanceOrQuestChance", "lootmode", "groupid", "mincountOrRef", "maxcount", "itemBonuses"); bool atLeastOneNormal = false; returnSql += "UPDATE creature_template SET lootid = " + templateEntry + " WHERE entry = " + templateEntry + " AND lootid = 0;\n"; foreach (CreatureLootParsing creatureLootData in m_creatureLootDatas) { List <int> entryList = new List <int>(); CreatureLootItemParsing creatureLootItemData = null; try { creatureLootItemData = (CreatureLootItemParsing)creatureLootData; } catch (Exception ex) { } CreatureLootCurrencyParsing creatureLootCurrencyData = null; try { creatureLootCurrencyData = (CreatureLootCurrencyParsing)creatureLootData; } catch (Exception ex) { } switch (creatureLootData.mode) { default: entryList.Add(templateEntry); break;; } foreach (int entry in entryList) { int idMultiplier = creatureLootCurrencyData != null ? -1 : 1; if (idMultiplier < 1) { continue; } int minLootCount = creatureLootData.stack.Length >= 1 ? creatureLootData.stack[0]: 1; int maxLootCount = creatureLootData.stack.Length >= 2 ? creatureLootData.stack[1]: minLootCount; m_creatureLootBuilder.AppendFieldsValue(entry, // Entry creatureLootData.id * idMultiplier, // Item 0, // Reference creatureLootData.percent, // Chance creatureLootData.questRequired, // QuestRequired 1, // LootMode 0, // GroupId minLootCount, // MinCount maxLootCount, // MaxCount ""); // Comment } } returnSql += m_creatureLootBuilder.ToString() + "\n"; returnSql += m_creatureReferenceLootBuilder.ToString() + "\n"; } if (IsCheckboxChecked("skinning") && m_creatureSkinningDatas != null) { m_creatureLootBuilder = new SqlBuilder("skinning_loot_template", "entry", SqlQueryType.DeleteInsert); m_creatureLootBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); returnSql += "UPDATE creature_template SET skinloot = " + m_creatureTemplateData.id + " WHERE entry = " + m_creatureTemplateData.id + " AND skinloot = 0;\n"; foreach (CreatureLootParsing creatureSkinningData in m_creatureSkinningDatas) { m_creatureSkinningBuilder.AppendFieldsValue(m_creatureTemplateData.id, // Entry creatureSkinningData.id, // Item 0, // Reference creatureSkinningData.percent, // Chance 0, // QuestRequired 1, // LootMode 0, // GroupId creatureSkinningData.stack[0], // MinCount creatureSkinningData.stack[1], // MaxCount ""); // Comment } returnSql += m_creatureSkinningBuilder.ToString() + "\n"; } if (IsCheckboxChecked("trainer") && m_creatureTrainerDatas != null) { m_creatureTrainerBuilder = new SqlBuilder("npc_trainer", "entry", SqlQueryType.DeleteInsert); m_creatureTrainerBuilder.SetFieldsNames("spell", "spellcost", "reqskill", "reqskillvalue", "reqlevel"); returnSql += "UPDATE creature_template SET npc_flag = 16 WHERE entry = " + m_creatureTemplateData.id + ";\n"; foreach (CreatureTrainerParsing creatureTrainerData in m_creatureTrainerDatas) { int reqskill = creatureTrainerData.learnedat > 0 ? creatureTrainerData.skill[0] : 0; m_creatureTrainerBuilder.AppendFieldsValue(m_creatureTemplateData.id, creatureTrainerData.id, creatureTrainerData.trainingcost, reqskill, creatureTrainerData.learnedat, creatureTrainerData.level); } returnSql += m_creatureTrainerBuilder.ToString() + "\n"; } if (IsCheckboxChecked("quest starter") && m_creatureQuestStarterDatas != null) { m_creatureQuestStarterBuilder = new SqlBuilder("creature_queststarter", "entry", SqlQueryType.InsertIgnore); m_creatureQuestStarterBuilder.SetFieldsNames("quest"); foreach (QuestStarterEnderParsing creatureQuestStarterData in m_creatureQuestStarterDatas) { m_creatureQuestStarterBuilder.AppendFieldsValue(m_creatureTemplateData.id, creatureQuestStarterData.id); } returnSql += m_creatureQuestStarterBuilder.ToString() + "\n"; } if (IsCheckboxChecked("quest ender") && m_creatureQuestEnderDatas != null) { m_creatureQuestEnderBuilder = new SqlBuilder("creature_questender", "entry", SqlQueryType.InsertIgnore); m_creatureQuestEnderBuilder.SetFieldsNames("quest"); foreach (QuestStarterEnderParsing creatureQuestEnderData in m_creatureQuestEnderDatas) { m_creatureQuestEnderBuilder.AppendFieldsValue(m_creatureTemplateData.id, creatureQuestEnderData.id); } returnSql += m_creatureQuestEnderBuilder.ToString() + "\n"; } return(returnSql); }
public override String GetSQLRequest() { String returnSql = ""; if (m_data.id == 0 || isError) { return(returnSql); } if (IsCheckboxChecked("locale")) { LocaleConstant localeIndex = (LocaleConstant)Properties.Settings.Default.localIndex; if (localeIndex != 0) { m_gameobjectLocalesBuilder = new SqlBuilder("gameobject_template_locale", "entry"); m_gameobjectLocalesBuilder.SetFieldsNames("locale", "name"); m_gameobjectLocalesBuilder.AppendFieldsValue(m_data.id, localeIndex.ToString(), m_data.name); returnSql += m_gameobjectLocalesBuilder.ToString() + "\n"; } else { m_gameobjectLocalesBuilder = new SqlBuilder("gameobject_template", "entry"); m_gameobjectLocalesBuilder.SetFieldsNames("name"); m_gameobjectLocalesBuilder.AppendFieldsValue(m_data.id, m_data.name); returnSql += m_gameobjectLocalesBuilder.ToString() + "\n"; } } if (IsCheckboxChecked("loot") && m_gameobjectLootDatas != null) { m_gameobjectLootBuilder = new SqlBuilder("gameobject_loot_template", "entry", SqlQueryType.DeleteInsert); m_gameobjectLootBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); returnSql += "UPDATE gameobject_template SET data1 = " + m_data.id + " WHERE entry = " + m_data.id + " AND type IN (3, 50);\n"; foreach (GameObjectLootParsing gameobjectLootData in m_gameobjectLootDatas) { GameObjectLootCurrencyParsing currentLootCurrencyData = null; try { currentLootCurrencyData = (GameObjectLootCurrencyParsing)gameobjectLootData; } catch (Exception ex) { Console.WriteLine("Erreur : " + ex); } int idMultiplier = currentLootCurrencyData != null ? -1 : 1; if (idMultiplier < 1) { continue; } int minLootCount = gameobjectLootData.stack.Length >= 1 ? gameobjectLootData.stack[0] : 1; int maxLootCount = gameobjectLootData.stack.Length >= 2 ? gameobjectLootData.stack[1] : minLootCount; m_gameobjectLootBuilder.AppendFieldsValue(m_data.id, // Entry gameobjectLootData.id * idMultiplier, // Item 0, // Reference gameobjectLootData.percent, // Chance gameobjectLootData.questRequired, // QuestRequired 1, // LootMode 0, // GroupId minLootCount, // MinCount maxLootCount, // MaxCount ""); // Comment } returnSql += m_gameobjectLootBuilder.ToString() + "\n"; } if (IsCheckboxChecked("herbalism") && m_gameobjectHerbalismDatas != null) { m_gameobjectHerbalismBuilder = new SqlBuilder("gameobject_loot_template", "entry", SqlQueryType.InsertIgnore); m_gameobjectHerbalismBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); returnSql += "UPDATE gameobject_template SET data1 = " + m_data.id + " WHERE entry = " + m_data.id + " AND type IN (3, 50);\n"; foreach (GameObjectLootParsing gameobjectHerbalismData in m_gameobjectHerbalismDatas) { m_gameobjectHerbalismBuilder.AppendFieldsValue(m_data.id, // Entry gameobjectHerbalismData.id, // Item 0, // Reference gameobjectHerbalismData.percent, // Chance 0, // QuestRequired 1, // LootMode 0, // GroupId gameobjectHerbalismData.stack[0], // MinCount gameobjectHerbalismData.stack[1], // MaxCount ""); // Comment } returnSql += m_gameobjectHerbalismBuilder.ToString() + "\n"; } if (IsCheckboxChecked("mining") && m_gameobjectMiningDatas != null) { m_gameobjectMiningBuilder = new SqlBuilder("gameobject_loot_template", "entry", SqlQueryType.InsertIgnore); m_gameobjectMiningBuilder.SetFieldsNames("Item", "Reference", "Chance", "QuestRequired", "LootMode", "GroupId", "MinCount", "MaxCount", "Comment"); returnSql += "UPDATE gameobject_template SET data1 = " + m_data.id + " WHERE entry = " + m_data.id + " AND type IN (3, 50);\n"; foreach (GameObjectLootParsing gameobjectMiningData in m_gameobjectMiningDatas) { m_gameobjectMiningBuilder.AppendFieldsValue(m_data.id, // Entry gameobjectMiningData.id, // Item 0, // Reference gameobjectMiningData.percent, // Chance 0, // QuestRequired 1, // LootMode 0, // GroupId gameobjectMiningData.stack[0], // MinCount gameobjectMiningData.stack[1], // MaxCount ""); // Comment } returnSql += m_gameobjectMiningBuilder.ToString() + "\n"; } return(returnSql); }
/// <summary> /// [addedInVersion, removedInVersion[ /// </summary> /// <param name="name">database field name</param> /// <param name="addedInVersion">initial version</param> /// <param name="removedInVersion">final version</param> /// <param name="locale">initial locale</param> public DBFieldNameAttribute(string name, ClientVersionBuild addedInVersion, ClientVersionBuild removedInVersion, LocaleConstant locale) { if (ClientVersion.AddedInVersion(addedInVersion) && ClientVersion.RemovedInVersion(removedInVersion) && BinaryPacketReader.GetLocale() == locale) { Name = name; Count = 1; } else { Name = null; Count = 0; } }
public string GetLocalizedChatString(uint entry, Gender gender, byte textGroup, uint id, LocaleConstant locale = LocaleConstant.enUS) { var multiMap = mTextMap.LookupByKey(entry); if (multiMap == null) { return(""); } var creatureTextEntryList = multiMap.LookupByKey(textGroup); if (creatureTextEntryList.Empty()) { return(""); } CreatureTextEntry creatureTextEntry = null; for (var i = 0; i != creatureTextEntryList.Count; ++i) { creatureTextEntry = creatureTextEntryList[i]; if (creatureTextEntry.id == id) { break; } } if (creatureTextEntry == null) { return(""); } if (locale >= LocaleConstant.Total) { locale = LocaleConstant.enUS; } string baseText = ""; BroadcastTextRecord bct = CliDB.BroadcastTextStorage.LookupByKey(creatureTextEntry.BroadcastTextId); if (bct != null) { baseText = Global.DB2Mgr.GetBroadcastTextValue(bct, locale, gender); } else { baseText = creatureTextEntry.text; } if (locale != LocaleConstant.enUS && bct == null) { var creatureTextLocale = mLocaleTextMap.LookupByKey(new CreatureTextId(entry, textGroup, id)); if (creatureTextLocale != null) { ObjectManager.GetLocaleString(creatureTextLocale.Text, locale, ref baseText); } } return(baseText); }