2009年11月17日火曜日

サンシャイン牧場自動化

サンシャイン牧場の自動化プログラムを書いてみた。



機能
  1. セッションIDの自動更新
    サンシャイン牧場で独自のセッションIDがあって1時間?ごとに更新がされるみたい。その値を自動で取得します。
  2. 自分の畑、畜産の収穫
    収穫時間から0~30秒くらいの間で収穫してくれるはず。
  3. 種まき、放牧
    種、動物の購入をした後、種まきは金魚草、放牧はやぎをやってくれる
  4. 種、動物の購入
    除去、引退をした後、金魚草、ヤギを自動で購入します。
  5. 枯れた作物の除去、動物の引退
    収穫後、もう生産できないならやってくれる。
  6. マイミクの巡回
    30分ごとに自動でマイミク全員の畑、畜産広場を巡回して、
    収穫、虫駆除、治療、水やりをやります。
    1操作ごと、移動ごとにスリープして重み付けしてる。


使い方。
  1. jdkが必要なのでない人はインストール。パスの設定。
  2. jsonicをダウンロードして。
    c:\program files\java\sdk******\jre\lib\ext
    もしくはc:\program files\java\jre\lib\extにコピー
  3. 自動化のソースをダウンロード(下にリンクあり。)
  4. コンパイル:javac *.java
  5. 起動:java AutoSanboku < email> < password>  (mixiアカウント)


以上です。windows でやる場合は文字コードをSJISに変更してやるかコンパイル時に-encoding UTF-8をつけてやってください。
エラー処理をかなりサボってるのでサン牧のサーバーが落ちてたりするとこちらのプログラムも止まります。時々みてやってください。

サン牧運営側がハッキング?に対して制裁を行うと言ってるみたいです。
一応
マイミクの巡回時には重み付けする、サン牧側に送信するデータを元データと同じにする
ってことをやってますが

このプログラムがもとで起こったことに関してなんも責任は負えないのでよろしくお願いします。自己責任で使ってくださーい。
かなりきたないソースコードですが・・・ソースで配布するんで修正、追加機能等大歓迎です。できれば連絡ください。
もし修正版、追加機能版を公開するなら絶対にソースコードを公開してください。

ダウンロード:http://kimson.name/sanboku/sanboku.tar.gz

何か要望とかあればコメントにどうぞー。

===============================================
追記:2009/11/19
とりあえず文字コードの問題は
AutoSanboku.javaの315行あたりの
BufferedReader reader =
new BufferedReader(new InputStreamReader(urlconn.getInputStream()));

BufferedReader reader =
new BufferedReader(new InputStreamReader(urlconn.getInputStream(), "UTF-8"));
でいけます、試してみてください。
で、最近になってPOSTするデータが変更されてるみたいで「naruto」とかいうパラメータが追加されてます。
これがなんなのかよくわかってないので再現できないです。
この値がなくても(適当な値でも)レスポンスは返ってくるんで一応使えるんですが、向こうにはツール使ってるのばれるんでお気をつけて。

================================================
追記:2009/12/07
みなさんコメントありがとうございます。
さすがにせっかくコメントもらってるのにほったらかしはダメだと思って少し更新。
たぶん動くようになったと思う。

 ダウンロード:http://kimson.name/sanboku/sanboku.tar.gz

変更点。
1、conf.txtでアカウントなどの管理をするようにしました。
中身はこんな感じ
email=xxxxx@xxxx.xxx.xxx#mixiアカウントのemail
password=xxxxxxxxxx#mixiアカウントのpassword
sleep1time=3#操作間のスリープ時間(秒)
sleep2time=3#マイミク移動間のスリープ時間(秒)
sleep3time=30#マイミク巡回間のスリープ時間(分)
crawl=1#0ならマイミク巡回しない。1なら巡回する。
sleep1timeは収穫とか虫駆除をしたあとにスリープする時間。
sleep2timeはマイミク巡回の時にマイミクからマイミクに移動する間にスリープする時間。
sleep3timeは巡回と巡回の間にスリープする時間。*この時間はセッションIDの更新にも関係してるので1時間以上にしないほうがいいです。
crawlはマイミクの巡回をするかどうかです。
スペースとか入れるとうまく読み込めなくなるんでお気をつけて。(手抜きですいません。)

2、マイミク巡回時に虫を置くようにしました。
 適当に置きますw増産量80%以下の場合10分の1の確率で置くみたいな感じ。
詳しくはソース見てください。

3、narutoのパラメータについて
対応してません!!!
でも適当な値を入れて送ってますw
narutoの値についてコメントくれた方がいて解析はできてる用ですがそれを実装する気力がありませんw
だれが実装してくれないかな・・・
CtlParam.javaのgetNaruto()メソッドに書いてくれるとOKなのだけど・・・

たぶん以上です。こちらの環境では動作確認はできました。
あんまり時間使ってないので変な動作したらごめんなさい。
あとソースに俺のIDとかまずいものがあったらみなかったことにして消してくださいw