[WQ] World Quest Auto Loader $Rev: 877 $2 compiler errors encountered in profile '[WQ] World Quest Auto Loader $Rev: 877 $'
'CustomBehavior' xml element on line number 49 has following errors with code: public class Settings : Styx.Helpers.Settings
{
public static readonly string _settingsPath = Path.Combine(CharacterSettingsDirectory, "Profiles",
"NuokWorldQuestSettings.xml");
private static Settings _instance;
public static Settings Instance => _instance ?? (_instance = new Settings());
public Settings() : base(_settingsPath)
{
}
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool DoWanted { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool DoPvP { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool DoDangerQuests { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool DoElite { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool DoWorldBosses { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool DoProfessions { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool DoWorkOrders { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool ArtifactPower { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Equipment { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Blood { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool OrderHall { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Gold { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Items { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Azsuna { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Valsharah { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Stormheim { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Suramar { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Highmountain { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool EyeofAzshara { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Dalaran { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool TheWardens { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool CourtOfFarondis { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool KirinTor { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool HighmountainTribe { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool TheNightfallen { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Valarjar { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool Dreamweavers { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(true)]
public bool SkipHBRelog { get; set; }
[Setting]
[Styx.Helpers.DefaultValue(false)]
public bool SVNUpdate { get; set; }
}
private HashSet<int> GetWorldQuestsByZone(int zone)
{
var lua = $@"SetMapByID({zone})
local ids = {{}}
local taskInfo = C_TaskQuest.GetQuestsForPlayerByMapID({zone})
if (taskInfo) then
for i, info in ipairs(taskInfo) do
if HaveQuestData(info.questId) then
if QuestMapFrame_IsQuestWorldQuest(info.questId) then
tinsert (ids, info.questId )
end
end
end
end
return unpack(ids)";
var getResult = Lua.GetReturnValues(lua);
var list = new HashSet<int>();
foreach (var r in getResult)
{
list.Add(Lua.ParseLuaValue<int>(r));
}
return list;
}
public Dictionary<int, int> WorldQuest = new Dictionary<int, int>();
public void Update()
{
WorldQuest.Clear();
var zones = new HashSet<int>
{
1015,
1018,
1024,
1017,
1033,
1096,
1014
};
foreach (var z in zones)
{
var quest = GetWorldQuestsByZone(z);
foreach (var q in quest)
{
var t = QuestRewardType(q);
//return error = 0, gold = 1, artifactpower = 2, items = 3, blood = 4, currency = 5
if(t==1)
Logging.WriteDiagnostic($"Found {GetQuestName(q)} ({q}) in {z}, rewards Gold");
if(t==2)
Logging.WriteDiagnostic($"Found {GetQuestName(q)} ({q}) in {z}, rewards Artifact Power");
if(t == 3)
{
var rewards = GetReward(q);
Logging.WriteDiagnostic($"Found {GetQuestName(q)} ({q}) in {z}, rewards Item {rewards[0]} {rewards[1]}");
}
if(t==4)
Logging.WriteDiagnostic($"Found {GetQuestName(q)} ({q}) in {z}, rewards Blood of Sargeras");
if(t==5)
Logging.WriteDiagnostic($"Found {GetQuestName(q)} ({q}) in {z}, rewards Order Hall Resources");
if(t == 6)
{
var rewards = GetReward(q);
Logging.WriteDiagnostic($"Found {GetQuestName(q)} ({q}) in {z}, rewards Equipment {rewards[0]} {rewards[1]}");
}
WorldQuest.Add(q, t);
}
}
}
public bool OnQuest(int id)
{
return WorldQuest.ContainsKey(id);
}
public bool HasPlugin => PluginManager.Plugins.FirstOrDefault(p => p.Name == "WorldQuestHelper") != null;
public void EnablePlugin()
{
var plugin = PluginManager.Plugins.FirstOrDefault(p => p.Name == "WorldQuestHelper");
if (plugin == null) return;
plugin.Enabled = false;
plugin.Enabled = true;
}
public void Log(string text)
{
Logging.Write(System.Windows.Media.Colors.DodgerBlue, "[WQ] " + text);
}
public bool ZoneEnabled(int zoneId)
{
if(zoneId == 1015)
return Settings.Instance.Azsuna;
if(zoneId == 1018)
return Settings.Instance.Valsharah;
if(zoneId == 1017)
return Settings.Instance.Stormheim;
if(zoneId == 1033)
return Settings.Instance.Suramar;
if(zoneId == 1024)
return Settings.Instance.Highmountain;
if(zoneId == 1096)
return Settings.Instance.EyeofAzshara;
if(zoneId == 1014)
return Settings.Instance.Dalaran;
return false;
}
public int QuestRewardType(int questId)
{
var questLua = $@"local numQuestCurrencies = GetNumQuestLogRewardCurrencies({ questId })
local money = GetQuestLogRewardMoney({ questId})
local artifactXP = GetQuestLogRewardArtifactXP({ questId})
local numQuestRewards = GetNumQuestLogRewards({ questId})
if numQuestCurrencies > 0 then return 5; end
if money > 0 then return 1; end
if artifactXP > 0 then return 2; end
if numQuestRewards > 0 then
local name, texture, numItems, quality, isUsable, itemID = GetQuestLogRewardInfo(1, { questId})
if itemID == 124124 then return 4; end
local itemName, itemLink, itemRarity, itemLevel, itemMinLevel, itemType, itemSubType, itemStackCount, itemEquipLoc, itemTexture = GetItemInfo(itemID)
if (itemName ~= nil and itemType == 'Consumable' and itemSubType == 'Other') then return 2; end
if (itemName ~= nil and itemType == 'Armor') then return 6; end
if (itemName ~= nil and itemSubType == 'Artifact Relic') then return 6; end
return 3; end
return 0; ";
return Lua.GetReturnVal<int>(questLua, 0);
}
public bool PassesSettings(int questId)
{
if(!Settings.Instance.DoElite && EliteQuest(questId))
return false;
//return error = 0, gold = 1, artifactpower = 2, items = 3, blood = 4, currency = 5, gear = 6
var rewardType = WorldQuest[questId];
if(rewardType == 1)
return Settings.Instance.Gold;
if (rewardType == 2)
return Settings.Instance.ArtifactPower;
if (rewardType == 3)
return Settings.Instance.Items;
if (rewardType == 4)
return Settings.Instance.Blood;
if (rewardType == 5)
return Settings.Instance.OrderHall;
if (rewardType == 6)
return Settings.Instance.Equipment;
return false;
}
public int TheWardens = 1894, CourtOfFarondis = 1900, Dreamweavers = 1883, KirinTor = 1090, HighmountainTribe = 1828, TheNightfallen = 1859, Valarjar = 1948;
public int GetFactionId(int questId)
=>
Lua.GetReturnVal<int>($@"local title, factionId, capped = C_TaskQuest.GetQuestInfoByQuestID({ questId });
if (factionId) then
return factionId
end
return 0", 0);
public bool DoFaction(int questId)
{
var faction = GetFactionId(questId);
if (faction == TheWardens)
return Settings.Instance.TheWardens;
if (faction == CourtOfFarondis)
return Settings.Instance.CourtOfFarondis;
if (faction == Dreamweavers)
return Settings.Instance.Dreamweavers;
if (faction == KirinTor)
return Settings.Instance.KirinTor;
if (faction == HighmountainTribe)
return Settings.Instance.HighmountainTribe;
if (faction == TheNightfallen)
return Settings.Instance.TheNightfallen;
if (faction == Valarjar)
return Settings.Instance.Valarjar;
return false;
}
public List<string> GetReward(int questId) =>
Lua.GetReturnValues($"local name, texture, numItems, quality, isUsable, itemID = GetQuestLogRewardInfo(1, { questId }); return name, itemID");
public string GetQuestName(int questId) =>
Lua.GetReturnVal<string>($"local title, factionId, capped = C_TaskQuest.GetQuestInfoByQuestID({ questId }); return title; ", 0);
public bool EliteQuest(int questId) => Lua.GetReturnVal<bool>($"return GetQuestTagInfo({ questId})", 4);
public bool QuestCompletedInLog(int questId) =>
Lua.GetReturnVal<bool>($@"for questIndex = 1, GetNumQuestLogEntries() do
_, _, _, _, _, isComplete, _, questID = GetQuestLogTitle(questIndex);
if (questID == {questId}) then return isComplete; end end return false; ", 0);
public async Task ForceTurnin(int questId, int npcId, float x, float y, float z)
{
if (!QuestCompletedInLog(questId)) return;
var q = Quest.FromId();
if(q != null)
TreeRoot.StatusText = $"Turnin {q.Name}";
var turninNpc =
ObjectManager.GetObjectsOfType<WoWUnit>().FirstOrDefault(u => u.IsValid && u.Entry == npcId);
if (turninNpc == null)
{
TreeRoot.GoalText = $"Moving to {x} {y} {z}";
await CommonCoroutines.MoveTo(new Vector3(x, y, z));
return;
}
if (!GossipFrame.Instance.IsVisible && !QuestFrame.Instance.IsVisible)
{
if (!turninNpc.WithinInteractRange)
{
TreeRoot.GoalText = $"Moving to {turninNpc}";
await CommonCoroutines.MoveTo(turninNpc.Location);
return;
}
TreeRoot.GoalText = $"Interacting with {turninNpc}";
turninNpc.Interact();
await CommonCoroutines.SleepForRandomUiInteractionTime();
}
if (GossipFrame.Instance.IsVisible)
{
var quest = GossipFrame.Instance.ActiveQuests.FirstOrDefault(q => q.Id == questId);
if (quest == null) return;
Logging.Write($"Selecting {quest.Name} (GF)");
GossipFrame.Instance.SelectActiveGossipQuest(quest.Index);
GossipFrame.Instance.SelectActiveQuest(quest.Index);
await CommonCoroutines.SleepForRandomUiInteractionTime();
return;
}
if (!QuestFrame.Instance.IsVisible) return;
if (QuestFrame.Instance.CurrentShownQuestId == questId)
{
Logging.Write($"Completing {QuestFrame.Instance.CurrentShownQuest.Name}");
QuestFrame.Instance.SelectQuestReward(1);
await CommonCoroutines.SleepForRandomUiInteractionTime();
QuestFrame.Instance.CompleteQuest();
await CommonCoroutines.SleepForRandomUiInteractionTime();
return;
}
var questF = QuestFrame.Instance.ActiveQuests.FirstOrDefault(que => que.Id == questId);
if (questF == null) return;
Logging.Write($"Selecting {questF.Name} (QF)");
QuestFrame.Instance.SelectActiveGossipQuest(questF.Index);
QuestFrame.Instance.SelectActiveQuest(questF.Index);
await CommonCoroutines.SleepForRandomUiInteractionTime();
}
1) There is no argument given that corresponds to the required formal parameter 'id' of 'Quest.FromId(uint)' at line 296
2) A local or parameter named 'q' cannot be declared in this scope because that name is used in an enclosing local scope to define a local or parameter at line 324