кто сможет написать функцию для раксампа лайт для бега бота к определенной точке
предлагайте цену
local Utils = {}
local Bot = {}
local utils
local bot
function Utils:new()
local public = {}
function public:getHeadingFromVector2d(x, y)
local angle = math.deg(math.atan2(y, x))
if (angle < 0) then
angle = (angle + 360)
end
angle = (angle - 90)
if (angle < 0) then
angle = (angle + 360)
end
return angle
end
function public:getDistanceBetweenCoords2d(x1, y1, x2, y2)
return math.sqrt(((x2 - x1)^2) + ((y2 - y1)^2))
end
function public:angleToQuaternion(angle)
local a = (math.rad(angle) / 2)
local qz = -math.sin(a)
local qw = math.cos(a)
return qz, qw
end
setmetatable(public, self)
self.__index = self
return public
end
function Bot:new()
local private = {}
local public = {}
public.walk = false
public.run = {}
function public:runToPosition(tox, toy, toz, typeRun)
if bot.walk then return end
local dataRun = {
{pos = 0.030, speed = 0.13, key = 1024}, -- WALK
{pos = 0.075, speed = 0.23, key = 0}, -- DEFAULT
{pos = 0.09, speed = 0.23, key = 8} -- SPRINT
}
typeRun = typeRun or 2 -- если typeRun не указан, используем DEFAULT
self.tox, self.toy, self.toz = tox, toy, getZ(tox, toy)
self.bx, self.by, self.bz = getBotPosition()
self.angle = utils:getHeadingFromVector2d((self.tox - self.bx), (self.toy - self.by))
self.run = dataRun[typeRun]
if not self.run then
self.run = dataRun[2] -- используем DEFAULT если указан неверный typeRun
end
self.overclocking = 0
newTask(function()
updateSync()
self.walk = true
while (utils:getDistanceBetweenCoords2d(self.bx, self.by, self.tox, self.toy) > 0.8) do
wait(0)
updateSync()
end
self.walk = false
setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by))
setBotRotation(self.angle)
updateSync()
end)
end
setmetatable(public, self)
self.__index = self
return public
end
local function filesize(fd)
local current = fd:seek()
local size = fd:seek("end")
fd:seek("set", current)
return size
end
local filename = "SAfull.hmap"
local fd, err = io.open(filename, "rb")
if err then error(err) end
local size = filesize(fd)
local buffer = ffi.new("uint16_t[?]", size)
ffi.copy(buffer, fd:read(size), size)
fd:close()
function getZ(x,y)
x = round2(x) + 3000
y = (round2(y) - 3000) * -1
local IdataPos = (y * 6000) + x
return buffer[IdataPos]/100 + 1
end
function round2(num, numDecimalPlaces)
return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num))
end
local objects = {}
local time = 0
function sampev.onSendPlayerSync(data)
if bot.walk then
local overclocking = (bot.overclocking >= 1)
bot.overclocking = (overclocking and 1 or (bot.overclocking + 0.01))
bot.angle = utils:getHeadingFromVector2d((bot.tox - bot.bx), (bot.toy - bot.by))
bot.rad = -math.rad(bot.angle)
bot.sinX, bot.cosY = math.sin(bot.rad), math.cos(bot.rad)
bot.bx = (bot.bx + (((bot.sinX*bot.run.pos)*bot.overclocking)))
bot.by = (bot.by + (((bot.cosY*bot.run.pos)*bot.overclocking)))
bot.qz, bot.qw = utils:angleToQuaternion(bot.angle)
data.upDownKeys = 65408
data.keysData = bot.run.key
data.position.x, data.position.y, data.position.z = bot.bx, bot.by, getZ(bot.bx, bot.by)
data.moveSpeed.x, data.moveSpeed.y = ((bot.sinX*bot.run.speed)*bot.overclocking), ((bot.cosY*(bot.run.speed*bot.overclocking))*bot.overclocking)
data.quaternion[3], data.quaternion[0] = bot.qz, bot.qw
data.animationId = (overclocking and 1228 or 1224)
data.specialAction = 3
data.animationFlags = 32770
setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by))
end
if os.time() - time <= 5 then
local x, y, z = getBotPosition()
data.position.x = x + 0.1
data.position.y = y + 0.1
data.position.z = z + 0.1
end
end
function getDistanceBetweenCoords2d(x1, y1, x2, y2)
return math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2))
end
utils = Utils:new()
bot = Bot:new()
Вы ахуели мой скрипт полуторагодовой давности хуйней называть?... Я как бы старался(. А откуда он пошел вообще?Слитый 100 раз мусор:local Utils = {} local Bot = {} local utils local bot function Utils:new() local public = {} function public:getHeadingFromVector2d(x, y) local angle = math.deg(math.atan2(y, x)) if (angle < 0) then angle = (angle + 360) end angle = (angle - 90) if (angle < 0) then angle = (angle + 360) end return angle end function public:getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1)^2) + ((y2 - y1)^2)) end function public:angleToQuaternion(angle) local a = (math.rad(angle) / 2) local qz = -math.sin(a) local qw = math.cos(a) return qz, qw end setmetatable(public, self) self.__index = self return public end function Bot:new() local private = {} local public = {} public.walk = false public.run = {} function public:runToPosition(tox, toy, toz, typeRun) if bot.walk then return end local dataRun = { {pos = 0.030, speed = 0.13, key = 1024}, -- WALK {pos = 0.075, speed = 0.23, key = 0}, -- DEFAULT {pos = 0.09, speed = 0.23, key = 8} -- SPRINT } typeRun = typeRun or 2 -- если typeRun не указан, используем DEFAULT self.tox, self.toy, self.toz = tox, toy, getZ(tox, toy) self.bx, self.by, self.bz = getBotPosition() self.angle = utils:getHeadingFromVector2d((self.tox - self.bx), (self.toy - self.by)) self.run = dataRun[typeRun] if not self.run then self.run = dataRun[2] -- используем DEFAULT если указан неверный typeRun end self.overclocking = 0 newTask(function() updateSync() self.walk = true while (utils:getDistanceBetweenCoords2d(self.bx, self.by, self.tox, self.toy) > 0.8) do wait(0) updateSync() end self.walk = false setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) setBotRotation(self.angle) updateSync() end) end setmetatable(public, self) self.__index = self return public end local function filesize(fd) local current = fd:seek() local size = fd:seek("end") fd:seek("set", current) return size end local filename = "SAfull.hmap" local fd, err = io.open(filename, "rb") if err then error(err) end local size = filesize(fd) local buffer = ffi.new("uint16_t[?]", size) ffi.copy(buffer, fd:read(size), size) fd:close() function getZ(x,y) x = round2(x) + 3000 y = (round2(y) - 3000) * -1 local IdataPos = (y * 6000) + x return buffer[IdataPos]/100 + 1 end function round2(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end local objects = {} local time = 0 function sampev.onSendPlayerSync(data) if bot.walk then local overclocking = (bot.overclocking >= 1) bot.overclocking = (overclocking and 1 or (bot.overclocking + 0.01)) bot.angle = utils:getHeadingFromVector2d((bot.tox - bot.bx), (bot.toy - bot.by)) bot.rad = -math.rad(bot.angle) bot.sinX, bot.cosY = math.sin(bot.rad), math.cos(bot.rad) bot.bx = (bot.bx + (((bot.sinX*bot.run.pos)*bot.overclocking))) bot.by = (bot.by + (((bot.cosY*bot.run.pos)*bot.overclocking))) bot.qz, bot.qw = utils:angleToQuaternion(bot.angle) data.upDownKeys = 65408 data.keysData = bot.run.key data.position.x, data.position.y, data.position.z = bot.bx, bot.by, getZ(bot.bx, bot.by) data.moveSpeed.x, data.moveSpeed.y = ((bot.sinX*bot.run.speed)*bot.overclocking), ((bot.cosY*(bot.run.speed*bot.overclocking))*bot.overclocking) data.quaternion[3], data.quaternion[0] = bot.qz, bot.qw data.animationId = (overclocking and 1228 or 1224) data.specialAction = 3 data.animationFlags = 32770 setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) end if os.time() - time <= 5 then local x, y, z = getBotPosition() data.position.x = x + 0.1 data.position.y = y + 0.1 data.position.z = z + 0.1 end end function getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) end utils = Utils:new() bot = Bot:new()
Вот функция, не вижу смысла платить за это, функцию уже 100 раз слили
Изменено: использование bot:runToPosition(корды)
пиши в дс tenderbunкто сможет написать функцию для раксампа лайт для бега бота к определенной точке
предлагайте цену
вот так делаешь, стараешься, а потом человек с ботом телеграм на 10 минутные почты называет это мусоромСлитый 100 раз мусор:local Utils = {} local Bot = {} local utils local bot function Utils:new() local public = {} function public:getHeadingFromVector2d(x, y) local angle = math.deg(math.atan2(y, x)) if (angle < 0) then angle = (angle + 360) end angle = (angle - 90) if (angle < 0) then angle = (angle + 360) end return angle end function public:getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1)^2) + ((y2 - y1)^2)) end function public:angleToQuaternion(angle) local a = (math.rad(angle) / 2) local qz = -math.sin(a) local qw = math.cos(a) return qz, qw end setmetatable(public, self) self.__index = self return public end function Bot:new() local private = {} local public = {} public.walk = false public.run = {} function public:runToPosition(tox, toy, toz, typeRun) if bot.walk then return end local dataRun = { {pos = 0.030, speed = 0.13, key = 1024}, -- WALK {pos = 0.075, speed = 0.23, key = 0}, -- DEFAULT {pos = 0.09, speed = 0.23, key = 8} -- SPRINT } typeRun = typeRun or 2 -- если typeRun не указан, используем DEFAULT self.tox, self.toy, self.toz = tox, toy, getZ(tox, toy) self.bx, self.by, self.bz = getBotPosition() self.angle = utils:getHeadingFromVector2d((self.tox - self.bx), (self.toy - self.by)) self.run = dataRun[typeRun] if not self.run then self.run = dataRun[2] -- используем DEFAULT если указан неверный typeRun end self.overclocking = 0 newTask(function() updateSync() self.walk = true while (utils:getDistanceBetweenCoords2d(self.bx, self.by, self.tox, self.toy) > 0.8) do wait(0) updateSync() end self.walk = false setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) setBotRotation(self.angle) updateSync() end) end setmetatable(public, self) self.__index = self return public end local function filesize(fd) local current = fd:seek() local size = fd:seek("end") fd:seek("set", current) return size end local filename = "SAfull.hmap" local fd, err = io.open(filename, "rb") if err then error(err) end local size = filesize(fd) local buffer = ffi.new("uint16_t[?]", size) ffi.copy(buffer, fd:read(size), size) fd:close() function getZ(x,y) x = round2(x) + 3000 y = (round2(y) - 3000) * -1 local IdataPos = (y * 6000) + x return buffer[IdataPos]/100 + 1 end function round2(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end local objects = {} local time = 0 function sampev.onSendPlayerSync(data) if bot.walk then local overclocking = (bot.overclocking >= 1) bot.overclocking = (overclocking and 1 or (bot.overclocking + 0.01)) bot.angle = utils:getHeadingFromVector2d((bot.tox - bot.bx), (bot.toy - bot.by)) bot.rad = -math.rad(bot.angle) bot.sinX, bot.cosY = math.sin(bot.rad), math.cos(bot.rad) bot.bx = (bot.bx + (((bot.sinX*bot.run.pos)*bot.overclocking))) bot.by = (bot.by + (((bot.cosY*bot.run.pos)*bot.overclocking))) bot.qz, bot.qw = utils:angleToQuaternion(bot.angle) data.upDownKeys = 65408 data.keysData = bot.run.key data.position.x, data.position.y, data.position.z = bot.bx, bot.by, getZ(bot.bx, bot.by) data.moveSpeed.x, data.moveSpeed.y = ((bot.sinX*bot.run.speed)*bot.overclocking), ((bot.cosY*(bot.run.speed*bot.overclocking))*bot.overclocking) data.quaternion[3], data.quaternion[0] = bot.qz, bot.qw data.animationId = (overclocking and 1228 or 1224) data.specialAction = 3 data.animationFlags = 32770 setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) end if os.time() - time <= 5 then local x, y, z = getBotPosition() data.position.x = x + 0.1 data.position.y = y + 0.1 data.position.z = z + 0.1 end end function getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) end utils = Utils:new() bot = Bot:new()
Вот функция, не вижу смысла платить за это, функцию уже 100 раз слили
Изменено: использование bot:runToPosition(корды)
почему мусор?Слитый 100 раз мусор:local Utils = {} local Bot = {} local utils local bot function Utils:new() local public = {} function public:getHeadingFromVector2d(x, y) local angle = math.deg(math.atan2(y, x)) if (angle < 0) then angle = (angle + 360) end angle = (angle - 90) if (angle < 0) then angle = (angle + 360) end return angle end function public:getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1)^2) + ((y2 - y1)^2)) end function public:angleToQuaternion(angle) local a = (math.rad(angle) / 2) local qz = -math.sin(a) local qw = math.cos(a) return qz, qw end setmetatable(public, self) self.__index = self return public end function Bot:new() local private = {} local public = {} public.walk = false public.run = {} function public:runToPosition(tox, toy, toz, typeRun) if bot.walk then return end local dataRun = { {pos = 0.030, speed = 0.13, key = 1024}, -- WALK {pos = 0.075, speed = 0.23, key = 0}, -- DEFAULT {pos = 0.09, speed = 0.23, key = 8} -- SPRINT } typeRun = typeRun or 2 -- если typeRun не указан, используем DEFAULT self.tox, self.toy, self.toz = tox, toy, getZ(tox, toy) self.bx, self.by, self.bz = getBotPosition() self.angle = utils:getHeadingFromVector2d((self.tox - self.bx), (self.toy - self.by)) self.run = dataRun[typeRun] if not self.run then self.run = dataRun[2] -- используем DEFAULT если указан неверный typeRun end self.overclocking = 0 newTask(function() updateSync() self.walk = true while (utils:getDistanceBetweenCoords2d(self.bx, self.by, self.tox, self.toy) > 0.8) do wait(0) updateSync() end self.walk = false setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) setBotRotation(self.angle) updateSync() end) end setmetatable(public, self) self.__index = self return public end local function filesize(fd) local current = fd:seek() local size = fd:seek("end") fd:seek("set", current) return size end local filename = "SAfull.hmap" local fd, err = io.open(filename, "rb") if err then error(err) end local size = filesize(fd) local buffer = ffi.new("uint16_t[?]", size) ffi.copy(buffer, fd:read(size), size) fd:close() function getZ(x,y) x = round2(x) + 3000 y = (round2(y) - 3000) * -1 local IdataPos = (y * 6000) + x return buffer[IdataPos]/100 + 1 end function round2(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end local objects = {} local time = 0 function sampev.onSendPlayerSync(data) if bot.walk then local overclocking = (bot.overclocking >= 1) bot.overclocking = (overclocking and 1 or (bot.overclocking + 0.01)) bot.angle = utils:getHeadingFromVector2d((bot.tox - bot.bx), (bot.toy - bot.by)) bot.rad = -math.rad(bot.angle) bot.sinX, bot.cosY = math.sin(bot.rad), math.cos(bot.rad) bot.bx = (bot.bx + (((bot.sinX*bot.run.pos)*bot.overclocking))) bot.by = (bot.by + (((bot.cosY*bot.run.pos)*bot.overclocking))) bot.qz, bot.qw = utils:angleToQuaternion(bot.angle) data.upDownKeys = 65408 data.keysData = bot.run.key data.position.x, data.position.y, data.position.z = bot.bx, bot.by, getZ(bot.bx, bot.by) data.moveSpeed.x, data.moveSpeed.y = ((bot.sinX*bot.run.speed)*bot.overclocking), ((bot.cosY*(bot.run.speed*bot.overclocking))*bot.overclocking) data.quaternion[3], data.quaternion[0] = bot.qz, bot.qw data.animationId = (overclocking and 1228 or 1224) data.specialAction = 3 data.animationFlags = 32770 setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) end if os.time() - time <= 5 then local x, y, z = getBotPosition() data.position.x = x + 0.1 data.position.y = y + 0.1 data.position.z = z + 0.1 end end function getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) end utils = Utils:new() bot = Bot:new()
Вот функция, не вижу смысла платить за это, функцию уже 100 раз слили
Изменено: использование bot:runToPosition(корды)
один хуй не работает, миллион ошибок, а разбираться не хочетсяСлитый 100 раз мусор:local Utils = {} local Bot = {} local utils local bot function Utils:new() local public = {} function public:getHeadingFromVector2d(x, y) local angle = math.deg(math.atan2(y, x)) if (angle < 0) then angle = (angle + 360) end angle = (angle - 90) if (angle < 0) then angle = (angle + 360) end return angle end function public:getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1)^2) + ((y2 - y1)^2)) end function public:angleToQuaternion(angle) local a = (math.rad(angle) / 2) local qz = -math.sin(a) local qw = math.cos(a) return qz, qw end setmetatable(public, self) self.__index = self return public end function Bot:new() local private = {} local public = {} public.walk = false public.run = {} function public:runToPosition(tox, toy, toz, typeRun) if bot.walk then return end local dataRun = { {pos = 0.030, speed = 0.13, key = 1024}, -- WALK {pos = 0.075, speed = 0.23, key = 0}, -- DEFAULT {pos = 0.09, speed = 0.23, key = 8} -- SPRINT } typeRun = typeRun or 2 -- если typeRun не указан, используем DEFAULT self.tox, self.toy, self.toz = tox, toy, getZ(tox, toy) self.bx, self.by, self.bz = getBotPosition() self.angle = utils:getHeadingFromVector2d((self.tox - self.bx), (self.toy - self.by)) self.run = dataRun[typeRun] if not self.run then self.run = dataRun[2] -- используем DEFAULT если указан неверный typeRun end self.overclocking = 0 newTask(function() updateSync() self.walk = true while (utils:getDistanceBetweenCoords2d(self.bx, self.by, self.tox, self.toy) > 0.8) do wait(0) updateSync() end self.walk = false setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) setBotRotation(self.angle) updateSync() end) end setmetatable(public, self) self.__index = self return public end local function filesize(fd) local current = fd:seek() local size = fd:seek("end") fd:seek("set", current) return size end local filename = "SAfull.hmap" local fd, err = io.open(filename, "rb") if err then error(err) end local size = filesize(fd) local buffer = ffi.new("uint16_t[?]", size) ffi.copy(buffer, fd:read(size), size) fd:close() function getZ(x,y) x = round2(x) + 3000 y = (round2(y) - 3000) * -1 local IdataPos = (y * 6000) + x return buffer[IdataPos]/100 + 1 end function round2(num, numDecimalPlaces) return tonumber(string.format("%." .. (numDecimalPlaces or 0) .. "f", num)) end local objects = {} local time = 0 function sampev.onSendPlayerSync(data) if bot.walk then local overclocking = (bot.overclocking >= 1) bot.overclocking = (overclocking and 1 or (bot.overclocking + 0.01)) bot.angle = utils:getHeadingFromVector2d((bot.tox - bot.bx), (bot.toy - bot.by)) bot.rad = -math.rad(bot.angle) bot.sinX, bot.cosY = math.sin(bot.rad), math.cos(bot.rad) bot.bx = (bot.bx + (((bot.sinX*bot.run.pos)*bot.overclocking))) bot.by = (bot.by + (((bot.cosY*bot.run.pos)*bot.overclocking))) bot.qz, bot.qw = utils:angleToQuaternion(bot.angle) data.upDownKeys = 65408 data.keysData = bot.run.key data.position.x, data.position.y, data.position.z = bot.bx, bot.by, getZ(bot.bx, bot.by) data.moveSpeed.x, data.moveSpeed.y = ((bot.sinX*bot.run.speed)*bot.overclocking), ((bot.cosY*(bot.run.speed*bot.overclocking))*bot.overclocking) data.quaternion[3], data.quaternion[0] = bot.qz, bot.qw data.animationId = (overclocking and 1228 or 1224) data.specialAction = 3 data.animationFlags = 32770 setBotPosition(bot.bx, bot.by, getZ(bot.bx, bot.by)) end if os.time() - time <= 5 then local x, y, z = getBotPosition() data.position.x = x + 0.1 data.position.y = y + 0.1 data.position.z = z + 0.1 end end function getDistanceBetweenCoords2d(x1, y1, x2, y2) return math.sqrt(((x2 - x1) ^ 2) + ((y2 - y1) ^ 2)) end utils = Utils:new() bot = Bot:new()
Вот функция, не вижу смысла платить за это, функцию уже 100 раз слили
Изменено: использование bot:runToPosition(корды)