2 local cpos
={x
=0,y
=0,z
=0}
5 local zz
={x
=0,y
=64,z
=0}
6 local badnodes
={'mcl_tnt:tnt','mcl_fire:basic_flame','mcl_fire:eternal_fire','mcl_fire:fire','mcl_fire:fire_charge','mcl_sponges:sponge','mcl_sponges:sponge_wet'}
9 local function set_kwp(name
,pos
)
11 minetest
.localplayer
:hud_change(hud_wp
, 'world_pos', pos
)
12 minetest
.localplayer
:hud_change(hud_wp
, 'name', name
)
14 hud_wp
= minetest
.localplayer
:hud_add({
15 hud_elem_type
= 'waypoint',
24 local function randomzz()
25 if nextzz
> os
.clock() then return false end
26 math
.randomseed(os
.time())
27 zz
.x
=math
.random(-128,128)
28 zz
.y
=math
.random(64,searchheight
)
29 zz
.z
=math
.random(-128,128)
34 local function find_bad_things()
35 if fnd
then return true end
36 local obs
=minetest
.localplayer
.get_nearby_objects(crange
)
37 local lp
=minetest
.localplayer
:get_pos()
39 for k
, v
in ipairs(obs
) do -- look for crystals first
40 if ( v
:get_item_textures():find("mcl_end_crystal") ) then
41 local npos
=v
:get_pos()
42 local dst
=vector
.distance(npos
,minetest
.localplayer
:get_pos())
43 if odst
> dst
then cpos
=npos
44 set_kwp(v
:get_item_textures(),v
:get_pos())
51 for k
, v
in ipairs(obs
) do
52 if ( v
:get_item_textures():find("arrow_box") ) then
53 local npos
=v
:get_pos()
54 local dst
=vector
.distance(npos
,minetest
.localplayer
:get_pos())
55 if odst
> dst
then cpos
=npos
56 set_kwp(v
:get_item_textures(),v
:get_pos())
63 local epos
=minetest
.find_nodes_in_area(vector
.add(lp
,{x
=79,y
=79,z
=79}), vector
.add(lp
,{x
=-79,y
=-79,z
=-79}), badnodes
, true)
65 for k
,v
in pairs(epos
) do for kk
,vv
in pairs(v
) do
66 local lp
=minetest
.localplayer
:get_pos()
67 local dst
=vector
.distance(lp
,vv
)
68 if odst
> dst
then odst
=dst cpos
=vv fnd
=true end
70 if fnd
then set_kwp('badnode',cpos
) return true end
73 set_kwp('nothing found',zz
)
81 local function flythere()
82 minetest
.settings
:set_bool("continuous_forward",true)
86 local function stopflight()
87 minetest
.settings
:set_bool("continuous_forward",false)
88 minetest
.after("0",function()
89 minetest
.interact("start_digging")
90 minetest
.dig_node(cpos
)
96 minetest
.register_globalstep(function()
97 if not minetest
.settings
:get_bool("kamikaze") and not(minetest
.localplayer
and minetest
.localplayer
:get_name():find("kamikaze")) then
99 ws
.rg('Kamikaze','Bots','kamikaze', function()
100 local lp
= minetest
.localplayer
:get_pos()
101 if not find_bad_things() then
102 if vector
.distance(lp
,zz
) < 1 then
108 elseif vector
.distance(lp
,cpos
) < 1 then
115 core
.set_keypress("special1", true)
117 core
.set_keypress("special1", false)
120 minetest
.localplayer
:hud_remove(hud_wp
)
122 end,{"noclip","pitch_move"})
126 minetest
.register_on_death(function()
127 if not minetest
.settings
:get_bool("kamikaze") then return end
128 minetest
.after("5.0",function()