Ergebnis 1 bis 8 von 8

Thema: Attempt to index global 'self'

  1. #1
    Avatar von DasNeo
    Registriert seit
    04.08.2013
    Ort
    Hessen

    Standard Attempt to index global 'self'

    Hailo.

    Ich versuche mich gerade an einem Printer, und möchte dort einen Countdown einbauen.

    Lua Code:
    1. function updateTime()
    2. 	local newTime = self:GetNWInt("PrTime") - 1
    3. 	if(newTime < 0) then
    4. 		self:SetNWInt("PrTime", 12)
    5. 	else	
    6. 		self:SetNWInt("PrTime", newTime)
    7. 	end
    8. 	if(!timer.Exists("timerPrTime")) then
    9. 		timer.Create("timerPrTime", 1, 0, updateTime)
    10. 	end
    11. 	print(self:GetNWInt("PrTime"))
    12. end

    Ich bekomme in der zweiten Zeile allerdings folgenden Error:
    Attempt to index global 'self' (a nil value).

    Woran liegt das? In den anderen Callbacks kann ich das self ja auch ohne Probleme benutzen?

    Grüße,
    DasNeo.

  2. #2

    Standard AW: Attempt to index global 'self'

    Gibt es self? Ist der Code in dem Entity code vom printer?
    probier mal self.Entity, fals das nicht geht. mach mal ein print(self) rein und posten den Output hier.

  3. #3
    Avatar von DasNeo
    Registriert seit
    04.08.2013
    Ort
    Hessen

    Standard AW: Attempt to index global 'self'

    Hallo gamerpaddy,

    erstmal danke für deine Antwort.
    Self sollte es ja eigentlich geben, da ich es davor schon genutzt habe. Wenn ich self printe, dann kommt "nil".
    Habe nun einfach mal self weiter gegeben (updateTime(self)) und nun zeigt es mir bei dem Print das Entity an. Die Befehle führt er trotzdem nicht aus (weil er meint, dass es immer noch nil ist).

    Der Code sieht gerade so aus:

    Lua Code:
    1. function updateTime(self)
    2. 	print(self)
    3. 	newTime = self:GetNWInt("PrTime") - 1
    4. 	if(newTime < 0) then
    5. 		self:SetNWInt("PrTime", 12)
    6. 	else	
    7. 		self:SetNWInt("PrTime", newTime)
    8. 	end
    9. 	if(!timer.Exists("timerPrTime")) then
    10. 		timer.Create("timerPrTime", 1, 0, updateTime, self)
    11. 		print(self)
    12. 	end
    13. end

    Output:
    Entity [106]...
    Entity [106]...
    nil

    Fehler:
    attempt to index local 'self' (a nil value)
    (Zeile 3)

    Woher das nil kommt weiß ich selbst nicht. :/

    Gruß,
    DasNeo.
    Geändert von DasNeo (04.08.2013 um 07:31 Uhr)

  4. #4

    Standard AW: Attempt to index global 'self'

    Der findet 2 mal das Entity, beim 3ten mal nichtmehr
    mach unter function updateTime(self)
    Code:
    if not self:IsValid() then return end

  5. #5
    Avatar von DasNeo
    Registriert seit
    04.08.2013
    Ort
    Hessen

    Standard AW: Attempt to index global 'self'

    Hallo,

    Jetzt geht der Fehler mit dem Nil von dieser Funktion aus. :/

  6. #6

    Standard AW: Attempt to index global 'self'

    dann änder sie in
    Code:
    if not self then return end
    Da self an sich nicht exisitert.. Oben hatte ich den Fehler es auf Richtigkeit zu prüfen.. nicht auf existenz

  7. #7
    Avatar von DasNeo
    Registriert seit
    04.08.2013
    Ort
    Hessen

    Standard AW: Attempt to index global 'self'

    Habe das Problem nun auf folgende weise gelöst:

    Lua Code:
    1. function updateTime(self)
    2. 	if not self then return end
    3. 	if !(self:IsValid()) then return end
    4. 	newTime = self:GetNWInt("PrTime") - 1
    5. 	self:SetNWInt("PrTime", newTime)
    6. 	print(newTime)
    7. 	timer.Simple( 1, function() updateTime(self) end )
    8. end
    Danke dir trotzdem!

    #Closerequest.
    Geändert von DasNeo (04.08.2013 um 22:37 Uhr)

  8. #8

    Standard AW: Attempt to index global 'self'

    Hallo,

    „self“ ist deshalb ein nil Wert, weil sich "self" auf das Objekt bezieht.
    Ich gehe davon aus das dein "Printer" ein Entity ist, dann müsste deine Funktion so aussehen:
    Lua Code:
    1.  
    2. function ENT:updateTime()
    3.  
    4. // Beispiel: self:GetPos()
    5.  
    6. end

Ähnliche Themen

  1. attempt to index a nil value ?
    Von Shizzo im Forum Hilfe & Support
    Antworten: 4
    Letzter Beitrag: 04.06.2009, 12:37
  2. Antworten: 4
    Letzter Beitrag: 29.05.2009, 22:17
  3. VMF fehler ("Attempt to Call field `VMF´")
    Von XCorE2 im Forum Hilfe & Support
    Antworten: 7
    Letzter Beitrag: 14.10.2008, 15:39
  4. Antworten: 3
    Letzter Beitrag: 29.08.2008, 16:46
  5. Failed to lock index buffer ....
    Von PsY im Forum Hilfe & Support
    Antworten: 0
    Letzter Beitrag: 02.04.2006, 18:51

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •