Consider.INC - Check for nearest KOS NPC.

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

Agripa
a ghoul
a ghoul
Posts: 97
Joined: Tue Nov 23, 2004 10:16 pm

Consider.INC - Check for nearest KOS NPC.

Post by Agripa » Sat Nov 12, 2005 2:42 pm

It would not be difficult to cache the results in an .ini file so that searches would be much faster and attract less attention however . . . is it not the case that 2 different mobs can have the same level, class, and name with one being able to see invis and the other not?

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

xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:00 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:37 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:38 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:39 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:40 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:41 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:42 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 1:44 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 2:21 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 2:22 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 3:35 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 4:13 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 4:49 pm


xyilla
naggy
naggy
Posts: 33673
Joined: Sun Feb 23, 2025 5:36 am

Re: Consider.INC - Check for nearest KOS NPC.

Post by xyilla » Mon Jun 23, 2025 4:50 pm