как найти координаты этого обьекта/маркера

exlplain

Участник
Автор темы
44
1
Версия SA-MP
  1. Любая
Мучаюсь уже 4 дня не могу найти координаты
этого маркера или что это

пробовал почти все способы включая этот;
jj.png
 
Решение
там же нету end xD


что именно там лишние


блять если не лень можешь скинуть рабочий пример на основе этого 'кода'
Lua:
local vector3D = require 'vector3d'
local samp = require 'lib.samp.events'
local returnAgain = false
local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 }  }
local millisecond;
local active = false

function main()
    repeat wait(0) until isSampAvailable()
   
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_bot', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1)...

EclipsedFlow

Известный
Проверенный
1,040
464
не лучший выриант как по мне.Но все ровно запомню.




ДА НО НЕТ.Я хотел сделать чтобы он до бесконечности по маркерам тпхался пробовал в беск цикл засунуть не робит.
1) Берешь создаешь глоб. переменную
2) Через команду переменную переключаешь, если она активна то в бесконечном цикле получаешь координаты метки
3) Если координаты есть и result == true то начинаешь телепортироваться на метку.
4) Делаешь проверку на дистанцию от персонажа до метки, если она < 4 то функа находит снова позицию маркера и все
 

exlplain

Участник
Автор темы
44
1
1) Берешь создаешь глоб. переменную
2) Через команду переменную переключаешь, если она активна то в бесконечном цикле получаешь координаты метки
3) Если координаты есть и result == true то начинаешь телепортироваться на метку.
4) Делаешь проверку на дистанцию от персонажа до метки, если она < 4 то функа находит снова позицию маркера и все
Типо присвоить значения потом вызвать функцию? не очень понимаю.если честно я ничего не понел
 

exlplain

Участник
Автор темы
44
1
Что ты хочешь сделать?
'Бот' телепорт к маркерам.дальше с имуляцией нажатий работать

Типо присвоить значения потом вызвать функцию? не очень понимаю.если честно я ничего не понел
res, x,y,z = ()-- типо возле скобочек надо поставить что то
if res then
-- типо если есть то сюда код
else
-- а тут если нет
end


так?
 

EclipsedFlow

Известный
Проверенный
1,040
464
'Бот' телепорт к маркерам.дальше с имуляцией нажатий работать


res, x,y,z = ()-- типо возле скобочек надо поставить что то
if res then
-- типо если есть то сюда код
else
-- а тут если нет
end


так?
Тепался постоянно или единожды?
 

EclipsedFlow

Известный
Проверенный
1,040
464
постоянно, но после повторного ввода команды выключался (это и так есть)
Lua:
local active = false

function main()
    repeat wait(0) until isSampAvailable()
 
    sampRegisterChatCommand('mark', function()
        active = not active
    end)
 
    while true do wait(0)
 
          if active then
            local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
            local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
            
            if res then
                local distance = getDistanceBetween3d(myX, myY, myZ, x, y, z)
                
                -- teleport
                
                if distance < 4 then
                    -- code
                end
            end
        end
 
    end
end

function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end
 

exlplain

Участник
Автор темы
44
1
Lua:
local active = false

function main()
    repeat wait(0) until isSampAvailable()
 
    sampRegisterChatCommand('mark', function()
        active = not active
    end)
 
    while true do wait(0)
 
          if active then
            local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
            local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
          
            if res then
                local distance = getDistanceBetween3d(myX, myY, myZ, x, y, z)
              
                -- teleport
              
                if distance < 4 then
                    -- code
                end
            end
        end
 
    end
end

function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end
attempt to compare nil with number
stack traceback:
78 строка где distance <4

Lua:
local active = false

function main()
    repeat wait(0) until isSampAvailable()
 
    sampRegisterChatCommand('mark', function()
        active = not active
    end)
 
    while true do wait(0)
 
          if active then
            local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
            local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
           
            if res then
                local distance = getDistanceBetween3d(myX, myY, myZ, x, y, z)
               
                -- teleport
               
                if distance < 4 then
                    -- code
                end
            end
        end
 
    end
end

function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end
вроде как исправил появилась новая
3: attempt to call global 'SearchMarker' (a nil value)
stack traceback:
1>
[ML] (error) OptimizerChark.lua: Script died due to an error. (2DDBB434)
 
Последнее редактирование:

EclipsedFlow

Известный
Проверенный
1,040
464
attempt to compare nil with number
stack traceback:
78 строка где distance <4


вроде как исправил появилась новая
3: attempt to call global 'SearchMarker' (a nil value)
stack traceback:
1>
[ML] (error) OptimizerChark.lua: Script died due to an error. (2DDBB434)
Функу вставил?
 

exlplain

Участник
Автор темы
44
1
Да, если не работает, кинь полный код
lua:
local vector3D = require 'vector3d'
local samp = require 'lib.samp.events'
local returnAgain = false
local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 }  }
local millisecond;
local active = false

function main()
    repeat wait(0) until isSampAvailable()
 
    local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
    local res, Ox, Oy, Oz = SearchMarker(myX, myY, myZ, 9999, false)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_bot', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}Stp]{FFFFFF}', -1)

    sampRegisterChatCommand('tp_bot', function()
        active = not active
    end)
        
        if active then
            local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
            local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
          
      
        if res then
           local distance = getDistanceBetween3d(myX, myY, myZ, x, y, z)
            xyz.private.x, xyz.private.y, xyz.private.z = x, y, z;
            xyz.public.x, xyz.public.y, xyz.public.z = x, y, z;
            teleport = not teleport
        else
            sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}>!)-.', -1)
        end
        if not teleport then
            freezeCharPosition(playerPed, false)
        end
    
    while true do wait(0)
        if teleport and isCharOnFoot(playerPed) then
            freezeCharPosition(playerPed, true)
            local myPosition = {getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.5)}
            xyz.static.x, xyz.static.y, xyz.static.z = xyz.private.x - myPosition[1], xyz.private.y - myPosition[2], xyz.private.z - myPosition[3];
            xyz.public.x, xyz.public.y, xyz.public.z = xyz.public.x - myPosition[1], xyz.public.y - myPosition[2], xyz.public.z - myPosition[3];
            local vectorPlayer = vector3D(xyz.static.x, xyz.static.y, xyz.static.z)
            vectorPlayer:normalize()
            local data = allocateMemory(68)
            sampStorePlayerOnfootData(returnid(), data)
            setStructFloatElement(data, 38, 0.0, true)
            setStructFloatElement(data, 42, 0.0, true)
            setStructFloatElement(data, 38, 0.02, true)
            setStructFloatElement(data, 42, 0.02, true)
            sampSendOnfootData(data)
            freeMemory(data)
            setCharCoordinates(playerPed, myPosition[1] + vectorPlayer.x *  1.3, myPosition[2] + vectorPlayer.y *  1.3, myPosition[3] + vectorPlayer.z *  1.3)
            wait(20)
            if getDistanceBetweenCoords3d(xyz.private.x, xyz.private.y, xyz.private.z, myPosition[1], myPosition[2], myPosition[3]) < 1 then
                local lastPosition = {getCharCoordinates(playerPed)}
                setCharCoordinates(playerPed, lastPosition[1], lastPosition[2], lastPosition[3] + 0.01)
                freezeCharPosition(playerPed, false)
            
                sampAddChatMessage('<<<Process...', -1)
               wait(3000)
 return myPosition
            end
        end
    end
end
if distance < 4 then
    --function SearchMarker(posX, posY, posZ, radius, isRace) хз зачем в комм
   --    local ret_posX = 0.0
   --     local ret_posY = 0.0
   --     local ret_posZ = 0.0
   --     local isFind = false
    
     --   for id = 0, 31 do
      --      local MarkerStruct = 0
    ---        if isRace then MarkerStruct = 0xC7F168 + id * 56
      --      else MarkerStruct = 0xC7DD88 + id * 160 end
       --     local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
      --      local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
       --     local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))
    ----
       --     if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
      --          if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
       --             ret_posX = MarkerPosX
       --             ret_posY = MarkerPosY
       --             ret_posZ = MarkerPosZ
        --            isFind = true
        --            radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
          --      end
       --     end
      --  end
    --
   --     return isFind, ret_posX, ret_posY, ret_posZ
 --   end
    
    
--end




function returnid()
    local result, id = sampGetPlayerIdByCharHandle(playerPed)
   if result then return id else error(">>>") end
end

  
function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end

end

Да, если не работает, кинь полный код
в комент я шас занес до этого он без -- был
 

EclipsedFlow

Известный
Проверенный
1,040
464
lua:
local vector3D = require 'vector3d'
local samp = require 'lib.samp.events'
local returnAgain = false
local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 }  }
local millisecond;
local active = false

function main()
    repeat wait(0) until isSampAvailable()
 
    local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
    local res, Ox, Oy, Oz = SearchMarker(myX, myY, myZ, 9999, false)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_bot', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}Stp]{FFFFFF}', -1)

    sampRegisterChatCommand('tp_bot', function()
        active = not active
    end)
       
        if active then
            local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
            local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
         
     
        if res then
           local distance = getDistanceBetween3d(myX, myY, myZ, x, y, z)
            xyz.private.x, xyz.private.y, xyz.private.z = x, y, z;
            xyz.public.x, xyz.public.y, xyz.public.z = x, y, z;
            teleport = not teleport
        else
            sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}>!)-.', -1)
        end
        if not teleport then
            freezeCharPosition(playerPed, false)
        end
   
    while true do wait(0)
        if teleport and isCharOnFoot(playerPed) then
            freezeCharPosition(playerPed, true)
            local myPosition = {getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.5)}
            xyz.static.x, xyz.static.y, xyz.static.z = xyz.private.x - myPosition[1], xyz.private.y - myPosition[2], xyz.private.z - myPosition[3];
            xyz.public.x, xyz.public.y, xyz.public.z = xyz.public.x - myPosition[1], xyz.public.y - myPosition[2], xyz.public.z - myPosition[3];
            local vectorPlayer = vector3D(xyz.static.x, xyz.static.y, xyz.static.z)
            vectorPlayer:normalize()
            local data = allocateMemory(68)
            sampStorePlayerOnfootData(returnid(), data)
            setStructFloatElement(data, 38, 0.0, true)
            setStructFloatElement(data, 42, 0.0, true)
            setStructFloatElement(data, 38, 0.02, true)
            setStructFloatElement(data, 42, 0.02, true)
            sampSendOnfootData(data)
            freeMemory(data)
            setCharCoordinates(playerPed, myPosition[1] + vectorPlayer.x *  1.3, myPosition[2] + vectorPlayer.y *  1.3, myPosition[3] + vectorPlayer.z *  1.3)
            wait(20)
            if getDistanceBetweenCoords3d(xyz.private.x, xyz.private.y, xyz.private.z, myPosition[1], myPosition[2], myPosition[3]) < 1 then
                local lastPosition = {getCharCoordinates(playerPed)}
                setCharCoordinates(playerPed, lastPosition[1], lastPosition[2], lastPosition[3] + 0.01)
                freezeCharPosition(playerPed, false)
           
                sampAddChatMessage('<<<Process...', -1)
               wait(3000)
 return myPosition
            end
        end
    end
end
if distance < 4 then
    --function SearchMarker(posX, posY, posZ, radius, isRace) хз зачем в комм
   --    local ret_posX = 0.0
   --     local ret_posY = 0.0
   --     local ret_posZ = 0.0
   --     local isFind = false
   
     --   for id = 0, 31 do
      --      local MarkerStruct = 0
    ---        if isRace then MarkerStruct = 0xC7F168 + id * 56
      --      else MarkerStruct = 0xC7DD88 + id * 160 end
       --     local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
      --      local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
       --     local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))
    ----
       --     if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
      --          if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
       --             ret_posX = MarkerPosX
       --             ret_posY = MarkerPosY
       --             ret_posZ = MarkerPosZ
        --            isFind = true
        --            radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
          --      end
       --     end
      --  end
    --
   --     return isFind, ret_posX, ret_posY, ret_posZ
 --   end
   
   
--end




function returnid()
    local result, id = sampGetPlayerIdByCharHandle(playerPed)
   if result then return id else error(">>>") end
end

 
function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end

end


в комент я шас занес до этого он без -- был
1660742330801.png

Много чего лишнего в твоем скрипте. Почисти свой скрипт от лишнего.
 

exlplain

Участник
Автор темы
44
1

Много чего лишнего в твоем скрипте. Почисти свой скрипт от лишнего.
там же нету end xD


Много чего лишнего в твоем скрипте. Почисти свой скрипт от лишнего.
что именно там лишние


Много чего лишнего в твоем скрипте. Почисти свой скрипт от лишнего.
блять если не лень можешь скинуть рабочий пример на основе этого 'кода'
 
Последнее редактирование:

EclipsedFlow

Известный
Проверенный
1,040
464
там же нету end xD


что именно там лишние


блять если не лень можешь скинуть рабочий пример на основе этого 'кода'
Lua:
local vector3D = require 'vector3d'
local samp = require 'lib.samp.events'
local returnAgain = false
local xyz = { public = { x = 0, y = 0, z = 0 }, private = { x = 0, y = 0, z = 0 }, static = { x = 0, y = 0, z = 0 }  }
local millisecond;
local active = false

function main()
    repeat wait(0) until isSampAvailable()
   
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}супер пупер пиздатый код загружен', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}: /tp_bot', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}ЫЫЫ ', -1)
    sampAddChatMessage('{696969}[Optimal-{00FFFF}Stp]{FFFFFF}', -1)

    sampRegisterChatCommand('tp_bot', function()
        active = not active
       
        local myX, myY, myZ = getCharCoordinates(PLAYER_PED)
        local res, x, y, z = SearchMarker(myX, myY, myZ, 9999, false)
       
        if res then
               local distance = getDistanceBetween3d(myX, myY, myZ, x, y, z)
            xyz.private.x, xyz.private.y, xyz.private.z = x, y, z;
            xyz.public.x, xyz.public.y, xyz.public.z = x, y, z;
            teleport = not teleport
        else
            sampAddChatMessage('{696969}[Optimal-{00FFFF}tp]{FFFFFF}>!)-.', -1)
        end
       
        if not teleport then
            freezeCharPosition(playerPed, false)
        end
    end)
 
    while true do wait(0)
        if teleport and isCharOnFoot(playerPed) then
            freezeCharPosition(playerPed, true)
            local myPosition = {getOffsetFromCharInWorldCoords(playerPed, 0.0, 0.0, -1.5)}
            xyz.static.x, xyz.static.y, xyz.static.z = xyz.private.x - myPosition[1], xyz.private.y - myPosition[2], xyz.private.z - myPosition[3];
            xyz.public.x, xyz.public.y, xyz.public.z = xyz.public.x - myPosition[1], xyz.public.y - myPosition[2], xyz.public.z - myPosition[3];
            local vectorPlayer = vector3D(xyz.static.x, xyz.static.y, xyz.static.z)
            vectorPlayer:normalize()
            local data = allocateMemory(68)
            sampStorePlayerOnfootData(returnid(), data)
            setStructFloatElement(data, 38, 0.0, true)
            setStructFloatElement(data, 42, 0.0, true)
            setStructFloatElement(data, 38, 0.02, true)
            setStructFloatElement(data, 42, 0.02, true)
            sampSendOnfootData(data)
            freeMemory(data)
            setCharCoordinates(playerPed, myPosition[1] + vectorPlayer.x *  1.3, myPosition[2] + vectorPlayer.y *  1.3, myPosition[3] + vectorPlayer.z *  1.3)
            wait(20)
            if getDistanceBetweenCoords3d(xyz.private.x, xyz.private.y, xyz.private.z, myPosition[1], myPosition[2], myPosition[3]) < 1 then
                local lastPosition = {getCharCoordinates(playerPed)}
                setCharCoordinates(playerPed, lastPosition[1], lastPosition[2], lastPosition[3] + 0.01)
                freezeCharPosition(playerPed, false)
         
                sampAddChatMessage('<<<Process...', -1)
            end
        end
    end
end

function returnid()
    local result, id = sampGetPlayerIdByCharHandle(playerPed)
   if result then return id else error(">>>") end
end
 
function SearchMarker(posX, posY, posZ, radius, isRace)
    local ret_posX = 0.0
    local ret_posY = 0.0
    local ret_posZ = 0.0
    local isFind = false

    for id = 0, 31 do
        local MarkerStruct = 0
        if isRace then MarkerStruct = 0xC7F168 + id * 56
        else MarkerStruct = 0xC7DD88 + id * 160 end
        local MarkerPosX = representIntAsFloat(readMemory(MarkerStruct + 0, 4, false))
        local MarkerPosY = representIntAsFloat(readMemory(MarkerStruct + 4, 4, false))
        local MarkerPosZ = representIntAsFloat(readMemory(MarkerStruct + 8, 4, false))

        if MarkerPosX ~= 0.0 or MarkerPosY ~= 0.0 or MarkerPosZ ~= 0.0 then
            if getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ) < radius then
                ret_posX = MarkerPosX
                ret_posY = MarkerPosY
                ret_posZ = MarkerPosZ
                isFind = true
                radius = getDistanceBetweenCoords3d(MarkerPosX, MarkerPosY, MarkerPosZ, posX, posY, posZ)
            end
        end
    end

    return isFind, ret_posX, ret_posY, ret_posZ
end

Могу сказать что пока ты не знаешь что пишешь, может мыслях твой код выглядит логично, но пока нет.
Практикуйся и все получиться. Код не тестил, поубирал лишнего на свой взгляд