The only thing that I'm able to think of, atm, is that the full path to the mp3 that you're trying to play doesn't match the path in your %dj.path variable. This would be the case if you had something like:
%dj.path = C:\Music\Rock
Full path & file "C:\Music\Rock\Billy Joel\Glass Houses\Track 2.mp3"
Your file name that's added to the dialog will show as Track 2.mp3
So when you try to play it, mIRC tries to play C:\Music\Rock\Track 2.mp3
mIRC is still missing part of the path information.
I can think of two ways around this.
1) Use
%dj.path = $$sdir(C:\,Select Mp3 dir) | noop $findfile($qt(%dj.path),*.mp3,0,0,did -a $dname 1 $nopath($1-))
Not my recommendation, as this will only perform the $findfile for that specific directory, and not any sub-directories that may be present. Meaning that you'd have to re-run the code for each sub-directory, and only having the information for 1 directory level at a time.
2) Add another list box to your dialog, the same size and location as your list ID 1, but have it hidden, and store the full path and title in the 2nd list, then when selecting an item in ID 1, auto-select that same line in the 2nd list, and use that for your /splay command
This is the one I recommend, as it will allow you to use multiple sub-directories off of your main mp3 directory, without having to run the code for the specific directory each time.