【自作ツール】エンダードラゴン討伐RTA向けシード値を自動でくれるシステムを作りました【Minecraft 1.7】

スポンサードリンク

こんにちは。ふぁんたです。

 

マインクラフト。

 

これを書いているときの最新のリリースバージョンは「1.17.1」になりますが、
そんな中、1.7系でタイムアタックを行っている人たちがいます。

 

そんな人達の役に立つツールを作りました。

 

その話をします。


ツールの概要

ボタンを押すと、「エンドラRTAに良いとされるシード値(※1)」をデータベースから返す。

(そのシード値は一期一会で、返されたデータはデータベースから削除される。)

 

※1…本ツールでは「スポーン地点から見える距離(16チャンク)に砂漠が存在するワールドのシード値」と定義する。

ツールのページ

https://sub.phanta.tech/に追加しました。

 

直リンクはhttps://sub.phanta.tech/getEndraSeedsです。

 

(出てきたデータは削除されるので、かんたんに底をつくと思います。連打しないでください。

一応、誰が押したかは監視されるようになっていますので、そのつもりでご利用ください。)

 

ツール全体の構成要素と解決法

本ツールは、

①Amidstを起動

②Amidstをキーボード操作

③Amidstのワールド画面を画像として取得

④取得した画像を切り出し

⑤画像の中に砂漠が存在するかどうかを判定する

⑥砂漠が存在するなら、シード値を取得する(キーボード操作)

⑦シード値を加工して、データベースに登録するための文字列にする

⑧溜まったらテキストファイルに書き出す

⑨テキストファイルにデータが溜まったら、ウェブ上のデータベースに書き込む

 

⑩アクセスしたらデータベースからデータを1つとってきて、そのデータを削除するようなWebページを作る

技術の話

pyautogui

pythonのライブラリで、キーボードの操作を勝手にやってくれる。

 

②Amidstをキーボード操作

⑥砂漠が存在するなら、シード値を取得する(キーボード操作)

 

この2つのタイミングで使う。

 

Ctrl+Rでシードを引き、砂漠があったらシードをCtrl+Cでコピーできる。

 

opencv-python

pythonのライブラリで、画像認識をやってくれる。

 

③Amidstのワールド画面を画像として取得

④取得した画像を切り出し

⑤画像の中に砂漠が存在するかどうかを判定する

 

このタイミングで使います。

まず、家のアイコン(リスポーン地点)を画像とのマッチングで取得します。

そこから、南方向に16チャンク分切り出します(1ピクセル=4mになるようにズーム倍率を合わせています)

で、予め砂漠を表すRGB値を持っておいて、画像を二値化(決まった色だけを白、その他を全部黒にすること)します。

画像の情報をすべて足し合わせて、0になったら(黒は0扱いなので)砂漠なし。そうじゃなかったらある、という判定方法でいけます。

 

pyperclip

クリップボード(コピーしたテキストとか画像ファイルなんかが行く場所)を司るライブラリになります。

 

⑦シード値を加工して、データベースに登録するための文字列にする

⑧溜まったらテキストファイルに書き出す

⑨テキストファイルにデータが溜まったら、ウェブ上のデータベースに書き込む

 

このへんで使います。

シード値はCtrl+Cでクリップボードにコピーされるので、直接弄ってやります。

データベースに書き込む部分も、保存したSQL文を貼り付けに行くという方法で実現させているので、これでできます。

 

laravel

久しぶりにいじったわお前。phpのフレームワークです。

早い話がWebページ作るためのお手軽キットみたいなもんです。

これでページを作りました。php苦手なんですけどね。

 

selenium

今回始めて使った、「ブラウザを自動で操作できる」ライブラリ。

 

⑨テキストファイルにデータが溜まったら、ウェブ上のデータベースに書き込む

 

ここで使っています。ウェブブラウザを操作して、データベースを見に行っています(ロリポップだとデータベース・サーバーの名前解決ができないので、仕方なく。)

 

ただこいつ非常に便利です。初めて使って凄さがわかりました。

ウェブ上の諸々を自動で行えるので、例えば何かの予約とか、ツイッターの自動投稿とか、なんかもうできることは無限大。

これでチケット取ったりとか、ワクチン予約とか、色々夢が広がってしまいそうですね。

スポンサードリンク