Code reworked, Command-Pattern, dynamic Helpsystem added.
parent
50cbf968c0
commit
579bd03b63
|
@ -0,0 +1,44 @@
|
|||
prospector.register_help({
|
||||
Name = "help",
|
||||
Usage = ".prs help <> | <command>",
|
||||
Description = "Helpsystem for the Prospector.",
|
||||
Parameter = "<> | <command>" .. prospector.green .. "." ..
|
||||
"\n" .. prospector.orange .. "<>" ..
|
||||
prospector.green.. " - Shows you the entire help for prospector." ..
|
||||
"\n" .. prospector.orange .. "<command>" ..
|
||||
prospector.green .. " - Shows you the help for the prospector-command."
|
||||
})
|
||||
|
||||
prospector["help"] = function(parameter)
|
||||
if(parameter[2] == nil or parameter[2] == "") then
|
||||
prospector.print(prospector.green .. "Commands for the Prospector " .. prospector.orange ..
|
||||
prospector.version .. "." .. prospector.revision .. prospector.green .. ".")
|
||||
for _,value in pairs(prospector.helpsystem) do
|
||||
prospector.print(prospector.yellow .. "---------------")
|
||||
prospector.print(prospector.green .. "Name: " .. prospector.orange .. value.Name)
|
||||
prospector.print(prospector.green .. "Description: " .. prospector.yellow .. value.Description)
|
||||
prospector.print(prospector.green .. "Usage: " .. prospector.orange .. value.Usage)
|
||||
prospector.print(prospector.green .. "Parameter: " .. prospector.orange .. value.Parameter)
|
||||
end -- for _,value
|
||||
prospector.print(prospector.yellow .. "---------------")
|
||||
|
||||
else
|
||||
if(prospector.helpsystem[parameter[2]] ~= nil) then
|
||||
prospector.print(prospector.green .. "Name: " .. prospector.orange ..
|
||||
prospector.helpsystem[parameter[2]].Name)
|
||||
prospector.print(prospector.green .. "Description: " .. prospector.yellow ..
|
||||
prospector.helpsystem[parameter[2]].Description)
|
||||
prospector.print(prospector.green .. "Usage: " .. prospector.orange ..
|
||||
prospector.helpsystem[parameter[2]].Usage)
|
||||
prospector.print(prospector.green .. "Parameter: " .. prospector.orange ..
|
||||
prospector.helpsystem[parameter[2]].Parameter)
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "No entry in help for command <" ..
|
||||
prospector.orange .. parameter[2] .. prospector.red .. "> found.")
|
||||
|
||||
end -- if(prospector.help[parameter[2
|
||||
|
||||
end -- if(parameter[2]
|
||||
|
||||
end -- function help
|
|
@ -0,0 +1,66 @@
|
|||
prospector.register_help({
|
||||
Name = "lastpos",
|
||||
Usage = ".prs lastpos <> | -s",
|
||||
Description = "Shows or sends the last Position to Distancer.",
|
||||
Parameter = "<> | -s" .. prospector.green .. "." ..
|
||||
"\n" .. prospector.orange .. "<>" ..
|
||||
prospector.green.. " - Shows the last Position." ..
|
||||
"\n" .. prospector.orange .. "-s" ..
|
||||
prospector.green .. " - Sends the last Position to Distancer's Waypoint."
|
||||
}
|
||||
)
|
||||
|
||||
prospector["lastpos"] = function(cmd)
|
||||
|
||||
if(cmd[2] == nil or cmd[2] == "") then
|
||||
if(prospector.last_pos ~= "") then
|
||||
prospector.print(prospector.green .. "The last found was at: " ..
|
||||
prospector.orange .. prospector.last_pos ..
|
||||
prospector.green .. ".\n")
|
||||
prospector.print(prospector.green .. "This is "..
|
||||
prospector.yellow .. prospector.calc_distance() ..
|
||||
prospector.green .. " Nodes far away.\n")
|
||||
else
|
||||
prospector.print(prospector.red .. "There is no last Found set.\n")
|
||||
|
||||
end -- if(prospector.last_pos ~= nil
|
||||
|
||||
elseif(cmd[2] == "-s") then -- Sends the last Position to distancer
|
||||
local version = ver + (dst.rev / 10)
|
||||
|
||||
if(version >= 2.7) then
|
||||
local mylastpos = prospector.last_pos
|
||||
if(mylastpos == "") then
|
||||
mylastpos = "0,0,0"
|
||||
|
||||
end -- if(mylastpos ==
|
||||
|
||||
dst.send_pos(minetest.localplayer:get_name(), mylastpos)
|
||||
|
||||
else
|
||||
prospector.print(prospector.orange .. "No Distancer found or Version < 2.7.\n")
|
||||
|
||||
end -- if(dst.ver
|
||||
|
||||
--[[
|
||||
if(prospector.distancer_channel ~= nil) then
|
||||
if(prospector.distancer_channel:is_writeable()) then
|
||||
prospector.distancer_channel:send_all("POS:" .. prospector.last_pos)
|
||||
prospector.print(prospector.green .. "Position: " ..
|
||||
prospector.orange .. prospector.last_pos .. prospector.green .. " send to Distancer.\n")
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "Modchannel not writeable.\n")
|
||||
|
||||
end -- if(prospector.distancer_channel:is_writeable
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "No Modchannel open.\n")
|
||||
prospector.distancer_channel = minetest.mod_channel_join(prospector.distancer_channelname)
|
||||
|
||||
end -- if(prospector.distancer_channel
|
||||
]]--
|
||||
|
||||
end -- if(command[1]
|
||||
|
||||
end -- prospector.pnode_lastpos
|
|
@ -0,0 +1,64 @@
|
|||
prospector.register_help({
|
||||
Name = "lastpos",
|
||||
Usage = ".prs lastpos <> | -s",
|
||||
Description = "Shows you a list of all successfully found Nodes.",
|
||||
Parameter = "<> | <searchpattern>" .. prospector.green .. "." ..
|
||||
"\n" .. prospector.orange .. "<>" ..
|
||||
prospector.green.. " - Shows you the entire Nodelist with Index." ..
|
||||
"\n" .. prospector.orange .. "<searchpattern>" ..
|
||||
prospector.green .. " - Shows you a filtered Nodelist of <searchpattern> with Index."
|
||||
}
|
||||
)
|
||||
|
||||
prospector["list"] = function(pattern)
|
||||
|
||||
if(pattern[2] == "" or pattern[2] == nil) then
|
||||
prospector.print(prospector.green .. "Show the Nodelist:\n")
|
||||
if(prospector.pnodelist ~= nil) then
|
||||
for idx,entry in pairs(prospector.pnodelist)
|
||||
do
|
||||
prospector.print(prospector.yellow .. idx .. ": " ..
|
||||
prospector.orange .. entry .. prospector.green .."\n")
|
||||
|
||||
end -- for _,key
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "Empty Nodelist.")
|
||||
return
|
||||
|
||||
end -- if(prospector.pnodelist ~= nil
|
||||
|
||||
else
|
||||
prospector.print(prospector.green .. "Show the Nodelist only with: " ..
|
||||
prospector.orange .. pattern .. prospector.green .. ".\n")
|
||||
local count = 0
|
||||
if(prospector.pnodelist ~= nil) then
|
||||
for idx,entry in ipairs(prospector.pnodelist)
|
||||
do
|
||||
local hit = string.find(entry, pattern)
|
||||
if(hit ~= nil) then
|
||||
prospector.print(prospector.yellow .. idx .. prospector.green .. ": " ..
|
||||
prospector.orange .. entry .. prospector.green .."\n")
|
||||
count = count + 1
|
||||
|
||||
end
|
||||
|
||||
end -- for _,key
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "Empty Nodelist.")
|
||||
return
|
||||
end
|
||||
|
||||
if(count > 0) then
|
||||
prospector.print(prospector.green .. "Found " .. prospector.yellow .. count ..
|
||||
prospector.green .. " Nodes.\n")
|
||||
|
||||
else
|
||||
prospector.print(prospector.light_red .. "No Nodes found.\n")
|
||||
|
||||
end -- if(count >
|
||||
|
||||
end -- if(pattern == ""
|
||||
|
||||
end -- function(show_nodelist
|
|
@ -0,0 +1,48 @@
|
|||
prospector.register_help({
|
||||
Name = "radius",
|
||||
Usage = ".prs radius <> | <radius>",
|
||||
Description = "Set's or shows you the the Radius for the command .search_for.",
|
||||
Parameter = "<> | <radius>" .. prospector.green .. "." ..
|
||||
"\n" .. prospector.orange .. "<>" ..
|
||||
prospector.green.. " - Shows you the current Radius." ..
|
||||
"\n" .. prospector.orange .. "<radius>" ..
|
||||
prospector.green .. " - set's a new valid Radius."
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
prospector["radius"] = function(cmd)
|
||||
if(cmd[2] == nil or cmd[2] == "") then
|
||||
if(prospector.searchRadius ~= nil or prospector.searchRadius ~= "") then
|
||||
prospector.print(prospector.green .. "Current Radius is set to: " ..
|
||||
prospector.orange .. prospector.searchRadius ..
|
||||
prospector.green .. ".\n")
|
||||
return
|
||||
else
|
||||
prospector.print(prospector.red .. "Illegal Radiusnumber set. Set a new Number.\n")
|
||||
return
|
||||
|
||||
end -- if(prospector.searchRadius ~= nil
|
||||
|
||||
end -- if(cmd == nil
|
||||
|
||||
local radius = tonumber(cmd[3]:trim())
|
||||
prospector.print(prospector.green .. " Current Radius = " ..
|
||||
prospector.orange .. prospector.searchRadius ..
|
||||
prospector.green .. ".\n")
|
||||
prospector.print(prospector.green .. " Max Radius = " ..
|
||||
prospector.red .. prospector.maxRadius ..
|
||||
prospector.green .. ".\n")
|
||||
|
||||
if(radius ~= nil and radius > 0 and radius <= prospector.maxRadius) then
|
||||
prospector.searchRadius = radius
|
||||
prospector.print(prospector.green .. " New Radius set to " ..
|
||||
prospector.yellow .. prospector.searchRadius ..
|
||||
prospector.green ..".\n")
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "Illegal Radiusnumber.\n")
|
||||
|
||||
end -- if(radius ~= nil
|
||||
|
||||
end -- prospector.pnode_setradius
|
|
@ -0,0 +1,56 @@
|
|||
prospector.register_help({
|
||||
Name = "search",
|
||||
Usage = ".prs search <> | <Node> | <-i> index",
|
||||
Description = "Shows you the given Node in a Radius of <.set_radius>.",
|
||||
Parameter = "<> | <Node> | <-i> index" .. prospector.green .. "." ..
|
||||
"\n" .. prospector.orange .. "<>" ..
|
||||
prospector.green.. " - searches for a certain node, set with set_node." ..
|
||||
"\n" .. prospector.orange .. "<Node>" ..
|
||||
prospector.green .. " - search for <Node>." ..
|
||||
"\n" .. prospector.orange .. "<-i> index" ..
|
||||
prospector.green .. " - searches for Node with the Indexnumber in the Nodelist."
|
||||
|
||||
})
|
||||
|
||||
function prospector.pnode_search(cmd)
|
||||
if(cmd[2] == "" or cmd[2] == nil) then
|
||||
if(prospector.current_Node == "" or prospector.current_Node == nil) then
|
||||
prospector.print(prospector.green .. "There is no searching Node set. Use command set_node <Nodename>.\n")
|
||||
return
|
||||
|
||||
else
|
||||
prospector.search_node(prospector.current_Node)
|
||||
return
|
||||
|
||||
end --if(prospector.current_Node
|
||||
end
|
||||
|
||||
if(cmd[2] == "-i") then -- command Index found
|
||||
local idx = tonumber(cmd[3])
|
||||
if(idx ~= nil) then -- valid Index
|
||||
local node = prospector.pnodelist[idx]
|
||||
if(node ~= nil or node ~= "") then -- valid Node found
|
||||
prospector.search_node(node)
|
||||
return
|
||||
|
||||
else
|
||||
|
||||
prospector.print(prospector.red .. "No Node found at Index " ..
|
||||
prospector.yellow .. idx ..
|
||||
prospector.red .. ".\n")
|
||||
return
|
||||
|
||||
end -- if( node ~=
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "Invalid Indexnumber.\n")
|
||||
return
|
||||
|
||||
end --(if(idx ~=
|
||||
|
||||
end -- if(command[1]
|
||||
|
||||
-- Param isn't empty and not the Command -i, so it's a Node
|
||||
prospector.search_node(cmd[2])
|
||||
|
||||
end -- prospector.pnode_search
|
|
@ -0,0 +1,52 @@
|
|||
prospector.register_help({
|
||||
Name = "set",
|
||||
Usage = ".prs set <> | <Node> | <-i> index",
|
||||
Description = "Set's a new Node for search.",
|
||||
Parameter = "<> | <Node> | <-i> index" .. prospector.green .. "." ..
|
||||
"\n" .. prospector.orange .. "<>" ..
|
||||
prospector.green.. " - shows the current Node for search." ..
|
||||
"\n" .. prospector.orange .. "<Node>" ..
|
||||
prospector.green .. " - set's a new Node." ..
|
||||
"\n" .. prospector.orange .. "<-i> index" ..
|
||||
prospector.green .. " - set's a new Node for search from the Nodelist with the Indexnumber."
|
||||
|
||||
}
|
||||
)
|
||||
|
||||
prospector["set"]= function(cmd)
|
||||
|
||||
-- No Node or Index given
|
||||
if(command[2] == nil or command[2] == "") then
|
||||
prospector.set_node("")
|
||||
return
|
||||
|
||||
end -- if(command[1] == nil
|
||||
|
||||
-- Command Index found
|
||||
if(command[2] == "-i") then
|
||||
local idx = tonumber(command[3])
|
||||
|
||||
if(idx ~= nil) then
|
||||
local node = prospector.pnodelist[idx]
|
||||
if(node ~= nil or node ~= "") then
|
||||
prospector.set_node(node)
|
||||
return
|
||||
|
||||
else -- No Node at this Index found.
|
||||
prospector.print(prospector.red .. "Wrong Indexnumber.\n")
|
||||
return
|
||||
|
||||
end -- if(node ~= nil
|
||||
|
||||
else -- Illegal Index found, should not happen
|
||||
prospector.print(prospector.red .. "Illegal Indexnumber entered.")
|
||||
return
|
||||
|
||||
end -- if(idx ~nil)
|
||||
|
||||
end -- if(command[1]
|
||||
|
||||
-- No empty Param, no Index found, so it's a Node and set it
|
||||
prospector.set_node(command[2])
|
||||
|
||||
end -- prospector.pnode_set
|
117
init.lua
117
init.lua
|
@ -7,13 +7,12 @@
|
|||
****************************************************************
|
||||
--]]
|
||||
|
||||
local prospector = {}
|
||||
prospector = {}
|
||||
|
||||
prospector.modname = "Prospector"
|
||||
prospector.version = 2
|
||||
prospector.revision = 4
|
||||
prospector.version = 3
|
||||
prospector.revision = 0
|
||||
|
||||
prospector.you = nil -- Player
|
||||
prospector.searchRadius = 100
|
||||
prospector.maxRadius = 300
|
||||
prospector.current_Node = ""
|
||||
|
@ -41,12 +40,70 @@ prospector.light_red = minetest.get_color_escape_sequence('#FF8888')
|
|||
|
||||
prospector.display_chat_message = minetest.display_chat_message
|
||||
|
||||
prospector.helpsystem = {}
|
||||
--[[
|
||||
****************************************************************
|
||||
******* Functions for Prospector ******
|
||||
****************************************************************
|
||||
--]]
|
||||
|
||||
--[[
|
||||
****************************************************************
|
||||
******* Function check(command) ******
|
||||
****************************************************************
|
||||
Check if the command is valid
|
||||
--]]
|
||||
function prospector.check(cmd)
|
||||
if(cmd ~= nil and cmd[1] ~= nil) then
|
||||
if(prospector[cmd[1]] ~= nil) then
|
||||
-- Command is valid, execute it with parameter
|
||||
prospector[cmd[1]](cmd)
|
||||
|
||||
else -- A command is given, but
|
||||
-- Command not found, report it.
|
||||
if(cmd[1] ~= nil) then
|
||||
prospector.print(prospector.red .. "Prospector: Unknown Command \n" ..
|
||||
prospector.orange .. cmd[1] .. prospector.red .. "\n.")
|
||||
|
||||
else
|
||||
if(prospector["help"]) then
|
||||
prospector["help"]()
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "Unknown Command. No helpsystem available.")
|
||||
|
||||
end --if(prospector["help"]
|
||||
|
||||
end -- if(cmd[1]
|
||||
|
||||
end -- if(prospector[cmd[1
|
||||
|
||||
else
|
||||
prospector.print(prospector.red .. "No Command for Prospector given.")
|
||||
prospector.print(prospector.red .. "Try .prs help.")
|
||||
|
||||
end -- if(not cmd)
|
||||
|
||||
end -- function prospector.check(cmd
|
||||
|
||||
--[[
|
||||
****************************************************************
|
||||
******* Function register_help() ******
|
||||
****************************************************************
|
||||
Registers a new Entry in the Helpsystem for an Command.
|
||||
]]--
|
||||
function prospector.register_help(entry)
|
||||
|
||||
prospector.helpsystem[entry.Name] = {
|
||||
Name = entry.Name,
|
||||
Usage = entry.Usage,
|
||||
Description = entry.Description,
|
||||
Parameter = entry.Parameter
|
||||
}
|
||||
|
||||
end
|
||||
|
||||
--[[
|
||||
function prospector.show_nodelist(pattern)
|
||||
if(pattern == "") then
|
||||
prospector.print(prospector.green .. "Show the Nodelist:\n")
|
||||
|
@ -98,6 +155,7 @@ function prospector.show_nodelist(pattern)
|
|||
end -- if(pattern == ""
|
||||
|
||||
end -- function(show_nodelist
|
||||
]]--
|
||||
|
||||
function prospector.check_node(node)
|
||||
if(prospector.pnodelist ~= nil) then
|
||||
|
@ -143,13 +201,8 @@ function prospector.search_node(node)
|
|||
prospector.print(prospector.green .. " No Nodename given!\n")
|
||||
|
||||
else
|
||||
if(prospector.you == nil) then -- Don't know why, but sometimes there is no localplayer registered at start.
|
||||
prospector.you = minetest.localplayer
|
||||
|
||||
end -- if(prospector.you
|
||||
|
||||
prospector.print(prospector.green .. "Searching for " .. prospector.yellow .. node .. prospector.green .. ".\n")
|
||||
local nodes = find_node(prospector.you:get_pos(), prospector.searchRadius, node)
|
||||
local nodes = find_node(minetest.localplayer:get_pos(), prospector.searchRadius, node)
|
||||
|
||||
if(nodes ~= nil) then
|
||||
prospector.print(prospector.green .. "Found at ".. prospector.orange .. pos_to_string(nodes) ..
|
||||
|
@ -171,7 +224,7 @@ function prospector.search_node(node)
|
|||
end -- function search_node()
|
||||
|
||||
function prospector.calc_distance()
|
||||
return math.floor(vector.distance(prospector.you:get_pos(), string_to_pos(prospector.last_pos)))
|
||||
return math.floor(vector.distance(minetest.localplayer:get_pos(), string_to_pos(prospector.last_pos)))
|
||||
|
||||
end -- function calc_distance
|
||||
|
||||
|
@ -257,6 +310,8 @@ function prospector.convert_position(pos)
|
|||
return nil
|
||||
end -- function convert_position
|
||||
|
||||
--[[
|
||||
|
||||
function prospector.pnode_lastpos(cmd)
|
||||
local command = prospector.split(cmd)
|
||||
if(command[1] == nil or command[1] == "") then
|
||||
|
@ -281,14 +336,13 @@ function prospector.pnode_lastpos(cmd)
|
|||
|
||||
end -- if(mylastpos ==
|
||||
|
||||
dst.send_pos(prospector.you:get_name(), mylastpos)
|
||||
dst.send_pos(minetest.localplayer:get_name(), mylastpos)
|
||||
|
||||
else
|
||||
prospector.print(prospector.orange .. "No Distancer found or Version < 2.7.\n")
|
||||
|
||||
end -- if(dst.ver
|
||||
|
||||
--[[
|
||||
if(prospector.distancer_channel ~= nil) then
|
||||
if(prospector.distancer_channel:is_writeable()) then
|
||||
prospector.distancer_channel:send_all("POS:" .. prospector.last_pos)
|
||||
|
@ -305,7 +359,6 @@ function prospector.pnode_lastpos(cmd)
|
|||
prospector.distancer_channel = minetest.mod_channel_join(prospector.distancer_channelname)
|
||||
|
||||
end -- if(prospector.distancer_channel
|
||||
]]--
|
||||
|
||||
end -- if(command[1]
|
||||
|
||||
|
@ -355,6 +408,7 @@ function prospector.pnode_search(cmd)
|
|||
|
||||
end -- prospector.pnode_search
|
||||
|
||||
|
||||
function prospector.pnode_setradius(cmd)
|
||||
if(cmd == nil or cmd == "") then
|
||||
if(prospector.searchRadius ~= nil or prospector.searchRadius ~= "") then
|
||||
|
@ -429,6 +483,7 @@ function prospector.pnode_set(cmd)
|
|||
prospector.set_node(command[1])
|
||||
|
||||
end -- prospector.pnode_set
|
||||
]]--
|
||||
|
||||
function prospector.show_version()
|
||||
print("[CSM-MOD]" .. prospector.modname .. " v " ..
|
||||
|
@ -495,6 +550,7 @@ end -- distancer.handle_message
|
|||
****************************************************************
|
||||
--]]
|
||||
|
||||
--[[
|
||||
minetest.register_chatcommand("pnode_lastpos", {
|
||||
|
||||
params = "<> | -s",
|
||||
|
@ -510,6 +566,7 @@ minetest.register_chatcommand("pnode_lastpos", {
|
|||
|
||||
}) -- chatcommand prospector_last_pos
|
||||
|
||||
|
||||
minetest.register_chatcommand("pnode_list", {
|
||||
|
||||
params = "<> | <searchpattern>",
|
||||
|
@ -572,6 +629,28 @@ minetest.register_chatcommand("pnode_set", {
|
|||
end -- func
|
||||
|
||||
}) -- chatcommand prospector_set_node
|
||||
]]--
|
||||
|
||||
--[[
|
||||
****************************************************************
|
||||
******* Registered Chatcommands ******
|
||||
****************************************************************
|
||||
--]]
|
||||
|
||||
minetest.register_chatcommand("prs",{
|
||||
param = "<command> <parameter>",
|
||||
description = "Gives the Prospector a command with or without Parameter.\n",
|
||||
func = function(cmd)
|
||||
if(cmd.type == "string") then
|
||||
cmd = cmd:lower()
|
||||
end
|
||||
local command = prospector.split(cmd)
|
||||
prospector.check(command)
|
||||
|
||||
end -- function
|
||||
|
||||
}) -- minetest.register_chatcommand("dis
|
||||
|
||||
|
||||
|
||||
--[[
|
||||
|
@ -580,9 +659,6 @@ minetest.register_chatcommand("pnode_set", {
|
|||
****************************************************************
|
||||
--]]
|
||||
|
||||
-- Get yourself
|
||||
prospector.you = minetest.localplayer
|
||||
|
||||
prospector.nodestring = prospector.storage:get_string("nodes") -- Get the Nodelist as String
|
||||
if(prospector.nodestring ~= nil) then
|
||||
prospector.pnodelist = minetest.deserialize(prospector.nodestring) -- and write it to the list.
|
||||
|
@ -627,4 +703,11 @@ minetest.after(5, function()
|
|||
)
|
||||
]]--
|
||||
|
||||
dofile("prospector:cmd_help.lua")
|
||||
dofile("prospector:cmd_lastpos.lua")
|
||||
dofile("prospector:cmd_list.lua")
|
||||
dofile("prospector:cmd_search.lua")
|
||||
dofile("prospector:cmd_radius.lua")
|
||||
dofile("prospector:cmd_set.lua")
|
||||
|
||||
prospector.show_version()
|
||||
|
|
Loading…
Reference in New Issue