Skip to content

mIRC compatibility

SwizzinIRC does not run mIRC scripts. It includes a small translator for a short list of common patterns. A .mrc file is parsed, converted to ordinary SwizzScript that uses only the public swizzin API, and then runs under the same sandbox, limits and permissions as any native script. Anything outside the list below is refused with a line number and a suggestion.

  • They stay off. Importing, opening or previewing a script never runs it. You review it, turn it on and approve its permissions.
  • The Script Manager reports problems as you edit, with line numbers (up to 20 at once).
  • Edit the .mrc file, not the translation.
on *:TEXT:<pattern>:<where>:{ ... }
on *:NOTICE:<pattern>:<where>:{ ... }
on *:JOIN:<where>:{ ... }
on *:PART:<where>:{ ... }
on *:CONNECT:{ ... }
  • The level must be *.
  • <pattern> is a wildcard (*, ?) match of the message text; * matches everything.
  • <where>: # any channel, #name a channel (wildcards allowed), ? private messages, * anywhere.
  • JOIN, PART and CONNECT blocks also receive your own events; TEXT and NOTICE do not receive your own messages.
  • A block may be on one line or span lines. Commands are separated by newlines or |.
Command Becomes
msg <target> <text> swizzin.send (needs send)
notice <target> <text> swizzin.notice (needs send)
me <text>, describe <target> <text> swizzin.action (needs send)
join <#channel> [key] swizzin.join (needs channels)
part <#channel> [reason] swizzin.part (needs channels)
echo <text> swizzin.log (Script Console)

$nick, $me, $chan, $network, $server, $0, $1 … $9, $1-, $2- and so on.

on *:TEXT:!hello*:#:{
msg $chan Hello, $nick! (you said: $1-)
}
on *:JOIN:#swizzin:{
echo $nick joined $chan
}
mIRC feature Result
Nested blocks, if / elseif / else / while, goto, halt, return Refused. Write the script in Luau
Variables (set, var, inc, dec, unset, %var, $calc, $eval) Refused. Use Luau locals or swizzin.data
timer Refused. Use swizzin.timer.after or every
run, dll, write, read, remove, copy, rename, mkdir, sockopen, sockwrite, load, unload Refused. Scripts never get file, program or socket access
kick, ban, mode, op, deop, voice, devoice, topic, nick, away, whois, ctcp, raw, quote Refused. Not available to scripts
Other events (INVITE, KICK, ACTION, RAW, SOCKREAD …) Refused
alias Use SwizzinIRC aliases; the Aliases dialog imports alias definitions separately
User levels other than * Refused
Popups, menus, dialogs, $read, $readini, $sock, binary variables, hash tables Refused
Anything outside an on block Refused

Full mIRC scripting-language compatibility, running arbitrary downloaded .mrc files, or loading DLLs. Port larger scripts to Luau by hand.