2012-07-30 1 views
1

이 일부 사소한해야하지만 난 그것을 얻을하지 마십시오의루아 위치/테이블?

if Message == "!kanebot" then 
    pos = {} 
    pObj = Get_GameObj(pID) 
    pos = Get_Position(pObj) 
    pos2:AssignX(pos2:GetX()+ 4*math.cos(Get_Facing(Get_GameObj(pID))*(math.pi/180))) 
    pos2:AssignY(pos2:GetY()+ 4*math.cos(Get_Facing(Get_GameObj(pID))*(math.pi/180))) 
    pos2:AssignZ(pos2:GetZ()+ .3) 
    reinf = Create_Object("Nod_Kane", pos) 
    Attach_Script_Once(reinf, "M01_Hunt_The_Player") 
    Attach_Script_Once(reinf, "M00_No_Falling_Damage_DME") 
    InputConsole("%s has bought a kanebot.", Get_Player_Name_By_ID(pID)) 
end 

오류입니다 제공 : 인덱스 글로벌 'POS2'(nil의 값)

어떤 아이디어를 시도?

+0

당신은 더 나은 답을 찾을 것 당신은 더 많은 경험을 가진 LUA를 사용하고 있습니다. 플러스 나는 누군가가 전에 Renegade FDS 플러그인으로 작업 한 사람들 외에 당신의 이야기 또는 어떻게이 물건이 여기에서 작동하는지 이해할 것입니다. – tcables

+0

또한 Daniel은 Set_Facing과 3 가지 명령을 추가하여 4 * math.cos 작업을 수행하는 대신 100x를 쉽게 수행 할 수 있도록했습니다. (Lua plugin v5와 Tiberian Technologies 패치도 있습니다.) – tcables

+0

그들은 모두 유효한 포인트이지만, 여전히 루아를 사용하는 사람은 거의 없으며지도를 제게 줄 수 있습니다. 어쨌든 아래의 진흙 반응은 저에게 완벽하게 작용했습니다. Face가 오히려 무관하기 때문에 Set_Facing을 사용하지 않아도됩니다. 새로운 TT 패치 표준을 준수하기 위해 더 이상 사용되지 않는 코드를 정리하고 있습니다. – Talisman

답변

3

변수가 pos 인 경우 위치는 pos2입니다. pos2은 초기화되지 않으므로 인덱스 할 때 (pos2:blah) 인덱스 nil에 대한 오류가 발생합니다.

사이드 노트 : pos 두 줄을 덮어 쓰기 때문에 pos = {} 줄이 완전히 불필요합니다. 또한 이러한 변수의 대부분은 로컬로 만들어야하며, 이는 더 빠르며 전역 네임 스페이스를 오염시키지 않아야합니다.

코드 및/또는 사용하고있는 API에 대해 아무것도 모르면서

마이너 리팩토링 : 당신이 플러그인을 내장 명으로, 배신자 포럼에이 질문을하면

if Message == "!kanebot" then 
    local gameobj = Get_GameObj(pID) 
    local pos = Get_Position(gameobj) 
    pos:AssignX(pos:GetX()+ 4*math.cos(Get_Facing(getobj)*(math.pi/180))) 
    pos:AssignY(pos:GetY()+ 4*math.cos(Get_Facing(getobj)*(math.pi/180))) 
    pos:AssignZ(pos:GetZ()+ .3) 
    local reinf = Create_Object("Nod_Kane", pos) 
    Attach_Script_Once(reinf, "M01_Hunt_The_Player") 
    Attach_Script_Once(reinf, "M00_No_Falling_Damage_DME") 
    InputConsole("%s has bought a kanebot.", Get_Player_Name_By_ID(pID)) 
end 
+0

고마워,이 자리에 있었어! :) – Talisman