]> git.lizzy.rs Git - bowaimbot.git/blob - init.lua
Create LICENSE
[bowaimbot.git] / init.lua
1 local atan, pi, pow, sqrt = math.atan, math.pi, math.pow, math.sqrt
2 local aim_name 
3
4 minetest.register_globalstep(function()
5         if not minetest.settings:get_bool("bowaimbot") or not aim_name then return end
6         local player = minetest.localplayer
7         if not player then return end
8         if player:get_wielded_item():get_name():sub(1, 12) ~= "mcl_bows:bow" then return end
9         local ppos = player:get_pos()
10         local objects = minetest.get_objects_inside_radius(ppos, 80)
11         for _, obj in ipairs(objects) do
12                 if obj:get_name() == aim_name then
13                         local opos = obj:get_pos()
14                         local vec = vector.subtract(ppos, opos)
15                         
16                         local yaw = atan(vec.z / vec.x) - pi/2
17                         yaw = yaw + (opos.x >= ppos.x and pi or 0)
18                         player:set_yaw((yaw + pi) / pi * 180)
19                         
20                         local v = 40
21                         local g = -9.81
22                         local y = vec.y
23                         vec.y = 0
24                         local x = vector.length(vec)
25                         
26                         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))
27                         player:set_pitch(pitch / pi * 180)
28                         break
29                 end
30         end
31 end)
32
33 minetest.register_chatcommand("aim", {
34         func = function(param)
35                 aim_name = param
36         end
37 })
38
39 minetest.register_cheat("BowAimbot", "Combat", "bowaimbot")