2016-03-24 22 views
-1

Bir eklenti oluşturmaya çalışıyorum ancak döndürülen oynatıcı sınıfına GetPlayer() işlevinin dışından erişemiyorum. Lua'da bir sınıf döndürme

Bu

GetPlayer Fuction geçerli:

function GetPlayer(Player_To_Find) -- This is the function we use to verify the user exists, It will return the user class if the user exists 
    LOG("Finding " .. Player_To_Find) --False if they do not exist 
    local Found = false 
    local FindPlayer = function(TargetPlayer) 
     if (TargetPlayer:GetName() == Player_To_Find) then 
      Found = true 
      print("Found " .. TargetPlayer:GetName()) 
      return TargetPlayer 

     end 
    end 
    cRoot:Get():FindAndDoWithPlayer(Player_To_Find, FindPlayer) 
    if Found == true then return TargetPlayer else return false end 
end 

bu pasajı kullanarak döndürdü sonra TargetPlayer sınıf aramak çalışırsanız:

:

TargetPlayer=GetPlayer(Target) 
if TargetPlayer ~= false then 
    LOG(TargetPlayer:GetName()) 

Bu hata ile başarısız olur

attempt to index global 'TargetPlayer' (a nil value) 

Herkes bana doğru yönde işaret edebilir, Beni uzun zaman aldı ve boş çıktım.

+0

Tam olarak ne için bir eklenti? –

cevap

2

TargetPlayer parametresi yalnızca işlev gövdesinde kapsam dahilindedir. GetPlayer'un son satırındaki TargetPlayer, muhtemelen var olmayan ve dolayısıyla nil olan bir global değişkeni ifade eder.

, geri dönüşü, GetPlayer işlevinde yerel değişken tanımlayıp FindPlayer fonksiyonun gövdesinde ayarlayın ve oyuncu bulunamazsa eğer ayrıca false döndürmez GetPlayer (ait sonunda iade nil, bu da anlamıyla "hiçbir şey" anlamına gelir.

+0

Çok teşekkür ederim! Bunu özlediğime inanamıyorum. – AB49K

İlgili konular