【自作ツール】エンダードラゴン討伐RTA向けシード値を自動でくれるシステムを作りました【Minecraft 1.7】
スポンサードリンク
こんにちは。ふぁんたです。
マインクラフト。
これを書いているときの最新のリリースバージョンは「1.17.1」になりますが、
そんな中、1.7系でタイムアタックを行っている人たちがいます。
そんな人達の役に立つツールを作りました。
その話をします。
Contents
ツールの概要
ボタンを押すと、「エンドラ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
今回始めて使った、「ブラウザを自動で操作できる」ライブラリ。
⑨テキストファイルにデータが溜まったら、ウェブ上のデータベースに書き込む
ここで使っています。ウェブブラウザを操作して、データベースを見に行っています(ロリポップだとデータベース・サーバーの名前解決ができないので、仕方なく。)
ただこいつ非常に便利です。初めて使って凄さがわかりました。
ウェブ上の諸々を自動で行えるので、例えば何かの予約とか、ツイッターの自動投稿とか、なんかもうできることは無限大。
これでチケット取ったりとか、ワクチン予約とか、色々夢が広がってしまいそうですね。
スポンサードリンク
ディスカッション
コメント一覧
まだ、コメントがありません