мне нужна помощь в исправлении кода

Sam201

Известный
Автор темы
103
5
Версия MoonLoader
Другое
lua:
require "moonloader"

local sampev = require "lib.samp.events"

local autotpEnabled = false

function main()
    while not isSampAvailable() do wait(50) end

    sampAddChatMessage("{3498DB}Auto TP by V - {2ECC71}/tpon", -1)
   
    sampRegisterChatCommand("tpon", function()
        autotpEnabled = not autotpEnabled
        if autotpEnabled then
            sampAddChatMessage("{2471A3}AutoTP{FFFFFF} has been {0FFF00}Enabled", -1)
        else
            sampAddChatMessage("{2471A3}AutoTP{FFFFFF} has been {FF0000}Disabled", -1)
        end
    end)
    while true do
        wait(1)
    end
end

function sampev.onServerMessage(color, text)
    if autotpEnabled and string.find(text, "привет") then
        lua_thread.create(function()
            wait(3000)
            teleportToCheckpoint()
        end)
    end
end

function teleportToCheckpoint()
  -- Get the player's current checkpoint position
  local checkpointPos = sampGetCheckpointPos()
 
  -- Set the player's position to the checkpoint position
  sampSetPlayerPos(checkpointPos.x, checkpointPos.y, checkpointPos.z)
end
 

tfornik

Известный
324
259
а что нужно то?
Lua:
function teleportToCheckpoint()
   -- Get the player's current checkpoint position
    local posX, posY, posZ = getCharCoordinates(playerPed)
    local res, x, y, z = SearchMarker(posX, posY, posZ, 50.0, false)
 
   -- Set the player's position to the checkpoint position
    if res then
        setCharCoordinates(PLAYER_PED, x,y,z + 1)
    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
ну или я не понял что нужно
 
  • Нравится
Реакции: Sam201

Sam201

Известный
Автор темы
103
5
а что нужно то?
Lua:
function teleportToCheckpoint()
   -- Get the player's current checkpoint position
    local posX, posY, posZ = getCharCoordinates(playerPed)
    local res, x, y, z = SearchMarker(posX, posY, posZ, 50.0, false)
 
   -- Set the player's position to the checkpoint position
    if res then
        setCharCoordinates(PLAYER_PED, x,y,z + 1)
    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
ну или я не понял что нужно
if string.find(text, "привет") then
телепортироваться на обычный чекпоинт (не гонка)

а что нужно то?
Lua:
function teleportToCheckpoint()
   -- Get the player's current checkpoint position
    local posX, posY, posZ = getCharCoordinates(playerPed)
    local res, x, y, z = SearchMarker(posX, posY, posZ, 50.0, false)
 
   -- Set the player's position to the checkpoint position
    if res then
        setCharCoordinates(PLAYER_PED, x,y,z + 1)
    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
ну или я не понял что нужно
это сработало, спасибо

а что нужно то?
Lua:
function teleportToCheckpoint()
   -- Get the player's current checkpoint position
    local posX, posY, posZ = getCharCoordinates(playerPed)
    local res, x, y, z = SearchMarker(posX, posY, posZ, 50.0, false)
 
   -- Set the player's position to the checkpoint position
    if res then
        setCharCoordinates(PLAYER_PED, x,y,z + 1)
    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
ну или я не понял что нужно
это работает только в стримзоне? я пытался телепортироваться на дальний блокпост, не получилось
редактировать: исправлено
 
Последнее редактирование:

Sam201

Известный
Автор темы
103
5
как мне пропустить это?
Grand Theft Auto  San Andreas Screenshot 2023.09.14 - 19.07.24.47.png


это на чашке и это не контрольно-пропускной пункт.
сценарий телепортирует меня туда

pump

как заставить скрипт игнорировать контрольные точки стадиона?

радиус увеличивай
помощь
 
Последнее редактирование: