mIRC Home    About    Download    Register    News    Help

Print Thread
Joined: May 2010
Posts: 29
P
Plornt Offline OP
Ameglian cow
OP Offline
Ameglian cow
P
Joined: May 2010
Posts: 29
Butchered topic title due to short length restrictions, what I am trying to ask about is an issue I encountered the other day. I have full IRCop permissions and am able to paste in large amounts of text without any server side delays perfectally fine. However, when I have a script that sends a large amount of text it's painfully slow. This also occurs when I directly send a /raw PRIVMSG command just to ensure it wasnt some sort of built in message delay.

Is this a known bug/limitation with mIRC?

I have managed to work around the issue by using a 0 interval timer which immediately invokes the /msg command and its as fast as it possibly can be but I would like to know if anyone knows why this occurs? Or what could be causing it?

Joined: Jul 2006
Posts: 4,144
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 4,144
There is no limitation, the mIRC scripting language isn't fast, but not that slow.
Without seeing the script it's impossible to help you, but that being said, you did mention you are using timer, and you said how using 0 as the interval fixed it. It's not a fix, it's the correct way to get the timer to fire immediately, that's how you should do it if you want it to fire immediately. If you were using the basic /.timer 1 1 msg #chan message, this is a one second delay.


#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: May 2010
Posts: 29
P
Plornt Offline OP
Ameglian cow
OP Offline
Ameglian cow
P
Joined: May 2010
Posts: 29
This is why I suspect it may be a bug. Note that in the example video I show I am using wine to run mIRC on a mac HOWEVER I have tested this on a native windows environment and it happens consistently on both.

Here is a video of me using the following code:
Code:
on *:TEXT:!testmsg:*:{
  var %i 0
  while (%i <= 20) {
    msg $chan %i
    inc %i
  }
}


http://i.gyazo.com/a9e9fcbe633f52efc039d2e5dbe3bd53.mp4

And here is a video (using 0 delay timers) to achieve the same thing but faster:

Code:
on *:TEXT:!testtimer:*:{
  var %i 0
  while (%i <= 20) {
    .timer 1 0 msg $chan %i
    inc %i
  }
}


http://i.gyazo.com/d2a18badf62af50bd2e6755e88a0c9e9.mp4

Notice how it does show up instantly on the mIRC window but doesnt seem to be sending it through instantly over the IRC socket? I will test to see if can make a fake IRC server to see what exactly mIRC is sending and when to double check its not something odd happening on the server side.

Joined: Jul 2006
Posts: 4,144
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 4,144
There is no way that using /timer + /msg is going to be faster than /msg itself, unless you are overriding /msg in a way that take into account if it's used from a timer, somehow, but assuming you don't have a custom /msg alias (and no custom /timer alias), what you are saying is not possible.

Note that when you send a message from mIRC, mIRC locally display the message to the window, because you won't get a PRIVMSG from the server for your own message, so in the client sending the messages, all of them will appear instantly, regardless if you are ircop or not, while a different client on the channel will have to wait for the PRIVMSG from the server, we can easily assume there will be a small delay due to the lag from the sender + the time it took for the IRC server to parse the message and send it back to all clients accordingly.

On the first video, when I pause around 1sec, you can see that the mIRC client sending the messages already displayed all the number from 0 to 20, while on the second video, if you pause around the same amount of time, mIRC only displayed 0 1 and 2, this is all correct since /msg happens instantly, while the /timer will add a small delay.

On the first video, the receiver is getting the first nine messages within the same second, the next seven messages within another same second, and the last 3 within the same second, this seems correct.
However on the second video, the receiver sees everything at the same time, which is indeed weird.

You can use /debug @win to see what mIRC is sending.

Last edited by Wims; 28/07/15 08:56 PM.

#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: May 2010
Posts: 29
P
Plornt Offline OP
Ameglian cow
OP Offline
Ameglian cow
P
Joined: May 2010
Posts: 29
Originally Posted By: Wims
There is no way that using /timer + /msg is going to be faster than /msg itself, unless you are overriding /msg in a way that take into account if it's used from a timer, somehow, but assuming you don't have a custom /msg alias (and no custom /timer alias), what you are saying is not possible.

Note that when you send a message from mIRC, mIRC locally display the message to the window, because you won't get a PRIVMSG from the server for your own message, so in the client sending the messages, all of them will appear instantly, regardless if you are ircop or not, while a different client on the channel will have to wait for the PRIVMSG from the server, we can easily assume there will be a small delay due to the lag from the sender + the time it took for the IRC server to parse the message and send it back to all clients accordingly.

On the first video, when I pause around 1sec, you can see that the mIRC client sending the messages already displayed all the number from 0 to 20, while on the second video, if you pause around the same amount of time, mIRC only displayed 0 1 and 2, this is all correct since /msg happens instantly, while the /timer will add a small delay.

On the first video, the receiver is getting the first nine messages within the same second, the next seven messages within another same second, and the last 3 within the same second, this seems correct.
However on the second video, the receiver sees everything at the same time, which is indeed weird.

You can use /debug @win to see what mIRC is sending.


Yeah, I've not modified msg or timer in any way. The only reason I thought to try a timer was due to thinking that it might be some sort of asynchronous method that'd somehow get processed faster.

Now that I look in debug its painted a different picture and is more clearly a server issue.

http://i.gyazo.com/28a1a28b6c9c8027063d743233bdaa16.png

Is the output.

Test one was the same message script above. Test two was with timers and test 3 was a direct copy and paste. It seems like the timers slow the messages down just enough to not trigger the flood check on the IRC server. Just a bit odd that directly pasting and pressing enter does not also trigger this flood protection. Perhaps this is an issue that has been encountered before with multiline pastes that a specific fix/slowdown was introduced to get around this?

The server is running a pretty old version of UnrealIRCd. Will ask the server admin to see if theres anything their end they can do.

Thanks for your responses

Last edited by Plornt; 28/07/15 09:10 PM.
Joined: Jul 2006
Posts: 4,144
W
Hoopy frood
Offline
Hoopy frood
W
Joined: Jul 2006
Posts: 4,144
Ah yeah, flood check.
Note also that mIRC has flood check of its own, which could be enabled on your client, which would slow down the message itself (would explain the copy pasting method)

Edit: the FLOOCHECK is sent by mIRC, not the server, I think this was added recently, that causes a small slow down since mIRC handles it before processing the sending of your messages.
However I can't seem to get mIRC to send that to the IRC server with my test.

Edit2: Ok I can get mIRC to send that by setting the Flood option Queue: own message

Last edited by Wims; 28/07/15 11:48 PM.

#mircscripting @ irc.swiftirc.net == the best mIRC help channel
Joined: May 2010
Posts: 29
P
Plornt Offline OP
Ameglian cow
OP Offline
Ameglian cow
P
Joined: May 2010
Posts: 29
Originally Posted By: Wims
Ah yeah, flood check.
Note also that mIRC has flood check of its own, which could be enabled on your client, which would slow down the message itself (would explain the copy pasting method)

Edit: the FLOOCHECK is sent by mIRC, not the server, I think this was added recently, that causes a small slow down since mIRC handles it before processing the sending of your messages.
However I can't seem to get mIRC to send that to the IRC server with my test.

Edit2: Ok I can get mIRC to send that by setting the Flood option Queue: own message


Aha! Thank you, didnt notice it was my mIRC sending the flood check just assumed that would be on the server side. But yes issue is all fixed now by just turning that off smile


Link Copied to Clipboard