MQ2Data GenBot, 99% Complete

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

Moderator: MacroQuest Developers

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

Post by LordGiddion » Sat Apr 10, 2004 10:55 pm

Ok just to give people an idea of the enhancements I’m working on:

Smaller code, there are chunks of redundant code in the macro that I am going to be tightening up by adding some functions.

Replacing Nuke, Ice, Snare, Buff, GroupBuff and a bunch of similar commands with 4 new sections of the InI detailed bellow (this will be powered by a new .inc shorcuts.inc). These new sections will allow for more customization without losing function.
Example:

Code: Select all

[shortcut spells]
Nuke=draught of jiva
Sow=Spirt of wolf
PLBuff=Resolution|Shield of words
[shortcut Items]
Sepic=spear of fate
[notarget Spells]
ITU=Invisibility to undead
[notarget items]
Levi=Pegasus cloak
Using this example this INI would add the command Nuke to this bot and when the bot gets the “nuke” command the bot will cast “draught of jiva” with the same targeting options as the old nuke, ice and etc commands. PLBUFF will cast the spells Resolution and Shield of words on the target. Sepic would use the item spear of fate with the same casting options as the other spells. ITU would cause the bot to cast the spell “Invisibility to undead” without changing target. Levi would cause the bot to use the item “Pegasus cloak” without changing target.

New commands:
Setvar - for debugging or just general bot function this will change the value of a global variable to the command arguments

Rptvar - Will cause the bot to chatout the value of the requested global variable

Buff - Will cause the bot to cast the specified buff on the selected target, Bot will then remember the target,spell and duration of the buff when the buff expires (actually a random 5 or so seconds before the expire) the bot will attempt to refresh the buff on the target i.e. /tell Shamanbot buff Spirt of wolf on monkguy

command enhancement
snt – changed so that snt will remember the last spell cast with snt so that on second and subsequent casts of the same spell you don’t need to type out the spells again i.e. /tell shamanbot snt spirt of wolf on rannewbie1 /tell shamanbot snt on rannewbie2

FYI Personal.inc in my release will be stripped back down to a stub and all of the commands currently in it (including the advpath functions) will be ported into the other files or supported through the shortcut functions detailed above.

Natural language support
How commands in each file will be modified slightly, the current commands and functions that you are used to will remain as the defaults but you will have the option to change the command sent to the bot without changing the function of the command.
Example:

Code: Select all

/varset botcore-array(1,0) afk 
/varset botcore-array(2,0) Do-afk 
/varset botcore-array(1,1) accept 
/varset botcore-array(2,1) Do-accept 
/varset botcore-array(1,2) reject 
/varset botcore-array(2,2) Do-reject
in this example if you change the first line to

Code: Select all

/varset botcore-array(1,0) goaway
then /tell Bot goaway I’m watching TV – will cause the bot to set it’s afk message to “I’m watching TV”

I might have forgotten something I’m throwing in but this should be a good list of the big changes you’ll see.

User avatar
grimjack
Macro Author
Macro Author
Posts: 525
Joined: Thu Nov 07, 2002 6:51 am
Contact:

Post by grimjack » Mon Apr 12, 2004 4:05 am

JimJohnson wrote:Good to see you coming back LordGiddion, now just need GJ to come back =)
Not a chance. hehe

I sold my accounts when I quit and it looks like things are in very capable hands anyhow.

It's good to see the bot still going strong.
A credits section should probably be added at some point with all the major contributors listed.

Thanks
GrimJack
When they come to me, they're in trouble, or they want some. I bust people out of prison, hunt down vampires, fight alien gods -- All the fun jobs people are too squeamish or too polite to do themselves.

Call me a mercenary. Call me an assassin. Call me a villain. I am all that and more.

My name's John Gaunt, but out on the streets of Cynosure, I am called...
GrimJack

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

Post by LordGiddion » Mon Apr 12, 2004 7:58 am

Hi Grim,
At this point I'm not sure who all the major contributors are. Odviously some stuff was done while I was hiding under a rock, and I don't know if you had help before I stuck my nose in. If you have an idea of a list post it please.

Diggler
> Oid
Posts: 120
Joined: Thu Oct 09, 2003 3:28 pm
Location: Lexington, KY

Post by Diggler » Mon Apr 12, 2004 11:36 am

Too many to name IMO hehe, like half the community has pitched something into it. It's a group project now almost ;) Btw, hi GJ hehe

User avatar
grimjack
Macro Author
Macro Author
Posts: 525
Joined: Thu Nov 07, 2002 6:51 am
Contact:

Major Contributors.

Post by grimjack » Tue Apr 13, 2004 12:53 am

IMO a major contributor would be someone who wrote a major function of genbot (Things that don't go in personal.inc and aren't typo fixes) such as LordG with his healer code rewrite, agressive code, and mob pulling code as well as other things, Lasher for all the work he did when he took it over, ml2517 for the 3d follwing stuff, mvtisuk for skill up stuff, and the people who are converting it to the new system.

All in all though, it was just an idea.

I'm just glad that it's still kicking. It makes me feal a lot better about all the time I put in to it to know that it didn't just fade away. I'd imagine I put around 3-4 hours a day in to it for a little over a year hehe.

Thanks
GrimJack
When they come to me, they're in trouble, or they want some. I bust people out of prison, hunt down vampires, fight alien gods -- All the fun jobs people are too squeamish or too polite to do themselves.

Call me a mercenary. Call me an assassin. Call me a villain. I am all that and more.

My name's John Gaunt, but out on the streets of Cynosure, I am called...
GrimJack

OldNecro
a ghoul
a ghoul
Posts: 136
Joined: Thu Dec 19, 2002 3:09 am

annoying error...

Post by OldNecro » Tue Apr 13, 2004 5:14 pm

Anyone know what's up with the "I have failed to target UNIDENTIFIED-ARRAY-ELEMENT" tell that my "master" toon keeps getting from the cleric bot?

It goes away whenever she doesn't have anything targeted, and most things seem to work just fine, so I just commented out the line in bothealer.inc where she sends the tell out. She was sending the tell about every 2 seconds so it was getting old fast... Any thoughts?

-OldNecro
Saddam Hussein begins to use An Innocent Bystander as a living shield!
An Innocent Bystander ceases protecting Saddam Hussein's corpse.

bonehand
a lesser mummy
a lesser mummy
Posts: 48
Joined: Tue Feb 17, 2004 5:16 pm

Post by bonehand » Tue Apr 13, 2004 11:01 pm

I think your "failed to target" message is related to watchtarget. It's looking for a target to watch, but the array is not defined or not defined properly. Check in the INI that watchtarget is turned off. There is a command to reset the target in bothealer(resetwatch I think?), but I've found just reseting the macro(because my INI does not turn watchtarget on initially) fixes the constant spam when the target to be watched zones, dies, or LDs.

In fact, her targeting of "NULL"(no target at all) confirms my hypothesis...she's only happy having no target at all! So /tell cleric bot resetwatch YourToonNameHere(if that is the proper usage) should ease her pain.

EDIT: it is resetwatch, NOT resettarget...but not online atm in a situation where I can test whether reset just turns it off, or switches watchtargets. I still think it is set to watchtarget in your INI.

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

Post by LordGiddion » Wed Apr 14, 2004 8:41 am

Also if your using this script rather the one in the main genbot thread it might be a bug in the script. This thread concerns the conversion of genbot to MQ2Data, you might want to stick to the main script until this one is beat up some more unless your looking to participate in its development.

Diggler
> Oid
Posts: 120
Joined: Thu Oct 09, 2003 3:28 pm
Location: Lexington, KY

Post by Diggler » Wed Apr 14, 2004 1:46 pm

I'll look into the array element thing. This thread atm is for testing the new one pretty much. I've run it through on several classes tho and used many commands that all worked fine. Seems crisper than before so far, but there are still some kinks. Once again, any and all that want to try it, do. Tell us what's wrong and we can get crackin ;)

Flea
a lesser mummy
a lesser mummy
Posts: 55
Joined: Fri Dec 26, 2003 4:56 am

Post by Flea » Wed Apr 14, 2004 8:36 pm

Not sure if this is entirely possible, but I am a big fan of Genbot, I use it for my monk on raids, which are mostly in Time and GoD etc, high end content. The problem I get is that I need to be a certain range from the mob on AE ramping or Targeted AEs etc.

Because of this I have become a big fan of stick.mac for positioning, but it doesn't have all the customizability and funcitionality of genbot, so, what I would like to ask is, anyone interested in building a ini support for mobs and ranges on certain mosb, like stick.mac uses?

Diggler
> Oid
Posts: 120
Joined: Thu Oct 09, 2003 3:28 pm
Location: Lexington, KY

Post by Diggler » Thu Apr 15, 2004 8:02 pm

I suppose someone could code a "maxmelee" personal that makes your toon skip the normal rangesub and use the new one, with distance from mob set to mob's maxmelee, there's a parm and a datatype for it. I'll look into it.

dingleberry
orc pawn
orc pawn
Posts: 17
Joined: Fri Mar 12, 2004 6:41 pm

Post by dingleberry » Sat Apr 17, 2004 2:44 pm

Am I the only one running into the problem where there are a lot of instances of something like
/varset TankList "${Ini[@IniFile,Healer,TankList]}"
...
/newif @TankList==0 {
each of which result in a parse error of "non-numeric comparison?"? The way I read the functionality of /newif, it will choke on string comparisons, which this seems like. I have not done the homework yet to figure out if the usage of "${Ini..." above should set the variable to NULL if it can't find it, but it sure does not seem to be behaving that way. Considering that nobody has complained about this, am I the only one with this problem?

ml2517
a grimling bloodguard
a grimling bloodguard
Posts: 1216
Joined: Wed Nov 12, 2003 1:12 am

Post by ml2517 » Sat Apr 17, 2004 2:51 pm

Use this:

Code: Select all

/varset TankList "${Ini[@IniFile,Healer,TankList,NULL]}" 
The fourth parameter is the default value if it isn't found.

I am pretty sure that Lax has ${Ini returning "NOT FOUND" if it can't be found, unless thats changed.

dingleberry
orc pawn
orc pawn
Posts: 17
Joined: Fri Mar 12, 2004 6:41 pm

Post by dingleberry » Sat Apr 17, 2004 5:27 pm

Actually, from looking at MQ2Data.cpp, it sure looks like it returns the empty string unless you specify something else. I will play around a bit more and figure some of this out.

Based on what I am seeing here, though, I am wondering if anybody is using this version of the genbot code successfully with the April 15 release. If so, I am clearly doing something moronic. If not, I can go through and fix it up to work with the current implementation of ${Ini.

dingleberry
orc pawn
orc pawn
Posts: 17
Joined: Fri Mar 12, 2004 6:41 pm

Post by dingleberry » Sat Apr 17, 2004 6:06 pm

Okay, I just did some more testing, and found that ${Ini does the "right" thing and gives back NULL if the key can't be found. This is a great improvement.

If a value resulting from the use of ${Ini is string-based, though, the /newif needs to ensure that it uses the Stirng for the comparison. This is exactly what Lax said would be the case, and so I am now convinced that nobody can be using the MQ2Data version of genbot with the current release of MQ2.

If I manage to summon up the cycles to fix this in the genbot code, I will post modified versions somewhere.

If I am totally wrong, and people are using the most recent version of the MQ2Data version of genbot with the most recent version of MQ2, then please feel free to flame me. After flaming me (or as part of the flame), if you would be so kind as to inform me of how to make this work without re-tooling genbot, I would be much obliged.