Include file for task info.

A forum for macro code snippets to be used in writing other macros. Post routines or .inc files here only, completed macros go to the Macro Depot. MQ2Data format only!

Moderator: MacroQuest Developers

dewey2461
Contributing Member
Contributing Member
Posts: 1759
Joined: Sun Apr 17, 2005 1:53 am

Include file for task info.

Post by dewey2461 » Sun Mar 24, 2013 2:24 am


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

Wink-
a ghoul
a ghoul
Posts: 122
Joined: Tue Apr 27, 2004 2:41 pm

Re: Include file for task info.

Post by Wink- » Fri Jul 12, 2013 4:00 pm

Thanks Dewey, great idea!