tweaks
This commit is contained in:
parent
74ef01e14b
commit
ca09e73c6b
115
commands.lua
115
commands.lua
@ -1353,4 +1353,117 @@ basic_robot.commands.puzzle = {
|
||||
end
|
||||
return true
|
||||
end,
|
||||
}
|
||||
}
|
||||
|
||||
-- VIRTUAL PLAYER --
|
||||
|
||||
|
||||
local Vplayer = {};
|
||||
function Vplayer:new(name) -- constructor
|
||||
if not basic_robot.data[name].obj then return end -- only make it for existing robot
|
||||
if basic_robot.virtual_players[name] then return end -- already exists
|
||||
|
||||
local o = {}
|
||||
setmetatable(o, self)
|
||||
self.__index = self
|
||||
o.obj = basic_robot.data[name].obj;
|
||||
o.data = basic_robot.data[name];
|
||||
|
||||
local spawnpos = o.data.spawnpos;
|
||||
local meta = minetest.get_meta(spawnpos); if not meta then return end
|
||||
o.inv = meta:get_inventory();
|
||||
|
||||
basic_robot.virtual_players[name] = o;
|
||||
end
|
||||
|
||||
-- functions
|
||||
function Vplayer:getpos() return self.obj:getpos() end
|
||||
function Vplayer:remove() end
|
||||
function Vplayer:setpos() end
|
||||
function Vplayer:move_to() end
|
||||
function Vplayer:punch() end
|
||||
function Vplayer:rightlick() end
|
||||
function Vplayer:get_hp() return 20 end
|
||||
function Vplayer:set_hp() return 20 end
|
||||
|
||||
function Vplayer:get_inventory() return self.inv end
|
||||
function Vplayer:get_wield_list() return "main" end
|
||||
function Vplayer:get_wield_index() return 1 end
|
||||
function Vplayer:get_wielded_item() return self.inv:get_stack("main", 1) end
|
||||
function Vplayer:set_wielded_item() end
|
||||
function Vplayer:set_armor_groups() end
|
||||
function Vplayer:get_armor_groups() return {fleshy = 100} end
|
||||
function Vplayer:set_animation() end
|
||||
function Vplayer:get_animation() end
|
||||
function Vplayer:set_attach() end
|
||||
function Vplayer:get_attach() end
|
||||
function Vplayer:set_detach() end
|
||||
function Vplayer:set_bone_position() end
|
||||
function Vplayer:get_bone_position() end
|
||||
function Vplayer:set_properties() end
|
||||
function Vplayer:get_properties() end
|
||||
function Vplayer:is_player() return true end
|
||||
function Vplayer:get_nametag_attributes() end
|
||||
function Vplayer:set_nametag_attributes() end
|
||||
|
||||
function Vplayer:set_velocity() end
|
||||
function Vplayer:get_velocity() end
|
||||
function Vplayer:set_acceleration() end
|
||||
function Vplayer:get_acceleration() end
|
||||
function Vplayer:set_yaw() end
|
||||
function Vplayer:get_yaw() end
|
||||
function Vplayer:set_texture_mod() end
|
||||
function Vplayer:get_luaentity() end
|
||||
|
||||
function Vplayer:get_player_name() return self.data.name end
|
||||
function Vplayer:get_player_velocity() return {x=0,y=0,z=0} end
|
||||
function Vplayer:get_look_dir() return {x=1,y=0,z=0} end
|
||||
function Vplayer:get_look_vertical() return 0 end
|
||||
function Vplayer:get_look_horizontal() return 0 end
|
||||
function Vplayer:set_look_vertical() end
|
||||
function Vplayer:set_look_horizontal() end
|
||||
function Vplayer:get_breath() return 1 end
|
||||
function Vplayer:set_breath() end
|
||||
function Vplayer:set_attribute() end
|
||||
function Vplayer:get_attribute() end
|
||||
function Vplayer:set_inventory_formspec() end
|
||||
function Vplayer:get_inventory_formspec() return "" end
|
||||
function Vplayer:get_player_control() return {} end
|
||||
function Vplayer:get_player_control_bits() return 0 end
|
||||
function Vplayer:set_physics_override() end
|
||||
function Vplayer:get_physics_override() return {} end
|
||||
function Vplayer:hud_add() end
|
||||
function Vplayer:hud_remove() end
|
||||
function Vplayer:hud_change() end
|
||||
function Vplayer:hud_get() end
|
||||
function Vplayer:hud_set_flags() end
|
||||
function Vplayer:hud_get_flags() return {} end
|
||||
function Vplayer:hud_set_hotbar_itemcount() end
|
||||
function Vplayer:hud_get_hotbar_itemcount() return 0 end
|
||||
function Vplayer:hud_set_hotbar_image() end
|
||||
function Vplayer:hud_get_hotbar_image() return "" end
|
||||
function Vplayer:hud_set_hotbar_selected_image() end
|
||||
function Vplayer:hud_get_hotbar_selected_image() return "" end
|
||||
function Vplayer:set_sky() end
|
||||
function Vplayer:get_sky() end
|
||||
function Vplayer:set_clouds() end
|
||||
function Vplayer:get_clouds() end
|
||||
function Vplayer:override_day_night_ratio() end
|
||||
function Vplayer:get_day_night_ratio() end
|
||||
function Vplayer:set_local_animation() end
|
||||
function Vplayer:get_local_animation() end
|
||||
function Vplayer:set_eye_offset() end
|
||||
function Vplayer:get_eye_offset() end
|
||||
|
||||
|
||||
-- code for act borrowed from: https://github.com/minetest-mods/pipeworks/blob/fa4817136c8d1e62dafd6ab694821cba255b5206/wielder.lua, line 372
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
25
init.lua
25
init.lua
@ -18,7 +18,7 @@ basic_robot.dig_require_energy = true; -- does robot require energy to dig?
|
||||
|
||||
basic_robot.http_api = minetest.request_http_api();
|
||||
|
||||
basic_robot.version = "2017/12/18a";
|
||||
basic_robot.version = "2018/02/06a";
|
||||
|
||||
basic_robot.data = {}; -- stores all robot related data
|
||||
--[[
|
||||
@ -28,6 +28,8 @@ robot object = object of entity, used to manipulate movements and more
|
||||
basic_robot.ids = {}; -- stores maxid for each player
|
||||
--[name] = {id = .., maxid = .. }, current id for robot controller, how many robot ids player can use
|
||||
|
||||
basic_robot.virtual_players = {}; -- this way robot can interact with the world as "player" TODO
|
||||
|
||||
basic_robot.data.listening = {}; -- which robots listen to chat
|
||||
dofile(minetest.get_modpath("basic_robot").."/commands.lua")
|
||||
|
||||
@ -524,8 +526,6 @@ function getSandboxEnv (name)
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
||||
--special sandbox for admin
|
||||
if authlevel<3 then -- is admin?
|
||||
env._G = env;
|
||||
@ -836,7 +836,7 @@ minetest.register_entity("basic_robot:robot",{
|
||||
--textures={"character.png"},
|
||||
|
||||
visual="cube",
|
||||
textures={"arrow.png","basic_machine_side.png","face.png","basic_machine_side.png","basic_machine_side.png","basic_machine_side.png"},
|
||||
textures={"topface.png","legs.png","face.png","face-back.png","left-hand.png","right-hand.png"},
|
||||
|
||||
visual_size={x=1,y=1},
|
||||
running = 0, -- does it run code or is it idle?
|
||||
@ -994,7 +994,7 @@ local spawn_robot = function(pos,node,ttl)
|
||||
|
||||
local sec_hash = minetest.get_password_hash("",data.authlevel.. owner .. basic_robot.password)
|
||||
if meta:get_string("sec_hash")~= sec_hash then
|
||||
minetest.chat_send_all("#ROBOT: " .. name .. " is using fake auth level. dig and place again.")
|
||||
minetest.chat_send_player(owner,"#ROBOT: " .. name .. " is using fake auth level. dig and place again.")
|
||||
return
|
||||
end
|
||||
|
||||
@ -1074,7 +1074,7 @@ local spawn_robot = function(pos,node,ttl)
|
||||
|
||||
local sec_hash = minetest.get_password_hash("",luaent.authlevel.. owner .. basic_robot.password)
|
||||
if meta:get_string("sec_hash")~= sec_hash then
|
||||
minetest.chat_send_all("#ROBOT: " .. name .. " is using fake auth level. dig and place again.")
|
||||
minetest.chat_send_player(owner,"#ROBOT: " .. name .. " is using fake auth level. dig and place again.")
|
||||
obj:remove();
|
||||
return
|
||||
end
|
||||
@ -1270,6 +1270,9 @@ local on_receive_robot_form = function(pos, formname, fields, sender)
|
||||
|
||||
if fields.code then
|
||||
local code = fields.code or "";
|
||||
if string.len(code) > 64000 then
|
||||
minetest.chat_send_all("#ROBOT: " .. name .. " is spamming with long text.") return
|
||||
end
|
||||
|
||||
if meta:get_int("admin") == 1 then
|
||||
local privs = minetest.get_player_privs(name); -- only admin can edit admin robot code
|
||||
@ -1537,6 +1540,9 @@ minetest.register_on_player_receive_fields(
|
||||
local name = string.sub(formname, string.len(robot_formname)+1); -- robot name
|
||||
if fields.OK and fields.code then
|
||||
local item = player:get_wielded_item(); --set_wielded_item(item)
|
||||
if string.len(fields.code) > 1000 then
|
||||
minetest.chat_send_player(player,"#ROBOT: text too long") return
|
||||
end
|
||||
item:set_metadata(fields.code);
|
||||
player:set_wielded_item(item);
|
||||
if fields.id then
|
||||
@ -1678,6 +1684,9 @@ minetest.register_on_player_receive_fields(
|
||||
local data = itemstack:get_meta():to_table().fields -- 0.4.16, old minetest.deserialize(itemstack:get_metadata())
|
||||
if not data then data = {} end
|
||||
local text = fields.book or "";
|
||||
if string.len(text) > 64000 then
|
||||
minetest.chat_send_all("#ROBOT: " .. sender .. " is spamming with long text.") return
|
||||
end
|
||||
data.text = text or ""
|
||||
data.title = fields.title or ""
|
||||
data.text_len = #data.text
|
||||
@ -1997,4 +2006,6 @@ minetest.register_craft({
|
||||
|
||||
|
||||
minetest.register_privilege("robot", "increased number of allowed active robots")
|
||||
minetest.register_privilege("puzzle", "allow player to use puzzle. namespace in robots")
|
||||
minetest.register_privilege("puzzle", "allow player to use puzzle. namespace in robots")
|
||||
|
||||
print('[MOD]'.. " basic_robot " .. basic_robot.version .. " loaded.")
|
Binary file not shown.
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 3.8 KiB |
BIN
textures/cpu.png
BIN
textures/cpu.png
Binary file not shown.
Before Width: | Height: | Size: 676 B After Width: | Height: | Size: 2.1 KiB |
Binary file not shown.
Before Width: | Height: | Size: 795 B After Width: | Height: | Size: 172 B |
Loading…
x
Reference in New Issue
Block a user