2011-04-09 13 views
0
변수

가 GameMaker8 프로의 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가 변수를 인식하지 못하는 이유는 무엇입니까?

+0

http://gamedev.stackexchange.com/ –

답변

0

가장 좋은 추측은 플레이어 생성 이벤트와 오류가 발생한 단계 이벤트 사이에서 하나 이상의 적 인스턴스가 파괴 된 것입니다. 어쩌면 더 나은 해결책은 with() 구문을 사용하여 모든 적을 반복하는 것입니다. 더 빨라서 실제로 작업하고있는 모든 인스턴스가 실제로 존재하는지 확인할 수 있습니다.

0

개체 변수 주위에 대괄호를 넣으십시오. 이전에 참조 확장에서 문제가 발생했습니다.

(global.ttarget[g]).range 

심지어는 새로운 변수

for (g = 0; g<global.rmtargets; g+=1) 
{ 
    curr_target = global.ttarget[g] 
    curr_target.range 
} 
0

대신의 글로벌 사용에 저장합니다. 코드에서 변수의 각 인스턴스 앞에 다음 명령을 사용하여 초기화 할 수도 있습니다.

globalvar (variable), (variable2);

그러면 전역 변수없이 변수를 사용할 수 있습니다. 그 앞에 :

오브젝트 rk가 적이 아니면 오브젝트 rk가 감지 할 수있는 전역 범위 변수가 없습니다. var 또는 globalvar없이 초기화 된 변수는 정의 된 객체에만 적용됩니다.