aboutsummaryrefslogtreecommitdiff
path: root/init.lua
blob: 604a664ac16e730b6899553e7625c4878e59a99b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
local atan, pi, pow, sqrt = math.atan, math.pi, math.pow, math.sqrt
local aim_name 

minetest.register_globalstep(function()
	if not minetest.settings:get_bool("bowaimbot") or not aim_name then return end
	local player = minetest.localplayer
	if not player then return end
	if player:get_wielded_item():get_name():sub(1, 12) ~= "mcl_bows:bow" then return end
	local ppos = player:get_pos()
	local objects = minetest.get_objects_inside_radius(ppos, 80)
	for _, obj in ipairs(objects) do
		if obj:get_name() == aim_name then
			local opos = obj:get_pos()
			local vec = vector.subtract(ppos, opos)
			
			local yaw = atan(vec.z / vec.x) - pi/2
			yaw = yaw + (opos.x >= ppos.x and pi or 0)
			player:set_yaw((yaw + pi) / pi * 180)
			
			local v = 40
			local g = -9.81
			local y = vec.y
			vec.y = 0
			local x = vector.length(vec)
			
			local pitch = atan(pow(v, 2) / (g * x) + sqrt(pow(v, 4)/(pow(g, 2) * pow(x, 2)) - 2 * pow(v, 2) * y/(g * pow(x, 2)) - 1))
			player:set_pitch(pitch / pi * 180)
			break
		end
	end
end)

minetest.register_chatcommand("aim", {
	func = function(param)
		aim_name = param
	end
})

minetest.register_cheat("BowAimbot", "Combat", "bowaimbot")