EQW and 2 Chars macro

Macro requests from before the user variable changes that broke all macros

Moderator: MacroQuest Developers

Psylenced
orc pawn
orc pawn
Posts: 13
Joined: Mon Sep 23, 2002 7:30 am

EQW and 2 Chars macro

Post by Psylenced » Mon Sep 23, 2002 7:35 am

I attempted to write a mac so that when I had both my chars logged on (58 necro/52 Monk) I could have my necro sit in the background while my monk pulls to him, then use my monk to /tell necro ATTACK! and automate an attack sequence where the necro stands, /assists the monk and then begins casting a spell line up on the NPC, compensates for any resisted spells and then sat back down. It however seemed to be a bit above my head. Was wondering if anyone had anything similar to this?

Meh
a lesser mummy
a lesser mummy
Posts: 32
Joined: Wed Sep 04, 2002 8:55 pm

Post by Meh » Mon Sep 23, 2002 1:18 pm

i also want something like that but for me its a 4 necro and a 29 druid 8)

User avatar
Imperfect
Macro Author
Macro Author
Posts: 319
Joined: Fri Jun 14, 2002 1:52 am

Post by Imperfect » Mon Sep 23, 2002 4:48 pm

This is not a bad idea for multi boxing. I think your best bet is to try writing something and ask for help.
Err Not sure what I was thinking here, Look around there are already similar bits of code out there.
Last edited by Imperfect on Wed Sep 25, 2002 6:31 pm, edited 2 times in total.

nikeman
a lesser mummy
a lesser mummy
Posts: 70
Joined: Tue Jun 18, 2002 10:37 am

Post by nikeman » Wed Sep 25, 2002 6:34 am

thers druid and cleric marcos u could easly rewrite to ur will

Psylenced
orc pawn
orc pawn
Posts: 13
Joined: Mon Sep 23, 2002 7:30 am

Post by Psylenced » Wed Sep 25, 2002 11:53 am

Like I said I tried writing one but i really have no idea how the macro language works, i could write something up thats pretty broken but gives you a good idea on where to go to fix it, and then see what can be done, if this suffices.

On a side note, i used to MUD heavily and theres a trigger system on a lot of mud clients so when a certain string of text is sent to the client, it executes a chain of commands, something like this could easily be written into macroquest to simply the ability to do macros like this. Basically the program would sit dormant scanning all lines coming into the clients chat box and when a matching string is found it initiates a simple macro that could be stored in a text file or what not then unloads it when its done.

only problem i could see with this is having macroquest differentiate which client to execute the commands in, but im sure there would be an easy way to work around this, using PID numbers or something.

so for example im pulling with my monk and i /tell necro_01 ATTACK!

monks client sees this and loads a trigger file with the following commands:

/assist monk_01
/sit off
/cast 1
/delay 234234
/cast 2
/delay 532555
/cast 3
/delay 23424
/doability 1
/delay 432432
/cast 8 (FD to wipe any aggro)
/delay 4323
/sit off
/sit on

and that would be the end of the trigger and it would simply stop running until the attack string is resent to the client.

User avatar
RPZip
a lesser mummy
a lesser mummy
Posts: 63
Joined: Sun Aug 11, 2002 11:31 pm

Post by RPZip » Wed Sep 25, 2002 7:17 pm

Multi-botting and leveling scrips tend to be deleted from these boards. Learn some of the language from the examples, and then program it yourself.

Some clues;
$lasttell and /doevents combined are good error protection/prevents other people from messing you up.
Read readme.txt. It is your tome of power.

User avatar
L124RD
Site Admin
Site Admin
Posts: 1343
Joined: Fri Jun 14, 2002 12:15 am
Location: Cyberspace
Contact:

Post by L124RD » Thu Sep 26, 2002 12:08 am

Salutaitons,
I'm willing to help with any macro sent my way, as long as its not posted anywhere...

eqjim
a lesser mummy
a lesser mummy
Posts: 35
Joined: Tue Aug 27, 2002 3:56 pm

Post by eqjim » Thu Sep 26, 2002 2:29 am

wouldnt this type of macro fall under the bot/cleric macros?

ie:
http://macroquest2.com/phpBB2/viewtopic.php?t=650
http://macroquest2.com/phpBB2/viewtopic.php?t=476
http://macroquest2.com/phpBB2/viewtopic.php?t=420

with those macros, the char turns into a type of bot that auto heals/nukes for you.

theres also the melee macros too.. instead of healing they fight.

i see this as being the same except for a caster (necro). and i think he will be at the comp(s) at all times since he said he would be pulling to the necro.

same as having a melee mac goin while healing him... or having a cleric mac heal you while fighting.

only *bad* thing would be if they turned the whole thing into an automated process.. having the monk pull, helping kill with the necro, repeat, while being away from the comp :\ but you can do that with the macros around the board now.. put a melee mac on one comp and a auto heal on another.

hopefully im not goin over the line by posting this.

im not 100% if this will work. but it *should* give him a place to start..

Code: Select all

| Event_Chat's parameters are as follows: 
| $p0: chat type (tell/say/etc) 
| $p1: Sender 
| $p2: message 
#chat tell

/varset v77 "MONK_CHAR_NAME_HERE"

Sub Main   
:a 
/doevents 
/goto :a   
/return

Sub Event_Chat 
/if "$p1"=="$v77" {
	/target $p1
		/if "$p2"~~"ATTACK!" {
			/assist $p1
			/delay 1s
			
			/if $target(distance,nopredict)>200 {
				/tell $p0 %T is too far away for me to attack! 
				/goto :abortcast
			}
	
			/sit off
		
			/cast $char(gem,1)
			/delay 1s

			/cast $char(gem,2)
			/delay 1s

			/cast $char(gem,3)
			/delay 1s

			/doability 1 | not sure what ability a necro would have that youd want to use..
			/delay 1s

			/cast "Feign Death"
			/delay 10s

			/sit off
			/sit on
			}

		/if "$p2"~~"mana" {
			/tell $v77 $char(mana,pct)% mana. $char(hp,pct)% hp.
			}

		/if "$p2"~~"sit" {
			/sit on
			}

		/if "$p2"~~"stand" {
			/sit off
			}
:abortcast
/doevents
/return 
its an edited cleric mac from this post: http://macroquest2.com/phpBB2/viewtopic.php?t=420

no clue if:

/cast $char(gem,1)

will work.. was just a guess, if it doesnt would have to

/varset v78 $char(gem,1)
/cast $v78

i think.


offtopic:
ive always found it easier to learn from examples. maybe putting some examples into the readme.txt could help some.

i put this whole thing together from the readme.. so im not sure if /cast spellname, $char(gem,1), /delay 1s, do what they need to do.

does /cast spellname wait for spell casting and recast delays?
$char(gem,1) should return "Complete Healing" if gem 1 is "Complete Healing", right?
and /delay 1s should delay for 1 second.


.... i think :\ and be smart, dont automate 2 bots. cause youll come back to your comp with both chars dead.. these macros can help but theres no way they can help when something unexpected happens. (a train, mob add, mob oor but in range to hit you, etc)

plus it leaves you wide open for being caught and could ruin it all for the rest of us.

edit; necro was suppose to be monk.
Last edited by eqjim on Thu Sep 26, 2002 10:03 pm, edited 1 time in total.

Psylenced
orc pawn
orc pawn
Posts: 13
Joined: Mon Sep 23, 2002 7:30 am

Post by Psylenced » Thu Sep 26, 2002 4:20 am

I completely agree with all statement in the post above this.

a: I would never leave a macro like this running unattended, its just asking to lose exp, a corpse or both.

b: I have always learned by example, and reverse engineering other code sources to learn the language, it would be extremely helpful to have a few more snippets of code in the readme file to guide players on their way and explain how they work as you go, the baking script included in the readme file is somewhat useful, but is a very general and specific instance of how the program could be used. All in all this is an excellent program and ive recommended it to my entire guild, and i wouldnt even mind paying a registration fee for it. I entirely plan on donating to the project when i get my next paycheck.

c: What do you think of the trigger idea? I know Xylobot has a trigger system but i really dont like that program, its a bit too intrusive. And you dont get much time to test out its features before the trial timers expire. I would prefer to know what i am paying for thoroughly before dropping money into something i end up not using.

eqjim
a lesser mummy
a lesser mummy
Posts: 35
Joined: Tue Aug 27, 2002 3:56 pm

Post by eqjim » Thu Sep 26, 2002 10:12 pm

Basically the program would sit dormant scanning all lines coming into the clients chat box and when a matching string is found it initiates a simple macro that could be stored in a text file or what not then unloads it when its done.
thats what the script does.

you /macro necbot.mac (or whatver its named)

it just loops

Sub Main
:a
/doevents
/goto :a
/return

now it just waits for you to send a tell from your monk main or any char. just edit the line: /varset v77 "MONK_CHAR_NAME_HERE" to your charsname.. lets use mymonk

/varset v77 "mymonk"

now since we have #chat tell it only reads threw TELLS. everything else is filtered out.

now all you do is send a tell from your monk to the necbot

/t necrobotname ATTACK!

the bots looping and then sees your send that tell.

it checks if the tell is from the monk: /if "$p1"=="$v77" {

if so, it targets the monk: /target $p1

if the text is for him to attack it: /if "$p2"~~"ATTACK!" {

(should probally have put the target part under the ATTACK! part =/)

so its found out that you want to ATTACK!, lets run threw it:

assist monk to find target to attack: /assist $p1
pause a bit for lag (not full proof): /delay 1s

check to see if the mob is in casting range:

/if $target(distance,nopredict)>200 {
/tell $p0 %T is too far away for me to attack!
/goto :abortcast
}

you can change to 250 if you want.. not sure on all spell ranges.

if its to far away, itll say so.. if not it keeps on goin to the attack part:

lets stand up: /sit off
cast spell in gem 1: /cast $char(gem,1)
pause a bit after spells casted: /delay 1s
cast spell 2: /cast $char(gem,2)
pause 1 second: /delay 1s
cast spell 3: /cast $char(gem,3)
pause: /delay 1s
you wanted to do abitly.. so here it is: /doability 1
pause: /delay 1s
cast fd by name since i know thats the spell you wanted: /cast "Feign Death"
pause 10sec for agro control: /delay 10s
stand up: /sit off
sit down: /sit on

the rest is just if you want to know how much mana/hp the bot has.. if you want him to stand or sit, simple commands.

so this should work for what you want, you just send a "trigger" tell from your monk to the necro. the necro is running the script.. you can just put into a social button: /tell necbotname ATTACK! and press it whenever you want him to run threw those commands.

Plazmic
The One
The One
Posts: 800
Joined: Fri Jun 14, 2002 12:31 am
Contact:

Waste of CPU cycles...

Post by Plazmic » Fri Sep 27, 2002 11:39 am

Uhm...

cast spell in gem 1: /cast $char(gem,1)
cast spell 2: /cast $char(gem,2)
cast spell 3: /cast $char(gem,3)

Why do this? The original EQ version "/cast 1" would work fine for casting a gem number.

If you want to cast a specific spell by name, just do /cast "Gate" or whatever...

What you (or the cleric bot) have amounts to logically:
Figure out what spell name is in gem X
Have MQ's /cast figure out which gem that spell name is mem'd in and have it cast it.
- Plazmic

eqjim
a lesser mummy
a lesser mummy
Posts: 35
Joined: Tue Aug 27, 2002 3:56 pm

Post by eqjim » Fri Sep 27, 2002 10:22 pm

does /cast 1 cast the spell and wait for spell recast/delays?
/cast [#|name|list]
#: Regular old command
name: Cast a spell based on name
list: List spells you have memorized
im not sure and i saw a thread of someone saying you could use the name of the spell to cast it.. sounded like it would also pause for the spell cast delays too so you didnt need to manually input recast delays.

from the spellsub.mac
| - SpellSub.mac -
| Spell Casting Sub routine - Usage "/call SpellSub <gem> <delay *actual cast time plus recast*>"
i would have used spellsub but since it asks for <delay *actual cast time plus recast*> wouldnt work. i dont know what spells hes actually using since he just put "gem 1" "gem 2" instead of spell names that i could look up and find cast/recast delays.

wasnt sure if putting the name would help.. spellsub used /cast # so i figured id put the name instead, maybe it would some how know :(