Нужна помощь с телепортом

Soldik

Новичок
Автор темы
22
1
Версия SA-MP
  1. Любая
Всем доброго времени суток. Написал код ( ну как написал, нашел на бласте ), где возможен курд по метке на карте. Как сделать так, чтобы курд запускался тогда, когда найдется нужный пикап и начинался полет на координаты пикапа?


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)
    freezeCharPosition(PLAYER_PED, false)
  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
    freezeCharPosition(PLAYER_PED, true)
    setCharCoordinates(PLAYER_PED, x, y, z)
    wait(time)
    CoordMaster(px, py, pz, step, time)
  end
end


function teleport()
  local result, x, y, z = getTargetBlipCoordinates()
  if result then -- если на карте установлена метка
      CoordMaster(x, y, z, 40, 300) -- каждый тп на 40 метров, между ними 300 мс
  end
end


function sampev.onCreatePickup(id, model, pickupType, position)


end
 
Решение
Всем доброго времени суток. Написал код ( ну как написал, нашел на бласте ), где возможен курд по метке на карте. Как сделать так, чтобы курд запускался тогда, когда найдется нужный пикап и начинался полет на координаты пикапа?


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)
    freezeCharPosition(PLAYER_PED, false)
  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
    freezeCharPosition(PLAYER_PED, true)
    setCharCoordinates(PLAYER_PED, x, y, z)
    wait(time)...

sazzas1978

Известный
141
128
Всем доброго времени суток. Написал код ( ну как написал, нашел на бласте ), где возможен курд по метке на карте. Как сделать так, чтобы курд запускался тогда, когда найдется нужный пикап и начинался полет на координаты пикапа?


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)
    freezeCharPosition(PLAYER_PED, false)
  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
    freezeCharPosition(PLAYER_PED, true)
    setCharCoordinates(PLAYER_PED, x, y, z)
    wait(time)
    CoordMaster(px, py, pz, step, time)
  end
end


function teleport()
  local result, x, y, z = getTargetBlipCoordinates()
  if result then -- если на карте установлена метка
      CoordMaster(x, y, z, 40, 300) -- каждый тп на 40 метров, между ними 300 мс
  end
end


function sampev.onCreatePickup(id, model, pickupType, position)


end
Lua:
function sampev.onCreatePickup(id, model, pickupType, position)
    if id == ТУТ_ПОДСТАВИТЬ_АЙДИ_НУЖНОГО_ПИКАПА then
        CoordMaster(position.x, position.y, position.z, 300)
    end
end
 

VanoKLR

Известный
980
599
Всем доброго времени суток. Написал код ( ну как написал, нашел на бласте ), где возможен курд по метке на карте. Как сделать так, чтобы курд запускался тогда, когда найдется нужный пикап и начинался полет на координаты пикапа?


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)
    freezeCharPosition(PLAYER_PED, false)
  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
    freezeCharPosition(PLAYER_PED, true)
    setCharCoordinates(PLAYER_PED, x, y, z)
    wait(time)
    CoordMaster(px, py, pz, step, time)
  end
end


function teleport()
  local result, x, y, z = getTargetBlipCoordinates()
  if result then -- если на карте установлена метка
      CoordMaster(x, y, z, 40, 300) -- каждый тп на 40 метров, между ними 300 мс
  end
end


function sampev.onCreatePickup(id, model, pickupType, position)


end
Lua:
function sampev.onCreatePickup(id, model, pickupType, position)
    if id == 1337 then
        lua_thread.create(CoordMaster, position.x, position.y, position.z, 2, 50)
    end
end
 

fokichevskiy

Известный
483
264
Lua:
local sampev = require('lib.samp.events')

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)
        freezeCharPosition(PLAYER_PED, false)
        return
    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
        
        freezeCharPosition(PLAYER_PED, true)
        setCharCoordinates(PLAYER_PED, x, y, z)
        wait(time)
        
        while true do
            x, y, z = getCharCoordinates(PLAYER_PED)
            d = getDistanceBetweenCoords3d(px, py, pz, x, y, z)
            
            if d <= step then
                setCharCoordinates(PLAYER_PED, px, py, pz)
                freezeCharPosition(PLAYER_PED, false)
                break
            else
                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)
            end
        end
    end
end


function sampev.onCreatePickup(id, model, pickupType, position)
    if model == 13966 then
        lua_thread.create(function()
            CoordMaster(position.x, position.y, position.z, 5, 300)
        end)
    end
end