PowerScore

MOD/PowerScore
Last-modified: 2009-04-16 18:44:22

MOD/PowerScore †

軍事ポイントをスコアの横に表示させます。
F9のグラフで確認できるものですが、自分はついつい内政志向になってしまい、気づいたら軍事力に大差を付けられて宣戦されて(´・ω・`)てなことになりがちのため作成してみました。
日本語版で確認していますが、英語版でも動くはず。

 

変更方法 †

C:\Program Files\CYBERFRONT\Sid Meier's Civilization 4(J)\Assets\Python\Screens\CvMainInterface.py

\My Documents\My Games\Sid Meier's Civilization 4(J)\CustomAssets\python\screens
にコピーします。

既にこのファイルがコピーされている場合(Attitude Iconsなど、他のMODを入れている場合)は、それを開いて下さい。

CvMainInterface.pyの2590行目あたり(Attitude Iconsでの追加部分の直前)

								if (not CyInterface().isFlashingPlayer(ePlayer) or CyInterface().shouldFlash(ePlayer)):
									if (ePlayer == gc.getGame().getActivePlayer()):
										szTempBuffer = u"%d: [<color=%d,%d,%d,%d>%s</color>]" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPlayerTextColorR(), gc.getPlayer(ePlayer).getPlayerTextColorG(), gc.getPlayer(ePlayer).getPlayerTextColorB(), gc.getPlayer(ePlayer).getPlayerTextColorA(), gc.getPlayer(ePlayer).getName())
									else:
										szTempBuffer = u"%d: <color=%d,%d,%d,%d>%s</color>" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPlayerTextColorR(), gc.getPlayer(ePlayer).getPlayerTextColorG(), gc.getPlayer(ePlayer).getPlayerTextColorB(), gc.getPlayer(ePlayer).getPlayerTextColorA(), gc.getPlayer(ePlayer).getName())
								else:
									szTempBuffer = u"%d: %s" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getName())

この部分を

								if (not CyInterface().isFlashingPlayer(ePlayer) or CyInterface().shouldFlash(ePlayer)):
									if (ePlayer == gc.getGame().getActivePlayer()):
										szTempBuffer = u"%d/%d: [<color=%d,%d,%d,%d>%s</color>]" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPower(), gc.getPlayer(ePlayer).getPlayerTextColorR(), gc.getPlayer(ePlayer).getPlayerTextColorG(), gc.getPlayer(ePlayer).getPlayerTextColorB(), gc.getPlayer(ePlayer).getPlayerTextColorA(), gc.getPlayer(ePlayer).getName())
									else:
										szTempBuffer = u"%d/%d: <color=%d,%d,%d,%d>%s</color>" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPower(), gc.getPlayer(ePlayer).getPlayerTextColorR(), gc.getPlayer(ePlayer).getPlayerTextColorG(), gc.getPlayer(ePlayer).getPlayerTextColorB(), gc.getPlayer(ePlayer).getPlayerTextColorA(), gc.getPlayer(ePlayer).getName())
								else:
									szTempBuffer = u"%d/%d: %s" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPower(), gc.getPlayer(ePlayer).getName())

と書き換えます。
TABの数を間違えないように注意してください。

ちなみに、

szTempBuffer = u"%d/%d~

の部分(3箇所)を

szTempBuffer = u"%d(%d)~

とすれば、「スコア(軍事力)」と、括弧内に表示されます。
お好みに合わせて修正してみてください。

 

Warlordsの場合 &dagger;

C:\Program Files\CYBERFRONT\Sid Meier's Civilization 4(J)\Assets\Python\Screens\CvMainInterface.py

C:\Program Files\Firaxis Games\Sid Meier's Civilization 4\Warlords\Assets\Python\Screens\CvMainInterface.py

\My Documents\My Games\Sid Meier's Civilization 4(J)\CustomAssets\python\screens

\My Documents\My Games\Warlords(J)\CustomAssets\python\screens
に変わりますが、それ以外は同じです。

 

Beyond the Swordの場合 &dagger;

BtSではシステムが変更され、諜報ポイントが足りないと軍事力グラフも確認できないようになりました。
なので条件を満たしている時のみ軍事力が表示されるようにします。
フォルダ名は「~\Beyond the Sword(J)\」になりますので適宜読み替えて下さい。

										if (not CyInterface().isFlashingPlayer(ePlayer) or CyInterface().shouldFlash(ePlayer)):
											if (ePlayer == gc.getGame().getActivePlayer()):
												szTempBuffer = u"%d/%d: [<color=%d,%d,%d,%d>%s</color>]" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPower(), gc.getPlayer(ePlayer).getPlayerTextColorR(), gc.getPlayer(ePlayer).getPlayerTextColorG(), gc.getPlayer(ePlayer).getPlayerTextColorB(), gc.getPlayer(ePlayer).getPlayerTextColorA(), gc.getPlayer(ePlayer).getName())
											else:
												szTempBuffer = u"%d/" % gc.getGame().getPlayerScore(ePlayer)
												bEspionageCanSeePower = false
												for iMissionLoop in range(gc.getNumEspionageMissionInfos()):
													if (gc.getEspionageMissionInfo(iMissionLoop).isSeeDemographics()):
														bEspionageCanSeePower = gc.getPlayer(gc.getGame().getActivePlayer()).canDoEspionageMission(iMissionLoop, ePlayer, CyMap().plot(-1,-1), -1)
												if ( bEspionageCanSeePower ):
													szTempBuffer = szTempBuffer + u"%d" % gc.getPlayer(ePlayer).getPower()
												else:
													szTempBuffer = szTempBuffer + u"??";
												szTempBuffer = szTempBuffer + u": <color=%d,%d,%d,%d>%s</color>" %(gc.getPlayer(ePlayer).getPlayerTextColorR(), gc.getPlayer(ePlayer).getPlayerTextColorG(), gc.getPlayer(ePlayer).getPlayerTextColorB(), gc.getPlayer(ePlayer).getPlayerTextColorA(), gc.getPlayer(ePlayer).getName())
										else:
											szTempBuffer = u"%d/%d: %s" %(gc.getGame().getPlayerScore(ePlayer), gc.getPlayer(ePlayer).getPower(), gc.getPlayer(ePlayer).getName())

常時表示する場合 &dagger;

諜報システムを否定することになるのでちょっと反則ですが、従来通りの常時表示にもできます。
無印/WLと同様に書き換えたあと、各行にタブを2つ追加して桁を合わせれば動きます。