помогите в создании скрипта

sclflame

Участник
Автор темы
26
14
Как в луа сделать так, чтобы когда ты заходил на определенные координаты, система начинала подсчет времени проведенного в этой локации(например шахта)
 

Sergey_Turner

Участник
102
7
Если ты имеешь ввиду нахождение в квадрате:
Пример:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
   
    while true do
        wait(0)
        local cX, cY, cZ = getCharCoordinates(PLAYER_PED)
        PlayerInZone(cX, cY) -- Сюда координаты игрока
    end
end

function PlayerIsZone(x, y)
    local zone = {
        {
            {CoordX1, CoordY1}, -- 1 Угол квадрата
            {CoordX2, CoordY2}, -- 2 угол квадрата
        }
    }
    for k, v in pairs(zone) do
        local a = v[1]
        local b = v[2]
        if x >= math.min(a[1], b[1]) and x <= math.max(a[1], b[1]) then
            if y >= math.min(a[2], b[2]) and y <= math.max(a[2], b[2]) then
                -- Игрок находится внутри указанного квадрата
                time = time + 1
                sampAddChatMessage("Ты в квадрате уже: " .. time .. " секунд.", -1) -- Выводим время
            end
        end
    end
end
Не проверял, но должно работать.
 

qdIbp

Автор темы
Проверенный
1,435
1,175
Если ты имеешь ввиду нахождение в квадрате:
Пример:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
  
    while true do
        wait(0)
        local cX, cY, cZ = getCharCoordinates(PLAYER_PED)
        PlayerInZone(cX, cY) -- Сюда координаты игрока
    end
end

function PlayerIsZone(x, y)
    local zone = {
        {
            {CoordX1, CoordY1}, -- 1 Угол квадрата
            {CoordX2, CoordY2}, -- 2 угол квадрата
        }
    }
    for k, v in pairs(zone) do
        local a = v[1]
        local b = v[2]
        if x >= math.min(a[1], b[1]) and x <= math.max(a[1], b[1]) then
            if y >= math.min(a[2], b[2]) and y <= math.max(a[2], b[2]) then
                -- Игрок находится внутри указанного квадрата
                time = time + 1
                sampAddChatMessage("Ты в квадрате уже: " .. time .. " секунд.", -1) -- Выводим время
            end
        end
    end
end
Не проверял, но должно работать.
Не проще обратится к функции https://wiki.blast.hk/ru/moonloader/lua/isCharInArea2d
 
  • Нравится
Реакции: Sergey_Turner и paulohardy

sclflame

Участник
Автор темы
26
14
Если ты имеешь ввиду нахождение в квадрате:
Пример:
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
  
    while true do
        wait(0)
        local cX, cY, cZ = getCharCoordinates(PLAYER_PED)
        PlayerInZone(cX, cY) -- Сюда координаты игрока
    end
end

function PlayerIsZone(x, y)
    local zone = {
        {
            {CoordX1, CoordY1}, -- 1 Угол квадрата
            {CoordX2, CoordY2}, -- 2 угол квадрата
        }
    }
    for k, v in pairs(zone) do
        local a = v[1]
        local b = v[2]
        if x >= math.min(a[1], b[1]) and x <= math.max(a[1], b[1]) then
            if y >= math.min(a[2], b[2]) and y <= math.max(a[2], b[2]) then
                -- Игрок находится внутри указанного квадрата
                time = time + 1
                sampAddChatMessage("Ты в квадрате уже: " .. time .. " секунд.", -1) -- Выводим время
            end
        end
    end
end
Не проверял, но должно работать.
да, именно нахождение в определенном радиусе, кста ща попробую!
 

Sergey_Turner

Участник
102
7
  • Вау
Реакции: qdIbp