Genbot Version 12 MQ2Data Ready

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

Moderator: MacroQuest Developers

Dulapore
a lesser mummy
a lesser mummy
Posts: 67
Joined: Thu Feb 26, 2004 4:39 am

Post by Dulapore » Sun Apr 25, 2004 1:58 pm

Fez, for 1, I created an anchoroff command. My hotbutton for follow would go , /t bot anchoroff, /t bot follow. Perhaps Lord might think of putting in the ability to set anchor to off similar in the base code. Or making anchor accept paramaters like /t bot anchor off|on

For 2, "stay here" would be supported with the new Natural Language support. Read the intro on Page 1.

wilddoug
orc pawn
orc pawn
Posts: 12
Joined: Tue Jul 01, 2003 11:18 am

Anchor

Post by wilddoug » Sun Apr 25, 2004 4:08 pm

Getting a crash in Anchor:

genbot.mac@104 (Main):
/if (${Math.Distance[@AnchorX,@AnchorY}}>@AnchorRadius) {

User avatar
Fuergrissa
a grimling bloodguard
a grimling bloodguard
Posts: 607
Joined: Mon Dec 08, 2003 3:46 pm
Location: UK

not camping out

Post by Fuergrissa » Sun Apr 25, 2004 4:13 pm

when you issue the camp out command it will not camp out.
code as follows:

Code: Select all

Sub Do-camp 
   /dismount 
   /varset Afollow 0 
   /if ((@advpath)&&(@FollowFlag)) /call StopFunction 
   /varset FollowTarget "NULL" 
   /call ChatOut 3 @MasterName "Camping out." 
   /if (${Me.Sitting}) /Stand 
   /camp desktop 
/return 
should it be this ?

Code: Select all

Sub Do-camp
    /dismount 
   /varset Afollow 0 
   /if ((@advpath)&&(@FollowFlag)) /call StopFunction 
   /varset FollowTarget "NULL" 
   /call ChatOut 3 @MasterName "Camping out." 
   /if (${String[${Me.State}].Equal[STAND]}) /sit
   /camp desktop
/return

bob_the_builder
a hill giant
a hill giant
Posts: 275
Joined: Tue Jul 22, 2003 1:22 pm

Post by bob_the_builder » Sun Apr 25, 2004 4:56 pm

in BotCore.inc

is

Code: Select all

   /if (${Cursor.ID}) /goto donelooting 
   /if (@BreakOut) /goto donelooting 
should be

Code: Select all

   /if (${Cursor.ID}) /goto :donelooting 
   /if (@BreakOut) /goto :donelooting 

wassup
Official Guardian and Writer of TFM
Official Guardian and Writer of TFM
Posts: 1487
Joined: Sat Oct 26, 2002 5:15 pm

Post by wassup » Sun Apr 25, 2004 5:18 pm

This is working extremely well with a cleric bot. Only thing I have seen is quite a bit of:

'Waiting for refresh' spam when DoYaulp is on, and also had to restart macro after seeing:

Invalid character found after index ']] <charname> [[<<].Arg[1]'
Invalid character found after index ']] <charname> [[<<].Length'

and without Yaulp set or on

Invalid character found after index ']] <charname> [[==].Arg[1]'
Invalid character found after index ']] <charname> [[==].Length'

After those come up, the bot will not autoheal anymore and the macro has to be restarted.

I'm thinking it might be here in botcore:

Code: Select all

Sub StandardTarget
   /if (!${Defined[Param0]}) {
      /assist @MasterName
   } [color=cyan]else /if (${String[@Param0].Length}==0)[/color] {
      /assist @MasterName
   } else /if (${String[@Param0].Equal[me]}) {
      /target pc @MasterName
   } else /if (${String[@Param0].Equal[yourself]}) {
      /target myself
   } else /if (${String[@Param0].Equal[${Me.CleanName}]}) {
      /target myself
   } else {
      /target @Param0
   }
/return
I am trying the following to see if it eliminates the problem:

Code: Select all

Sub StandardTarget
   /if (!${Defined[Param0]}) {
      /assist @MasterName
   } [color=cyan]else /if (!${String[@Param0].Length}) {[/color]
      /assist @MasterName
   } else /if (${String[@Param0].Equal[me]}) {
      /target pc @MasterName
   } else /if (${String[@Param0].Equal[yourself]}) {
      /target myself
   } else /if (${String[@Param0].Equal[${Me.CleanName}]}) {
      /target myself
   } else {
      /target @Param0
   }
/return
Last edited by wassup on Sun Apr 25, 2004 6:42 pm, edited 1 time in total.

wassup
Official Guardian and Writer of TFM
Official Guardian and Writer of TFM
Posts: 1487
Joined: Sat Oct 26, 2002 5:15 pm

Re: not camping out

Post by wassup » Sun Apr 25, 2004 5:39 pm

Fuergrissa wrote:when you issue the camp out command it will not camp out.
code as follows:

Code: Select all

Sub Do-camp 
   /dismount 
   /varset Afollow 0 
   /if ((@advpath)&&(@FollowFlag)) /call StopFunction 
   /varset FollowTarget "NULL" 
   /call ChatOut 3 @MasterName "Camping out." 
   /if (${Me.Sitting}) /Stand 
   /camp desktop 
/return 
should it be this ?

Code: Select all

Sub Do-camp
    /dismount 
   /varset Afollow 0 
   /if ((@advpath)&&(@FollowFlag)) /call StopFunction 
   /varset FollowTarget "NULL" 
   /call ChatOut 3 @MasterName "Camping out." 
   /if (${String[${Me.State}].Equal[STAND]}) /sit
   /camp desktop
/return
I think it was just a matter of how much work he did. Easy to lose track of something.

This should work:

Code: Select all

Sub Do-camp 
   /dismount 
   /varset Afollow 0 
   /if ((@advpath)&&(@FollowFlag)) /call StopFunction 
   /varset FollowTarget "NULL" 
   /call ChatOut 3 @MasterName "Camping out." 
   /if (!${Me.Sitting}) /sit
   /camp desktop 
/return 

wassup
Official Guardian and Writer of TFM
Official Guardian and Writer of TFM
Posts: 1487
Joined: Sat Oct 26, 2002 5:15 pm

Re: Sitting

Post by wassup » Sun Apr 25, 2004 5:43 pm

xander wrote:In regards to sit not working, think this is your problem.

Line 772 of botcore.inc

Code: Select all

/if (${Me.Standing}) /sit
This always evaluates to NULL for me. Try this:

Code: Select all

/if (${String[${Me.State}].Equal[STAND]}) /sit
Fixed it for me
If it always returned a NULL when you were sitting then I would think it was a bug. The code itself is fine.

As far as yours goes...

You should look at return types:

.State returns a string, so in your example you are converting a string to a string... will work, but why?

Code: Select all

/if (${Me.State.Equal[STAND]}) /sit
does the same thing.

fez_ajer
a ghoul
a ghoul
Posts: 106
Joined: Fri Apr 23, 2004 6:44 pm
Location: If I was up your ass you'd know where I was...

Some little issues I've found (with fixes I think)

Post by fez_ajer » Sun Apr 25, 2004 6:50 pm

There's some wierdness in bothealer, specifically wrt Pallies who heal.

You need to add:

Code: Select all

/declare LowHealthCheck global
into SetupHealerVars.

lines 251 and 259:

Code: Select all

/if ((${Spawn[@QuickID].PctHPs}<${Math.Calc[@TankPctHeal/2]})&&(@PatchHealer)) /call PatchHeal @QuickID 
should probably be more like:

Code: Select all

/if (${Spawn[@QuickID].PctHPs}<${Math.Calc[@TankPctHeal/2]} && @PatchHealer==1) /call PatchHeal @QuickID
line 319 has a problem in patcheal:

Code: Select all

/if (${Me.Gem[@PatchSpell]})/cast "@PatchSpell"
should have a space before /cast:

Code: Select all

/if (${Me.Gem[@PatchSpell]}) /cast "@PatchSpell"
line 363 has a reference to $group:

Code: Select all

/if ((${Group[@tempvar].PctHPs}<@PalHealPct)&&(${Group[@tempvar].State.NotEqual[DEAD]})) /call PallyHeal $group(@tempvar)
should be:

Code: Select all

      /if ((${Group[@tempvar].PctHPs}<@PalHealPct)&&(${Group[@tempvar].State.NotEqual[DEAD]})) /call PallyHeal ${Group[@tempvar].ID} 

fez_ajer
a ghoul
a ghoul
Posts: 106
Joined: Fri Apr 23, 2004 6:44 pm
Location: If I was up your ass you'd know where I was...

And another

Post by fez_ajer » Sun Apr 25, 2004 6:52 pm

bothealer.inc line 320:

Code: Select all

/if [@SitAfterCast] /varset SitTimer @DelayBeforeSit
should be parens:

Code: Select all

/if (@SitAfterCast) /varset SitTimer @DelayBeforeSit

LordGiddion
a snow griffon
a snow griffon
Posts: 352
Joined: Sat Sep 13, 2003 6:12 pm
Contact:

Post by LordGiddion » Sun Apr 25, 2004 7:04 pm

Hi folks just got in and responding to the new posts, Today hasn't been a great day for me so I don't know if I'll get an update out tonight or not.

Ok sitting issue: ${Me.Standing} was added by Lax in the april 24th zip, if your MQ code isn't up to date it won't work. I'm using the Bool compair rather then the string compair because it's more efficient.

xander: I'll add sit after cast function to the shortcuts.

fez_ajer: I'll add the stand, it makes sense and I don't see it hurting anything. I'll think about follow clearing the anchor, I don't see a reason to leave the anchor but let me think about it. On number 2 I can see the logic of anchor clearing follow. I'd rather not set Stay to creating an anchor - but if you like Stay then use the new language support to rename the default stay command and rename anchor to stay.

Dulapore: thanks for the Idea, I'll look at On/Off param for anchor

wilddoug: Is there an error returned? I'll test and see if I can reproduce but I think I tested Anchor before I posted.

bob_the_builder: thanks for catching the typos, I'll fix before my next update.

Wassup: I haven't seen that bug but I'll try testing for it, I don't normally have my cleric Yaulp.

wassup
Official Guardian and Writer of TFM
Official Guardian and Writer of TFM
Posts: 1487
Joined: Sat Oct 26, 2002 5:15 pm

Post by wassup » Sun Apr 25, 2004 7:23 pm

Code: Select all

Sub Do-Setvar
   /if (!${Defined[Param0]}) /return
   /declare VarLen local
   /declare ValueLen local
   /declare VarName Local
   /varset VarName ${String[@CommandParam].Arg[1]}
   /varset VarLen ${String[@CurrCommand].Length}
   /varset ValueLen ${String[@CommandParam].Length}
   /varsub ValueLen @VarLen
   /varset @Param0 "${String[@CommandParam].Right[@ValueLen]}"
   /call ChatOut 5 @MasterName "@Param0 is now equal to @@Param0"
/return
May be the problem... second area I am checking.

Nightshift
a lesser mummy
a lesser mummy
Posts: 54
Joined: Mon Oct 13, 2003 8:52 am

Memorizing a spell that is a buff that is fading

Post by Nightshift » Sun Apr 25, 2004 7:52 pm

Is it supposed to memorize the spell, if that spell is not memorized already, that was done using "Buff Spellname ON Target" when that buff has faded and it is time to recast or was it ever supposed to?



NightShift

LordGiddion
a snow griffon
a snow griffon
Posts: 352
Joined: Sat Sep 13, 2003 6:12 pm
Contact:

Post by LordGiddion » Sun Apr 25, 2004 7:52 pm

Ok user feedback question, when the bot goes to do a re-buff - if it gets the "spell would not take hold" message how long should if wait before it trys to rebuff? Or should it take the buff out of the rebuff list? If it waits how should it determine if enough time has passed?

LordGiddion
a snow griffon
a snow griffon
Posts: 352
Joined: Sat Sep 13, 2003 6:12 pm
Contact:

Post by LordGiddion » Sun Apr 25, 2004 7:54 pm

Nightshift: if the spell is not currently mem'd the bot should mem it in slot 8 to re-buff the target

Nightshift
a lesser mummy
a lesser mummy
Posts: 54
Joined: Mon Oct 13, 2003 8:52 am

Post by Nightshift » Sun Apr 25, 2004 7:59 pm

LordGiddion wrote:Ok user feedback question, when the bot goes to do a re-buff - if it gets the "spell would not take hold" message how long should if wait before it trys to rebuff? Or should it take the buff out of the rebuff list? If it waits how should it determine if enough time has passed?
IMO, it should just stop trying to cast the re-buff but hold the re-buff till next cycle, if it gets the message a second time, then remove it from the list.

Length it should wait - buff length + 10 seconds.

Just my opinion of course.

NightShift