• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

BardBot. Anchor Point, twist, kill goto home anchor. (simple)

nijhal

Member
Joined
Feb 22, 2006
RedCents
10¢
This is a macro that I had given to me by a friend, it was originally written for a monk, bitchboy dps or something, then edited by my friend for just a warrior bot. Edited by me for a bard.

In hotkey place a hotkey with your twist rotation. Make sure you have MT targeted when you start the macro.

Buffcheck is commented out due to my Bard not of level to use his buffing gear yet. Change it for your own gear and turn it back on. If you can add more to the code please do so and repost it here and we can keep this updated on page 1.

Rich (BB code):
| Bard Autogrouper
| Re-Edited by: Nijhal
| Make a twist hotkey in hotkey bank 1 "/keypress 1"
| Have Main Assist targeted when starting macro.
|----------------------------------------------------------------------

#Chat group
#include GMCheck.inc

#Event Unduck                "#*#You must be standing to attack!#*#"
Sub Main


   |------------------------------------------------------------
   | How far is the combat range?
   |------------------------------------------------------------
   /declare RV_Range        int outer 10
   |------------------------------------------------------------
   | What % HP do you wish to assist at?
   |------------------------------------------------------------
   /declare RV_Assistat     int outer 96
   |------------------------------------------------------------
   | Don't worry about the rest.
   |------------------------------------------------------------
 
    /popup Bard Bot V1.0 Running!
    /echo --------------------------------------
    /echo -----{Bard Bot!~}-----
    /echo         V1.0
    /echo --------------------------------------
    /echo 
   /declare RV_Looper            int outer  0
   /declare RV_MyTargetID        int outer  0
   /declare RV_MyTargetName      string outer
   /declare RV_MyTargetDead      int outer  0
   /declare RV_RandomWait        int outer  0
   /declare RV_CheckLook         int outer  0
   /declare RV_Fighting          int outer  0
   /declare RV_TargetDead        int outer  0
   /declare RV_MyXLOC            int outer  0
   /declare RV_MyYLOC            int outer  0
   /declare AnchorX              int outer ${Me.X}
   /declare AnchorY              int outer ${Me.Y}
   /declare AnchorZ		   int outer ${Me.Z}
   /declare RV_resetheading      int outer ${Me.Heading.DegreesCCW.Int}
   /declare NotBitchBoy       string outer ${Target.CleanName}
   /declare NotBitchBoysID    int outer ${Target.ID}
   /declare RV_FastRange         int outer
   /declare RV_RangeMax          int outer
   /declare RV_RangeMin          int outer
   /declare RV_Subreset          int outer 0
   /declare RV_Rangedw       int outer
   /declare Exper                float outer
   /declare AAExp                float outer
   /declare Mobs_Killed          int outer 0
   /varset Exper                 ${Me.PctExp}
   /varset AAExp                 ${Me.PctAAExp}
   /varcalc RV_FastRange         ${RV_Range}+3
   /varcalc RV_RangeMax          ${RV_Range}+1
   /varcalc RV_RangeMin          ${RV_Range}-1
   /varcalc RV_Rangedw           ${RV_Rangedw} - 10   


   
   /if (${Target.Type.NotEqual["PC"]}) /call WhatTheFuckBitch
   /keypress 1
   :Start
   /doevents
  | /call BuffCheck
   /doevents
   /call GMCheck
   /doevents
   /call GetTarget
 
   /doevents
   /call CombatSub
   /doevents
   /call MoveToMob
   /call ResetSub

   /goto :Start

/return



|--------------------------------------------------------------------------------
|SUB: Aquire Target
|--------------------------------------------------------------------------------
Sub GetTarget
:NotYetBitchBoy
/assist ${NotBitchBoy}
/delay 4
/if (!${Target.ID}) /goto :NotYetBitchBoy
/if ((${Target.ID}!=${NotBitchBoysID}) && (${Target.PctHPs}<${RV_Assistat}) && (${Target.Distance}<150)) /return
/goto :NotYetBitchBoy
/delay 3s
/return
|--------------------------------------------------------------------------------
|SUB: GM Check
|--------------------------------------------------------------------------------
Sub GMCheck
/doevents
   /if (${Spawn[gm].ID}) {
      /beep
      /beep
      /beep
     
      /echo GM has entered the zone!
      /echo FUCK HIM but ending the macro...

      /keypress forward
      /keypress back

      /quit
      /endmacro
   }
   
/return

|--------------------------------------------------------------------------------
|SUB: Where's the group?.
|--------------------------------------------------------------------------------

Sub CheckAnchor   
   /if (${Math.Distance[${AnchorY},${AnchorX}]}>8) /call MoveToAnchor   
/return

|--------------------------------------------------------------------------------
|SUB: Move back to group.
|--------------------------------------------------------------------------------
Sub MoveToAnchor
    /stick off
    /declare iCount int local
    /varset iCount 0

|    /echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}.
    /varset RV_MyXLOC ${Int[${Me.X}]}
    /varset RV_MyYLOC ${Int[${Me.Y}]}
    /declare RV_DistanceTimer timer 15
:AnchorMoveLoop
    /delay 1
    /doevents
    /face fast nolook loc ${AnchorY},${AnchorX}
   
    /if (${Math.Distance[${AnchorY},${AnchorX}]}>12) {
       /keypress forward hold
    } else {
       /keypress forward
       /face fast away nolook loc ${AnchorY},${AnchorX}
       /return
    }

    /if (${iCount}>2) {
        /face fast nolook loc ${AnchorY},${AnchorX}
        /varset iCount 0
    }
    /if (!${RV_DistanceTimer}) {
      /if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
      /varset RV_MyXLOC ${Int[${Me.X}]}
      /varset RV_MyYLOC ${Int[${Me.Y}]}
      /varset RV_DistanceTimer 15
      } 
     }   
   
    /varcalc iCount ${iCount}+1
    /goto :AnchorMoveLoop

/return

|--------------------------------------------------------------------------------
|SUB: Obstacle Avoidance
|--------------------------------------------------------------------------------
Sub HitObstacle
/gsay F%@#, I'm Stuck.
/gsay Turd Furgason, Please help me.
/echo Moving to Anchor at Loc: ${AnchorY}, ${AnchorX}
/warp loc ${AnchorY}, ${AnchorX}, ${AnchorZ}
/return
|--------------------------------------------------------------------------------
|SUB: Reset
|--------------------------------------------------------------------------------
Sub ResetSub
   /call CheckAnchor
   /varset RV_TargetDead 0
   /varset RV_Fighting 0
   /doevents
   /attack off
   /keypress ESC
   /face fast heading ${RV_resetheading}
   /return


|--------------------------------------------------------------------------------
|SUB: Moving
|--------------------------------------------------------------------------------
Sub MoveToMob

   /varset RV_MyXLOC ${Int[${Me.X}]}
   /varset RV_MyYLOC ${Int[${Me.Y}]}
   /declare RV_DistanceTimer timer 15
   
   /doevents
   
   :MovementLoop
   /doevents
   /if ((${Target.Type.Equal["Corpse"]})&&(${Int[${Target.Distance}]}>20)) {
        /keypress forward hold
        /delay 1
        /goto :Movementloop
   }     

   /if ((${Target.Type.Equal["Corpse"]})&&(${Int[${Target.Distance}]}<20)) /return


   /if (${Target.ID}) {
      /face fast nolook
   }
   /if (${Int[${Target.Distance}]}>${RV_FastRange}) {
      /keypress forward hold
   }
   /if (${Int[${Target.Distance}]}<${RV_FastRange}&&${Int[${Target.Distance}]}>${RV_RangeMax}) {
      /keypress forward
   }
   /if (${Int[${Target.Distance}]}<${RV_RangeMin}) {
      /keypress back
      /delay 3
   }
   /if (!${RV_DistanceTimer}) {
      /doevents
      /if ((${RV_MyXLOC}==${Int[${Me.X}]})&&(${RV_MyYLOC}==${Int[${Me.Y}]})) /call HitObstacle
      /varset RV_MyXLOC ${Int[${Me.X}]}
      /varset RV_MyYLOC ${Int[${Me.Y}]}
      /varset RV_DistanceTimer 15
      /goto :Movementloop
   }
   /if (${Int[${Target.Distance}]}>${RV_FastRange}) /goto :MovementLoop

/return

|--------------------------------------------------------------------------------
|SUB: Combat (This is where you macro should be while beating the mob up)
|--------------------------------------------------------------------------------
Sub CombatSub

   /varset RV_Fighting 1
   /varset RV_TargetDead 0
   /if ((${Target.ID})&&(${Target.Type.Equal["NPC"]})) /attack on
   :CombatLoop
   /stick 10 behind
   /doevents
   /attack on
   /call MoveToMob
   /call SpecialIT

   }
   :nocombat
   /if ((!${Target.ID}) || (${Target.Type.Equal["Corpse"]})) {
      /varcalc Mobs_Killed (${Mobs_Killed}+1) 
      /attack off
      /keypress forward
      /keypress back
      /keypress esc
      /varset AAExp ${Math.Calc[${Me.PctAAExp}-${AAExp}]}
      /varset Exper ${Math.Calc[${Me.PctExp}-${Exper}]}
      /echo EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes
      /popup EXP: ${Exper}:${Me.PctExp}% - AAXP: ${AAExp}:${Me.PctAAExp}% - ${Math.Calc[${Macro.RunTime}/60]} minutes
      /echo Total Mobs killed so far:  ${Mobs_Killed}
      /varset Exper ${Me.PctExp}
      /varset AAExp ${Me.PctAAExp}
      /varset RV_TargetDead 1
      /varset RV_Fighting 0
   }
   /if (!${RV_TargetDead}) {
        /goto :CombatLoop
   }
/return
|--------------------------------------------------------------------------------
|SUB: Special Combat
|--------------------------------------------------------------------------------
Sub SpecialIT
/return

|--------------------------------------------------------------------------------
|
|--------------------------------------------------------------------------------

Sub WhatTheFuckBitch
   /echo Uhm target the person you want to assist before starting this macro.
   /popup Uhm target the person you want to assist before starting this macro.
   /endmacro
/return


Sub Event_Unduck
   /call CheckAnchor
/return


|-------------------------------------------------------------------------------- 
|SUB: Buff Check - Bard Specific, but can be edited for other classes 
|-------------------------------------------------------------------------------- 
Sub BuffCheck 

  /if (${Me.PctHPs}<60) /keypress 2

  /if (${Me.Buff["Miraculous Visions"].Duration} !> ${MF_BuffTicks}) { 
    /casting "Stanos' Wicked Gauntlets" hands
    /echo Casting Haste
    /popup Casting Haste
  /delay 4s
  }

  /if (${Me.Buff["Shield of the Arcane"].Duration} !> ${MF_BuffTicks}) { 
    /casting "Stanos' Wicked Breastplate" chest
    /echo Casting hp buffs
    /popup Cating HP Buffs
   /delay 13s
  }

  /if (${Me.Buff["Elixir of Health X"].Duration} !> ${MF_BuffTicks}) { 
    /casting "Distillate of Health X" item
    /echo Casting Haste
    /popup Casting Haste
   /delay 4s
  }

  /if (${Me.Buff["Shield of the Eighth"].Duration} !> ${MF_BuffTicks}) { 
    /casting "Velium Coldain Insignia Ring" fingers
    /echo Casting Haste
    /popup Casting Haste
   /delay 4s
  }
/return

N
 
BardBot. Anchor Point, twist, kill goto home anchor. (simple)

Users who are viewing this thread

Back
Top
Cart