Помогите нубику

kinstan1337

Новичок
Автор темы
1
0
Версия MoonLoader
.026-beta
Добрый день нашел скрипт ''Метка на чекпоинт'' Дело в том что если чекпоинт далеко он не ставит туда метку
Screenshot_1.png

Как сделать что бы он ставил метку когда чекпоинт далеко?
Код:
require "lib.sampfuncs"


function main()
    if not isSampfuncsLoaded() or not isSampLoaded() then return end
    sampRegisterChatCommand("marker", cmd)

    while true do wait(0) end
end

function cmd(param)
    if isPlayerPlaying(playerHandle) then
        local posX, posY, posZ = getCharCoordinates(playerPed)
        local res, x, y, z = SearchMarker(posX, posY, posZ, 99999999999.0, false)
        if res then
            if (math.floor(x) == 1099 and math.floor(y) == 1601 and math.floor(z) == 11) or (math.floor(x) == 2695 and math.floor(y) == -1705 and math.floor(z) == 10) then return sampAddChatMessage("Маркер не найден", -1) end
            sampAddChatMessage(string.format("Найден обычный маркер в координатах %.2f %.2f %.2f", x, y, z), -1)
            placeWaypoint(x, y, z)
        else
            res, x, y, z = SearchMarker(posX, posY, posZ, 1.0, true)
            if res then
                sampAddChatMessage(string.format("Найден гоночный маркер в координатах %.2f %.2f %.2f", x, y, z), -1)
                placeWaypoint(x, y, z)
            else
                sampAddChatMessage("Маркер не найден", -1)
            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
ap
ap
 

Вложения

  • markerq.lua
    2.3 KB · Просмотры: 5
Последнее редактирование: