読者です 読者をやめる 読者になる 読者になる

5.1さらうどん

@giginetの技術ブログ。ゲーム開発、iOS開発、その他いろいろ

『ドラゴンクエスト10』のバザーから安い商品を取ってくるスクリプト書いた

game python

『ドラクエ10』発売しましたね!いやー、良いゲームだ。


ゲーマーの読者諸賢のことですから、今頃アストルディアに籠もり、淡々と豚を狩り続けたり、スキルポイントのやりくりに頭を悩ませていることでしょう。



さて、『ドラゴンクエスト10』では、「旅人のバザー」というシステムが存在します。

これはアイテムなどを出品して、プレイヤー間で売買ができるシステムなのですが

  • バザーが6大陸分存在し、大陸毎に分割されているため、一度に全ての大陸の検索ができない
  • 最新100件までしか調べることができない

という制約が存在します。


一方でWeb上でもバザーの出品状況を確認することができるのですが、こちらは全ての大陸を串刺しして検索できる反面、価格順にソートすることができません。


目覚めし冒険者の広場-ドラゴンクエストⅩプレイヤー専用サイト


というわけで、Webポータルをスクレイピングして、最安の出品を引っ張ってくるPythonスクリプトを書いてみました


giginet/dqx-helper · GitHub

使い方

おもむろにshellを開き

python bazzar.py アモールの水

などと検索すると良いでしょう。

アモールの水の検索結果
55G 10個 総額550G @プクランド大陸
55G 10個 総額550G @プクランド大陸
60G 3個 総額180G @プクランド大陸
64G 34個 総額2176G @プクランド大陸
80G 10個 総額800G @ウェナ諸島
80G 15個 総額1200G @オーグリード大陸
83G 30個 総額2490G @プクランド大陸
85G 10個 総額850G @ウェナ諸島
85G 10個 総額850G @ウェナ諸島
85G 10個 総額850G @ウェナ諸島
169品中

このように、全6大陸のバザーを串刺しして検索し、安い商品を探してきてくれます。これは便利!


BeautifulSoupなどの各種ライブラリの導入が必要なので、詳しい使い方はgithubのREADMEをどうぞ。


めちゃくちゃスクレイピングしまくっているので、かなりサーバーに負荷がかかることが予測されますので、ほどほどに。

せっかく育てたキャラがBANされても責任は取れません。


また、Web上のポータルからは装備品の錬金効果などを見ることができないようなので、装備品に利用してもあまり意味がないと思います。消費アイテム向けかと。


アイテム名をreplyで投げると、最安値を取ってくるTwitter-botを作ることも考えたのですが、僕のアカウントでスクレイピングしていますし、
ドラクエのプレイヤー数から考えてサーバー負荷が大変なことになりそうなので、公開はしないことにしました。

今後の展望

面倒なログイン部分の実装ができてしまったので、基本的にWeb上で公開されている情報であれば何でも取得できそうです。

  • サポート貸し出し中のとき、経験値、ゴールドの獲得状況をお知らせするTwitterボット
  • 撮影した写真を自動的に取得してローカルに保存する
  • フレンドがオンラインになったら通知するTwitterボット

などなど、いろいろ便利そうなツールが考えられますね。必要に応じて作ってみようかなぁと思います。



あ、ちなみに僕のキャラはこちらです。もしゲーム中で遭遇したらよろしくお願いしますね!

ぎぎにゃん - ドラゴンクエストX 目覚めし五つの種族 オンライン

f:id:gigi-net:20120814210720j:plain

Thanks to WPZOOM about nice icon sets.