注意
以下の内容は2021/09/19時点での仕様に基づいて書かれたものである。GFの仕様変更により、いつか使えなくなるかもしれない。
概要
ガールフレンド(仮)というゲームには聖櫻学園劇場というコンテンツがある。
ここでは各キャラクターごとのストーリーを読むことができるのだが、ストーリーを進めるごとにそのキャラから"お呼び出しメール"が届く。
お呼び出し中にはいくつかの質問をされ(図1参照)、正解するごとに親密度ゲージがたまっていき、ゲージが満タンになればアイテムが手に入る。
ただ、質問のなかには引っかけもあったりするので、全問正解するのは少し難しい。そこで、正解の選択肢をページから取得するJavaScriptコードを作成することにした。
先に結論
会話に突入したらDevToolを起動(F12を押す)し、以下のコードをDevToolの下側にあるコンソールに入力して実行(エンターキーを押す)する。
すると正解の選択肢のみが表示される(図6参照)ので、それに従って会話をやり過ごす。
for (var s in scenarioData) { let question = scenarioData[s]["question"]; if (question != undefined) { question = question["question"]; let choose = question["choose"]; let collect = question["collect_number"]; console.log(choose[collect]); } }
作成手順
ページのHTMLソースファイル179行目(環境によって差異があるかもしれない)の<script>
タグの中身に会話データが入っている。
会話データはscenarioDataという変数の中に連想配列の形で入っているため、コンソールに
console.log(scenarioData);
と打って実行(エンターキー)すれば会話内容が確認できる。
図2にはquestion
やcollect_number
という文字が見える。つまりscenarioDataには質問の内容や、それに対する正答が記載されているのである。
これらを取り出してみよう。まず会話データを一言ずつ読み込んで出力してみる。
for (var s in scenarioData) { console.log(scenarioData[s]); }
次にここから質問と正答のみを取り出す。質問がない場合、以下のコード中の変数question
はundefinedとなるので、その場合は出力しないようにした。
for (var s in scenarioData) { let question = scenarioData[s]["question"]; if (question != undefined) console.log(question); }
これで質問データが取り出せたので、あとは選択肢choose
と正答collect_number
を取り出す。
for (var s in scenarioData) { let question = scenarioData[s]["question"]; if (question != undefined) { question = question["question"]; let choose = question["choose"]; let collect = question["collect_number"]; console.log(choose); console.log(collect); } }
もしくは正解の選択肢のみを表示するようにしてもよいだろう。
for (var s in scenarioData) { let question = scenarioData[s]["question"]; if (question != undefined) { question = question["question"]; let choose = question["choose"]; let collect = question["collect_number"]; console.log(choose[collect]); } }
余談
正解・不正解時のリアクションがみられるコードも書いてみた。
for (var s in scenarioData) { let question = scenarioData[s]["question"]; if (question != undefined) { let q = question["question"]; let choose = q["choose"]; let q_message = q["message"]; let collect = q["collect_number"] let response = question["response"]; let message_collect = response["True"]["message"]; let message_incollect = response["False"]["message"]; console.log("質問: " + q_message); console.log("選択肢: " + choose[1] + " / " + choose[2]); console.log("正しい選択肢: " + choose[collect]); console.log("正解時: " + message_collect); console.log("不正解時: " + message_incollect); console.log(""); } }
概要で引っかけ問題があると言ったが、図7の2問目がその典型例であろう。春瑚だから花壇だろうと思って選択すると間違える。