ラベル Greasemonkey の投稿を表示しています。 すべての投稿を表示
ラベル Greasemonkey の投稿を表示しています。 すべての投稿を表示

2013年9月7日土曜日

戦国IXAとIXA用ツール開発の変遷 3

 JSActionsを使っていたのは2010年の春頃からのことだったと記憶している。

3.GreaseMonkeyとの出会い

 JSActionsを使って色々なスクリプトを作っていた。IXAの地図上で、敵拠点の城主のプロフィールや合戦報告書を表示するのは出来たのだが、自分の最短の位置にある拠点からの距離を表示するのは地図上から出来なかった。

 Javascriptに対してはかなり理解が深まったのだが、HTMLやスタイルシート(CSS)など、WEBに関する知識に疎かったため、どうすることも出来なく、何とかしようと試行錯誤はしていた。
 FireFoxのアドオンはどうだろうかと試そうとしたり。結局いろいろ大変そうなので諦めたが…。

 そんなときWebでGreaseMonkeyの記述を見て、調べてみると、特定のページに対して、HTMLコードを操作して、特別な事を仕込む事が簡単に出来るらしいという事が分かった。

 試してみて、JSActionsのように手軽にスクリプトが組み込めるし、ボタンを表示させそこからスクリプトの起動するようなことも出来るので、いろいろ応用が利く事が分かった。

 同盟情報から同盟員の一覧を、リンクを辿った情報と一緒にまとめて、Excelに貼り付けられるように加工したりするスクリプトを作ったりした。

 こんな中で「どこ近」が作られた、ある地点に陣を作成しようとしたり、同じ同盟員の拠点に加勢を送ったりするときに、自分のどの拠点が一番近いのかを表示するスクリプトだ。

 最短の距離から部隊を送り出した後で、より近い拠点があったことが分かり残念に思った事が何度もあったので、これを無くしたいという思いから生まれた。

 「どこ近」のスクリプトがやっているのは、ある特定の座標において、自分のプロフィール画面から、自分の拠点の座標を拾い集めたものと、距離を計算して、最も近い拠点を表示することである。実際には、近い順に3箇所、ただし2番目以降は、もっとも近い地点と比べて、そこそこ近いものがある場合だけ表示される。距離10と距離50の拠点がある場合は、ひとつしか表示されない。最短拠点の距離と25%遠いところまでが表示される可能性がある仕様だったと思う。(ソース確認しろよw)

 こんな風にツールを使っていたが、座標を拾ってくる部分などは、HTMLソースをRegEx(正規表現)関数を使って抜き出す自前プログラムで行っていた。この時はまだjQueryは知らなかったのである。

2012年12月1日土曜日

戦国IXAとIXA用ツール開発の変遷 2

>2010年の夏から戦国IXAというブラウザゲームをやっていて、ちょっと不便なことの解消とか、集計とか、プチ便利機能とかをJavascriptでプログラムしてみたりしている。
>そこで自分の戦国IXAとIXA用ツール開発の変遷をちょっと述懐してみる。
1年振りの続き更新w
2.JSActionsとの出会い
 1でのデータ収集は結局Excelに取り込んで、ある地点へは自分のどの拠点が一番近いのかを調べたりするのによく使った。敵拠点の分布を調べたりとかも使えるのだが、刻一刻と変化するために、そんなには役に立たず。陣張りのときに効率よくするためによく使っていた。
 IXAの地図画面で、敵拠点を右クリックして、簡単に情報を見られたらいいなと思って、いろいろと調べていたら、JSActionsというアドオンが使えそうだと確信して、簡単なスクリプトを書いて試したりしてみた。この時点ではJavaScriptについては、Webのページに埋め込んで、カーソルを持っていくと変化させたりする言語くらいの認識しか無かったw
 いろいろ勉強してみると結構本格的なこともできそうなのだが、デバッグは大変そうなので、やはり簡単なものものを作るのが無難かなという印象だった。JSActionsを使わなくてもできるのだろうが、そのためにはHTMLやらWEB全般にもっと深い理解が必要と思われたので、自前のスまクリプトを起動させてくれるのにJSActionsは非常に便利だった。ブラウザの表示の仕組みをそんなに深く調べなくてもスクリプトが作れたのだから。
 地図上の拠点を指して右クリックで、自分の拠点からの最短候補を(アラート)表示したり、城主のプロフィール・合戦報告書などのURLを開くスクリプトなどを次々と試行錯誤しながらも作れたのである。

2011年8月18日木曜日

Google Chrome と Firefox Greasemonkey の互換性

Firefox Greasemonkey のスクリプトが Google Chrome で動くというけれど、スクリプトのヘッダー部分にある @include を @match にするというだけではダメだったりする。

@include …/troop.php#ptop
というURLに対してスクリプトを動かしたいのだが
Firefox + Greasemonkey では動作するが、Chromeじゃ動かない。
@match …/troop.php#ptop
とするだけではマッチしないようなのだ。

でしょうがないので
@match …/troop.php*
としておいて、スクリプト内で
if (document.URL.match('#ptop$')) {

}
という具合にして、URLをチェックして該当する場合に実行するようにしたらOKだった。