The .Save is just another method, or "module" as you called it. The "CreateShortcut" method returns an OBJECT variable type, so it's an entirely new object which has its own methods and properties.

In mIRC, when something returns an object you must use dispatch* or unknown* to open a new COM object.

The equivalent of that code in mIRC script would look like this:

Code:
alias createshortcut {

  .comopen WshShell WScript.Shell
  
  noop $com(WshShell,SpecialFolders,3,bstr,Desktop)
  
  var %Desktop = $com(WshShell).result
  
  noop $com(WshShell,CreateShortcut,3,bstr,$+(%Desktop,\,Shortcut Script.lnk),dispatch* oShellLink)
  
  noop $com(oShellLink,Save,3)
  
  .comclose oShellLink
  
  .comclose WshShell

}


Using unknown* in place of dispatch* will do the exact same thing in this situation, so use whichever you prefer.

There's a description of the different data types (bstr,int,dispatch,etc) and what the number (in both of these cases - "3") means in the help file.

I've spread it out so it's easier to read smile