you really should mention that your not using the latest mirc when you ask for something

$v1 was added v6.16
try this...
on *:text:!rules:#channel:{ dcc.file.send $nick rules.txt }
on *:text:!commands:#channel:{ dcc.file.send $nick commands.txt }
on *:text:!balls:#channel:{ dcc.file.send $nick rubberball.txt }
;
;etc etc etc
;
alias -l dcc.file.send {
set -u60 % [ $+ [ $+($1,.DCCFILE) ] ] $2-
dcc chat $1
.timer. $+ $1 $+ .dcc.close 1 60 while ( $!window( = $+ $1 ) ) $chr(123) window -c = $+ $1 $chr(125)
}
on *:open:=:{
echo -st CP0 nick : $1-
if (% [ $+ [ $+($nick,.DCCFILE) ] ] ) {
play = $+ $nick $ifmatch 0
unset % [ $+ [ $+($nick,.DCCFILE) ] ]
}
}
Now each TEXT event calls an alias to do all the work, becuase the alias also starts a 60 sec timer to close the dcc chat windows to that nick.
Now the OPEN event uses the older $ifmatch instead of $v1.