小ネタ
Age of Empires IV Mod Workshop
勝敗を決める
Core_SetPlayerVictorious/Core_SetPlayerDefeated を使う
これは新しく Mod 作った時の example code にある
注意点としては、Player が負けて AI が生き残っているような場合を作ると概要が開けず待ちぼうけをくらうことになる
なので、Player が残っていない時点で AI の勝敗も決めておくとよさそう
なお、勝者なしの場合は Core_WinnerlessGameOver を使用する
あと Defeated が呼び出されると Core_IsPlayerEliminated が変わり勝敗が判定できる
勝利条件にもよると思うので変わらなければ Player_IsAlive とかも見るとよさそう
Unit を作成・配置する
UnitEntry_DeploySquads を使う
これも example の通り
もしまだ読み込まれていない Unit (時代が今よりも先, 他国の固有, etc) の場合は、豆腐になるので読み込む必要がある
これには Squad_Precache を使う
第 1 引数は Deploy に渡している Blueprint, 第 3 引数は PlayerID
ここでいう PlayerID は integer ではない、Player_GetID で取得できる値は integer なので注意
他の引数は空でも良い (0 あるいは "")
読み込みが完了したことを検知するには GE_EntityPrecached を使用する、Global Event については下で
Unit の一覧は Content Editor 下部のオブジェクトブラウザから templates > ebps > races 以下を見ればだいたいわかる
Unit の suffix (人種コード)
Player_GetRaceName で得られる人種名は full name なので変換が必要
Race name |
Race code |
abbasid |
abb |
chinese |
chi |
english |
eng |
french |
fre |
hre |
hre |
mongol |
mon |
rus |
rus |
sultanate |
sul |
そのうち Util_ とかで提供されるんじゃないですかね
Unit の殺害 Event
Global Event の中でもよく使いそうな
Unit (Entity) が殺されたことを Event で取得できる
Rule_AddGlobalEvent の第 2 引数に GE_EntityKilled を渡す
function に返る context の中身は
- victimOwner
- victim
- victimSquad
- killer
など。killerOwner とかもあったかも
killer と victim が一緒だと自殺 (Player による delete)
Unit が何人残っているか
Player_GetEntityCountByUnitType を使う
この Unit type が何かというと、自分もオブジェクトブラウザから調べる方法を知らない
チューニングパックを作成すると作られる attrib/*.xml で unit を表示して
extensions > type_ext > unit_type_list の中を見ると書いてあるのが Unit type
なので、村人の場合は "villager"、軍事 Unit 全体の場合は "military"
なお、特定の Unit がどの type かを知るためには Entity_IsOfType が使用できる
Console 出力系
Debug に
- print
- Util_PrintIf
- Util_PrintTable
とりあえずまだ Beta なので Document も完全ではなく割と苦労します。頑張りましょう
いくつかデモで作ったので参考までに
github.com
github.com
github.com