0

GameMaker8 Pro で MMO スタイルのゲームのターゲティング配列を設定しようとすると、プレイヤーのキャラクターの作成イベントに次のコードが含まれています。これは完全に正常に実行されています。

j = 0
i = 0
g = 0
for (i=100000; i<1000000; i+=1) if instance_exists(i) {if i.object_index = enemy         {global.ttarget[j] = i j+=1}  if i.object_index = rk or i.object_index = sage    {global.etarget[g] = i g += 1}}
global.rmtargets = j
global.etargets = g

次に、プレイヤー キャラクターのステップ イベントで次のコードを実行します。

h = 0
g = 0
i = 0
for (i=0; i<global.rmtargets; i+=1) global.target[i] = 0
global.target[0]=101139
for (h = 0; h<global.rmtargets; h+=1){hv = -1
for (g = 0; g<global.rmtargets; g+=1){if global.ttarget[g].range > hv {hv =    global.ttarget[g].range}}
global.target[h] = hv
global.ttarget[h] = -1}

次のエラー メッセージを返します。

ERROR in
action number 1
of  Step Event
for object rk:

Error in code at line 8: for (g = 0; g<global.rmtargets; g+=1){if global.ttarget[g].range > hv {hv = global.ttarget[g].range}}
at position 61: Unknown variable range

敵の作成イベントにこれがありますが:

range = 0
range = distance_to_object(rk)

そして、私はこの種の構文をいたるところで使用しました:

global.target[target].threat[s] += damage

ヘルプ?Game Maker が変数を認識しない理由はありますか?

4

4 に答える 4

0

私の推測では、プレイヤーの作成イベントとエラーが発生するステップ イベントの間に 1 つ以上の敵インスタンスが破壊された可能性があります。with() コンストラクトを使用してすべての敵を反復処理する方がより良い解決策かもしれません。これは高速であり、作業しているすべてのインスタンスが実際に存在することを確認できます。

于 2011-05-28T21:19:01.680 に答える
0

オブジェクト変数を括弧で囲んでみてください。以前、参照拡張機能からの参照に問題がありました。

(global.ttarget[g]).range

またはそれを新しい変数に保存することさえできます

for (g = 0; g<global.rmtargets; g+=1)
{
    curr_target = global.ttarget[g]
    curr_target.range
}
于 2012-10-15T07:14:54.560 に答える