Помогите с написанием "телепорта"

kolokolch1k

Новичок
Автор темы
6
1
Версия SA-MP
  1. 0.3.7 (R1)
Пишу себе скрипт на lua и возник вопрос - мне нужно телепортировать персонажа с любой точки на указанные мною координаты и чтобы анти-чит не ругался реализовать это по принципу Coordmaster. Кто может помочь с задумкой или подкинуть идею как это сделать, буду очень благодарен ?
 
Решение
Lua:
local Px, Py, Pz = getCharCoordinates(1) -- исходная точка (откуда)
local Gx, Gy, Gz = 0, 0, 0 -- конечная точка (куда)
local Dx, Dy, Dz = Gx - Px, Gy - Py, Gz - Pz -- считаем длину по векторам
local D = math.sqrt(Dx ^ 2 + Dy ^ 2 + Dz ^ 2)
local steps = math.floor(D / stepLength) -- stepLength заменяй на свое число, это длина прыжка в метрах
local path = {}
for i = 1, steps do
    path[#path+1] = {
        x = Px + (Dx / steps) * i,
        y = Py + (Dy / steps) * i,
        z = Pz + (Dz / steps) * i
    }
end
path[#path+1] = {x = Gx, y = Gy, z = Gz}
Lua:
for i = 1, steps do
    wait(100) -- подбирай задержку между шагами
    setCharCoordinates(1, path[i].x, path[i].y, path[i].z)
end

shitcodes

Известный
1,435
663
 

Fott

Простреленный
3,461
2,378
Lua:
local Px, Py, Pz = getCharCoordinates(1) -- исходная точка (откуда)
local Gx, Gy, Gz = 0, 0, 0 -- конечная точка (куда)
local Dx, Dy, Dz = Gx - Px, Gy - Py, Gz - Pz -- считаем длину по векторам
local D = math.sqrt(Dx ^ 2 + Dy ^ 2 + Dz ^ 2)
local steps = math.floor(D / stepLength) -- stepLength заменяй на свое число, это длина прыжка в метрах
local path = {}
for i = 1, steps do
    path[#path+1] = {
        x = Px + (Dx / steps) * i,
        y = Py + (Dy / steps) * i,
        z = Pz + (Dz / steps) * i
    }
end
path[#path+1] = {x = Gx, y = Gy, z = Gz}
Lua:
for i = 1, steps do
    wait(100) -- подбирай задержку между шагами
    setCharCoordinates(1, path[i].x, path[i].y, path[i].z)
end
 
  • Bug
  • Нравится
Реакции: kolokolch1k и !#@

nomio

Известный
550
208
Lua:
function CoordMaster(px, py, pz, step, time)
  local x, y, z = getCharCoordinates(PLAYER_PED)
  local d = getDistanceBetweenCoords3d(px, py, pz, x, y, z)
  if d <= step then
    setCharCoordinates(PLAYER_PED, px, py, pz)
  else
    local dx, dy, dz = px - x, py - y, pz - z
    x = x + step / d * dx
    y = y + step / d * dy
    z = z + step / d * dz
    setCharCoordinates(PLAYER_PED, x, y, z)
    wait(time)
    CoordMaster(px, py, pz, step, time)
  end
end

 
  • Нравится
Реакции: Ivkide и kolokolch1k