卢阿!没想到
Posted
技术标签:
【中文标题】卢阿!没想到【英文标题】:Lua ! not expected 【发布时间】:2019-03-02 01:08:14 【问题描述】:错误似乎在“!self.Replace”的第一行我尝试使用时总是出错!在lua中,如果有人可以提供帮助,那就太好了。
function ENT:Think()
if ( !self.Replace ) && ( self:GetrHealth() <= 0 ) then
self.Replace = true
self.ReplaceTime = CurTime() + gMining.plugins[ "Rock Config" ].rockRespawn
self.Pos = self:GetPos()
if gMining.plugins[ "Rock Config" ].despawn then
self:SetPos( self:GetPos() + Vector( 0, 0, -300 ) )
elseif !gMining.plugins[ "Rock Config" ].despawn then
self:SetRenderMode(RENDERMODE_TRANSADDFRAMEBLEND)
if ( gMining.plugins[ "Rock Config" ].customColor == true ) then
if gMining.mineralDB[ "gMining."..self.name ].enable == true then
self:SetColor( Color( gMining.mineralDB[ "gMining."..self.name ].color.r, gMining.mineralDB[ "gMining."..self.name ].color.g, gMining.mineralDB[ "gMining."..self.name ].color.b, gMining.plugins[ "Rock Config" ].rockTransparency ) )
end
else
self:SetColor( Color( 255, 255, 255, gMining.plugins[ "Rock Config" ].rockTransparency ) )
end
self:Setvisible( 0 )
end
end;
【问题讨论】:
Lua 的逻辑非运算符是not
。没有!
运算符。
另外~=
在Lua中和其他语言中的!=
含义相同。
@luther 这被标记为 [garrys-mod]! Garry's Mod 有一个修改过的 lua 语法。这允许使用!boolean
而不是~boolean
或not boolean
GMod Lua 还允许使用//
而不是--
启动cmets
@luther 哦,我没有注意到,标签是后来添加的。
【参考方案1】:
正如已经指出的,Lua 使用关键字not
进行逻辑反转,而不是运算符!
。您发布的代码看起来像 gLua:基于 Lua 5.1 的 Lua 变体,专为 Garry 的 Mod 设计。它与纯 Lua 5.1 的不同之处在于,它实现了许多 C 风格的运算符,如 here 所列。尝试在常规 Lua 环境中运行 gLua 将不起作用,因为基本 Lua 不支持这些运算符,并且某些内置 Lua 函数在 gLua 中的行为不同。
编辑:如果在 gLua 环境中执行,问题的原因可能是使用了 entity.GetrHealth
:这不是基本函数,您是否打算使用 entity.GetHealth
?
【讨论】:
以上是关于卢阿!没想到的主要内容,如果未能解决你的问题,请参考以下文章