Added input checking to task setup.

master
Nathan Salapat 2021-02-17 08:14:23 -06:00
parent c091ef0d4e
commit c782e9be6e
8 changed files with 63 additions and 29 deletions

View File

@ -21,7 +21,7 @@ function lobby.no_drop(itemstack, dropper, pos)
end
function lobby.is_integer(input)
number = tonumber(input)
local number = tonumber(input)
if number then
if math.floor(number) == number then
return true

Binary file not shown.

Binary file not shown.

View File

@ -44,13 +44,17 @@ minetest.register_node('tasks:code_setup', {
if not fields.input or fields.input == "" then
return
end
local input_text = fields.input:split(', ')
meta:set_string('xp', input_text[1])
meta:set_string('timer', input_text[2])
meta:set_string('infotext', input_text[3])
meta:set_string('formspec', code_formspec_answer(pos))
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'tasks:code_1', param2 = node.param2})
if tasks.valid_input(fields.input) then
local input_text = fields.input:split(', ')
meta:set_string('xp', input_text[1])
meta:set_string('timer', input_text[2])
meta:set_string('infotext', input_text[3])
meta:set_string('formspec', code_formspec_answer(pos))
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'tasks:code_1', param2 = node.param2})
else
minetest.chat_send_player(sender:get_player_name(), 'Double check your formatting please.')
end
end
end,
})

View File

@ -38,13 +38,17 @@ minetest.register_node('tasks:engine_0_setup',{
if not fields.input or fields.input == "" then
return
end
local node = minetest.get_node(pos)
local inv = meta:get_inventory()
meta:set_string('xp', fields.input)
inv:set_size('part', 1)
meta:set_string('infotext', 'Arc Reactor')
meta:set_string('formspec', formspec_good)
minetest.swap_node(pos, {name = 'tasks:engine_0_on', param2 = node.param2})
if tasks.is_integer(fields.input) then
local node = minetest.get_node(pos)
local inv = meta:get_inventory()
meta:set_string('xp', fields.input)
inv:set_size('part', 1)
meta:set_string('infotext', 'Arc Reactor')
meta:set_string('formspec', formspec_good)
minetest.swap_node(pos, {name = 'tasks:engine_0_on', param2 = node.param2})
else
minetest.chat_send_player(sender:get_player_name(), 'Integers only please.')
end
end
end,
})

View File

@ -38,13 +38,17 @@ minetest.register_node('tasks:engine_1_setup',{
if not fields.input or fields.input == "" then
return
end
local node = minetest.get_node(pos)
local inv = meta:get_inventory()
meta:set_string('xp', fields.input)
inv:set_size('part', 1)
meta:set_string('infotext', 'Plasma Accelerator')
meta:set_string('formspec', formspec_good)
minetest.swap_node(pos, {name = 'tasks:engine_1_on', param2 = node.param2})
if tasks.is_integer(fields.input) then
local node = minetest.get_node(pos)
local inv = meta:get_inventory()
meta:set_string('xp', fields.input)
inv:set_size('part', 1)
meta:set_string('infotext', 'Plasma Accelerator')
meta:set_string('formspec', formspec_good)
minetest.swap_node(pos, {name = 'tasks:engine_1_on', param2 = node.param2})
else
minetest.chat_send_player(sender:get_player_name(), 'Integers only please.')
end
end
end,
})

View File

@ -21,13 +21,17 @@ minetest.register_node('tasks:example_setup', { --This is the node that can be p
if not fields.input or fields.input == "" then
return
end
local input_text = fields.input:split(', ')
meta:set_string('xp', input_text[1])
meta:set_string('timer', input_text[2])
meta:set_string('infotext', input_text[3])
meta:set_string('formspec', '')
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'tasks:example_1', param2 = node.param2}) --Swap to the active node.
if tasks.valid_input(fields.input) then
local input_text = fields.input:split(', ')
meta:set_string('xp', input_text[1])
meta:set_string('timer', input_text[2])
meta:set_string('infotext', input_text[3])
meta:set_string('formspec', '')
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name = 'tasks:example_1', param2 = node.param2}) --Swap to the active node.
else
minetest.chat_send_player(sender:get_player_name(), 'Double check your formatting please.')
end
end
end,
})

View File

@ -56,6 +56,24 @@ function tasks.only_add_xp(xp, name) -- This function only adds XP, you are resp
end
end
function tasks.is_integer(input)
local number = tonumber(input)
if number then
if math.floor(number) == number then
return true
end
end
end
function tasks.valid_input(string)
local variables = string:split(', ')
local xp = variables[1]
local timer = variables[2]
if tasks.is_integer(xp) and tasks.is_integer(timer) then
return true
end
end
tasks.formspec_configuration =
'size[6,3]'..
'label[.5,.25;Please enter data in this format: \nXP, Timer_Duration, Task_name]'..