build capable
This commit is contained in:
parent
cf5ca9e5ef
commit
97171280fb
@ -56,11 +56,10 @@ local function panel_commands()
|
|||||||
{"move_forward","move_backward","move_up","move_down"},
|
{"move_forward","move_backward","move_up","move_down"},
|
||||||
{"turn_clockwise","turn_anticlockwise","turn_random"},
|
{"turn_clockwise","turn_anticlockwise","turn_random"},
|
||||||
{"mode_dig_up","mode_dig","mode_dig_down"},
|
{"mode_dig_up","mode_dig","mode_dig_down"},
|
||||||
--{"mode_build_up","mode_build","mode_build_down"},
|
{"mode_build_up","mode_build","mode_build_down"},
|
||||||
--{"case_repeat","case_test","case_end","case_success","case_failure","case_yes","case_no" },
|
--{"case_repeat","case_test","case_end","case_success","case_failure","case_yes","case_no" },
|
||||||
--{"mode_examine","mode_pause","mode_wait"},
|
--{"mode_examine","mode_pause","mode_wait"},
|
||||||
{},
|
{},
|
||||||
{},
|
|
||||||
{"number_0","number_1","number_2","number_3","number_4"},
|
{"number_0","number_1","number_2","number_3","number_4"},
|
||||||
{"number_5","number_6","number_7","number_8","number_9"},
|
{"number_5","number_6","number_7","number_8","number_9"},
|
||||||
{"run_1","run_2","run_3","run_4","run_5","run_6"}
|
{"run_1","run_2","run_3","run_4","run_5","run_6"}
|
||||||
|
34
init.lua
34
init.lua
@ -16,7 +16,7 @@ local trashInv = minetest.create_detached_inventory(
|
|||||||
end
|
end
|
||||||
})
|
})
|
||||||
trashInv:set_size("main", 1)
|
trashInv:set_size("main", 1)
|
||||||
|
local STEPTIME = 0.3
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
-- Generate 32 bit key for formspec identification
|
-- Generate 32 bit key for formspec identification
|
||||||
-------------------------------------
|
-------------------------------------
|
||||||
@ -30,6 +30,38 @@ function vbots.get_key()
|
|||||||
return key
|
return key
|
||||||
end
|
end
|
||||||
|
|
||||||
|
vbots.bot_togglestate = function(pos,mode)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local node = minetest.get_node(pos)
|
||||||
|
local timer = minetest.get_node_timer(pos)
|
||||||
|
local newname
|
||||||
|
if not mode then
|
||||||
|
if node.name == "vbots:off" then
|
||||||
|
mode = "on"
|
||||||
|
elseif node.name == "vbots:on" then
|
||||||
|
mode = "off"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if mode == "on" then
|
||||||
|
newname = "vbots:on"
|
||||||
|
timer:start(1)
|
||||||
|
meta:set_int("PC",STEPTIME)
|
||||||
|
meta:set_int("PR",0)
|
||||||
|
meta:set_string("stack","")
|
||||||
|
elseif mode == "off" then
|
||||||
|
newname = "vbots:off"
|
||||||
|
timer:stop()
|
||||||
|
meta:set_int("PC",0)
|
||||||
|
meta:set_int("PR",0)
|
||||||
|
meta:set_string("stack","")
|
||||||
|
end
|
||||||
|
--print(node.name.." "..newname)
|
||||||
|
if newname then
|
||||||
|
minetest.swap_node(pos,{name=newname, param2=node.param2})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
dofile(vbots.modpath.."/formspec.lua")
|
dofile(vbots.modpath.."/formspec.lua")
|
||||||
dofile(vbots.modpath.."/formspec_handler.lua")
|
dofile(vbots.modpath.."/formspec_handler.lua")
|
||||||
dofile(vbots.modpath.."/register_bot.lua")
|
dofile(vbots.modpath.."/register_bot.lua")
|
||||||
|
105
register_bot.lua
105
register_bot.lua
@ -216,70 +216,31 @@ local function bot_dig(pos,digy)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
vbots.bot_togglestate = function(pos,mode)
|
local function bot_build(pos,buildy)
|
||||||
local meta = minetest.get_meta(pos)
|
|
||||||
local node = minetest.get_node(pos)
|
|
||||||
local timer = minetest.get_node_timer(pos)
|
|
||||||
local newname
|
|
||||||
if not mode then
|
|
||||||
if node.name == "vbots:off" then
|
|
||||||
mode = "on"
|
|
||||||
elseif node.name == "vbots:on" then
|
|
||||||
mode = "off"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if mode == "on" then
|
|
||||||
newname = "vbots:on"
|
|
||||||
timer:start(1)
|
|
||||||
meta:set_int("PC",STEPTIME)
|
|
||||||
meta:set_int("PR",0)
|
|
||||||
meta:set_string("stack","")
|
|
||||||
elseif mode == "off" then
|
|
||||||
newname = "vbots:off"
|
|
||||||
timer:stop()
|
|
||||||
meta:set_int("PC",0)
|
|
||||||
meta:set_int("PR",0)
|
|
||||||
meta:set_string("stack","")
|
|
||||||
end
|
|
||||||
--print(node.name.." "..newname)
|
|
||||||
if newname then
|
|
||||||
minetest.swap_node(pos,{name=newname, param2=node.param2})
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function punch_bot(pos,player)
|
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local bot_owner = meta:get_string("owner")
|
local bot_owner = meta:get_string("owner")
|
||||||
if bot_owner == player:get_player_name() then
|
local node = minetest.get_node(pos)
|
||||||
local item = player:get_wielded_item():get_name()
|
local dir = minetest.facedir_to_dir(node.param2)
|
||||||
if item == "" then
|
local inv=minetest.get_inventory({type="node", pos=pos})
|
||||||
vbots.bot_togglestate(pos)
|
local buildpos
|
||||||
elseif item == "vbots:move_forward" then
|
if buildy == 0 then
|
||||||
move_bot(pos,"f")
|
buildpos = {x = pos.x+dir.x, y = pos.y, z = pos.z+dir.z}
|
||||||
elseif item == "vbots:move_backward" then
|
else
|
||||||
move_bot(pos,"b")
|
buildpos = {x = pos.x, y = pos.y+buildy, z = pos.z}
|
||||||
elseif item == "vbots:move_up" then
|
end
|
||||||
move_bot(pos,"u")
|
if not minetest.is_protected(buildpos, bot_owner) then
|
||||||
elseif item == "vbots:move_down" then
|
local content = inv:get_list("main")
|
||||||
move_bot(pos,"d")
|
local a = 1
|
||||||
elseif item == "vbots:turn_clockwise" then
|
local found = nil
|
||||||
bot_turn_clockwise(pos)
|
while( a<57 and not found) do
|
||||||
elseif item == "vbots:turn_anticlockwise" then
|
if not content[a]:is_empty() then
|
||||||
bot_turn_anticlockwise(pos)
|
found = content[a]:get_name()
|
||||||
elseif item == "vbots:turn_random" then
|
end
|
||||||
bot_turn_random(pos)
|
a=a+1
|
||||||
elseif item == "vbots:mode_dig" then
|
end
|
||||||
bot_dig(pos,0)
|
if found then
|
||||||
elseif item == "vbots:mode_dig_down" then
|
print(found)
|
||||||
bot_dig(pos,-1)
|
minetest.set_node(buildpos,{name=found})
|
||||||
elseif item == "vbots:mode_dig_up" then
|
|
||||||
bot_dig(pos,1)
|
|
||||||
elseif item == "vbots:mode_build" then
|
|
||||||
bot_build(pos,0)
|
|
||||||
elseif item == "vbots:mode_build_down" then
|
|
||||||
bot_build(pos,-1)
|
|
||||||
elseif item == "vbots:mode_build_up" then
|
|
||||||
bot_build(pos,1)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -321,17 +282,29 @@ local function bot_parsecommand(pos,item)
|
|||||||
local PC = meta:get_int("PC")
|
local PC = meta:get_int("PC")
|
||||||
local PR = meta:get_int("PR")
|
local PR = meta:get_int("PR")
|
||||||
local R = meta:get_int("repeat")
|
local R = meta:get_int("repeat")
|
||||||
print("Pushing state...")
|
-- print("Pushing state...")
|
||||||
push_state(pos,PC,PR,R)
|
push_state(pos,PC,PR,R)
|
||||||
meta:set_int("PR", item_parts[2])
|
meta:set_int("PR", item_parts[2])
|
||||||
meta:set_int("PC", 0)
|
meta:set_int("PC", 0)
|
||||||
meta:set_int("repeat", 0)
|
meta:set_int("repeat", 0)
|
||||||
print("after update PR:"..PR..
|
-- print("after update PR:"..PR..
|
||||||
" PC:"..meta:get_int("PC")..
|
-- " PC:"..meta:get_int("PC")..
|
||||||
" R:"..meta:get_int("repeat"))
|
-- " R:"..meta:get_int("repeat"))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function punch_bot(pos,player)
|
||||||
|
local meta = minetest.get_meta(pos)
|
||||||
|
local bot_owner = meta:get_string("owner")
|
||||||
|
if bot_owner == player:get_player_name() then
|
||||||
|
local item = player:get_wielded_item():get_name()
|
||||||
|
if item == "" then
|
||||||
|
vbots.bot_togglestate(pos)
|
||||||
|
else
|
||||||
|
bot_parsecommand(pos,item)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
local function bot_handletimer(pos)
|
local function bot_handletimer(pos)
|
||||||
local inv=minetest.get_inventory({type="node", pos=pos})
|
local inv=minetest.get_inventory({type="node", pos=pos})
|
||||||
|
Loading…
x
Reference in New Issue
Block a user