I keep getting "unexpected symbol near ==" at the xray(on) == nil
Code: Select all
if
XRAY_MODE == off
then
xray(on) == nil
end
if
XRAY_MODE == on
then
xray(off) == nil
end
Code: Select all
if
XRAY_MODE == off
then
xray(on) == nil
end
if
XRAY_MODE == on
then
xray(off) == nil
end
Code: Select all
if
XRAY_MODE == off
then
xray(on) = nil
InfinityProject wrote:Can someone help?
I keep getting "unexpected symbol near ==" at the xray(on) == nil
Code: Select all
if XRAY_MODE == off then xray(on) == nil end if XRAY_MODE == on then xray(off) == nil end
I actually have gravel done and yes it does fall.Calinou wrote:Some suggestion: hide some more common blocks: dirt, grass, leaves (but not trees), sand (and desert sand/stone) and gravel (set them to an invisible node different than invisible stone, and it should revert just fine, make the invisible gravel fall).
Code: Select all
local function xray(mode)
XRAY_MODE = mode
end
minetest.register_chatcommand("xray", {
params = "<mode>",
description = "Make stone invisible.",
privs = {xray=true},
func = function(name, param)
if param == 'on' then xray(on)
minetest.chat_send_player(name, "Xray turned on.")
elseif param == 'off' then xray(off)
minetest.chat_send_player(name, "Xray turned off.")
else
minetest.chat_send_player(name, "Please enter 'on' or 'off'.")
end
end,
})
minetest.register_abm({
nodenames = {"default:stone", "xray:stone", "default:gravel", "xray:gravel"},
interval = 0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
if XRAY_MODE == on and XRAY_ON ~= nil then
if node.name == "default:stone" then
minetest.env:add_node(pos,{name="xray:stone"})
elseif node.name == "default:gravel" then
minetest.env:add_node(pos,{name="xray:gravel"})
elseif XRAY_MODE == off and XRAY_OFF ~= nil then
if node.name == "xray:stone" then
minetest.env:add_node(pos,{name="default:stone"})
elseif node.name == "xray:gravel" then
minetest.env:add_node(pos,{name="default:gravel"})
end
end
end
end
})
Code: Select all
if
XRAY_MODE == off
then
XRAY_ON = nil and
XRAY_OFF ~= nil
elseif
XRAY_MODE == on
then
XRAY_OFF = nil and
XRAY_ON ~= nil
end
local function xray_on(func)
XRAY_ON = func
end
local function xray_off(func)
XRAY_OFF = func
end
That isn't working either. You need xray(off) defined in the abm.cornernote wrote:I removed "if XRAY_MODE == 'off' then" from the elseif, and just made it an else.
If XRAY_MODE is not "on", then it has to run the off stuff now.
same gist link
Code: Select all
if param == 'on' then xray(on)
Code: Select all
if param == 'on' then xray("on")
Code: Select all
action = function(pos, node, active_object_count, active_object_count_wider)
if XRAY_MODE == on and XRAY_OFF == nil then <-- OPEN IF1
if node.name == "default:stone" then <-- OPEN IF2
minetest.env:add_node(pos,{name="xray:stone"})
elseif node.name == "default:gravel" then <-- ELSE IF2
minetest.env:add_node(pos,{name="xray:gravel"})
<-- I think you need to END here
elseif XRAY_MODE == off and XRAY_ON == nil then <-- ELSE IF2 -- i think you need an END before this
if node.name == "xray:stone" then
minetest.env:add_node(pos,{name="default:stone"})
elseif node.name == "xray:gravel" then
minetest.env:add_node(pos,{name="default:gravel"})
end
end <-- i moved this END upto the place it should be
end
end
Code: Select all
minetest.register_abm({
nodenames = {"default:stone", "xray:stone", "default:gravel", "xray:gravel"},
interval = 0,
chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider)
if XRAY_MODE == on and XRAY_OFF == nil then
if node.name == "default:stone" then
minetest.env:add_node(pos,{name="xray:stone"})
elseif node.name == "default:gravel" then
minetest.env:add_node(pos,{name="xray:gravel"})
elseif XRAY_MODE == off and XRAY_ON == nil then
if node.name == "xray:stone" then
minetest.env:add_node(pos,{name="default:stone"})
elseif node.name == "xray:gravel" then
minetest.env:add_node(pos,{name="default:gravel"})
end
end
end
end
})
Users browsing this forum: No registered users and 21 guests