loadbuf $mircdirnames.txt is valid
$mircdirANYTHING gets translated to C:\mirc'sdir\ANYTHING
you should use $scriptdir though, not $mircdir
$scriptdir is the directory the script file youre currently executing lives
$mircdir is the directory of mirc (or the user's appdata dir)
These are not always the same, specifically if you package/run a script and its loaded from
C:\notmirc\somedirectory\yourscript.mrc because it would attempt to still load your packaged "names.txt" from mirc's home directory rather than
"C:\notmirc\somedirectory" where it probably resides after unpackaging.
This isn't only a script distribution issue, but can affect you too, say, if you store your scripts inside a "scripts\" subdirectory in mirc, don't be surprised if you arent pointing to the right file anymore.
---------
bottom line: mIRC doesn't lie.. if it says the file does not exist, you're the one who's wrong
-- double and triple check you're actually pointing to the right filename-- a change to $scriptdir might actually point it to the right place (but not necessarily)
type //echo -a $exists(C:\merk\names.txt)
If that's $false, it's definitely not there-- type /run C:\merk and go check for yourself..