TaskInfo.inc -- Putting task info on your hud.
I recently started doing a bunch of the quests for RoF and found I could do the quests quicker if I didn't have to keep open/closing the quest window. Using this snippet any time the current quest updates you get the next thing your supposed to do.
It can get confused if you get updates for quests out of sequence.
| Step1 : Save this file somewhere in your macro folder
| Step2 : In your main macro add at the top "#include TaskInfo.inc"
| Step3 : In your main macro before the main loop add "/call TaskInit"
| Step4 : In your main macro inside the main loop add "/call TaskUpdate"
| Step5 : In your MQ2HUD.INI add "TASK1=3,137,180,250,250,150,${TaskMesg}"
-------------------------------------------------------------------------
Code: Select all
|-- TaskInfo.inc
|
| Step1 : Save this file somewhere in your macro folder
| Step2 : In your main macro add at the top "#include TaskInfo.inc"
| Step3 : In your main macro before the main loop add "/call TaskInit"
| Step4 : In your main macro inside the main loop add "/call TaskUpdate"
| Step5 : In your MQ2HUD.INI add "TASK1=3,137,180,250,250,150,${TaskMesg}"
|
|-----------------------------------------------------------------------
#event TaskUpdate "#*#Your task '#1#' has been updated.
#event TaskAssigned "#*#You have been assigned the task '#1#'.
Sub TaskInit
/declare TaskStep string outer None
/declare TaskName string outer None
/declare TaskTime string outer None
/declare TaskObj string outer None
/declare TaskStat string outer None
/declare TaskZone string outer None
/declare TaskMesg string outer None
/declare TaskTimer timer outer 0
/return
Sub TaskUpdate
/if (${TaskTimer}) /return
/declare T int 1
/varset T 1
:TaskUpdateNextTask
/varset TaskObj ${Window[TaskWnd].Child[TASK_TaskElementList].List[${T},1]}
/varset TaskStat ${Window[TaskWnd].Child[TASK_TaskElementList].List[${T},2]}
/varset TaskZone ${Window[TaskWnd].Child[TASK_TaskElementList].List[${T},3]}
/if (${TaskObj.Equal[NULL]}) /return
/if (${TaskStat.Equal[Done]}) {
/varcalc T ${T}+1
/goto :TaskUpdateNextTask
}
|-- If we get here we should have everything filled out.
/varset TaskTimer 6s
/varset TaskMesg Task: ${TaskName} | Obj: ${TaskObj} | ${TaskStat} | in ${TaskZone}
|/echo ${TaskMesg}
/return
Sub Event_TaskUpdate(string line, string Quest)
/if (!${Defined[TaskMesg]}) /call TaskInit
/declare T int 1
:TaskUpdateNextQuest
/varset TaskName ${Window[TaskWnd].Child[TASK_TaskList].List[${T},2]}
/varset TaskTime ${Window[TaskWnd].Child[TASK_TaskList].List[${T},3]}
/if (${TaskName.Equal[NULL]}) /return
/if (${TaskName.NotEqual[${Quest}]}) {
/varcalc T ${T}+1
/goto :TaskUpdateNextQuest
}
|-- If we get here we ${T} should be the quest line
/notify TaskWnd TASK_TaskList listselect ${T}
/delay 1s
/varset T 1
:TaskUpdateNextTask
/varset TaskObj ${Window[TaskWnd].Child[TASK_TaskElementList].List[${T},1]}
/varset TaskStat ${Window[TaskWnd].Child[TASK_TaskElementList].List[${T},2]}
/varset TaskZone ${Window[TaskWnd].Child[TASK_TaskElementList].List[${T},3]}
/if (${TaskObj.Equal[NULL]}) /return
/if (${TaskStat.Equal[Done]}) {
/varcalc T ${T}+1
/goto :TaskUpdateNextTask
}
|-- If we get here we should have everything filled out.
/varset TaskMesg Task: ${TaskName} | Obj: ${TaskObj} | ${TaskStat} | in ${TaskZone}
/echo ${TaskMesg}
/return
Sub Event_TaskAssigned(string line, string Quest)
/call Event_TaskUpdate "${line}" "${Quest}"
/return

