こうすればAirCraft内の全データをEnemyに移行できると思います。
#module mod_AirCraft date ;mod_AirCraftは単純化して名称データのみ
#modinit str s1 ;名称定義用のイニシャライズ命令
date=s1
return
#modfunc draw ;名称を表示する命令
mes date
return
#modcfunc mdc_date ;名称データを引き出す関数
return date
#global
#module mod_Enemy AC
#modinit array a1
if vartype(AC)=5 { ;既にモジュール変数としてACが定義されていた場合、
foreach AC ;要素全てを
delmod AC.cnt ;消去する。
loop
} ;そしてACを改めて白紙にしてから、
foreach a1 ;代入要素a1の数だけ
logmes mdc_date(a1.cnt)
newmod AC,mod_AirCraft,mdc_date(a1.cnt)
loop ;ACに要素を新規代入していく。
return
#modfunc all_draw ;ACの全要素をdrawする命令
foreach AC
draw AC.cnt
loop
return
#global
repeat 20 ;20個のmod_AirCraftデータをfactorとして作成
newmod factor,mod_AirCraft,str(cnt+1)+"番目"
loop
newmod allfactor,mod_Enemy,factor ;それを一括してallfactorに代入
all_draw allfactor
ポイントは、mod_Enemy内で使用するmod_AirCraftモジュールはmod_Enemyモジュールより
先に書いておく事。mod_Enemyへの#modinitをする為にモジュールデータを返す専用の関数
(今回の場合はmdc_date)を作っておく事でしょうか。
―――――――――――――――
以下は余談です。
今回のお題ではミサイルや敵機、障害物を含む全てのユニットデータをmod_AirCraftで、
その内の敵機データのみを抽出したデータをmod_Enemyという別のモジュールで表現している
ようでしたが、そのやり方は少々まどろっこしいと思います。
敵機集団全体を表現するのであれば、普通にmod_AirCraftのモジュール変数だけで十分な
はずです。自機をAC_mine、自ミサイルをAC_minemsl、敵機をAC_enemy、敵ミサイルをAC_enemymsl
とでも表現しておけば十分でしょう。何よりこうして同じモジュールの次元にする事で、
敵機と自ミサイル、自機と敵ミサイル、自機と敵機、それぞれの衝突判定を同じ命令で
処理する事ができます。
[例α]
例えば、mod_AirCraftモジュールの変数Aと変数Bとのヒットチェックを行う関数
hitcheck(A,B) ※AとBが接触していれば1、そうでなければ0を返す
を定義できたとすれば、上の3判定は以下のソースで処理できます。
#module hitcheck_module
#deffunc all_hitcheck array a1,array a2
foreach a1
A=cnt
foreach a2
B=cnt
if hitcheck(A,B)=1 : delmod a1.A : delmod a2.B
loop
loop
return
#global
repeat
all_hitcheck AC_enemy,AC_minemsl
all_hitcheck AC_mine,AC_enemy
all_hitcheck AC_mine,AC_enemymsl
await 17
loop
[例β]
一方、敵機集団をmod_Enemy、敵ミサイル集団をmod_EnemyMsl、自機体をmod_Mine、
自ミサイル集団をmod_MineMslというように各集団毎にモジュールを変えてしまうと、
互いのヒットチェックをするスクリプトをそれぞれ作らなくてはいけなくなり、
労力が3倍になってしまいます。
(具体的にいえば[例α]のhitcheck_moduleと似た構造のスクリプトを2つ作らなくては
なりません。敵機と障害物、自機と障害物、等の新たなヒットチェックの必要が生まれた際も、
[例α]であれば
all_hitcheck AC_enemy,AC_hurdle
all_hitcheck AC_mine,AC_hurdle
と、追記するだけで良いものが、後者だとhitcheck_moduleを更にもう2つ作らなければ
なりません。)
長文になりましたが、シューティングゲームを作るのであれば、敵機集団専用モジュール
を作るより、飛行体総合モジュールで一括処理した方が楽ではないのかなという提案です。
長々と書いてしまいましたが、jiggerさんの参考になれば幸いです。