Нужен несложный скрипт

Pixzel

Известный
Автор темы
55
21
Всем здарова
Нужен скриптик на LUA.

При активации начинает ждать пока к моему персонажу любой другой игрок приблизится ближе чем на 10м метров.
Когда дистанция между моим персонажем и любым другим игроком становится менее 10 метров скрипт сразу же уменьшает мою текущую координату Z (высоту) на -10м (минус десять метров) и выключается. (как бы кидает под землю)
Ну и всё

Умельцы выручайте☺️
 
Решение
Все еще триггерится (
Проверял на Аризоне
бот начальных квестов и на рынке там какой-то.
Отключил людей в зоне стрима, выставил дистанцию 5. Бегаю спокойно.
Приближаюсь к боту, сразу кидает вниз
Насчет нпс, может потом кину, нашел косяк в скрипте, ниже исправил
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('r', function() bool = not bool end)
    while true do wait(0)
        if bool then
            for _, value in pairs(getAllChars()) do
                if value ~= 1 and doesCharExist(value) and bool then
                    if not sampIsPlayerNpc(select(2,sampGetPlayerIdByCharHandle(value))) then
                       local x,y,z = getCharCoordinates(1)...

krim

Известный
304
131
Lua:
local event = require 'samp.events'

function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('r', function() bool = not bool end)
    while true do wait(0)
        if bool then
            for _, value in pairs(getAllChars()) do
                if value ~= 1 and doesCharExist(value) then
                    local x,y,z = getCharCoordinates(1)
                    local posX,posY,posZ = getCharCoordinates(value)
                    if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) < 10 then
                        pX,pY,pZ,bool = x,y,z,true
                    elseif getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) >= 10 then
                        pX,pY,pZ = -1,-1,-1
                    end
                end
            end
        end
    end
end

function event.onSendPlayerSync(data)
    if bool and pX ~= -1 and pY ~= -1 and pZ ~= -1 then
        lua_thread.create(function()
                    data.position = {pX,pY,pZ - 10}
                    wait(170)
                    data.position = {pX,pY,pZ + getCharHeightAboveGround(1) - 2}
                    bool = false
                end)
    end
end

Или такое?
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('r', function() bool = not bool end)
    while true do wait(0)
        if bool then
            for _, value in pairs(getAllChars()) do
                if value ~= 1 and doesCharExist(value) then
                    local x,y,z = getCharCoordinates(1)
                    local posX,posY,posZ = getCharCoordinates(value)
                    if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) < 10 then
                        setCharCoordinates(1, x,y,z - 10)
                        wait(170)
                        setCharCoordinates(1, x,y,z + getCharHeightAboveGround(1) - 2)
                        bool = false
                    end
                end
            end
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: Pixzel

Pixzel

Известный
Автор темы
55
21
Спасибо большое

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

Но теперь он хотя бы есть)
Может быть попробую сам как-то его подлампичить
 

krim

Известный
304
131
Спасибо большое

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

Но теперь он хотя бы есть)
Может быть попробую сам как-то его подлампичить
первый способ через синхру, ты не будешь видеть как оно под землю кидает
второй способ кинул посмотри
 
Последнее редактирование:
  • Нравится
Реакции: Pixzel

Pixzel

Известный
Автор темы
55
21
Второй вариант работает как надо 🥳)
Спасибо!

Есть одно замечание, не хочу наглеть конечно, но если несложно поправить - то будет очень здорово

Скрипт также триггерится на NPC.
Подбегаю к любому боту и он срабатывает.
Можно как-то исключить отсюда неигровых персонажей?

Или может быть есть просто ноп который отключит загрузку актёров
Я искал прежде чем написать
В том софте что у меня есть нет никаких нопов которые могли бы отключить их загрузку
 

krim

Известный
304
131
Второй вариант работает как надо 🥳)
Спасибо!

Есть одно замечание, не хочу наглеть конечно, но если несложно поправить - то будет очень здорово

Скрипт также триггерится на NPC.
Подбегаю к любому боту и он срабатывает.
Можно как-то исключить отсюда неигровых персонажей?

Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('r', function() bool = not bool end)
    while true do wait(0)
        if bool then
            for _, value in pairs(getAllChars()) do
                if value ~= 1 and doesCharExist(value) then
                    if not sampIsPlayerNpc(select(2,sampGetPlayerIdByCharHandle(value))) and not  sampIsPlayerPaused(select(2,sampGetPlayerIdByCharHandle(value))) then
                       local x,y,z = getCharCoordinates(1)
                       local posX,posY,posZ = getCharCoordinates(value)
                       if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) < 10 then
                           setCharCoordinates(1, x,y,z - 10)
                            wait(170)
                           setCharCoordinates(1, x,y,z + getCharHeightAboveGround(1) - 2)
                           bool = false
                    end
                  end
               end
            end
        end
    end
end
 
Последнее редактирование:
  • Нравится
Реакции: Pixzel

Pixzel

Известный
Автор темы
55
21
Все еще триггерится (
Проверял на Аризоне
бот начальных квестов и на рынке там какой-то.
Отключил людей в зоне стрима, выставил дистанцию 5. Бегаю спокойно.
Приближаюсь к боту, сразу кидает вниз
 

krim

Известный
304
131
Все еще триггерится (
Проверял на Аризоне
бот начальных квестов и на рынке там какой-то.
Отключил людей в зоне стрима, выставил дистанцию 5. Бегаю спокойно.
Приближаюсь к боту, сразу кидает вниз
Насчет нпс, может потом кину, нашел косяк в скрипте, ниже исправил
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('r', function() bool = not bool end)
    while true do wait(0)
        if bool then
            for _, value in pairs(getAllChars()) do
                if value ~= 1 and doesCharExist(value) and bool then
                    if not sampIsPlayerNpc(select(2,sampGetPlayerIdByCharHandle(value))) then
                       local x,y,z = getCharCoordinates(1)
                       local posX,posY,posZ = getCharCoordinates(value)
                       if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) < 10 then
                           setCharCoordinates(1, x,y,z - 10)
                            wait(170)
                           setCharCoordinates(1, x,y,z + getCharHeightAboveGround(1)/2)
                           bool = false
                    end
                  end
               end
            end
        end
    end
end

с игнором НПС
Lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('r', function() bool = not bool end)
    while true do wait(0)
        if bool then
                    for _, value in pairs(getAllChars()) do
                             if value ~= 1 and doesCharExist(value) and bool then
                                     if not sampIsPlayerNpc(select(2,sampGetPlayerIdByCharHandle(value)))then
                                         if sampGetPlayerScore(select(2,sampGetPlayerIdByCharHandle(value))) ~= 0 then
                                            local x,y,z = getCharCoordinates(1)
                                            local posX,posY,posZ = getCharCoordinates(value)
                                            if getDistanceBetweenCoords3d(x, y, z, posX, posY, posZ) <= 10 then
                                                    setCharCoordinates(1, x,y,z - 10)
                                                     wait(170)
                                                    setCharCoordinates(1, x,y,z + getCharHeightAboveGround(1)/2)
                                                    bool = false
                                             end
                                        end
                                 end
                            end
                     end
        end
    end
en
 
Последнее редактирование:
  • Нравится
Реакции: Pixzel