ブラウザ三国志 Ajax施設建設(Ajax+jQueryサンプル)
Ajaxとか
jQueryの勉強がてら何となく作りました。実用になるかは微妙ですがサンプルとしてUpしときます。
ブラウザゲーム「
ブラウザ三国志」用のFirefoxアドオン(
Greasemonkeyスクリプト)です。都市画面での施設建設操作において、Ajaxにより裏で非同期通信させることで画面遷移をなくすというものです。

平地タイルや各施設タイルを右クリックするとメニューが表示されるので、施設未建設の場合は建設する施設を選択、建設済の場合はレベルアップする回数を選択して下さい。
当ツールからの施設建設で起こる下記の動作は、画面の一部のみを差し替えるという作りからくる制限です。
・時計のカウントダウンが止まる
・ヘッダーの資源量表示が減らない
【インストール】
Firefoxブラウザ(3.6.3以上推奨)上で、かつ
Greasemonkeyアドオン(0.8.20100408.6以上推奨)が有効にされた状態において、下記リンクをクリックして下さい。Google Chrome には対応していません。
最新版:
0.1.8
旧版(現在は動作しない):
0.1.7 0.1.6 0.1.5
また、関連して
タイマーツールについて、画面遷移がない場合でも建設完了時刻が登録されるように対応しています(Ver.1.31)。連携させたい場合は合わせてインストールして下さい(
http://blog.livedoor.jp/froo/archives/51423697.html)。
【ライセンス】
GPLです。当ツールを改変して再頒布頂いて問題ありません。
その際、このBlogにその旨のコメントと再頒布サイトからリンクを頂けると喜びます。
他にもブラ三用のツールを作ってますのでよろしかったらどうぞ。
http://blog.livedoor.jp/froo/archives/51453488.html
この記事へのトラックバックURL
http://trackback.blogsys.jp/livedoor/froo/51568772
削除施設があると、のこり時間にずれが発生します。
* 建設中 畑(レベル2)が09:23:15に完了します。(あと00:56:45)
* 建設準備中 畑(レベル3)が09:30:44に完了します。(あと00:11:03) キャンセル
* 弓兵舎(レベル1)を削除中です。10:18:05に完了します。(あと00:58:24)
ご指摘ありがとうございます。修正してUPしました。
Ver.0.1.1
カウントダウンを再設定するのが難しそうだったので、
Ajax送信後は全てのカウントダウンを止めることにしました。
再度カウントダウンを開始したい場合はページを再読み込みして下さい。
Ver.0.1.1の修正で、逆に既存の建設がなかった場合にエラーになって
くるくるアニメーションが止まらなくなっていたので再UPしました。
Ver.0.1.2
ブラウザ三国志 Ajax施設建設のみアンインストール
するにはどうしたらいいでしょうか?
少し使いにくく消したいのです
それ以外はとても重宝しております
Firefoxメニューの[ツール]-[Greasemonkey]-[ユーザスクリプト管理]から
アンインストールできます。
これを応用して糧村自動畑自動耕しなんて出来ませんかね??
176行の後ろにこれ追加でmixiでも動きますた
if(getUrlParameter(target.href, "SSID")){
query = query + "&SSID=" + getUrlParameter(target.href, "SSID")};
>>通りすがりさん
自動化は利用規約的に問題ありそうなので考えていません。
>>bさん
情報ありがとうございます。
mixi鯖の仕様変更(6月28日の広告追加)でエラーになっていたので対応しました。
Ver.0.1.3
いつも使わせてもらっています。
ここに書いていいことかどうかはわかりませんが
いままで内政の建設中の建物や畑は点滅してたはずなんですが
なぜか昨日から点滅しません。
なんででしょうかね?
それってブラウザ三国志Beyondの機能なんじゃないかなと思います。
http://www1.ocn.ne.jp/~hatt/3gkb/
>てぽ
ちゃんとどのツールがどういう動作をしているか理解して使いましょう。
作者じゃない人に疑問を投げかけるのも迷惑なはなしですので。
必要資源が表示できれば親切かもしれません
簡単に実装できるならの要望で。
このツールに改善要望出すほど使ってる人がいるとは。
私も初期の資源カツカツの時期には必要資源を参照したいと感じたことありました。
でも話のネタ的に作ったものなので成長はあまり期待しないで下さいw
いやー、これは手放せないですよw
特にmixi21とか常に重いトコは画面出来るだけ変えたくないしw
生産8000以上あって兵士も作ってないのに
なぜ資源がたまらないのか不思議だったわけですが、
これ常用してると必要資源とか見ることがなくなって、
厩13とか各10万以上必要という認識もなく上げてたら
知らないうちに枯渇してたという落ちでしたw
便利に使わせていただいています。
最近右クリックで施設のレベルUP等すると、
時間が動かないのですが、
自分だけでしょうか?
Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6 ( .NET CLR 3.5.30729; .NET4.0C)
時計のカウントダウンが止まるのは仕様です
これ便利ですねw
地図同様ありがたく使わせてもらってます。
今まで以下の右クリック拡張ツールを使っていました。
http://www.dosukoi-kissa.com/blog/?p=241
Ajax施設建設では何も施設が建っていなくても建設出来るのが
便利なところだと思います。
難点はやはり時間のカウントダウンが止まってしまうところでしょうか。
問題点?を発見したので報告します。
糧生産値の基本値が、設備の建設に必要な食糧消費量を満たしていない場合、
食糧の生産量が足りません。
先に食糧生産量を増やす必要があります。
というメッセージが出て、通常は建設することができません。
ところがAjax施設建設を使って右クリックで建設すると、なんと!できてしまいます。
同盟に加入しながら放置している鯖で、寄付ぐらいはしようと思いせっせと倉庫を作っていて気付きました。
以上です。
ご報告ありがとうございます。
これはブラ三本体サイトのバグを見つけたっぽいですねw
これを利用してチートとかはできなそうですけども。
0.1.4バグ報告
再現方法
・平地からの生産時
・複数の生産出来る物がある
・生産可能リストの途中に、材料不足で生産出来ないのが存在する
上記条件がそろうと、生産出来ないの以降が表示されません。
例)
・畑、伐採所、銅雀台、倉庫、防具工房、兵舎、宿舎
が作成出来るときに、石が少ない時
銅雀台が生産出来ないと、表示されるのが
・畑、伐採所
のみとなる。
バグ報告ありがとうございます
突然使えなくなりまして…
状況としてはFlashゲームで遊んでいた所突然PCが再起動。
その後右クリック建築が出来なくなったようです。
削除してインストールし直してみたのですが変わらず…
エラーコンソールに
エラー: Security Manager vetoed action
ソースファイル: file:///C:/〜略〜/bro3_ajax_fac.user.js 行: 4294966920
が2つ表示されているのですが意味不明な桁の大きさに…
何か原因が分かったりしないでしょうか?
Ajaxというのに必要な何かが壊れたんでしょうか…
Firefox更新したら使えなくなりまいた・・・
便利だったから使えないとものすごく不便になりました
グリモン更新したら右クリで表示しなくなりました。。上の方と同じく非常に不便^^;;
Greasemonkeyのバージョンが0.9.0にUpすると動かなくなるようです。調べてみます。
いつも使わせてもらっています。
グリモン更新してからだと思いますが、地図ツールの中域、広域も開かなくなりました。
地図ツールについては私の環境ではエラーは発生していません。
対応は難しそうなので一旦公開停止としました。
Ver.0.1.6 を公開しました。
・Greasemonkey 0.9.0 に対応
素早い対応有難うございます。
地図ツールは最新のをインストールすれば解決しました。
9/2に報告されているバグですが
ソース追ってみたら対策がわかったので報告します
Ver.0.1.6
214行あたりの
break;
を削除
216行あたりの
// 施設名を取得
facilityName = $("#workTable" + i +
" tbody:eq(0) tr:eq(1) td:eq(1) font").text();
// メニューに施設レベルアップコマンドを追加
appendLvupItem(i * 10, "建設" + facilityName, query, 1);
を
205行
query = lvupLink.href.replace(/^.*\?/, "");
の直後に移動
つまり204行
if (lvupLink) {
のルーチンに入れてしまう
お、ありがとうございます。
バグ報告あったのすっかり忘れてました^^;
ご提案の方法でもいけそうですが、
元々の意図からするとbreak→continueで行こうかと思います。
Ver.0.1.7 を公開しました。
・生産可能リストのバグ(2010年09月02日 20:47報告)を修正
資源消費なしで建設できるんですか??
できません。
画面をリロードしてみてください。更新されて減っているのが分かります。
はじめまして。浮浪プログラマさんのスクリプトを愛用しています。
建設の他に、施設の削除もできたらいいなと思ったんですが、ご検討いただけたらお願いいたします。
いつもありがとうございます^^
ご提案ありがとうございます。
以前検討したことがあったのですが、
施設の削除は建設と画面遷移が違うので、既存の実装が流用できない難点があり、
しかも私は施設の削除をほとんどしないのでコストパフォーマンスが・・・ってことで見送った経緯があります。
なるほど。ちょっと難しいのですね^^;
ご検討ありがとうございました^^
http://www.dosukoi-kissa.com/blog/?p=241
このスクリプトなんですが、右クリックメニューの制御を浮浪プログラマさんのような部分的にだけ発動させたいのですがよくわかりません。
まともにコピペできないので困っています;;
お暇があったら教えていただけると大変ありがたいです(*・ω・)*_ _))ペコリン
コピペしたいときだけGreasemonkeyを無効にするって対応はどうでしょう?
サルの顔をクリックするだけでOn/Offできます。
切り替え後にページ更新が必要ですが、たまにやるだけなら。
あるいは、コピペだけなら、範囲選択したあとに、
右クリックじゃなくてショートカットキー(Ctrl+C、Ctrl+V)を使うという手も。
4/23-25改変への対応です
地図ツールとbeyondはgnavi参照してるのをgNavに変更するだけかな(?)
セット先拠点が動作しないらしい件は
拠点1コしかないので確認出来てない
ajax建設はそう簡単にはいかず、
施設リストのページにある建設リストのhrefが
スクリプトになったためそのままでは使えません
とりあえず使えるようになったので報告
これをどこかに追加
function ssid() {
var s = $("#comment_str").attr("onKeyPress");
s=s.replace(/^.+value ,'/,"").replace("');}","");
return "&ssid=" + s;
}
以下書き換え
#function createLvupListの中(ssid追加)
query = "x=" + getUrlParameter(target.href, "x") +
"&y=" + getUrlParameter(target.href, "y") + ssid();
#function loadFacilitiesの中(引数にtarget.href追加)
// Ajaxで施設画面をロード
$("#facilityWork")
.load(target.href + " #gray02Wrapper", createFacilityList(target.href));
#function createFacilityListの中(引数受取り)
function createFacilityList(th) {
//xyだけ残して捨てる
th = th.replace(/^.*\?/, "").replace(/#.+/, "");
中略
lvupLink = $("#workTable" + i + " .lvupFacility .main a").get(0);
↓//画像アドレスを施設idとして使う
lvupLink = $("#workTable" + i + " .imgs img").get(0);
中略
//orig query = lvupLink.href.replace(/^.*\?/, "");
↓//idだけ残して捨てる
query = th + ssid() + "&id=" + lvupLink.src.replace(/^.*facility_/, "").replace(".png", "");
これだけ
だったかな多分
↑資源不足で建設不可なものも出てたのでcreateFacilityList一部変更
#function createFacilityListの中(引数受取り)
//xyだけ残して捨てる
中略
tables[i].id = "workTable" + i;//そのまま
//orig lvupLink = $("#workTable" + i + " .lvupFacility .main a").get(0);
//↑に代えて↓追加
if(!($("#workTable" + i + " .lvupFacility .main").get(0).innerHTML.match("資源が足りません"))){
//↓画像アドレスを施設idとして使う
lvupLink = $("#workTable" + i + " .imgs img").get(0);
if (lvupLink) {//そのまま
//orig query = lvupLink.href.replace(/^.*\?/, "");
//↓idだけ残して捨てる
query = th + ssid() + "&id=" + lvupLink.src.replace(/^.*facility_/, "").replace(".png", "");
ありゃー、本鯖の仕様が大分変わったみたいですね。
ご報告ありがとうございます。
本鯖で4月23日(mixi鯖は4月24日?)の仕様変更により動作しなくなったため、公開を停止しました。
とりあえず上記で手元では不自由なく使えてるぽいので
時間のあるときにスマートに書き直してくださいw
これすごい便利だったので何とか対応してもらいたいです。
修正方法聞いてもちんぷんかんぷん・・・
お忙しいかもしれませんが時間が空いた時に是非お願いします。
いつもお世話になっています。
Ajax施設建設、とても便利だったので動かなくなってしまって悲しいです・・・
お時間があればで結構ですので見ていただければ幸いです。よろしくお願いします
案外使ってる人いるようなので、今日の夜にでもbさん案を見てみます。
問題ないようなら取り込んで公開再開します。
新しく追加のssidパラメータはGETで送るとよくない気もするので、
週末にゆっくり考えてからにします。
Ver.0.1.8にバージョンアップしました。
・4月23日の本鯖メンテ(mixi鯖は4月24日)に対応
これでまた快適な日々が戻ってきます・・・!
バージョンアップありがとうございました。
都市画面リロードで時計のカウントダウンが止まるようになりました。
一応報告です
ツールでの建設直後に時計が止まるのは初期からあった制限です。
>当ツールからの施設建設で起こる下記の動作は、画面の一部のみを差し替えるという作りからくる制限です。
>・時計のカウントダウンが止まる
>・ヘッダーの資源量表示が減らない
久々に来てみたら更新されていたので嬉しいです^^
手動よく上げたりしているので重宝してました。
mixi鯖でずっと前から使っております。
アップデートありがとうございます^^
「平地タイルや各施設タイルを右クリックするとメニューが表示されるので、施設未建設の場合は建設する施設を選択」
という仕様が出来なくなっておりました。
FOX 3.6.2.8
グリモン 0.9.18
で使用しております
あれ?なんででしょうね。
私の下記環境では問題なく動いてます。
ツール: 0.1.8 (右クリックポップアップ時に右下に表示)
Firefox: 12.0
Greasemonkey: 0.9.20
下記の6に書いてあるエラーコンソールに何かメッセージが出力されてませんか。
http://blog.livedoor.jp/froo/archives/51465404.html
あれれれれ、動いているんですねなんででしょう(^^;;
エラーコンソールをみてみましたが、
エラーのほうをクリックしても何も表示されませんでした。
平地タイルをクリックすると建設できるものが表示されないのですが、
「建設済の場合はレベルアップする回数を選択」というほうの、LvUPするほうは出来ます。
インストし直してみてもダメみたいなので・・・・
FOXが古いからというのは無いのかな・・・
Greasemonkey: 0.9.20 にアップしてみます(以前使用していた地図ツール(MMCさんのツール)がGreasemonkeyを新しいのにすると使えなくなるので古いままにしてあった(^^;;)