Monopoly City Streetsの機能を拡張する

残念ながら、MCSの開発者は、マウスを数回クリックするだけで、多数の建物がある通りを作る可能性を提供していません。 しかし、ゲームはJSで記述されているため、小さなブックマークレットを書くことを妨げるものは何もありません。これにより、必要な機能を追加できます。



すべてのMCSコードは、ファイルmonopoly.1255614067.jsにあります。 firebugを使用して建物を購入するプロセスで何が起こるかを見ると、MCS.BUILD.showLocations()[利用可能な場所のマーカーを表示する]とMCS.BUILD.buyBuilding()[実際には建物を購入する]の2つの関数が使用されていることがわかります]。 考えた後、私は次のコードを得ました:

if typeof MCS == "undefined" {

alert 「ブックマークレットは独占ページでのみ呼び出す必要があります」 ;

投げる '' ;

}

var buildingType = null ;

var player = MCS。 getPlayerData ;

if player == null {

alert 「呼び出す前にログインする必要があります」 ;

投げる '' ;

}

var streetId = MCS。 ストリートgetStreetData id ;

var streetData = MCS。 ストリートgetStreetData データ ;

if streetId == null {

alert '電話する前に、通りを選択する必要があります' ;

投げる '' ;

} else if streetData。o != player。nickname {

アラート 「電話をかける前に通りを選択する必要があります」 ;

投げる '' ;

}

var locations = new Array ;

var builtCnt = 0 ;

var buildLimit = 0 ;

関数購入 {

if builtCnt < buildLimit {

buyBuilding ロケーション[ 0 ] ;

MCS。 ステータスバー 再描画 ;

getLocations ;

setTimeout 購入 250 ;

} else {

完了 ;

}

}

機能完了

{

MCS。 ストリートshow streetId null false false ;

MCS。 読み込み中 hide ;

alert 'ビルを構築:' + builtCnt + 'pcs。' ;

}

関数 getLocations

{

locations = new Array ;

$。 ajax {

url "/ build / getlocations"

キャッシュ false

データ {

id streetId

タイプ buildingType

}

dataType "json"

非同期 false

成功 関数 データ ステータス {

$。 data function foo point {

if point {

場所。 push foo ;

}

} ;

}

} ;

}

関数 buyBuilding ロケーション

{

$。 ajax {

url "/ negotiate / buybuilding"

タイプ "post"

データ {

ニックネームプレーヤー。 ニックネーム

ハッシュプレーヤー。 ハッシュ

id streetId

タイプ buildingType

loc 場所

}

dataType "json"

非同期 false

成功 関数 データ ステータス {

プレーヤー。 バランス -= MCS。 建物 [ buildingType ]価格

builtCnt ++;

}

} ;

MCS。 トラック ビュー {

ページ "build"

セクション "build"

street streetData。 n

streetData。 cy

地域 streetData。

building_type buildingType

アクティビティ 「プロパティを構築する」

MCS。 建物 [ buildingType ]価格

} ;

}

buildingType = prompt '建物識別子を入力してください。使用可能なタイプのリストは、「?」' '?'を 入力することで見つけることができます ;

if buildingType != null {

if buildingType == '?' {

var string = '' ;

for i in MCS。building {

if isNaN MCS.buildings [ i ] .effect )) {

string = string + "Identifier:" + i + "、name:" + MCS。 LANG building [ "building" + i ] + "、cost:" + MCS。 建物 [ i ]価格 * 1000 + " \ n " ;

}

}

アラート 文字列 ;

} else if typeof MCS。building [ buildingType ] == "undefined" || isNaN MCS。building [ buildingType ] 。effect {

alert "指定された無効な識別子" ;

} else {

var count = Math。 floor プレーヤー。 残高 / MCS。 建物 [ buildingType ] .price ;

if count > 0 {

getLocations ;

var minCnt =数学。 min カウントロケーション 長さ ;

if minCnt == 0 {

警告 「通りには、このタイプの建物のための場所はありません」 ;

} else {

buildLimit = minCnt ;

if 確認 '今すぐ家の量を設定しよう' + minCnt + 'pcs。制限を変更する場合(小さい側のみ)-[キャンセル]をクリックします' {

buildLimit = prompt 'いくつの建物を建てるべきですか?' minCnt ;

if buildLimit == null {

投げる '' ;

}

if isNaN buildLimit || buildLimit > minCnt || buildLimit < 0 {

alert 「無効な値」 ;

投げる '' ;

}

}

MCS。 読み込み中 show ;

setTimeout 購入 250 ;

}

} else {

警告 「この建物を建てるのに十分な資金がありません」 ;

}

}

}
コードの強調表示highlight.hohli.com



作業を開始する前に、スクリプトはいくつかのチェックを実行します。MCSクラスの存在(そうでなければゲームのWebサイトに間違いなく存在します)、ユーザーの承認、現在選択されている通りもチェックされます。 次に、建物のタイプを見つけるためのリクエストが発行されます-後者のリストはゲームコードから取得されます。 プレーヤーのお金の存在と通りの無料席の空き状況をチェックします。 次に、建設する家の数を見つけて、このエキサイティングなレッスンに進みます。 ユーザーが退屈しないように-上部パネルに砂時計を表示することを忘れないでください。 そして最後に、建てられた家の数が表示されます。



このスクリプトを1行に変換するには-javascriptcompressor.comを使用します。その結果、ブックマークレットがほとんどあります-残っているのは、結果の行の先頭に「javascript:」を追加することだけです。



pastebinのブックマークレットの既製のテキスト: pastebin.mozilla.org/678433



PSボーナスとして、建物のない現在の通りの値を表示するブックマークレット: javascript:if(typeof MCS != "undefined"&&MCS.STREET.getStreetData().data)alert(MCS.STREET.getStreetData().data.p*1000);







建物のバッチ除去のためのUPDブックマークレット:

if typeof MCS == "undefined" {

alert 「ブックマークレットは独占ページでのみ呼び出す必要があります」 ;

投げる '' ;

}

var buildingType = null ;

var player = MCS。 getPlayerData ;

if player == null {

alert 「呼び出す前にログインする必要があります」 ;

投げる '' ;

}

var streetId = MCS。 ストリートgetStreetData id ;

var streetData = MCS。 ストリートgetStreetData データ ;

if streetId == null {

alert '電話する前に、通りを選択する必要があります' ;

投げる '' ;

} else if streetData。o != player。nickname {

アラート 「電話をかける前に通りを選択する必要があります」 ;

投げる '' ;

}

関数 demolish {

if removedCnt < removeCnt && buildingList。length {

$。 ajax {

url "/ negotiate / demolishbuilding"

タイプ "post"

データ {

ニックネームプレーヤー。 ニックネーム

ハッシュプレーヤー。 ハッシュ

id streetId

bid buildingList。 シフト

}

dataType "json"

非同期 false

成功 関数 {

MCS。 getPlayerData balance + = parseInt MCS。building [ removeMe ] .price / 2 ;

}

} ;

removedCnt ++;

setTimeout 破壊 500 ;

} else {

完了 ;

}

}

機能完了

{

MCS。 ストリートshow streetId null false false ;

MCS。 読み込み中 hide ;

}

var buildingTypes = new Array ;

var str = '' ;

var i ;

for i in streetData。b {

if isNaN MCS.buildings [ streetData.b [ i ] .t ] .effect )) {

if typeof buildingTypes [ streetData。b [ i ] 。t ] == "undefined" {

buildingTypes [ streetData。 b [ i ] t ] = new Array ;

buildingTypes [ streetData。 b [ i ] t ] [ 'name' ] = MCS。 LANG building [ "建物" + streetData。 b [ i ] t ] ;

buildingTypes [ streetData。 b [ i ] t ] [ 'count' ] = 1 ;

} else {

buildingTypes [ streetData。 b [ i ] t ] [ 'count' ] ++;

}

}

}

if buildingTypes。length == 0 {

警告 「選択した通りには取り壊し可能な建物はありません」 ;

投げる '' ;

}

for i in buildingTypes {

str = str + "Identifier:" + i + "、name:" + buildingTypes [ i ] [ 'name' ] + "、quantity:" + buildingTypes [ i ] [ 'count' ] + "pcs。" + " \ n " ;

}

var removeMe = prompt 「解体用の建物識別子を入力してください。通りの建物のリスト: \ n " + str ;

var buildingList = new Array ;

if removeMe != null {

if typeof buildingTypes [ removeMe ] == 'undefined' {

alert 「指定された無効な建物タイプ」 ;

投げる '' ;

}

var removeCnt = buildingTypes [ removeMe ] [ 'count' ] ;

var removedCnt = 0 ;

if confirm '建物の破壊を試みます' + removeCnt + 'pcs。数量を変更する場合(下のみ)-[キャンセル]をクリックします' {

removeCnt = prompt 「破壊する家の数を入力してください」 ;

if removeCnt == null {

投げる '' ;

}

if isNaN removeCnt || removeCnt > buildingTypes [ removeMe ] [ 'count' ] || removeCnt < 0 {

alert 「無効な値」 ;

投げる '' ;

}

}

MCS。 読み込み中 show ;

for i in streetData。b {

if streetData。b [ i ] 。t == removeMe && removedCnt < removeCnt {

buildingList。 push i ;

}

}

setTimeout 取り壊す 250 ;

}


pastebin.mozilla.org/678730



All Articles