次郎の貝塚

技術ブログのような何か | RSS

ドキドキ文芸部プラス!のシークレット 10 を取得するための VBScript を書いた

ドキドキ文系部プラス!の実績を全解除したけれど、 そのうち一番苦戦したシークレット 10 を楽に取得するために書いた VBScript についてまとめる。

シークレット 10 はめちゃくちゃ低い確率で 2 周目のメインメニュー(サユリがぶっ壊れて表示される画面)を表示した時に取得できる。 10 回以上再表示を繰り返しても取得できなくて、めんどくさくなったのでスクリプトを書いて取得した。

注意点

VBScript を使ってキーボード入力を自動化したわけだけれど、 VBScript は Windows でしか使えないので、Linux や Mac では動かない。

僕が動作確認したのも Windows 11 なので、それ以外の環境は別の方法を自分で考える必要がある。 また、万が一変な動作しても自己責任で。

使い方

スクリプトは以下。dokidoki_literature_club.vbs という名前で保存する。

'
' ドキドキ文芸部2周目のメインメニュー画面を表示した直後に実行する。
'
' 実行方法:
'   wscript.exe dokidoki_literature_club.vbs
'
Set WshShell = Wscript.CreateObject("Wscript.Shell")

if WshShell.AppActivate("Doki Doki Literature Club Plus") then
  WshShell.SendKeys("{UP}")
  WScript.Sleep(500)

  Dim LoopCounter
  LoopCounter = 0
  Do While LoopCounter < 200
    '
    ' DDLCを終了する
    '
    WshShell.SendKeys("{UP}")
    WScript.Sleep(500)
    WshShell.SendKeys("{Enter}")
    WScript.Sleep(500)
    WshShell.SendKeys("{Enter}")
    WScript.Sleep(4000)

    '
    ' DDLCを起動する
    '
    WshShell.SendKeys("{UP}")
    WScript.Sleep(1000)
    WshShell.SendKeys("{Enter}")
    WScript.Sleep(10000)

    LoopCounter = LoopCounter + 1
  Loop
end if

手順は以下のとおり。

wscript.exe dokidoki_literature_club.vbs

解説

シークレット 10 は 2 周目のメインメニューを表示したときに確率で取得できる。 よって、メインメニューをひたすら表示 → DDLC の終了を繰り返せばよい。 繰り返す操作はキーボード操作だけで完結できるので、繰り返すためのキーボード操作を VBScript で自動化した。

やってることは以下のとおり。

200 回という数値は適当で、適当に 200 回にして動かしてる最中にシークレットを取得できたのでそのままにしている。

余談

何年前か忘れたけれど Steam で Ampu-Tea というゲームを買った。

このゲームは実績全解除が簡単だったので解除したけれど、1 個だけめちゃくちゃ面倒な実績があった。 内容は「500 回ゲームを起動する」というもの。

Ampu-Tea は正直に言うとクソゲーなので、500 回も遊ぶ価値は無い。 500 回も起動するのはさすがに面倒だった。 これを突破するために VBScript を書いた経験があって、それが今回も役に立った。

当該スクリプトがリポジトリに残っていたので、これを参考に今回のスクリプトを作成した。

このスクリプト単体だと、1 回ゲームを起動して終了しかしてない気がするので、この処理だけだと 500 回の実績を達成できないはず。 たぶん PowerShell 側でループ実行して 500 回繰り返したんだと思う。

前の記事 親知らずの抜歯と抜歯後の経過 | 次の記事 テキストを壱百満天原サロメお嬢様文体に変換するコマンドを書いた