basic_robot/scripts/programming/os_show_demo.lua

114 lines
3.0 KiB
Lua

-- demo bot
if not s then
-- move.forward();--turn.angle(180)
s=0;t=0
mag = 3;
boot = function()
self.display_text("RND technologies\n(inc) 2016\n\n\nmemchk "..(t*1024).. "kb ",16,mag)
t=t+1; if t == 8 then s = 0.5 t = 0 end
end
boot_memchk = function()
self.display_text("RND technologies\n(inc) 2016\n\n ".. (8*1024).. "kb READY",16,mag)
t=t+1; if t==3 then t=0 s = 1 end
end
os_load = function()
if t == 0 then self.display_text("============\nrndos v2.5\n============\n\nloading...\nkernel v12.2 ",12,mag) end
t=t+1; if t == 7 then s = 2 t = 0 end
end
main_menu = function()
if t==0 then self.display_text("MAIN MENU \n\n1) ip lister\n2) kick player\n3) teleport\n4) give fly\n5) kill\n6) turn off\n\n0 to return here from app",16,mag) end
text = read_text.backward();
if text and text~="" then
write_text.backward("")
if text == "1" then s = 3 t = 0
elseif text == "2" then s = 4 t = 0
elseif text == "3" then s=5 t =0
elseif text == "4" then s=6 t =0
elseif text == "5" then s=7 t =0
elseif text == "6" then self.remove()
end
end
end
ip_lister = function()
if t%5 == 0 then
players = _G.minetest.get_connected_players(); msg = "IP LISTER\n\n";
for _, player in pairs(players) do
local name = player:get_player_name(); ip = _G.minetest.get_player_ip(name) or "";
msg = msg .. name .. " " .. ip .. "\n";
end
self.display_text(msg,30,mag)
t=0
end
t=t+1
if read_text.backward() == "0" then s=2 t=0 end
end
act_on_player = function(mode)
if t==0 then
msg = get_player_list()
local txt = {[1]="KICK WHO?\n", [2] = "TELEPORT WHO HERE?\n", [3] = "GIVE FLY TO WHOM?\n", [4] = "KILL WHO?\n"}
text = txt[mode] or "";
self.display_text(text..msg,30,mag) t=1
end
text = read_text.backward();
if text then
if text=="0" then s=2 t=0 else
write_text.backward("");
if mode ==1 then
_G.minetest.kick_player(player_list[tonumber(text)] or "");
elseif mode ==2 then
player =_G.minetest.get_player_by_name(player_list[tonumber(text)] or "");
if player then player:setpos(self.spawnpos()) end
elseif mode ==3 then
player=_G.minetest.get_player_by_name(player_list[tonumber(text)] or "");
if player then player:set_physics_override({gravity=0.1}) end
elseif mode ==4 then
player=_G.minetest.get_player_by_name(player_list[tonumber(text)] or "");
if player then player:set_hp(0) end
end
end
end
end
player_list = {}
get_player_list = function()
local players = _G.minetest.get_connected_players(); local msg = ""; local i=0;
for _, player in pairs(players) do
local name = player:get_player_name();
i=i+1;msg = msg .. i ..") " .. name .. "\n";
player_list[i]=name;
end
return msg
end
end
self.label(s)
if s == 0 then
boot()
elseif s==0.5 then
boot_memchk()
elseif s==1 then
os_load()
elseif s==2 then
main_menu()
elseif s==3 then
ip_lister()
elseif s==4 then
act_on_player(1)
elseif s==5 then
act_on_player(2)
elseif s==6 then
act_on_player(3)
elseif s==7 then
act_on_player(4)
end