Почему игрок возвращается в ту же точку

fokich

Участник
Автор темы
93
21
Версия MoonLoader
.026-beta
Я хочу сделать так, чтобы игрок шел на точку и после этого не возвращался в эту точку. То есть сначала go_to_point(point1), go_to_point(point2) во вторую точку.
Почему не работает метод снизу
Lua:
function go_to_point(point)
    local dist
    local mx, my, mz = getCharCoordinates(PLAYER_PED)
    dist = getDistanceBetweenCoords2d(point.x, point.y, mx, my)
    local stoprun = false
    if dist > 2.0 and stoprun == false then
     set_camera_direction(point)
     setGameKeyState(1, -255)
    elseif dist < 2.0 then
     setGameKeyState(1, 0)
     stoprun = not stoprun
    end
end

function set_camera_direction(point)
    local c_pos_x, c_pos_y, c_pos_z = getActiveCameraCoordinates()
    local vect = {x = point.x - c_pos_x, y = point.y - c_pos_y}
    local ax = math.atan2(vect.y, -vect.x)
    setCameraPositionUnfixed(0.0, -ax)
end
 

Лебiгович

Известный
877
239




Lua:
local stoprun = false

function go_to_point(point)
    local dist
    local mx, my, mz = getCharCoordinates(PLAYER_PED)
    dist = getDistanceBetweenCoords2d(point.x, point.y, mx, my)
    if dist > 2.0 and stoprun == false then
        set_camera_direction(point)
        setGameKeyState(1, -255)
    elseif dist < 2.0 then
        setGameKeyState(1, 0)
        stoprun = true
    end
end

function set_camera_direction(point)
    local c_pos_x, c_pos_y, c_pos_z = getActiveCameraCoordinates()
    local vect = {x = point.x - c_pos_x, y = point.y - c_pos_y}
    local ax = math.atan2(vect.y, -vect.x)
    setCameraPositionUnfixed(0.0, -ax)
end
 

fokich

Участник
Автор темы
93
21




Lua:
local stoprun = false

function go_to_point(point)
    local dist
    local mx, my, mz = getCharCoordinates(PLAYER_PED)
    dist = getDistanceBetweenCoords2d(point.x, point.y, mx, my)
    if dist > 2.0 and stoprun == false then
        set_camera_direction(point)
        setGameKeyState(1, -255)
    elseif dist < 2.0 then
        setGameKeyState(1, 0)
        stoprun = true
    end
end

function set_camera_direction(point)
    local c_pos_x, c_pos_y, c_pos_z = getActiveCameraCoordinates()
    local vect = {x = point.x - c_pos_x, y = point.y - c_pos_y}
    local ax = math.atan2(vect.y, -vect.x)
    setCameraPositionUnfixed(0.0, -ax)
end[/CODE
[/QUOTE]
а как можно сделать потом движение ко второй точки, то есть сначала чтобы добегал до первой и можно так сказать забывал про неё, потом бежал ко второй
 

Лебiгович

Известный
877
239
а как можно сделать потом движение ко второй точки, то есть сначала чтобы добегал до первой и можно так сказать забывал про неё, потом бежал ко второй
Lua:
local points = {} -- массив точек
local current_point = 1 -- индекс текущей точки

function go_to_points()
    if #points > 0 then
        local point = points[current_point]
        go_to_point(point)
    end
end

function go_to_point(point)
    local dist
    local mx, my, mz = getCharCoordinates(PLAYER_PED)
    dist = getDistanceBetweenCoords2d(point.x, point.y, mx, my)
    if dist > 2.0 then
        set_camera_direction(point)
        setGameKeyState(1, -255)
    else
        setGameKeyState(1, 0)
        current_point = current_point + 1 -- переход к следующей точке
        go_to_points() -- рекурсивный вызов для перехода к следующей точке
    end
end

function set_camera_direction(point)
    local c_pos_x, c_pos_y, c_pos_z = getActiveCameraCoordinates()
    local vect = {x = point.x - c_pos_x, y = point.y - c_pos_y}
    local ax = math.atan2(vect.y, -vect.x)
    setCameraPositionUnfixed(0.0, -ax)
end

function add_point(x, y)
    table.insert(points, {x = x, y = y})
end