Координаты waypoint

Skiefy

Известный
Автор темы
23
0
Версия MoonLoader
.026-beta
Какая функция возвращает x, y, z координаты метки на карте (Waypoint)?
 

CaJlaT

07.11.2024 14:55
Модератор
2,846
2,687
Lua:
function getTargetBlipCoordinatesFixed() -- ищет маркер пользовательский на карте (Карта - ПКМ)
    local bool, x, y, z = getTargetBlipCoordinates(); if not bool then return false end
    requestCollision(x, y); loadScene(x, y, z)
    local bool, x, y, z = getTargetBlipCoordinates()
    return bool, x, y, z
end


function SearchMarker(posX, posY, posZ) -- Ищет серверный маркер (Чекопинт финиша)
    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
        MarkerStruct = 0xC7F168 + id * 56
        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
            ret_posX = MarkerPosX
            ret_posY = MarkerPosY
            ret_posZ = MarkerPosZ
            isFind = true
        end
    end
    return isFind, ret_posX, ret_posY, ret_posZ
end
Тупо крашит при заходе.
Возможно я конечно дурак, и что-то не так написал, но я хз


Lua:
script_name('1234')

require 'lib.moonloader'
local keys = require 'vkeys'


function getTargetBlipCoordinatesFixed() -- ищет маркер пользовательский на карте (Карта - ПКМ)
    local bool, x, y, z = getTargetBlipCoordinates(); if not bool then return false end
    requestCollision(x, y); loadScene(x, y, z)
    local bool, x, y, z = getTargetBlipCoordinates()
    return bool, x, y, z
end


function SearchMarker(posX, posY, posZ) -- Ищет серверный маркер (Чекопинт финиша)
    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
        MarkerStruct = 0xC7F168 + id * 56
        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
            ret_posX = MarkerPosX
            ret_posY = MarkerPosY
            ret_posZ = MarkerPosZ
            isFind = true
        end
    end
    return isFind, ret_posX, ret_posY, ret_posZ
end


function main()
        if not isSampfuncsLoaded() and not isSampAvailable() then return end
        while not isSampAvailable() do wait(100) end

        sampRegisterChatCommand('coords', func_coords)

        while true do
        end
end

function func_coords()
        sampAddChatMessage(x .. "|" .. y .. "|" .. z)
end
1. Нет wait(0) в беск цикле (из-за этого и крашит)
2.Ты не получил координаты, а уже выводишь их в чат (скрипт крашнется с ошибкой)
Lua:
script_name('1234')
require 'lib.moonloader'
local keys = require 'vkeys'


function getTargetBlipCoordinatesFixed() -- ищет маркер пользовательский на карте (Карта - ПКМ)
    local bool, x, y, z = getTargetBlipCoordinates(); if not bool then return false end
    requestCollision(x, y); loadScene(x, y, z)
    local bool, x, y, z = getTargetBlipCoordinates()
    return bool, x, y, z
end


function SearchMarker(posX, posY, posZ) -- Ищет серверный маркер (Чекопинт финиша)
    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
        MarkerStruct = 0xC7F168 + id * 56
        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
            ret_posX = MarkerPosX
            ret_posY = MarkerPosY
            ret_posZ = MarkerPosZ
            isFind = true
        end
    end
    return isFind, ret_posX, ret_posY, ret_posZ
end


function main()
        if not isSampfuncsLoaded() and not isSampAvailable() then return end
        while not isSampAvailable() do wait(100) end

        sampRegisterChatCommand('coords', func_coords)

        while true do
            wait(0)
        end
end

function func_coords()
    if getTargetBlipCoordinatesFixed() then
        local _, x, y, z = getTargetBlipCoordinatesFixed()
        sampAddChatMessage(x .. "|" .. y .. "|" .. z, -1)
    elseif SearchMarker() then
        local _, x, y, z = SearchMarker()
        sampAddChatMessage(x .. "|" .. y .. "|" .. z, -1)
    else
        sampAddChatMessage('Маркер не найден', -1)
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: Skiefy

Skiefy

Известный
Автор темы
23
0
Lua:
function getTargetBlipCoordinatesFixed() -- ищет маркер пользовательский на карте (Карта - ПКМ)
    local bool, x, y, z = getTargetBlipCoordinates(); if not bool then return false end
    requestCollision(x, y); loadScene(x, y, z)
    local bool, x, y, z = getTargetBlipCoordinates()
    return bool, x, y, z
end


function SearchMarker(posX, posY, posZ) -- Ищет серверный маркер (Чекопинт финиша)
    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
        MarkerStruct = 0xC7F168 + id * 56
        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
            ret_posX = MarkerPosX
            ret_posY = MarkerPosY
            ret_posZ = MarkerPosZ
            isFind = true
        end
    end
    return isFind, ret_posX, ret_posY, ret_posZ
end

1. Нет wait(0) в беск цикле (из-за этого и крашит)
2.Ты не получил координаты, а уже выводишь их в чат (скрипт крашнется с ошибкой)
Lua:
script_name('1234')
require 'lib.moonloader'
local keys = require 'vkeys'


function getTargetBlipCoordinatesFixed() -- ищет маркер пользовательский на карте (Карта - ПКМ)
    local bool, x, y, z = getTargetBlipCoordinates(); if not bool then return false end
    requestCollision(x, y); loadScene(x, y, z)
    local bool, x, y, z = getTargetBlipCoordinates()
    return bool, x, y, z
end


function SearchMarker(posX, posY, posZ) -- Ищет серверный маркер (Чекопинт финиша)
    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
        MarkerStruct = 0xC7F168 + id * 56
        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
            ret_posX = MarkerPosX
            ret_posY = MarkerPosY
            ret_posZ = MarkerPosZ
            isFind = true
        end
    end
    return isFind, ret_posX, ret_posY, ret_posZ
end


function main()
        if not isSampfuncsLoaded() and not isSampAvailable() then return end
        while not isSampAvailable() do wait(100) end

        sampRegisterChatCommand('coords', func_coords)

        while true do
            wait(0)
        end
end

function func_coords()
    if getTargetBlipCoordinatesFixed() then
        local _, x, y, z = getTargetBlipCoordinatesFixed()
        sampAddChatMessage(x .. "|" .. y .. "|" .. z, -1)
    elseif SearchMarker() then
        local _, x, y, z = SearchMarker()
        sampAddChatMessage(x .. "|" .. y .. "|" .. z, -1)
    else
        sampAddChatMessage('Маркер не найден', -1)
    end
end
Уже понял про wait(0), но спасибо, что помог)
За исходник тоже спасибо большое