Changers any CTCP reply.
This script changes the default mIRC version reply to any text you want, without DLL's or anything complicated. You can change version reply and edit or add more ctcp reply's from line 32. Just add
if (%action == whatever you want to add/change) ctcpreply %anick $v1 The reply you want
Just load the server and connect to a server to work, or type .timervchanger 0 1 vchanger yourself.
Multi-servers support
mIRC is scripted so you would always sent a reply, but you can work around it:
It ignore's all CTCP's (using /ignore), but opens debug window. Then it scans the debug window for CTCP, and it works from that. It looks complicated because of the multi-server support. It uses 2 variables, nothing else.
Check for the ####, that's where you can edit in between.
on *:Connect:{ if (!$timer(vchanger)) .timervchanger 0 1 vchanger
unset %Vchanger.load*
}
on *:unload:{ .timervchanger off }
alias vchanger {
if ($ignore(*!*@*).type != ctcp) || (%vchanger.loadignore != $scon(0)) {
var %x = 1
while (%x <= $scon(0)) {
scon %x .ignore -t *!*@*
inc %x
}
set %Vchanger.loadignore $scon(0)
}
if (!$window(@Vchanger1)) || (%vchanger.loadwindow != $scon(0)) {
var %x = 1
while (%x <= $scon(0)) {
scon %x //var % $+ cd $!window(@Vchanger $+ %x $+ )
if (!%cd) { scon %x .debug @Vchanger $+ %x | window -h @Vchanger $+ %x }
inc %x
}
set %vchanger.loadwindow $scon(0)
}
var %x = 1,%y = 1
while (%x <= $scon(0)) {
while ($line(@Vchanger $+ %x,%y)) {
tokenize 32 $v1
if (* $+ $chr(1) $+ * iswm $left($5,2)) && ($chr(1) == $right($gettok($1-,-1,32),1)) && ($1 == <-) && ($3 == privmsg) && (Action !isin $5) {
scon %x
var %action = $upper($mid($remove($5-,$chr(1)),2))
var %anick = $gettok($mid($2,2),1,33)
;#########
if (%action == version) ctcpreply %anick VERSION Not mIRC!
if (%Action == TIME) ctcpreply %anick TIME $fulldate
if (%action == finger) ctcpreply %anick FINGER Don't you dare...!
if ($gettok(%action,1,32) == ping) && ($gettok(%action,2,32) isnum) { ctcpreply %anick ping $ctime | echo -a $chr(3) $+ $color(ctcp) $+ $timestamp $+($chr(91),%anick,$chr(32),PING,$chr(93)) }
else echo -a $chr(3) $+ $color(ctcp) $+ $timestamp $+($chr(91),%anick,$chr(32),%action,$chr(93))
}
;#######
inc %y
}
clear @vchanger $+ %x
inc %x
}
}
ah you use debug to directly call the alias, that's smart. But it isn't multi server.
since multiple connections may use the same debug target, it could be made to support multiple servers simply by performing /debug on CONNECT (or, more accurately, on ^LOGON) rather than on START. you can also specify an invalid filename such as 'NUL' or 'AUX' to prevent mIRC from writing to disk.
using /debug to spoof a version reply is the smart part, so kudos if you discovered that on your own Dani :P this method is actually close to 15 years old and comes from a time when /debug was undocumented and only took a single argument (on|off to turn on/off debugging to a file named debug.log) but nowadays it has indeed been made much easier with the addition of the -i switch.
I am running mIRC 7.19, unaltered copy of your script.
My timestamp format is "HH:nn:ss" "17:56:16"
It seems whenever someone does a VERSION in me, I get "7:56:16 [SomeOne VERSION]" in my channel window. It looks like the script cuts off the "1" in the timestamp.
Is there a way to make the script not display the "7:56:16 [SomeOne VERSION]" not display in the channel?