Ближайший ящик

Dewize

Известный
Автор темы
432
88
Версия MoonLoader
.027.0-preview
Крч хочу написать, что то типо бота.



Есть такой ящик

Снимок экрана 2022-11-16 161418.png


Как сделать так, чтоб бот находил ближайший к нему и работал с ним? И после выполнения блока искал снова новый ближайший
 

why ega

РП игрок
Модератор
2,547
2,238

qdIbp

Автор темы
Проверенный
1,387
1,141
Lua:
--к переменным
local dist = 9999

--ну ты пон
while true do wait(0)
    for c = 0,2048 do
        if sampIs3dTextDefined(x) then
            text, clr, tX, tY, tZ, distans, WH, playerID, vehID = sampGet3dTextInfoById(c)
            if string.match(text,'конфискованный ящик') then
                if dist >= distans then
                    dist = distans
                    print(tX,tY,tZ,'id:',c)
                end
            end
        end
    end
end

Дальше надеюсь сам придумаешь применения и способы исп данного кода

Как сделать так, чтоб бот находил ближайший к нему и работал с ним? И после выполнения блока искал снова новый ближайший
как понять работал?
 
  • Нравится
Реакции: iOS и why ega

Vespan

loneliness
Проверенный
2,105
1,634
Как сделать так, чтоб бот находил ближайший к нему и работал с ним? И после выполнения блока искал снова новый ближайший
если дистанция до 3Д текста <1 то флудим АльтушкаМомент/ALT,и все
вроде это аризона,не думаю что такой бот будет востребован,надо придъявлять опру на корабль а тут бот 0_o
 
  • Грустно
Реакции: qdIbp

Dewize

Известный
Автор темы
432
88
Да

Lua:
--к переменным
local dist = 9999

--ну ты пон
while true do wait(0)
    for c = 0,2048 do
        if sampIs3dTextDefined(x) then
            text, clr, tX, tY, tZ, distans, WH, playerID, vehID = sampGet3dTextInfoById(c)
            if string.match(text,'конфискованный ящик') then
                if dist >= distans then
                    dist = distans
                    print(tX,tY,tZ,'id:',c)
                end
            end
        end
    end
end

Дальше надеюсь сам придумаешь применения и способы исп данного кода


как понять работал?
ну тип он нашёл ящик, и например к этому ящику пошёл что то сделал и т.д
 

Dewize

Известный
Автор темы
432
88
Lua:
--к переменным
local dist = 9999

--ну ты пон
while true do wait(0)
    for c = 0,2048 do
        if sampIs3dTextDefined(x) then
            text, clr, tX, tY, tZ, distans, WH, playerID, vehID = sampGet3dTextInfoById(c)
            if string.match(text,'конфискованный ящик') then
                if dist >= distans then
                    dist = distans
                    print(tX,tY,tZ,'id:',c)
                end
            end
        end
    end
end

Дальше надеюсь сам придумаешь применения и способы исп данного кода


как понять работал?
А почему именно 2048?

+ крч я проверил он пишет о всех 3D текстах, а не о ближайшем
 

Dewize

Известный
Автор темы
432
88
Не работает

Тип вот как это выглядет.



Код:
script_name("Bla-bla-bla")
script_author("Dewize")


--Загрузка нужных библиотек--
require "lib.moonloader"
local ffi = require "ffi"
ffi.cdef[[
     void keybd_event(int keycode, int scancode, int flags, int extra);
]]
local sampev = require('samp.events')
------------------------------


--Переменые--
local dist = 9999
------------------------------


--Гл.Функция--

function main()
    --Начало каждого Main Function--
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    ------------------------------


    sampAddChatMessage('Script loaded!!!',-1)



    --Бесконечный цикл--
    while true do
        wait(0)

        for i=0, 2048 do
            if sampIs3dTextDefined(i) then
                local text, color, posX, posY, posZ, distance, ignoreWalls, playerId, vehicleId = sampGet3dTextInfoById(i)
                if text:find('конфискованный ящик') then

                    if dist <= distance then
                        dist = distance
                        print(posX,posY,posX,'id:',i)
                    end
                end
            end
        end

    end
end
------------------------------

ну туплю наверное

@qdIbp не злись
 
Последнее редактирование:
  • Злость
Реакции: qdIbp

qdIbp

Автор темы
Проверенный
1,387
1,141
Че за туниядцы пошли
Lua:
script_name("Bla-bla-bla")
script_author("Dewize")

--Загрузка нужных библиотек--
require('lib.moonloader')
local sampev = require('lib.samp.events')
local ffi = require('ffi')
ffi.cdef[[
     void keybd_event(int keycode, int scancode, int flags, int extra);
]]
------------------------------
--Переменые--
local dist = 9999
local Bool = false
------------------------------
--Гл.Функция--
function main()
    --Начало каждого Main Function--
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(100) end
    ------------------------------

    sampAddChatMessage('Script loaded!!!',-1)
    sampRegisterChatCommand('cmds',function() Bool = not Bool sampAddChatMessage(Bool and 'Вкл' or 'Выкл',-1) end)

    --Бесконечный цикл--
    while true do wait(0)
        if Bool then
            for i=0, 2048 do
                if sampIs3dTextDefined(i) then
                    local text, color, posX, posY, posZ, distance, ignoreWalls, playerId, vehicleId = sampGet3dTextInfoById(i)
                    local x, y, z = getCharCoordinates(playerPed)
                    if string.match(text,'конфискованный ящик') then
                        local res = getDistanceBetweenCoords3d(posX,posY,posZ,x, y, z)
                        if dist > res then
                            dist = (res >= 1 and res or 9999)
                            if runToPoint(posX, posY) then
                                --Злоебучие действие
                                Bool = false
                            end
                        end
                    end
                end
            end
        end

    end
end
------------------------------

function runToPoint(tox, toy)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local angle = getHeadingFromVector2d(tox - x, toy - y)
    local xAngle = math.random(-50, 50)/100
    setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
    stopRun = false
    while getDistanceBetweenCoords2d(x, y, tox, toy) > 0.8 do
        setGameKeyState(1, -255)
        --setGameKeyState(16, 1)
        wait(1)
        x, y, z = getCharCoordinates(PLAYER_PED)
        angle = getHeadingFromVector2d(tox - x, toy - y)
        setCameraPositionUnfixed(xAngle, math.rad(angle - 90))
        if stopRun then
            stopRun = false
            break
        end
    end
    return true
end

Бл готовый код набрал 3 лайка, интересно что будет если написать готовый скрипт :|
 
Последнее редактирование: