diff --git a/auto_quest/actions/actions.iss b/auto_quest/actions/actions.iss index fcba0d1..5b6c647 100644 --- a/auto_quest/actions/actions.iss +++ b/auto_quest/actions/actions.iss @@ -2,6 +2,7 @@ #define _mr_auto_quest_actions_ #include "${LavishScript.HomeDirectory}/Scripts/mr/auto_quest/actions/npc_dialog_action.iss" +#include "${LavishScript.HomeDirectory}/Scripts/mr/auto_quest/actions/run_path_action.iss" function RunAction(string actionType, jsonvalue params) { @@ -9,6 +10,10 @@ function RunAction(string actionType, jsonvalue params) { call npc_dialog_action params } + if ${actionType.Equal["run_path"]} + { + call run_path_action params + } } #endif \ No newline at end of file diff --git a/auto_quest/actions/run_path_action.iss b/auto_quest/actions/run_path_action.iss new file mode 100644 index 0000000..51d33b6 --- /dev/null +++ b/auto_quest/actions/run_path_action.iss @@ -0,0 +1,33 @@ +#includeoptional "${LavishScript.HomeDirectory}/Scripts/mr/common/api.iss" + +variable(global) MRBotApi MRApi + +function run_path_action(jsonvalueref params) +{ + variable jsoniterator pathIterator + params.Get["path"]:GetIterator[pathIterator] + + if !${MRApi(exists)} + { + echo "MRApi not available" + + } + + if !${MRNav(exists)} + { + echo "MRNav not available" + } + + if ${pathIterator:First(exists)} + { + variable point3f nextLocation + do + { + nextLocation:Set[${pathIterator.Value.Get[x]},${pathIterator.Value.Get[y]},${pathIterator.Value.Get[z]}] + call MRApi.MoveTo "${Me.Name}" "${nextLocation}" 1 + call MRApi.WaitForMoveTo "${Me.Name}" "${nextLocation}" 1 + + } + while ${pathIterator:Next(exists)} + } +} \ No newline at end of file diff --git a/auto_quest/writer.iss b/auto_quest/writer.iss index 99e841c..9d861a6 100644 --- a/auto_quest/writer.iss +++ b/auto_quest/writer.iss @@ -100,6 +100,8 @@ objectdef QuestWriterController { variable jsonvalue step step:SetValue["${Context.Source.Metadata.Get["step"].AsJSON~}"] + + echo "Testing step ${step.Get["params"].AsJSON~}" QueueCommand call RunAction ${step.Get["type"]} "${step.Get["params"].AsJSON~}" } diff --git a/common/Relay.iss b/common/Relay.iss index 7590353..1dce3f5 100644 --- a/common/Relay.iss +++ b/common/Relay.iss @@ -6,7 +6,7 @@ objectdef RelayApi variable point3f location location:Set[${Context.Get["parameters", "location", "X"]}, ${Context.Get["parameters", "location", "Y"]}, ${Context.Get["parameters", "location", "Z"]}] - MRApi:MoveTo["${Context.Get["parameters","ForWho"]}", "${location}", ${Context.Get["parameters", "minDistance"]}] + ;MRApi:MoveTo["${Context.Get["parameters","ForWho"]}", "${location}", ${Context.Get["parameters", "minDistance"]}] } } diff --git a/common/api.iss b/common/api.iss index 6bd84a3..3a14ac6 100644 --- a/common/api.iss +++ b/common/api.iss @@ -1,12 +1,15 @@ #ifndef _mr_api_ #define _mr_api_ -objectdef MRApi +objectdef MRBotApi { - static member:bool IsForMe(string forWhoTarget) + variable string test = "test MRAPI"; + member:bool IsForMe(string forWhoTarget) { - variable string target = ${forWhoTarget}; - variable string prefix = ${forWhoTarget.Token[1, ":"]}; - variable bool negate = FALSE; + variable string target = ${forWhoTarget} + variable string prefix = ${forWhoTarget.Token[1, ":"]} + variable bool negate = FALSE + + echo "IsForMe ${forWhoTarget} ${prefix} ${target}" if ${target.Count[":"]} > 0 @@ -62,19 +65,28 @@ objectdef MRApi return ${negate} } - static method MoveTo(string forWho, point3f location, float minDistance = 0) + function MoveTo(string forWho, point3f location, float minDistance = 0) { echo "Moving to ${location}" - if ${MRApi.IsForMe[${forWho}]} + if ${This.IsForMe["${forWho}"]} { MRNav:MoveTo["${location}"] } else { - echo "NotForMe" + echo "${forWho} NotForMe" } } + function WaitForMoveTo(string forWho, point3f location, float minDistance = 0) + { + echo "Waiting for move to ${location}" + while ${Math.Distance[${Me.X},${Me.Y},${Me.Z},${location.X},${location.Y},${location.Z}]} > ${minDistance} + { + echo "waiting for path to complete ${Math.Distance[${Me.X},${Me.Y},${Me.Z},${location.X},${location.Y},${location.Z}]}" + wait 5 + } + } }