2014年11月13日

差益さん EVEAPIアクセスへの道3 〜EVEAPIライブラリ試行錯誤編2〜

小話

おやじギャグが許される優しい世界っていいよね
昔、おっぱいちゃん(仮称)がいまして
おやじギャグ好きなわたくし、まあここでちょっと洒落た親父ギャグで
つかみにいこう(物理的にではありません)と思ったわけです
ですがその子、「親父?(親父ギャグはちょっと・・・・の意)」とか切り返してきます
なんて哀しいこというんだ

ここで2択ですよ
1:その子に合わせて親父ギャグを封印して接する
2:自然体。信念を曲げずに親父ギャグを普段通り貫き通す
当然1を選択しましたねえ、若さ故
でもつまんねえんだこれが、やはり我慢は良くない、オチ無し


本題

前回は、pythonのバニラ状態でアクセスできてるんだから
rubyでEVEAPIにアクセスしてデータをいただいてしまおうというところまででした

さて、長い間ブログをお留守してたのは問題が発生したからでございます
簡単にまとめると
生pythonでeveapiにアクセス可能だよ

じゃあrubyでもできるんじゃん、素直にrubyで書こう

書いた

アクセスできねえw

原因不明

普段なら諦めはいってるところなんですが慣れの問題でどーーーしてもrubyでやりたい
じゃあ何があかんのか
これまた一言でいいますと「rubyのバージョンが低かった(たぶん)」
早速2.1に入れ直して同じコードを実行

eveapimarket.jpg
キタァー!・・・何に時間食ってたのか
幅広すぎて重要な価格のところが見切れてるけど
evecentralでの突き合わせ作業に必要なデータであるトコの
・アイテムのID
・売買価格
・ステーション・・・・ID?
はいまためんどくさいの来たこれ。ここはスッとぐぐり
http://biotronics.basicaware.de/eve/download/StationID2Name.txt
リンク踏むのも手間だと思うので冒頭部分を引用
>stationID stationName
>60000001
>60014668 - House of Records
>60014862 0 G straight outta syndicate yo
>60014885 0 Wn Everything Rape
>60014338 0G-A25 VI - Moon 20 - True Power Mining Outpost
>60013636 0IRK-R IX - Jove Navy Testing Facilities
これ出ました、星系名も付いてステーション名というなんかすげー冗長な感じですけど
ステーションIDをこのリストにつきあわせて名前に戻してあげりゃ
evecentralでいただくことの出来るステーション名と突き合わせできることを確認、ひひひ

んでまー、同じ価格で入れられてるときのことを考えてみる
同価格で競合した場合、後からきた注文が後回しなはず(じゃないと不公平だよね)なんだけど
検証してないっす。暇なとき同アイテム同価格で重複するように注文いれてみよー。一応
・数量
で自分の注文かどうかを見わけたほうがいいはず
さらにこの場合は日付っぽいものも必要

ロジックとしては
1:apiから自分のマーケットオーダーをいただく
-----ここから注文単位でループ------
2:evecentralからアイテムIDで情報をゲット
3:アイテムの市場情報を売りの場合は価格で昇順にソート(買いは降順)
4:ステーション単位で情報を分割
5:自分のステーションの注文と4番の該当するステーション情報を照らし合わせ
6:注文が一件であれば競合無しの判断なので異常無し、9番へ
 ※自前で出した同ステーション同アイテムの注文が一件であることが前提
7:価格順にならんでるので最初に抽出した注文が自分の注文であれば問題なし、9番へ
 同価格で出されてる注文が複数出たら8へ
8:ここまで到達したらevecentralの注文情報を精査
 他人の注文が優先状態であることが確定したら警告表示
9:2に戻る(1の注文を全て検査してたらアプリ終了)
-----------------------------------

ここまで書いて売り注文の時はいいけど
買い注文だったとき範囲指定で蹴落とされてるときどうすんのとか気づいた、どうすんの!
このロジックだと同ステーションでの競合しか見れないw
でもこの遠隔買い付け注文、いわゆる最大範囲がリージョン全体ってやつじゃあリージョンでわけりゃいいのかーって一瞬思ったけど
リージョンのはじっこで10Jまで買い付けるとかいったらリージョン外でもOKなんかなどうなんかな
でもEVEの注文検索ってリージョン単位だからリージョンをまたぐ買い付けはできないと思いたい

初手からここまで考慮したものを作るのはテストがめんどくさいので(基本めんどくさい人です)
上に書いたようなロジックでやってみましょー
つづく
posted by Misonikomin at 15:26| Comment(0) | TrackBack(0) | EVE開発 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。