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.
Rules for imported scripts
Section titled “Rules for imported scripts”- 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
.mrcfile, not the translation.
Supported events
Section titled “Supported events”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,#namea channel (wildcards allowed),?private messages,*anywhere.JOIN,PARTandCONNECTblocks also receive your own events;TEXTandNOTICEdo not receive your own messages.- A block may be on one line or span lines. Commands are separated by newlines or
|.
Supported commands
Section titled “Supported commands”| 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) |
Supported identifiers
Section titled “Supported identifiers”$nick, $me, $chan, $network, $server, $0, $1 … $9, $1-, $2- and so on.
Example
Section titled “Example”on *:TEXT:!hello*:#:{ msg $chan Hello, $nick! (you said: $1-)}on *:JOIN:#swizzin:{ echo $nick joined $chan}What is refused
Section titled “What is refused”| 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 |
Not a goal
Section titled “Not a goal”Full mIRC scripting-language compatibility, running arbitrary downloaded .mrc files, or loading DLLs. Port larger scripts to Luau by hand.