Skip to content
Snippets Groups Projects
Commit 80aeca25 authored by rnd1's avatar rnd1
Browse files

- additional interactive buttons - with numbers - perfect to make games with

- form display and handling for robots
parent 4c169bb5
No related branches found
No related tags found
No related merge requests found
......@@ -81,12 +81,9 @@ basic_robot.commands.dig = function(name,dir)
local energy = 0;
if basic_robot.maxenergy~=0 then
energy = basic_robot.data[name].energy;
if energy > 0 then
basic_robot.data[name].energy = energy-1;
else
return false
end
local data = basic_robot.data[name];
energy = data.energy;
if energy > 0 then data.energy = energy-1 else return false end
end
local obj = basic_robot.data[name].obj;
......@@ -326,6 +323,13 @@ end
basic_robot.commands.attack = function(name, target) -- attack range 4, damage 5
local energy = 0;
if basic_robot.maxenergy~=0 then
local data = basic_robot.data[name];
energy = data.energy;
if energy > 0 then data.energy = energy-1 else return false end
end
local reach = 4;
local damage = 5;
......@@ -516,6 +520,26 @@ minetest.register_node("basic_robot:button"..R..G..B,
})
end
local register_robot_button_number = function(number,type)
minetest.register_node("basic_robot:button"..number,
{
description = "robot button",
tiles = {"robot_button".. number .. ".png"},
is_ground_content = false,
groups = {cracky=3},
on_punch = function(pos, node, player)
local name = player:get_player_name(); if name==nil then return end
local round = math.floor;
local r = 20; local ry = 2*r;
local ppos = {x=round(pos.x/r+0.5)*r,y=round(pos.y/ry+0.5)*ry+1,z=round(pos.z/r+0.5)*r};
local meta = minetest.get_meta(ppos);
local name = meta:get_string("name");
local data = basic_robot.data[name];
if data then data.keyboard = {x=pos.x,y=pos.y,z=pos.z, puncher = player:get_player_name(), type = type} end
end
})
end
register_robot_button("FF","FF","FF",1);
register_robot_button("80","80","80",2);
register_robot_button("FF","80","80",3);
......@@ -523,6 +547,8 @@ register_robot_button("80","FF","80",4);
register_robot_button("80","80","FF",5);
register_robot_button("FF","FF","80",6);
for i = 0,9 do register_robot_button_number(i,i+7) end
-- interactive button for robot: place robot on top of protector to intercept events
......@@ -559,6 +585,8 @@ basic_robot.commands.keyboard = {
nodename = "basic_robot:button8080FF";
elseif type == 6 then
nodename = "basic_robot:buttonFFFF80";
elseif type>=7 then
nodename = "basic_robot:button"..(type-7);
end
minetest.swap_node(pos, {name = nodename})
......@@ -610,4 +638,19 @@ basic_robot.commands.craft = function(item, name)
inv:add_item("main",ItemStack(item))
return true
end
\ No newline at end of file
end
--FORMS
basic_robot.commands.show_form = function(name, playername, form)
minetest.show_formspec(playername, "robot_form".. name, form)
end
-- handle robots receiving fields
minetest.register_on_player_receive_fields(function(player, formname, fields)
if not string.sub(formname,1,10) == "robot_form" then return end
local name = string.sub(formname,11); -- robot name
if not basic_robot.data[name] then return end
basic_robot.data[name].read_form = fields;
basic_robot.data[name].form_sender = player:get_player_name() or "";
end)
\ No newline at end of file
......@@ -148,6 +148,18 @@ function getSandboxEnv (name)
return sender,mail
end,
read_form = function()
local fields = basic_robot.data[name].read_form;
local sender = basic_robot.data[name].form_sender;
basic_robot.data[name].read_form = nil;
basic_robot.data[name].form_sender = nil;
return sender,fields
end,
show_form = function(playername, form)
commands.show_form(name, playername, form)
end,
send_mail = function(target,mail)
if not basic_robot.data[target] then return false end
basic_robot.data[target].listen_mail = mail;
......
textures/robot_button0.png

167 B

textures/robot_button1.png

153 B

textures/robot_button2.png

173 B

textures/robot_button3.png

226 B

textures/robot_button4.png

219 B

textures/robot_button5.png

166 B

textures/robot_button6.png

218 B

textures/robot_button7.png

169 B

textures/robot_button8.png

164 B

textures/robot_button9.png

225 B

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment