garrys mod - Lua attempt to index global 'self' error (GMod Lua script) -
garrys mod - Lua attempt to index global 'self' error (GMod Lua script) -
i have been getting next error section of code:
[error] lua/entities/cook/init.lua:58: effort index global 'self' (a nil value)1. cooked - lua/entities/cook/init.lua:58 the function starts @ line 57, , when remove line 58 (local pos = self.entity:getpos() , gives same error message line 61.
function cooked() local pos = self.entity:getpos() local roll = math.random(1, 5); if roll == 5 self.entity:emitsound("phx/explode06.wav") self.entity:remove() else local createfood = ents.create("food") createfood:setpos(pos + vector(0,10,100)) createfood:spawn() self:sendlua("gamemode:addnotify(\"you finish cooking nutrient , bundle product!\", notify_generic, 4)") end end
it's unclear self should be. error says it's global, consistent code have shown.
but, self exclusively used formal parameter function , implicit 1 @ that.
when self implicit, function called method because intent access fields in table passed self. method value held field in same table (or @ least, available such via metamethods).
the colon syntax in function definition creates method.
if cooked method create sense access self. cooked global.
you might have meant:
function sometable:cooked() -- ... -- self implicit formal parameter -- ... end how read lua statement above:
access sometable table assign "cooked" field function value created function definition.(the function definition compiled method syntax, in body, self first formal parameter, implicit.)
the method called like:
sometable:cooked() -- passes sometable self the colon syntax in field function phone call method call.
how read lua statement above:
access sometable table, index "cooked" field, call value function, passing sometable first parameter, discard result list.oddities:
the syntax methods "syntactic sugar." methods values no different other function values: a function created function definition using syntax can called using function phone call syntax. a method need not called using method phone call syntax. a non-method can called using method phone call syntax.self not reserved can used identifier is. lua garrys-mod
Comments
Post a Comment