• You've discovered RedGuides, an EverQuest multi-boxing and scripting community 🧙‍♀️⚙️. We want you to play several EQ characters at once, come join us and say hello! 👋

  • A TLP without truebox has thawed (Very Vanilla ready)
    Frostreaver

Problem - Multiline command not doing what I expect, gets client into weird state

RoboClaptrap4

Member
Joined
Feb 14, 2018
RedCents
181¢
What I'm trying to do:
1. target a player
2. pause a tiny bit
3. click an item
4. pause until the cast is finished
5. Repeat 1-4 with another player

The multiline command I am using is:
multiline ; /target Player1; /timed 3, /useitem 30 ; /timed 70, /target Player2; /timed 3, /useitem 30

This does not work. It seems to bug out the client. The first item click happens (although without any cast bar). The second item click never happens, no matter how long I wait.

If I simply trim it down to this, it does technically work, even though it is not useful:
multiline ; /target Player1; /timed 3, /useitem 30 ; /timed 70, /target Player2

Anyone know of a way to accomplish what I'm trying to do with multiline?
 
What I'm trying to do:
1. target a player
2. pause a tiny bit
3. click an item
4. pause until the cast is finished
5. Repeat 1-4 with another player

The multiline command I am using is:
multiline ; /target Player1; /timed 3, /useitem 30 ; /timed 70, /target Player2; /timed 3, /useitem 30

This does not work. It seems to bug out the client. The first item click happens (although without any cast bar). The second item click never happens, no matter how long I wait.

If I simply trim it down to this, it does technically work, even though it is not useful:
multiline ; /target Player1; /delay 3, /useitem 30 ; /delay 70, /target Player2

try that? /delay 3 = 3/10th of a sec.. /delay 70 = 7 sec

Anyone know of a way to accomplish what I'm trying to do with multiline?

isnt it:

/multiline ; /target Player1; /timed 3, /useitem 30 ; /timed 70, /target Player2; /timed 3, /useitem 30

you need that / in front of it?

also.. maybe try /delay 3 and /delay 70 for those parts

/delay 3 will delay 3/10th of a sec
/delay 70 will delay 7 sec.
 
is it in a macro or in a social?

first off its not timed. timed is a way to add a timer graphic to socials so they count down like sorta the red shade on spells and skilsl etc.

if its in a macro you should use /delay timedelay and if its a social you can construct it differnet, i am gonna assume you using a social.

Rich (BB code):
1st line
/pause 110,/multiline ; /target player1 ; /delay 3 ; /useitem 30
2nd line
/pause 110,/multiline ; /target player2 ; /delay 3 ; /useitem 30
3rd line
/pause 110,/multiline ; /target player3 ; /delay 3 ; /useitem 30
4th line
/pause 110,/multiline ; /target player4 ; /delay 3 ; /useitem 30
5th line
/multiline ; /target player5 ; /delay 3 ; /useitem 30
is how i would do it.
 
When using the /timed command you use the slash command immediately after. IE: /multiline ; /target Player1 ; /timed 5 /useitem 30 ; /timed 75 /target Player2; /timed 80 /useitem 30

Additionally, all timed commands are issued from the time of the first command and all delays are cumulative. So if you are waiting 7 seconds in the second /timed then you should wait 7 seconds and 3 miliseconds in your following delay. So if I want to wait 3 seconds then wait another 5 seconds. /timed 30 /useitem 30 ; /timed 80 /useitem 31

Basically all commands in multiline are issued at the same time. So it would be like this if it wasn't on multiple lines.

/target player1
/timed 5 /useitem 30
/timed 75 /target player2
/timed 80 /useitem 30

the reason is they all start at the same time so they all must have delays that add together so that they are separated.
 
is it in a macro or in a social?

first off its not timed. timed is a way to add a timer graphic to socials so they count down like sorta the red shade on spells and skilsl etc.

if its in a macro you should use /delay timedelay and if its a social you can construct it differnet, i am gonna assume you using a social.

Rich (BB code):
1st line
/pause 110,/multiline ; /target player1 ; /delay 3 ; /useitem 30
2nd line
/pause 110,/multiline ; /target player2 ; /delay 3 ; /useitem 30
3rd line
/pause 110,/multiline ; /target player3 ; /delay 3 ; /useitem 30
4th line
/pause 110,/multiline ; /target player4 ; /delay 3 ; /useitem 30
5th line
/multiline ; /target player5 ; /delay 3 ; /useitem 30
is how i would do it.

This is indeed a social. Now that I know the differences between pause, delay, and timed, things are much more clear. I'll try basing this on your example
 
/delay wouldn't work in a multiline because all lines are issued at the same time. I've tried using delay, it hasn't worked for me in the paste. Which is why I use /timed when executing a multiline.

Keep in mind that /timed will issue a command after the specified delay. However, it will continue to process other information. When using in a holyshit/downshit this can cause your character to continue to do holyshit/downshit's well after the conditions have been met and the command issued. Timed should be used in hotkeys and less so in holyshit/downshit. Unless you know what you're getting yourself into.

IE: the timed command list you gave as an example meets the conditions, it issues the command then continues to process information from your holyshit/downshit etc list. Another holyshit/downshit also meets it's conditions and begin casting a spell. Now you can't do your previous holyshit/downshit that had the timed commands because it's already casting. Or, It's my only downshit, but I do have holyshits. I meet the condition and it issues the command, then it re-evaluates the same conditions and finds them to be true again, it will issue the command again, which can cause it to get stuck into a loop several seconds after doing the same thing over and over again well into combat where you're no longer evaluating a downshit and should instead be doing holyshits.
 
Is it possible to use multiple delays in a single line? The problem I'm running into here is that I simply have too many toons to buff and can't fit it into a single social unless I combine lines

I just tried this and it glitched out (it cast on Player1 with no cast bar, targeted Player2 instantly, then never cast on Player2):
/multiline ; /target Player1 ; /delay 3 ; /useitem 30 ; /delay 65 ; /target Player2 ; /delay 3 ; /useitem 30
 
I have something that works in a single line based on the examples people have shown:

/multiline ; /target Player1 ; /timed 3 /useitem 30 ; /timed 68 /target Player2 ; /timed 71 /useitem 30

By the way, writing socials ingame is abysmally painful. Is there a way to just edit the ini files directly in something else like notepad and then reload my in-game socials without logging out and back?
 
/timer adds the cool-down shadow graphic to your social macro hot-buttons. It's the same shading you'd see on spell icons or AA hot-keys

/timed command is not the best to use for this since its a do this in about x amount of time from now, and lets move on now, but remember to do that that thing later kinda thing.

/timed is good to use if say you hit a mob and in exactly one minute you want something to happen or in 10 seconds, then yeah go ahead and use it.

/pause is an eq timer used in socials

/delay is mq2 delay that dont mvoe along with next command till time has passed

so for this you want to set up a pause till your sequence is done
your sequence is target player, useitem

you do /pause for full time of sequence, from first target till item isready to use again
lets say that sequence time is 12 seconds.

/pause 120,/multiline ;

now we use multiline to string together severela mq2 commands on one line, remembering to seperate each command with space and ; and another space

/pause 120,/multiline ; /target player1 ; /delay 5 ;

now we use delay, because we now working inside the sequence using mq2 commands. so we delay 50ms to make sure the client has t ime to get target.

/pause 120,/multiline ; /target player1 ; /delay 5 ; /useitem 30

we /useitem in slot 30, but wait why no delay or pause after that???? because we allready told the client we pausing for 12 secds before moving to line 2

and then we repeat that for line 2, just with another player target.
/pause 120,/multiline ; /target player2 ; /delay 5 ; /useitem 30

and so on

now if we used /timed instead of delay, we wouldnt give the client time to get the the target, and it wouldnt really do anything, since we dont have any command set up to do after timed has counted down.

but why not use /delay then instead of pause??

because of how social keys work within eq, all lines are activated at the same time, unless it starts with a /pause, simple as that.
 
Rich (BB code):
[Socials]
Page2Button1Name=MultiCast
Page2Button1Color=13
Page2Button1Line1=/multiline ; /casting "Envenomed Bolt" ; /timed 50 /casting "Imprecation"

Is a hotkey I've made on my Necromancer. This INI is found in your root everquest folder. In my case it's A:\Program Files\Everquest
The ini file is CharName_servername.ini

So if your characters name is HarryPotter and you play on EMar. HarryPotter_erollisi.ini

Find the section called [Socials]

Page#Butting# is corresponding page number, followed by the button number in question. In this case it's page 2 first button. It's assigned a name, a color that the name shows up as and then the actual commands are listed by line. In this case I only have the single line. But let me show you what triggers this line.

Rich (BB code):
Page2Button1Name=AllAssist
Page2Button1Color=13
Page2Button1Line1=/bct Shaman //multiline ; /stick end ; /bct necromancer //stick end
Page2Button1Line2=/bca //assist ${Group.MainTank}
Page2Button1Line3=/bct Rogue //stick behind loose 5
Page2Button1Line4=/bct Cleric //stick behind loose 5
Page2Button1Line5=/bct ${Me.Name} //multiline ; /keypress 8 ; /bct necromancer //pet attack

Your socials can link to each other and issue multiple commands to multiple characters at the same time through the use of EQBC in the fashion shown above. Because if we recall, //multiline issues all the commands at the same time without a delay. So I'm effectively telling the shaman to issue a multi line that ends their own stick and then has the shaman tell the necromancer to stop sticking as well. I could have just done /multiline ; /bct shaman //stick end ; /bct necromancer //stick end which would have made both commands come from my character. But I digress. There are many ways to skin a cat.

the second line tells everyone on my EQBC server to assist me.
then I tell my rogue to stick behind loosely at a range of 5.
Then I tell my cleric to do the same.
The I tell -myself- to issue a multiline command that presses my hotkey 8 and tells the necromancer to send their pet in to attack.

So what is hotkey 8.

Rich (BB code):
Page2Button3Line1=/bct Shaman //keypress 2
Page2Button3Line2=/bct Necromancer //multiline ; /casting "Envenomed Bolt" ; /timed 50  /casting "Imprecation" ; /timed 50  /casting "Feign Death" ; /timed 100 /stand

So I tell my shaman to hit their 2nd hotkey (which is alot like line2 for the necromancer, but it's stored locally on their hotkey. I -should- have left it on my SK so that I could edit it without switching boxes as needed. But, again, I digress.

So now what is the shaman's 2nd hotkey?

Rich (BB code):
Page2Button2Name=ChainCast
Page2Button2Color=0
Page2Button2Line1=/multiline ; /casting "Plague of Insects" ; /timed 60 /casting "Envenomed Bolt" ; /timed 110 /casting "Anathema"

So this is the shaman's hotkey. So When it's called it hits the hotkey "ChainCast" which will chain cast his spells that I want hit to cast.

So next question is....why not just use KA?

Well, I like to be in control of all my characters, even if I'm just issuing commands.

Instead of editing an INI and having everything automated I can directly control what the characters do. This isn't something everyone would want/need to do. But typically I'm programming something for myself/others and just running KA wouldn't reflect me actually participating in doing anything constructive. If I do "play" the game. I want to be in control.

So hopefully this is a sufficient amount of information to show you what can be done with /timed in a /multiline. Keep in mind that all spells being casted have a cast time and a global cooldown time of 2 seconds. So when you /casting you need to add 20 to any number on a following /timed.

So in my shaman's multiline Plague of Insects is 4 second cast time, add 2 second global cooldown, so the following command should be issued at a /timed of 60. Then Envenomed Bolt is a 3 second cast time followed by a 2 second delay for the global cooldown, so 30+20+any previous delay from a timed command, making it 30+20+60 to make a total of 110 before I can cast Anathema.

I could probably put everything on a single line if I really wanted to do so. Just didn't care to do that.
 
Problem - Multiline command not doing what I expect, gets client into weird state

Users who are viewing this thread

Back
Top
Cart