Bard AE dot macro

A forum for you to dump all the macros you create, allowing users to use, modify, and comment on your work.

Moderator: MacroQuest Developers

dones
orc pawn
orc pawn
Posts: 25
Joined: Fri Mar 21, 2003 10:13 pm

Post by dones » Sun Dec 14, 2003 12:33 pm

hi when i use this macro and i have 0 mobs on me it works good but when i go to test it and agro somthing it always runs into the mob any ideas ?

User avatar
Dniper
a lesser mummy
a lesser mummy
Posts: 71
Joined: Tue Nov 25, 2003 2:54 pm

Post by Dniper » Sun Dec 14, 2003 12:38 pm

Did you supply the loc of the area you want it to do the running around? If you don't it just uses whatever loc you had when you first initiated the macro. So if you initiated it on the other side of the zone it'll use that loc.

dones
orc pawn
orc pawn
Posts: 25
Joined: Fri Mar 21, 2003 10:13 pm

Post by dones » Sun Dec 14, 2003 12:40 pm

yes i tested both i used the loc and with out a loc and they both run into the mob i will try again today

zegot
decaying skeleton
decaying skeleton
Posts: 5
Joined: Sat Dec 13, 2003 7:16 pm

Post by zegot » Mon Dec 15, 2003 5:20 pm

Do you need Extended Notes for this to work (being nerfed anyway)? Also what radius are the people using to get the AE to hit?

Thanks.

zegot
decaying skeleton
decaying skeleton
Posts: 5
Joined: Sat Dec 13, 2003 7:16 pm

Post by zegot » Mon Dec 15, 2003 9:40 pm

Phew I think I fixed it..
I had to fix currsong at numerous places since the original code had cursong to be the gem song # instead of counter to song array @a. To change the number of songs just change /varset nsongs. To use lower level selos I tried lowering selotimer from 1500 (2.5 minutes, i think) to like 225 and even 110 but it's not very reliable. I would probably stick selos as the 2nd song...

Code: Select all


| 
| - swarm.mac - 
| Hacked together by Brick 37 twisting 3 AE dots, 49 Selo's, 
| 
| swarm <dot1> <dot2> <dot3> <selo> <loc x> <loc y> <radius> 
| run around in a cirle while twisting selos and three DOT AEs.  If x, 
| y, and radius are not supplied, use the current position and a radius 
| of 32. But i strongly recommend you to type in xloc yloc and radius. 
| 

#event MissedNote "You miss a note, bringing your song to a close!" 
#event NeedTarget "You must first select a target for this spell!" 
#event Slow       "you slow down" 
#event Exp        "You gain " 
#event Tell       "tells you" 
#event Recovered "You haven't recovered yet..." 
#event Notsee   "You cannot see" 
#event Died "You have entered" 

| this needs to be on now -- parameter parsing takes too long 
#turbo 

Sub Main(p0,p1,p2,p3,p4,p5,p6) 

/declare cirx global 
/declare ciry global 
/declare cirr global 
| array of songs 
/declare a array 
| number of songs 
/declare nsongs global 
| current song 1-3 
/declare cursong global 
/declare prevsong global 
/declare exper global 
/declare aaexp global 
/declare health global 
/declare songtimer timer 
/declare selotimer timer 
/declare angstimer timer 
/declare puretonetimer timer 
/declare bellowtimer timer 
/declare rangecalc global 
/declare lastmobid global 
/varset rangecalc 0 

  /if $defined(p0)==false { 
    /echo usage: swarm.mac <DOT> <DOT> <DOT> <selo> <loc x> <loc y> <radius> 
    /return 
  } 

  | check if the location was passed in... 
  /if $defined(p4)==false { 
        /varset cirx $char(y) 
        /varset ciry $char(x) 
        /varset cirr 32 
  } else { 
        /varset cirx @p4 
        /varset ciry @p5 
        /varset cirr @p6 
  } 

  /varset nsongs 3 

| First song 
  /varset a(1) @p0 
  /echo Song 1: $char(gem,@p0) 

  /if $defined(p1)!=false { 
            /varset a(2) @p1 
            /echo Song 2: $char(gem,@p1) 
      } 

  /if $defined(p2)!=false { 
            /varset a(3) @p2 
            /echo Song 3: $char(gem,@p2) 
      } 

|Selos 
  /if $defined(p5)!=false { 
            /varset a(4) @p3 
            /echo Song 4: $char(gem,@p3) 
      } 

| always incremented before starting a new 
| song.  songs start at 1 so we can make 
| cursong = 0 to restart the list 
  /varset cursong 1 
  /varset exper $char(exp)% 
  /varset aaexp $char(aa,exp)% 
  /varset songtimer 64 
  /varset bellowtimer 186 
  /varset selotimer 0 
  /varset angstimer 240 
  /varset puretonetimer 64 

:Loop 
   /if $defined(p3)==false { 
      /varset selotimer 10000 
  } 
  /if $defined(p5)!=false { 
    /if $char(speed)<=1 /varset cursong 4 
    /call circ @cirx @ciry @cirr 
  } 
    /if n @selotimer<=0 { 
      /varset cursong 4 
      /varset selotimer 1500 
      /call Sing 
  } 
    /if n @puretonetimer<=0  { 
      /varset angstimer 0 
      /disc puretone 
      /varset puretonetimer 43200 
  } 
    /if n @songtimer<=0 /call Sing 
    /call circ @cirx @ciry @cirr 
    /doevents 
/goto :Loop 
/return 

Sub Sing 
   /stopsong 
   /cast @a(@cursong)
   /if n $target(id)!=@lastmobid /if n @rangecalc!=0 /varset rangecalc 0 
   /echo casting @cursong 
   /varset prevsong @cursong 
   /varadd cursong 1 
   /varset songtimer 32 
   /call circ @cirx @ciry @cirr 
   /doevents 
   /if n @cursong>@nsongs /varset cursong 1
/return 

Sub circ 
   /if $char(speed)<=.2 /press Num_Lock 
   /if n $distance(@cirx,@ciry)<(@cirr/2){ 
   /face heading $calc($heading(@cirx,@ciry)+180) 
   } else { 
   /face heading $calc($heading(@cirx,@ciry)+$calc(90*$calc(@cirr/$distance(@cirx,@ciry)))) 
   } 
/return 

Sub Event_MissedNote 
  | restart song 
   /varset cursong @prevsong 
   /varset songtimer 0 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_Recovered 
  | restart song 
   /if @cursong!=5 { 
   /varset cursong @prevsong 
} 
   /varset songtimer 0 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_Notsee 
   /stopsong 
   /varset cursong @prevsong 
   /varset songtimer 0 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_NeedTarget 
  | get target 
   /tar npc 
   /varset lastmobid $target(id) 
   /call circ @cirx @ciry @cirr 
   /doevents 
/return 

Sub Event_Tell 
   /beep 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_Died 
  /delay 10 
  /sit 
  /delay 10 
  /camp desktop 
/return 

Sub Event_Exp 
  /varset aaexp $calc($char(aa,exp)-@aaexp) 
  /varset exper $calc($char(exp)-@exper) 
  /echo Running time $calc($running/60) minutes 
  /echo @exper% regular exp @aaexp% AA exp 
  /varset exper $char(exp) 
  /varset aaexp $char(aa,exp) 
  /stopsong 
  /tar npc 
  /varset cursong @a(1) 
  /varset songtimer 0 
  /call circ @cirx @ciry @cirr 
  /doevents 
/return 

Sub Event_OOR 
  /varcalc rangecalc @rangecalc+1 
  /if n @rangecalc>=10 { 
      /press esc 
      /varset rangecalc 0 
      /tar npc 
      /call circ @cirx @ciry @cirr 
      /doevents 
  } 
/return 

Raebis
a ghoul
a ghoul
Posts: 81
Joined: Fri Dec 12, 2003 6:23 am

fix for selo's problems

Post by Raebis » Mon Dec 15, 2003 11:02 pm

I took parts of this same macro (i belive insanitywiz hacked it together from a few other people) for my chant kite macro (http://macroquest2.com/phpBB2/viewtopic.php?t=4536) - i plan on making said macro AE Dot compatible as well as chant dot compatible.

In reguards to your AE macro, to fix the selo's problem, change this:

Code: Select all

/if n @songtimer<=0 /call Sing


to this:

Code: Select all

/if n @songtimer<=0 /if n @selotimer<=1467 /call Sing


What i think is going on is the songtimer is calling /sing without checking to see if selo's is in the process of being sung. When @selotimer gets to zero it resets @selotimer to 1500 and starts casting selo. If you allow the @selotimer to get down to 1467 (appx 3.3 seconds, just over selo's cast time) before casting the next dot you should be ok.

Another little snippet from my chantkite macro you mite want to use is this failsafe: to ensure that even if selos gets clicked off, it fizzles, whatever, selo's will still come up if your speed is slower than it should be.

Code: Select all

   /if n @selotimer<1467 /if n $char(speed)<=100 /if n $char(speed)>40 { 
      |Selos down for some reason... casting selos 
      /varset cursong 4 
      /varset selotimer 1500 
      /call Sing 
   } 
Just make sure you put above code after

Code: Select all

    /if n @selotimer<=0 { 
      /varset cursong 4 
      /varset selotimer 1500 
      /call Sing 
  }
so if @selostimer runs out it will start casting selo's normally before doing the failsafe... hope that makes sense...

edit: also the part where it says /if n $char(speed)<=100 in the failsafe is for chars with no runaa's
Always say what you want to say. Because those who mind, don't matter. And those who matter, don't mind.

Raebis
a ghoul
a ghoul
Posts: 81
Joined: Fri Dec 12, 2003 6:23 am

Post by Raebis » Mon Dec 15, 2003 11:18 pm

oh and one more bug -- add the red part:

Code: Select all

Sub circ 
   /if [color=red]n[/color] $char(speed)<=.2 /press Num_Lock 
   /if n $distance(@cirx,@ciry)<[color=red]$calc[/color](@cirr/2){ 
   /face heading $calc($heading(@cirx,@ciry)+180) 
   } else { 
   /face heading $calc($heading(@cirx,@ciry)+$calc(90*$calc(@cirr/$distance(@cirx,@ciry)))) 
   } 
/return 
I spent an hour trying to figure out why when i got too close to a mob i just stoped turning and started to shake like a leaf
Always say what you want to say. Because those who mind, don't matter. And those who matter, don't mind.

mekaniak
a hill giant
a hill giant
Posts: 290
Joined: Thu Sep 18, 2003 3:21 pm

Post by mekaniak » Tue Dec 16, 2003 12:23 am

about the bard changes they are talking about will include changing extended notes to non PBAE...how much more difficult will this make high level swarm kiting?
I love the Power Glove, it's so bad

Say hello to M.C. Smurf!

[quote]<mekaniak> adios guys.
<dont_know_at_all> idiot
* mekaniak is now known as mekaniak_dinner
<Jacensolo> me?
<dont_know_at_all> not this time
[/quote]

[quote]
<dont_know_at_all> A_Enchanter_00, how the fuck should i know? it's your code[/quote]

I love quoting IRC chat.

User avatar
Dniper
a lesser mummy
a lesser mummy
Posts: 71
Joined: Tue Nov 25, 2003 2:54 pm

Post by Dniper » Tue Dec 16, 2003 1:20 am

It's sure going to make AE kiting harder for bards who are use to Extended notes and such. I can AE kite alright without it, but I'm just not able to kite as many mobs as the pack gets too big to get close enough to AE them without extended notes.

Oh well. I'll be the first to admit that bard's soloing experience is way too uber. Which when you think about it is rather ironic considering they're supposed to be one of the most group friendly classes.
Last edited by Dniper on Tue Dec 16, 2003 1:22 am, edited 1 time in total.

mekaniak
a hill giant
a hill giant
Posts: 290
Joined: Thu Sep 18, 2003 3:21 pm

Post by mekaniak » Tue Dec 16, 2003 1:22 am

yeah but bards are just way too uber too. :D
I love the Power Glove, it's so bad

Say hello to M.C. Smurf!

[quote]<mekaniak> adios guys.
<dont_know_at_all> idiot
* mekaniak is now known as mekaniak_dinner
<Jacensolo> me?
<dont_know_at_all> not this time
[/quote]

[quote]
<dont_know_at_all> A_Enchanter_00, how the fuck should i know? it's your code[/quote]

I love quoting IRC chat.

User avatar
Dniper
a lesser mummy
a lesser mummy
Posts: 71
Joined: Tue Nov 25, 2003 2:54 pm

Post by Dniper » Tue Dec 16, 2003 1:22 am

Chip chip HORAAH! :)

theoneandonly
orc pawn
orc pawn
Posts: 26
Joined: Sun Apr 11, 2004 6:39 pm

Post by theoneandonly » Sun Apr 11, 2004 6:40 pm

Code: Select all

| 
| - swarm.mac - 
| Hacked together by Brick 37 twisting 3 AE dots, 49 

Selo's, 
| 
| swarm <dot1> <dot2> <dot3> <selo> <loc x> <loc y> 

<radius> 
| run around in a cirle while twisting selos and three DOT 

AEs.  If x, 
| y, and radius are not supplied, use the current position 

and a radius 
| of 32. But i strongly recommend you to type in xloc yloc 

and radius. 
| 

#event MissedNote "You miss a note, bringing your song to 

a close!" 
#event NeedTarget "You must first select a target for this 

spell!" 
#event Slow       "you slow down" 
#event Exp        "You gain " 
#event Tell       "tells you" 
#event Recovered "You haven't recovered yet..." 
#event Notsee   "You cannot see" 
#event Died "You have entered" 

| this needs to be on now -- parameter parsing takes too 

long 
#turbo 

Sub Main(p0,p1,p2,p3,p4,p5,p6) 

/declare cirx global 
/declare ciry global 
/declare cirr global 
| array of songs 
/declare a array 
| number of songs 
/declare nsongs global 
| current song 1-3 
/declare cursong global 
/declare prevsong global 
/declare exper global 
/declare aaexp global 
/declare health global 
/declare songtimer timer 
/declare selotimer timer 
/declare angstimer timer 
/declare puretonetimer timer 
/declare bellowtimer timer 
/declare rangecalc global 
/declare lastmobid global 
/varset rangecalc 0 

  /if $defined(p0)==false { 
    /echo usage: swarm.mac <DOT> <DOT> <DOT> <selo> <loc 

x> <loc y> <radius> 
    /return 
  } 

  | check if the location was passed in... 
  /if $defined(p4)==false { 
        /varset cirx $char(y) 
        /varset ciry $char(x) 
        /varset cirr 32 
  } else { 
        /varset cirx @p4 
        /varset ciry @p5 
        /varset cirr @p6 
  } 

  /varset nsongs 3 

| First song 
  /varset a(1) @p0 
  /echo Song 1: $char(gem,@p0) 

  /if $defined(p1)!=false { 
            /varset a(2) @p1 
            /echo Song 2: $char(gem,@p1) 
      } 

  /if $defined(p2)!=false { 
            /varset a(3) @p2 
            /echo Song 3: $char(gem,@p2) 
      } 

|Selos 
  /if $defined(p5)!=false { 
            /varset a(4) @p3 
            /echo Song 4: $char(gem,@p3) 
      } 

| always incremented before starting a new 
| song.  songs start at 1 so we can make 
| cursong = 0 to restart the list 
  /varset cursong 1 
  /varset exper $char(exp)% 
  /varset aaexp $char(aa,exp)% 
  /varset songtimer 64 
  /varset bellowtimer 186 
  /varset selotimer 0 
  /varset angstimer 240 
  /varset puretonetimer 64 

:Loop 
   /if $defined(p3)==false { 
      /varset selotimer 10000 
  } 
  /if $defined(p5)!=false { 
    /if $char(speed)<=1 /varset cursong 4 
    /call circ @cirx @ciry @cirr 
  } 
    if n @selotimer<1467 /if n $char(speed)<=100 /if n 

$char(speed)>40 { 
      |Selos down for some reason... casting selos 
      /varset cursong 4 
      /varset selotimer 1500 
      /call Sing 
  } 
    /if n @puretonetimer<=0  { 
      /varset angstimer 0 
      /disc puretone 
      /varset puretonetimer 43200 
  } 
    /if n @songtimer<=0 /if n @selotimer<=1467 /call Sing 
    /call circ @cirx @ciry @cirr 
    /doevents 
/goto :Loop 
/return 

Sub Sing 
   /stopsong 
   /cast @a(@cursong) 
   /if n $target(id)!=@lastmobid /if n @rangecalc!=0 

/varset rangecalc 0 
   /echo casting @cursong 
   /varset prevsong @cursong 
   /varadd cursong 1 
   /varset songtimer 32 
   /call circ @cirx @ciry @cirr 
   /doevents 
   /if n @cursong>@nsongs /varset cursong 1 
/return 

Sub circ 
   /if n $char(speed)<=.2 /press Num_Lock 
   /if n $distance(@cirx,@ciry)<$calc(@cirr/2){ 
   /face heading $calc($heading(@cirx,@ciry)+180) 
   } else { 
   /face heading 

$calc($heading(@cirx,@ciry)+$calc(90*$calc(@cirr/$distance

(@cirx,@ciry)))) 
   } 
/return 

Sub Event_MissedNote 
  | restart song 
   /varset cursong @prevsong 
   /varset songtimer 0 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_Recovered 
  | restart song 
   /if @cursong!=5 { 
   /varset cursong @prevsong 
} 
   /varset songtimer 0 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_Notsee 
   /stopsong 
   /varset cursong @prevsong 
   /varset songtimer 0 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_NeedTarget 
  | get target 
   /tar npc 
   /varset lastmobid $target(id) 
   /call circ @cirx @ciry @cirr 
   /doevents 
/return 

Sub Event_Tell 
   /beep 
   /call circ $xloc $yloc $radius 
   /doevents 
/return 

Sub Event_Died 
  /delay 10 
  /sit 
  /delay 10 
  /camp desktop 
/return 

Sub Event_Exp 
  /varset aaexp $calc($char(aa,exp)-@aaexp) 
  /varset exper $calc($char(exp)-@exper) 
  /echo Running time $calc($running/60) minutes 
  /echo @exper% regular exp @aaexp% AA exp 
  /varset exper $char(exp) 
  /varset aaexp $char(aa,exp) 
  /stopsong 
  /tar npc 
  /varset cursong @a(1) 
  /varset songtimer 0 
  /call circ @cirx @ciry @cirr 
  /doevents 
/return 

Sub Event_OOR 
  /varcalc rangecalc @rangecalc+1 
  /if n @rangecalc>=10 { 
      /press esc 
      /varset rangecalc 0 
      /tar npc 
      /call circ @cirx @ciry @cirr 
      /doevents 
  } 
/return


just thought i'd make it easy and post the final version

deatos
decaying skeleton
decaying skeleton
Posts: 9
Joined: Wed Mar 10, 2004 7:56 pm

Post by deatos » Sun Apr 11, 2004 11:05 pm

thank you for the final post, i have tried running this in pov, and get killed rarther quick, if i make the radius anybigger, my dot`s dont hit, what param`s is everyone useing?
main() {
int a;
printf("im not a bug\n");
a = malloc(512);
free(a);
free(a);
}

jcooler
a ghoul
a ghoul
Posts: 87
Joined: Wed Dec 31, 2003 7:38 pm

Post by jcooler » Mon Apr 12, 2004 11:45 pm

First of all if you don;t know everthing the bard can do to not get killed - learn

an AE kite macro is very not HANDS OFF .....

you CAN NOT ae kite light crawlers =) they are to long ... what happens when u get one ????? read the first thing i said

Fadeing memories helps too =p

gehenna
orc pawn
orc pawn
Posts: 17
Joined: Fri Apr 16, 2004 10:03 pm

Post by gehenna » Fri Apr 16, 2004 10:09 pm

This marco is really nice. Thanks for taking the time guys to make it. I have a question and since this is the macro I am using I thought I wouold post it here. I am currently ae kiting in Nadox with this and when the mobs get to 50% health they start to wander off a bit then warp back behind me and eventually they get to close and kill me. I thought it was lag so I disconnected my router and plugged staright into my computer and changed my options to reduce memory intensive graphics. I also went into the eq folder and changed the serverfilter to 1 and increased my data flow from server to allow 9. This didnt help and I was wondering if anyone knows how I can get this to work. I have tried other zones and the same thing happens but it didnt happen when I was pre lvl 50 so maybe the mob lvl has something to do with it. I have a fast computer with a cable modem so I really cant see why this is happening. If someone can help I would really appreciate it as I am currently down since I cannot find a spot to AE. I have seen other bards in Nadox do it fine so I am wondering what I can do to fix this.

Thanks a ton.