GameSpotのRoNチート集
(2004年8月12日)GameSpotのRise of Nations: Thrones and Patriotsチート集から、以前のGameSpyのチート集に掲載されていなかったチートコマンドを紹介してみます。
研究&建設促進と無料ボーナス資源
クイックバトルまたはキャンペーンのプレイ中に、enterキーを押してチャットウィンドウを呼び出し、cheat keys onと入力してenterキーを押す。入力を終えてもなんのダイアログも表示されないが、次のボタンを押すと望みの効果を得ることができる。
| すべての資源に+1000ボーナス | ALT + F5 |
| 研究/建設/ユニット生産を即座に完成させる または選択したユニットの生産/研究にかなりのブーストをあたえる | ALT + F9 |
Snake_1501氏のスクリプトメーカー ベータ版
(2004年8月7日)RoN Heavenのフォーラムにて、Snake_1501氏が自作のScript Makerベータ版の紹介をしています。
解説
RoN Script MakerはRise of NationsとThrones and Patriotsのためのツールで、単純で直感的な動作でRoNのスクリプトを作成できるようにするためのもの。
このツールを使用するには、MSCOMCTL.OCX 6.0が必要。
機能
- RoN/T&Pで利用可能なすべてのユニット・建物・技術を簡単に無効化できる。
- くわえて、AI, 略奪ボーナス (plunder), 敵地内損耗 (attrition, T&Pのみ), コスト、建物完成ボーナス等も無効化できる。
- 略奪ボーナスの量(T&Pのみ)勝利/敗北時のメッセージを変更できる。
- 1クリックだけでゲームモードをRoNからT&Pに変更できる。
- スクリプトをBig Huge Script (bhs) 形式とリロードがしやすいネイティブファイル形式の両方で保存できる。
- プログラムで作成したすべてのスクリプトを一括して処理(削除・リネーム・セーブ)できる。
- コンパクトで直感的なグラフィカルユーザーインタフェイス。
- スクリプトをセーブしたあとは、RoNのセットアップ画面からそれを選択するだけでいい。
実装予定の機能
- ユニットと建物のデータの編集(大部分のデータはT&P用スクリプトでのみ利用可能)
- 'Scrippet'の実装。簡単に複数の動的なスクリプトをロードできるようになる。ScrippetはほかのRoNスクリプト開発者にも親しみやすい単純な形式に乗っ取っている。同梱されているNomadScout.scpを読めば、Scrippetでどのようなことが可能になるかをプレビューできる。
- 終了時にRoNを起動できるようにする(ユーザー設定)
- その他いろいろ
salamander氏の核抑制スクリプト
(2004年7月28日)RoN Oralceにて、salamander氏による核抑制スクリプトが公開されています。
スクリプトは二種類あり、Limit_Nuke_Launchは各プレイヤーが発射可能な核ミサイルの数を、Limit_Nuke_Createは各プレイヤーが作成可能な核ミサイルの数を制限します。
ランダム選択時の民族分類
(2004年7月27日)RoN Heavenのフォーラムに、ncarbtpmo氏が民族分類の調査結果を投稿しています。民族の選択ダイアログで「ランダム(攻撃タイプ)」「ランダム(防御タイプ)」「ランダム(経済発展タイプ)」を選んだとき、どの民族が選択肢として登場しうるかを調べたもの。ひとつ以上のカテゴリに分類される民族があることがわかります。
防御タイプ
- イロコイ(攻)
- マヤ
- 中国(経)
- ペルシャ(経)
- 朝鮮(経)
- インド(経)
- ロシア
攻撃タイプ
- モンゴル
- ローマ
- ラコタ
- フランス
- ドイツ(経)
- イロコイ(防)
- アステカ
- 日本
- トルコ
- バンツー
経済発展タイプ
- スペイン
- ドイツ(攻)
- インド(防)
- アメリカ
- ギリシャ
- エジプト
- 中国(防)
- インカ
- ペルシャ(防)
- イギリス
- オランダ
- ヌビア
- 朝鮮(防)
DarthVeda氏の王殺しスクリプト
(2004年7月17日)RoN Oralceにて、DarthVeda氏がAge of Empiresシリーズのゲームタイプのひとつであった王殺し (Regicide) をT&Pで再現するためのスクリプトを公開しています。スクリプトを使用すると各民族は王ユニットを1体保有した状態でゲームを開始し、王ユニットが殺された民族は即座に敗北する、というもの。マルチプレイ用のスクリプトです。
スクリプトは核有効版 (Regicide_v1.zip) と核無効版 (Regicide_no_nukes_v1.zip) にわかれています。スクリプトをインストールするには、
Rise of Nations\Thrones and Patriots\scenario\Scripts
の下に"Regicide_v1"または"Regicide_no_nukes_v1"というディレクトリを作り、書庫ファイルをその下に展開してください。マルチプレイの起動時に"out of sync"が発生する問題がありますが、これはダイアログで"yes"を選択してシナリオをリロードすることで回避できます。
T&Pスクリプト:配列と構造体を初期化するには
(2004年7月13日)RoN Oracleのフォーラムにて、Gigi氏がThrones and Patriots版のスクリプトで導入された配列と構造体の初期化の方法を説明しています。
要訳
T&Pにおいて、スクリプトに配列と構造体が導入されたが、この機能はほとんど文書化されていない。たとえば、
struct city_data {
string city_name;
int food,timber,metal,wealth;
};
...
city_data bla[] = { {"Berlin",100,100,100,100},
{"Leipzig",100,100,100,100}
};
というコードは、C++のコードとしては(stringという型を除けば)合法だが、Big Huge Scriptではコンパイラエラーになる。スクリプトで配列と構造体を初期化するにはどうしたらよいのか? 整数の配列を1から6の整数で初期化する場合を例にとって考えてみる。
// C++では有効
int array[] = {1,2,3,4,5,6};
// BHSでは動作しない
int array[] = {1,2,3,4,5,6};
int[] array = {1,2,3,4,5,6};
//BHSでは int[] foo と int foo[] 両方の宣言方法が合法
ループを使って初期化する方法も考えたが、これでは手間がかかってしまう。BHGから提供されているサンプルスクリプトを見ていて、次のようなコードを発見した。ctw_lib.bhsの193-198行目だ。
...
String list_array[];
if (list_name == "Building") {
switch(diff) {
case 1:
list_array = ["Tower", "Tower", "Tower", "Fort", "Fort", "Barracks", "Barracks", "Stable", "Stable", "Temple"];
...
この代入はC++風の宣言ではない。そこでこういうやりかたを試してみた。
//BHG -- 動いた! int array[] = [1,2,3,4,5,6];
これで配列を一行で初期化する方法はわかった。つぎの疑問は、どうやって整数型ではない、独自定義の構造体からなる配列を初期化するのか、だ。
struct city_data {
string city_name;
int food,timber,metal,wealth;
};
...
city_data bla[] = [ {"Berlin",100,100,100,100},
{"Leipzig",100,100,100,100}
];
という書きかたではやはりコンパイルエラーになる。コンパイラは {"Berlin",100,100,100,100} という書きかたがcity_data型の構造体を指していると理解できないらしい。そこで {} を [] で置き換えてみる。
struct city_data {
string city_name;
int food,timber,metal,wealth;
};
...
city_data bla[] = [ ["Berlin",100,100,100,100],
["Leipzig",100,100,100,100]
];
またエラー。"Array declaration entries must be all of the same type"(配列宣言のエントリはすべて同じ型である必要がある)と言われてしまった。[]記法は配列にのみ使用できるらしい。こういう時にコンストラクタが使用できれば楽なのだが、この言語はC++ではない。そこでこういうやりかたを試してみた。
city_data first_element; first_element.city_name = "Berlin"; first_element.food = 100; // ... 以下、second_element 等がつづく city_data bla[] = [ first_element, second_element, third_element ];
これは意図通りに動作した。コードを清潔に保つために、コンストラクタのかわりをする関数を作ってみよう。
// class city_data
struct city_data {
string city_name;
int food,timber,metal,wealth;
};
// city_data のコンストラクタ
city_data scenario make_city_data(string city_name_,int food_,int timber_,int metal_,int wealth_) {
city_data rval;
rval.city_name = city_name_;
rval.food = food_;
rval.timber = timber_;
rval.metal = metal_;
rval.wealth = wealth_;
return rval;
}
...
city_data bla[] = [
make_city_data("Berlin",100,100,100,100),
make_city_data("hoho",100,100,100,100)
];
...
trigger feed_them_all (timer_expired("feedall")){
// blaの配列を順にたどる。最初はBerlin, つぎはhoho
for( int i = 0; i < bla.length; i++)
// もし、"Berlin"や"hoho"という名前の都市が実際に存在するなら
if (city_exists(bla[i].city_name)) {
// その都市の所有者を見つけ、所有者に資源を与える
int owner =find_city_owner(bla[i].city_name);
give_good(owner,"Food",bla[i].food);
give_good(owner,"Timber",bla[i].timber);
give_good(owner,"Wealth",bla[i].wealth);
give_good(owner,"Metal",bla[i].metal);
} // end if
} // end trigger
このやりかたはうまく動作した。これで簡潔な書きかたで構造体の配列を初期化することに成功した。
Arcanjo TM氏のブラジル民族mod
(2004年7月9日)RoN Heavenにて、Arcanjo TM氏によるブラジル民族modが公開されています。ブラジルはインドの代替民族で、メスティーソの力/異種族混合の力 (the Power fo Miscegenation) を持ちます。
Jesus123氏のバイキング民族mod
(2004年7月6日)RoN Heavenにて、Jesus123氏によるバイキング民族modが公開されています。
バイキングはバンツーの代替民族として登場し、蛮族の力 (the Power of the Barbarian) を持ちます。
- +1都市上限(治政1を研究する必要あり)。都市が無料。
- 人口上限に+150%ボーナス。上限の最大値を50%まで超過できる。
- 兵舎系ユニットと市民の移動が50%高速。
- 軍事技術を研究しなくてもユニットのアップグレードをおこなうことができる。
バイキングは以下のユニークユニットを持つ。
- 奴隷/スラール (Thrall)
- 野蛮人 (Barbarian)
- 狂戦士 (Berserker)
- Jom Viking
- 長船 (Longboat)
スクリプトでユニットを民族ごとにトリガする方法
(2004年7月6日)RoN Oracleのフォーラムより。
disable_unit()を使うとユニットを無効にすることができるが、このやりかただとすべての民族が影響を受けてしまう。民族ごとに有効/無効を切り替えるには、disable_type_by_tribe(), enable_type_by_tribe()を使用する。
たとえば、ドイツ民族でランツクネヒトを無効にするには、
disable_type_by_tribe("Landsknechts","Germans");
を、ロシア民族でハザーエを有効にするには、
enable_type_by_tribe("Hussar","Russians");
を使う。
しかしHussarを"ハザーエ"と訳すのは今更ながら酷すぎる。








