MUGENでキャラ増やすにはcharsフォルダに突っ込んでそのフォルダ名を設定ファイルに書く必要がある。

スト2みたいにキャラが11人とかならいいんですが、MUGENではパクリからオリジナルまであらゆるキャラが有志によって作られてるので数百人とかあっという間。

手作業で登録してると中国に作業委託したくなってくるのでフォルダ名一覧をクリップボードにコピーするJScriptを書いてみました。

listing_folder.js

これをダウンロードしてきてWクリック。

listing_chars.js(1)

listing_chars.js(2)

listing_chars.js(3)

まず、JScriptではpromptが無いのでVBScript経由でInputBoxを使う。

更にクリップボードはIEを経由する必要がある。

function prompt(text, title, defaultText) {
  var code = 'Function fn(text, title, defaultText)\n'
    + 'fn = InputBox(text, title, defaultText)\n'
    + 'End Function'
  var sc = new ActiveXObject("ScriptControl");
  sc.Language = "VBScript";
  sc.AddCode(code);
  return sc.Run("fn", text, title, defaultText);
} 

function Clipboard() {
    this.ie = new ActiveXObject( 'InternetExplorer.Application' );
    this.ie.Navigate( 'about:blank' );
    while ( this.ie.Busy ) {
        WScript.Sleep( 10 );
    }
    this.clipboard = this.ie.Document.parentWindow.clipboardData;
    this.getText = function () {
        return this.clipboard.getData( 'text' );
    }
    this.setText = function ( s ) {
        this.clipboard.setData( 'text', s );
        return true;
    }
    this.release = function () {
        this.ie.Quit();
        return true;
    }
    return this;
}

var path = prompt("charsフォルダのパスを入力してください。", "キャラリスト", "c:\\Program Files\\mugen\\chars")

var shell = new ActiveXObject("Shell.Application")
var folder = shell.NameSpace(path.replace(/\\/gi, '\\'))
var folders = folder.Items()
var names = []

for (var i=0; i<folders.Count; i++) {
  var item = folders.Item(i)
  if (item.IsFolder == true) names.push(item.Name)
}

var clip = new Clipboard
clip.setText(names.join("\n"))
WScript.echo("フォルダ名一覧をクリップボードにコピーしました。")

Rubyで書いてexeにする方法を取れば良かったかな。

だってはじめる前は

「JScriptで書けばWindowsに何もインストールしなくても、WSH経由でWクリックで動くらしい。JavaScriptと殆ど同じだから楽だろう。これはいいぞ!」

って思ってたんですよ。

まあRubyをexeにする時にまた色々起きるんだろうな。yak shavingからは逃れられない・・・。

参考: WSH よりクリップボードを使う 参考: JScript小ネタ

Comments


Option