genbot.mac Generic Bot macro for any class. V9.3 with ini

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

Moderator: MacroQuest Developers

rzmonk76
a hill giant
a hill giant
Posts: 165
Joined: Sat Jan 31, 2004 1:37 pm
Contact:

complete heal

Post by rzmonk76 » Sat Feb 14, 2004 7:49 am

what is the proper way to say "Compete Heal" for this ini file? i see here "Complete Heal" but i also see a remedy without parenthesis. im having no luck casting complete heal


IsHealer=1
IsPally=0
ReportAutoHeal=1
CasterHealIsHot=0
HotDelay=60
HealPets=0
PatchHealer=1
TankSpell="Complete Healing"
CasterSpell="Remedy"
DefaultHealSpell="Remedy"
PetSpell=Remedy
PatchSpell=Remedy
HealCasterMsg="Remedy on %t"
HealTankMsg="Complete Heal on %t"
HealPetMsg=Healing %t
PalHealMsg=Healing %t
PatchHealMsg=Patch Healing %t
PallyGroupSpell=Name of Pally Group Heal Spell
PallyHealSpell=Name of Pally Heal Spell
CasterPctHeal=40
TankPctHeal=71
PalGrpPct=81
PetPctHeal=51
PalHealPct=81
TankList=Warrior|Shadow Knight|Paladin|Monk|Beastlord|Ranger|Shaman
CasterList=Necromancer|Wizard|Enchanter|Magician|Rogue|Druid|Cleric|Bard

rzmonk76
a hill giant
a hill giant
Posts: 165
Joined: Sat Jan 31, 2004 1:37 pm
Contact:

Post by rzmonk76 » Sat Feb 14, 2004 8:39 am

omg omg its "Complete Healing" duh. smack me with a splintered ruler

fatmike
decaying skeleton
decaying skeleton
Posts: 9
Joined: Sat Dec 27, 2003 12:42 pm

tank not taunting or kicking

Post by fatmike » Mon Feb 16, 2004 1:26 pm

having a problem with my tank not taunting or kicking.

i set taunt and kick to 1 instead of 0, but still doesnt seem to like taunting and kicking.

does incite just fine, but its a hassle having to click back and forth to the tank just to smack the taunt button.

im running the latest version, not using adv pathing tho.

any suggestions?

User avatar
lasher
a lesser mummy
a lesser mummy
Posts: 71
Joined: Thu Dec 18, 2003 4:09 pm

Re: tank not taunting or kicking

Post by lasher » Mon Feb 16, 2004 5:19 pm

fatmike wrote:having a problem with my tank not taunting or kicking.

i set taunt and kick to 1 instead of 0, but still doesnt seem to like taunting and kicking.

does incite just fine, but its a hassle having to click back and forth to the tank just to smack the taunt button.

im running the latest version, not using adv pathing tho.

any suggestions?
Odd that incite is working, but the others aren't. PM me your conf file, I'll look at it.

Stogar
a lesser mummy
a lesser mummy
Posts: 58
Joined: Mon Oct 13, 2003 12:02 pm

Post by Stogar » Tue Feb 17, 2004 10:54 pm

I was messing around with using different languages and I can't seem to get it to work with anything other than common.

I thought originally this is due to the "Soandso tells you, " vs "Soandso tells you, in Elvish, ".

Doesn't seem to be. I set language to Elvish then sent tell via the ;tell.servername command. That way it comes to the char as "Soandso tells you, ". That did not work either. I'm thinking now that the languages are each their own sub channel maybe.

No clue really at this point how to make it work using a specific language. I do it and use a no so common language in case i make a mistake, but I can see it being an issue on a server like FV or some of the PvP teams servers where languages are used.

Any ideas?

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

Post by ml2517 » Tue Feb 17, 2004 11:05 pm

Stogar wrote:I was messing around with using different languages and I can't seem to get it to work with anything other than common.

I thought originally this is due to the "Soandso tells you, " vs "Soandso tells you, in Elvish, ".

Doesn't seem to be. I set language to Elvish then sent tell via the ;tell.servername command. That way it comes to the char as "Soandso tells you, ". That did not work either. I'm thinking now that the languages are each their own sub channel maybe.

No clue really at this point how to make it work using a specific language. I do it and use a no so common language in case i make a mistake, but I can see it being an issue on a server like FV or some of the PvP teams servers where languages are used.

Any ideas?
I'd posted this in the the general dev forum a few weeks back. Try this:


Modified MQ2UserVars.cpp to ensure it gets #chat text even when someone is speaking in a language other than common.

Keep in mind that even if you get the text, if you don't have a high languague skill the text might be garbled.

I think the benefit outweighs the possible problems.

Try changing this:

Code: Select all

VOID CheckChatForEvent(PCHAR szMsg)
{
		if ((gMacroBlock) && (!gMacroPause) && (!gbUnload) && (!gZoning)/* && (!gDelayZoning)*/) { 
			CHAR Arg1[MAX_STRING] = {0}; 
			CHAR Arg2[MAX_STRING] = {0}; 
			CHAR Arg3[MAX_STRING] = {0}; 

			if ((strstr(szMsg," tells the guild, '")) && (CHATEVENT(CHAT_GUILD))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells the guild, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," tells the guild, '")+19); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"guild",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," tells the group, '")) && (CHATEVENT(CHAT_GROUP))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells the group, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," tells the group, '")+19); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"group",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," tells you, '")) && (CHATEVENT(CHAT_TELL))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells you, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," tells you, '")+13); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"tell",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," says out of character, '")) && (CHATEVENT(CHAT_OOC))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," says out of character, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," says out of character, '")+25); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"ooc",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," shouts, '")) && (CHATEVENT(CHAT_SHOUT))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," shouts, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," shouts, '")+10); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"shout",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," auctions, '")) && (CHATEVENT(CHAT_AUC))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," auctions, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," auctions, '")+12); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"auc",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," says '")) && (CHATEVENT(CHAT_SAY))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," says '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," says '")+7); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"say",Arg1,Arg2,NULL); 
			} else if ((strstr(szMsg," says, '")) && (CHATEVENT(CHAT_SAY))) { 
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," says, '")-szMsg)); 
				strcpy(Arg2,strstr(szMsg," says, '")+8); 
				Arg2[strlen(Arg2)-1]=0; 
				AddEvent(EVENT_CHAT,"say",Arg1,Arg2,NULL); 
			} else if ( (strstr(szMsg," tells ")) && (strstr(szMsg,":")) && (strstr(szMsg,", '")) && (CHATEVENT(CHAT_CHAT)) ) {
				strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells ")-szMsg)); 
				strcpy(Arg3,strstr(szMsg," tells ")+7); 
				Arg3[strlen(Arg3)-1]=0; 
				strcpy(Arg2,strstr(Arg3,", '")+3); 
				Arg3[strstr(Arg3,":")-Arg3]=0; 
				AddEvent(EVENT_CHAT,Arg3,Arg1,Arg2,NULL); 
			} else { 
				PEVENTLIST pEvent = pEventList; 
				while (pEvent) { 
					if (strstr(szMsg,pEvent->szMatch)) { 
						AddCustomEvent(pEvent,szMsg); 
					} 
					pEvent = pEvent->pNext; 
				} 
			} 
		} 
}

To this:

Code: Select all

VOID CheckChatForEvent(PCHAR szMsg) 
{ 
      if ((gMacroBlock) && (!gMacroPause) && (!gbUnload) && (!gZoning)/* && (!gDelayZoning)*/) { 
         CHAR Arg1[MAX_STRING] = {0}; 
         CHAR Arg2[MAX_STRING] = {0}; 
         CHAR Arg3[MAX_STRING] = {0}; 
         PCHAR szArg = szMsg; 

         if ((strstr(szMsg," tells the guild,")) && (CHATEVENT(CHAT_GUILD))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells the guild,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"guild",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," tells the group,")) && (CHATEVENT(CHAT_GROUP))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells the group,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"group",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," tells you,")) && (CHATEVENT(CHAT_TELL))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells you,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"tell",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," says out of character,")) && (CHATEVENT(CHAT_OOC))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," says out of character,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"ooc",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," shouts,")) && (CHATEVENT(CHAT_SHOUT))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," shouts,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"shout",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," auctions,")) && (CHATEVENT(CHAT_AUC))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," auctions,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"auc",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," says")) && (CHATEVENT(CHAT_SAY))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," says")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"say",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," says,")) && (CHATEVENT(CHAT_SAY))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," says,")-szMsg)); 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            AddEvent(EVENT_CHAT,"say",Arg1,Arg2,NULL); 
         } else if ((strstr(szMsg," tells ")) && (strstr(szMsg,":")) && (strstr(szMsg,", '")) && (CHATEVENT(CHAT_CHAT))) { 
            strncpy(Arg1,szMsg,(DWORD)(strstr(szMsg," tells ")-szMsg)); 
            strcpy(Arg3,strstr(szMsg," tells ")+7); 
            Arg3[strlen(Arg3)-1]=0; 
            while (szArg[0]!='\'') szArg++; 
            szArg++; 
            strncpy(Arg2,szArg,(DWORD)strlen(szArg)-1); 
            Arg2[strlen(Arg2)]=0; 
            Arg3[strstr(Arg3,":")-Arg3]=0; 
            AddEvent(EVENT_CHAT,Arg3,Arg1,Arg2,NULL); 
         } else { 
            PEVENTLIST pEvent = pEventList; 
            while (pEvent) { 
               if (strstr(szMsg,pEvent->szMatch)) { 
                  AddCustomEvent(pEvent,szMsg); 
               } 
               pEvent = pEvent->pNext; 
            } 
         } 
      } 
} 
Then recompile MQ2.

JimJohnson
a grimling bloodguard
a grimling bloodguard
Posts: 1299
Joined: Sat Oct 11, 2003 6:00 am

Post by JimJohnson » Tue Feb 17, 2004 11:46 pm

how hard would it be to add a 3rd heal type?


classifying all under tank / caster just doesnt always cut it. Maybe like a misc

Tankheal=81 CH
Mischeal=75 SL
Casterheal=65 SR


shaman bard best monk dont need a CH but need healed at a diffrent percent then casters.

Stogar
a lesser mummy
a lesser mummy
Posts: 58
Joined: Mon Oct 13, 2003 12:02 pm

Post by Stogar » Thu Feb 19, 2004 4:23 pm

ML2517 - I actually worked around it by creating a channel called testme, then sent all command via that channel. Worked great. All player created channels have text sent as "common".

I also logged into FV and tested it there to be sure, works like a charm.

Just make sure to create multiple channels if running more than one bot. Also password the channel and /autojoin it.

The code changes would be the right way to go.

Thanks

fatmike
decaying skeleton
decaying skeleton
Posts: 9
Joined: Sat Dec 27, 2003 12:42 pm

warrior taunting

Post by fatmike » Thu Feb 19, 2004 8:41 pm

no one else has every had a problem with a warrior using incite and not taunt or kick??

for some reason no matter what i do i cant get my warrior to taunt , bash, slam, kick, etc.

the only thing he will do is incite

eqtank
decaying skeleton
decaying skeleton
Posts: 1
Joined: Sun Feb 22, 2004 11:05 am

Intro & Questions

Post by eqtank » Sun Feb 22, 2004 11:19 am

Hey all...

First off MQ2 is the bomb and genbot is pretty sweet as well. I've been playing eq for years and was getting way bored so I built 3 more boxes and here I am.... I'm running a tank, bard, shammy & cleric.

I've got everything built and running, scanned through the code and started playing.... so I've got some questions:

1) What's the easiest way to hit one button on the master to build my group? I put an event in the personal to auto-accept based on the invite text and then 2 traditional eq hotbuttons to do the target and invites. My guess is that you guys are gonna tell me to build a master macro to do these shortcuts. Does anyone have one of these built?

2) I'm using the advanced follow mac as well, which also roXors, but it's not opening doors / clicking on port books. Is there a setting that I'm missing on that one?

Cheers,

eqtank

macropayne
decaying skeleton
decaying skeleton
Posts: 2
Joined: Sun Feb 22, 2004 8:01 pm

bot

Post by macropayne » Sun Feb 22, 2004 11:53 pm

Hi Few questions....I got bot workin. He watches my health and everything. Is there a way to set another heal watch....for like maybe monks/hybrids? also another question.....Is there a way to get bot to auto attack when I tell him to assist me? he will assist me and turn attack on....but I have to move him to mob for him to do anything. Also for some reason I try to get him to buff me with temperance....but it doesnt work if i add it in first line only...I have to add it to all.


Also anyone can add anything so I can autofollow/watch Master health and heal him without asking for heals.

and why the hell are patch heals so late?

User avatar
lasher
a lesser mummy
a lesser mummy
Posts: 71
Joined: Thu Dec 18, 2003 4:09 pm

Post by lasher » Fri Feb 27, 2004 4:11 am

Updated:
genbot.mac v9.3
botcore.inc v9.13
botcombat.inc v9.12
bothealer.inc v9.12
personal.inc v9.14


Fix for Yaulping, Canning. (control with commands: cann [on|off], yaulp [on|off]. Removed dependancy on reportlom. Look in .ini for new variables)
Turbo fix
Singing tweaks.
Chat channel naming.
reload command (not well tested, use with caution)
Various fixes and tweaks.

User avatar
lasher
a lesser mummy
a lesser mummy
Posts: 71
Joined: Thu Dec 18, 2003 4:09 pm

Re: bot

Post by lasher » Fri Feb 27, 2004 4:14 am

macropayne wrote:Hi Few questions....I got bot workin. He watches my health and everything. Is there a way to set another heal watch....for like maybe monks/hybrids?
Look at either the command watchtarget or set variables in your .ini
macropayne wrote: also another question.....Is there a way to get bot to auto attack when I tell him to assist me? he will assist me and turn attack on....but I have to move him to mob for him to do anything.
Just telling him to attack will cause him to run to the target and attack unless you have him setup for archery. When done, he'll run back if you've setup an anchor.
macropayne wrote: Also for some reason I try to get him to buff me with temperance....but it doesnt work if i add it in first line only...I have to add it to all.
Check our the buff and groupbuff commands; settings are in the .ini for what spells to cast

macropayne wrote:Also anyone can add anything so I can autofollow/watch Master health and heal him without asking for heals.

and why the hell are patch heals so late?
Both of these sound like either autoheal isn't on, you have the values in the .ini set too low, etc. Need more info on that one.

Tell the bot to follow and he will.

Gremlin
decaying skeleton
decaying skeleton
Posts: 1
Joined: Tue Feb 24, 2004 7:09 am
Contact:

Need setting done for tankhealpct

Post by Gremlin » Fri Feb 27, 2004 6:01 am

any chance you can add a command such as settankhealpct ?

helps with variety of mobs to change the CH listen perecent

Helone
decaying skeleton
decaying skeleton
Posts: 2
Joined: Mon Feb 23, 2004 7:50 pm

Post by Helone » Fri Feb 27, 2004 8:16 am

hey guys, I just have to say, this is an awsome macro, there is only one problem I have with it right now..

my new chars I am using are below level 35, which means to meditate, they have to look at the book, this macro is under the assumption that I am over 35 and just sits to med. I have gone through the macro trying to get it so my guy opens the book for medding, but cant seem to find them all, once in a while he will open the book, but not nearly enough.

any clue ins on where it is coded to just sit? I searched for all occurances of /sit and /sit on, and changed them to /book, but still having the trouble..

Thanks =)