• You've discovered RedGuides 📕 an EverQuest multi-boxing community 🛡️🧙🗡️. We want you to play several EQ characters at once, come join us and say hello! 👋
  • IS THIS SITE UGLY? Change the look. To dismiss this notice, click the X --->

Question - #bind and /alias help (1 Viewer)

Joined
Dec 4, 2016
RedCents
7,903¢
I really cant figure out what I'm doing wrong here, any help would be appreciated!

I cant seem to get #bind to work in my macros but they work in other macro's on the same character, so I dont believe it to be a plugin issue.
I wrote the most basic macro I could think of just to test a bind and it wont work.

Rich (BB code):
| Test Macro For misc items

#bind TestBind1   /mybind1

Sub Main
/alias /testme /mybind1
/echo Testing a bind, type /testme
:mainloop
	/doevents
	/delay 2s
/goto :mainloop
/return

Sub Bind_TestBind1
	/echo TestBind1 Called
/return

/testme=/mybind1 ends up in my macroquest.ini
typing /testme doesnt work, typing /mybind1 doesnt work, echo'ing the same commands doesnt work, issuing them through eqbc doesnt work.
if I fire up kissassist or autocleric those binds (chaseon/chaseoff, etc) work just fine, fire this back up and nothing. I'm at a loss lol
any ideas?
 
try this

Rich (BB code):
| Test Macro For misc items

#bind TestBind1   /mybind1

Sub Main
/alias /testme /mybind1
/echo Testing a bind, type /testme
:mainloop
	/delay 2s
    /echo test 1
    /testme
    /delay 2s
    /echo test 2
    /mybind1
/goto :mainloop
/return

Sub Bind_TestBind1
	/echo TestBind1 Called
/return
 
thanks ct, that did work....and I played around with it a bit, I wanted to issue the command manually and have it respond, so I did this:

Rich (BB code):
| Test Macro For misc items

#bind TestBind1   /mybind1

Sub Main
/alias /testme /mybind1
/echo Testing a bind, type /testme
	/delay 2s
    /echo test 1
    /testme
    /delay 2s
    /echo test 2
    /mybind1
:mainloop
	/delay 2s
    /delay 2s
/goto :mainloop
/return

Sub Bind_TestBind1
	/echo TestBind1 Called
/return

Which also works and responds to me manually typing /testme....but its like its delayed.
Now this below works perfect....instant response, even with a 2s delay lol

Rich (BB code):
| Test Macro For misc items

#bind TestBind1 /mybind1

Sub Main
/declare testvar1 int outer 0

/alias /testme /mybind1
/echo Testing a bind, type /testme

:mainloop
	/doevents
	/delay 2s
	/varset testvar1 0
/goto :mainloop

/return

Sub bind_TestBind1
	/echo TestBind1 Called
/return

I was thinking it was processing the loop to fast to see the bind being called, but in the macro I'm working on there is a lot of delays and lines of code to process and the binds still werent working....adding a stupid /varset to my main loop makes everything work. I guess I dont understand how bind works, and I tried searching the wiki and mq2forums for info about it but only really found a bit of a higher lvl discussion about it than the basic heres how it works heres how to use it. You got any links to some documentation about it by chance? Or are these question better brought up to Eqmule?

Thanks again for your help, got me going in a good direction
 
The only thing I want to know is why you feel the need to create an alias when you can just do #bind TestBind1 /testme


The reason why it works if u add a /varset is that /varset is one of the macrocommands that are allowed to trigger a bind. I don't have a full list here since I'm on my phone but /call can also do it and /echo I think, but NOT /delay or /goto or /doevents which is why your first example fails, it has no valid macrocommands to trigger binds on.

There are technical reasons why this is so, but the short story is some commands manipulate the macro stack and others like /varset for example does not, so it's safe to run the bind directly before we actually execute /varset (when you type /mytest it's not actually doing anything it just adds it to a queue and that queue is only checked when "trigger commands" are run)

Think of it like this: here is the macro engine:

/varset --------> Engine Processor ---------> Is the command /varset ? -----> yes ------> Has the user issued a /testme ? ------> yes ------> jump to the bind and execute it then return and execute the /varset
 
Reasoning behind this is because I've got a macro I'm writing and I'd like the commands from kissassist and the automacro's to carry over to my macro and this is what kiss and autocleric are doing, different aliases call the same bind but pass different arguments, not really my idea but I feel people may be more likely to try my mac if they dont have to have a whole separate set of commands.
My example above was just me breaking the problem down as small as I could, its just how I have diagnosed things for years ( Symptom > System > Component ).

Thanks for the response and the information, it makes much more sense now and indeed /echo does cause the bind to fire, guess thats why ct's example worked.
 
i stumbled into this issue as i was working on fixing some macros too, the best way i found was to do it like this

Rich (BB code):
| Test Macro For misc items

#bind TestBind1 /mybind1

Sub Main

/alias /testme /mybind1
/echo Testing a bind, type /testme
  :mainloop
    /call CommandSub
  /goto :mainloop
/return

Sub bind_TestBind1
  /echo TestBind1 Called
/return

Sub CommandSub
  /doevents
  /delay 1s
/return

havent noticed any delays of issuing the command like this.
 
Question - #bind and /alias help

Users who are viewing this thread

Back
Top