Code: Select all
|* Consider.INC - http://www.macroquest2.com/phpBB2/viewtopic.php?t=12399
|*
|* 0.20 - 20060409 Agripa - Added Consider_Delay
|* 0.10 - 20051112 Agripa - Initial Release
|*
|* This include file allows a toon to scan for kill on sight NPCs starting
|* with the nearest one and moving outward. I mostly use this function
|* when traveling in unfamilar zones or areas invisibly.
|*
|* Installation:
|*
|* Save as Consider.INC and use #include Consider.INC in your macro.
|*
|* Usage:
|*
|* Make a hotkey with the line "/echo Consider". Pressing the hotkey
|* will alternately start or stop the consider code scanning nearby NPCs.
|* The consider code will stop when it finds a kill on sight NPC.
|* The variable ${Consider_Return} can be used to trap the results of
|* consider events for other uses.
|*
|* The subroutine Consider_Delay does a /consider on yourself and returns
|* the time in mS for the server to respond similar to ${MacroQuest.Ping}.
|* This is useful for timing actions like /exchange that can cause a CTD
|* in certain circumstances.
|*
|* Example:
|*
|* #include Consider.INC
|*
|* Sub Main
|*
|* :restart
|*
|* /doevents
|*
|* /goto :restart
|*
|* /return
#event Consider "[MQ2] Consider"
Sub Event_Consider
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/if ( !${Consider_State1} ) {
/echo Event_Consider: Start
/call Consider_DoEvents
/varset Consider_Return <Emtpy>
/varset Consider_State1 TRUE
/varset Consider_Count 0
/call Consider_1
} else {
/echo Event_Consider: Stop
/varset Consider_State1 FALSE
}
/return
Sub Consider_1
/if ( ${Consider_State1} ) {
/varcalc Consider_Count ( ${Consider_Count} + 1 )
/varset Consider_MobID ${NearestSpawn[${Consider_Count},npc zradius 100].ID}
/if ( ${Consider_MobID} && !${Select[${Consider_Return},<Threatening>,<ReadyToAttack>]} ) {
/target id ${Consider_MobID}
/delay 1s ( ${Target.ID}==${Consider_MobID} )
/consider
/echo Consider_1: ${Consider_Count} = ${Target.CleanName}(${Target.ID})
} else {
/varset Consider_State1 FALSE
}
}
/return
Sub Consider_Init
/if ( ${Defined[Consider_Count]} ) /return
/declare Consider_Count int outer
/declare Consider_MobID int outer
/declare Consider_Return string outer
/declare Consider_State1 bool outer FALSE
/return
Sub Consider_DoEvents
/doevents Consider_Ally
/doevents Consider_Warmly
/doevents Consider_Kindly
/doevents Consider_Amiable
/doevents Consider_Indifferent
/doevents Consider_Apprehensive
/doevents Consider_Dubious
/doevents Consider_Threatening
/doevents Consider_ReadyToAttack
/return
|* ${MacroQuest.Ping}
Sub Consider_Delay
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/declare Old_ID int local ${Target.ID}
/call Consider_DoEvents
/varset Consider_Return <Empty>
/target ID ${Me.ID}
/declare Consider_Running int local ${MacroQuest.Running}
/consider
:Consider_Delay1
/call Consider_DoEvents
/if ( ${Consider_Return.Equal[<Empty>]} && ( ${MacroQuest.Running} - ${Consider_Running} ) < 3000 ) {
/goto :Consider_Delay1
}
/varcalc Consider_Running ( ${MacroQuest.Running} - ${Consider_Running} )
/if ( ${Old_ID} ) {
/target ID ${Old_ID}
} else {
/target clear
}
/return ${Consider_Running}
#event Consider_Ally "#1# regards you as an ally#*#"
#event Consider_Warmly "#1# looks upon you warmly#*#"
#event Consider_Kindly "#1# kindly considers you#*#"
#event Consider_Amiable "#1# judges you amiably#*#"
#event Consider_Indifferent "#1# regards you indifferently#*#"
#event Consider_Apprehensive "#1# looks your way apprehensively#*#"
#event Consider_Dubious "#1# glowers at you dubiously#*#"
#event Consider_Threatening "#1# glares at you threateningly#*#"
#event Consider_ReadyToAttack "#1# scowls at you, ready to attack#*#"
Sub event_Consider_Ally
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Ally>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Warmly
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Warmly>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Kindly
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Kindly>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Amiable
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Amiable>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Indifferent
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Indifferent>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Apprehensive
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Apprehensive>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Dubious
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Dubious>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_Threatening
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <Threatening>
/if ( ${Consider_State1} ) /call Consider_1
/return
Sub event_Consider_ReadyToAttack
/if ( !${Defined[Consider_Count]} ) /call Consider_Init
/varset Consider_Return <ReadyToAttack>
/if ( ${Consider_State1} ) /call Consider_1
/return
