はじめてのPythonMOD

はじめてのPythonMOD 7

はじめに

  • その6のつづき
  • XMLとPythonの合わせ技・Python編

Python

残った効果「都市圏内をすべて草原化する」なんてことは
XMLではできません。Pythonで実装していきましょう。

構想

いつもどおり、「いつ・どういう条件で・何をするか」を明らかにする必要があります。
「建造物が建ったとき」「それが肥沃化の神殿であれば」まではすぐにわかります。
「都市圏内を草原化する」……都市圏内とは何でしょうか?

続きを読む →

はじめてのPythonMOD 6

はじめに

  • その5のつづき
  • XMLとPythonの合わせ技・XML編
  • あくまでPythonのチュートリアルなので、XMLの詳しい話にはあまり踏み入りません

構想

これまでは既存の動作を変更してばかりでした。
Pythonでしかできない効果を持った新しい建造物を作りましょう!
とりあえず"いつもの"を作ります。

└─kujira_fert
    └─Assets
        └─Python
            ├─KujiraEventManager.py
            └─Entrypoints
                 └─CvEventInterface.py

続きを読む →

はじめてのPythonMOD 5

はじめに

  • その4のつづき
  • リストと繰り返し
  • 他のイベント

今日のMOD

準備

例によってkujira_forというMODを作ります。
kujira_ifをフォルダごとコピーして、フォルダ名をリネームしましょう。

└─kujira_for
    └─Assets
        └─Python
            │─KujiraEventManager.py
            └─Entrypoints
                 └─CvEventInterface.py

構想

《建造物が建設されたとき、その建造物がダンならば、
 都市と同じタイル上にいる全ユニットに教練Ⅰと教練Ⅱを与えるMOD》
を作りましょう。
捕まえるイベントをいつもと変えているほか、ユニットへの操作を入れています。

バニラの建造物によくある
「この都市で生産されたユニットに教練Ⅰと教練Ⅱ」
との違いに注意してください。
今作ろうとしているのはダンが建設完了したその瞬間に
都市直上にいたユニットに影響を与える一回限りの即時的な効果です。

続きを読む →

はじめてのPythonMOD 4

はじめに

  • その3のつづき
  • その3でMODひとつしか作れなかったので応用編の別立て

もう少し先へ

前半戦たるその3では
《都市が建設されたとき、所有者の志向が防衛志向ならば、その都市のタイルに弓兵を3体即座に作成するMOD》
を作りました。少し拡張してみましょう。

「弓兵固定ではなく、時代に合わせた防衛ユニットが出るようにしたい」

と思ったとします。が、少々厄介です。
というのも、「時代に合わせた防衛ユニット」という表現があいまいなのです。
これをプログラムするには「どういう条件で」「何が起こるのか」を具体的に定めるところから始めないといけません。

続きを読む →

はじめてのPythonMOD 3

はじめに

準備

Pythonそのものの文法を確かめるのにいちいちCiv4を起動するのでは面倒なので、
小さなPythonプログラムを試せる環境を用意しましょう。
あなたのコンピュータにPythonをインストールしてもよいですし、
現代ではオンライン上で小さなプログラムを試せるサイトもいろいろあるので、
利用させてもらってもよいでしょう。
この記事ではpaiza.ioを使うことにします。
コード作成画面に入ったら、左上(緑)の言語選択ボタンからPython2を選択し、

print 1129

と入力して、「実行」ボタンを押します。
「出力」のところに1129と出ていればOKです。

続きを読む →

はじめてのPythonMOD 2

はじめに

  • その1のつづき
  • 条件分岐を使ってみる

準備

前回のkujiraMODをフォルダごとコピーしてリネーム、kujira_ifというMODを作ります。

└─kujira_if
    └─Assets
        └─Python
            │─KujiraEventManager.py
            └─Entrypoints
                 └─CvEventInterface.py

このようにフォルダごとコピーすることで、
あるMODをもとにした派生MODを作成することができます。

選り好みする図書館

前回は《都市が建設されたとき、その都市に図書館を建設するMOD》をつくりました。
しばらくプレイするとわかりますが、このMODは誰の都市か、首都かどうか、
などを区別せず、全都市に無差別に図書館を建設します。
それもそのはず、「都市が建設されたとき」以外の条件を付けていないからです。
これだと創造志向があまりにもかわいそうですし、
せめて自動建設は首都だけにして少しマイルドにできないでしょうか。

この制限を考慮に入れて、
《都市が建設されたとき、その都市が首都であれば、その都市に図書館を建設するMOD》
をつくっていきます。

続きを読む →

はじめてのPythonMOD 1

はじめに

これは何か

これは、
「PythonによるModding、やってみたいけどどこから手を付けたら…」
という声にお応えして、CvEventManager.pyを編集して
XMLだけではできないちょっと面白いことをやってみようという企画です。
XMLで文明やユニットをいじったことがあればよりすんなり入り込めます。

これは何でないか

これは、技術的な解説、PythonによるModdingに親しむ、
という視点での説明に偏重しています。
あなたが作りたいMODへの直接的なヒントやコピペですぐ動くコードは
あまりないかもしれません。

続きを読む →