Исходник DRP FishBot

™ ChipFamily

По ту сторону надежды.
Автор темы
5,144
1,980
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Завалялся какой-то фиш бот, ловите. Подправить ибо не пашет и можно юзать. Подойдет так же кому-то для изучение. Автора не знаю.
Lua:
script_name("FisherBot")
script_description("FisherBot for DRP")
script_version("2.0")


local hook = require("lib.samp.events")
local keys = require("lib.game.keys")
local http = require("lib.requests")

local encoding = require('lib.encoding')
u8 = encoding.UTF8
cp1251 = encoding.CP1251

local lanes = require("lib.lanes").configure()

local error_leaver = 0

local last_thread_chat = ""
local last_thread_two = ""

local buffer_reading = 0
local buffer_width = 0

local bot_key = "kajdju9s87991hs7a8910"
local url_feed = "Ссылка на сайт"

local quest = {
    {
        quest = "вы тут",
        data = {
            "да, а что?",
            "да, здесь",
            "ну да",
            "тута",
            "тут я, тут"
        },
        last_params = {
            "да тут я, тут, че пристали то",
            "хаха, на бота чтоль проверяете?",
            "ну вы даете, тут я)"
        }
    },
    {
        quest = "ты тут",
        data = {
            "да, а что?",
            "да, здесь",
            "ну да",
            "тута",
            "тут я, тут"
        },
        last_params = {
            "да тут я, тут, че пристали то",
            "хаха, на бота чтоль проверяете?",
            "ну вы даете, тут я)"
        }
    },
    {
        quest = "го сети",
        data = {
            "нее, спасибо",
            "да не( мало там",
            "лучше так ловить, там мало платят"
        },
        last_params = {
            "нее, чувак, не)",
            "спасибо, нееее)"
        }
    },
    {
        quest = "линберг",
        data = {
            "что такое?",
            "ааа",
            "ммм"
        },
        last_params = {
            "да че",
            "???"
        }      
    },
    {
        quest = "покажите лицензии",
        data = {
            "/fishbot",
            "/fishbot",
            "/fishbot"
        },
        last_params = {
            "опа",
            "/q"
        }      
    },  
    {
        quest = "энкор",
        data = {
            "что такое?",
            "ааа",
            "ммм"
        },
        last_params = {
            "да че",
            "???"
        }      
    }  
}

local captha = {
    {
        quest = "Кто делает мяу мяу",
        response = 4
    },
    {
        quest = "называется наш проект",
        response = 1
    },
    {
        quest = "на какой планете",
        response = 2
    },
    {
        quest = "какое слово состоит из",
        response = 3
    },
    {
        quest = "что делают в больнице",
        response = 1
    },
    {
        quest = "на каком проекте вы играете",
        response = 1
    },
    {
        quest = "в этом списке лишний",
        response = 4
    },
    {
        quest = "фигуры нет углов",
        response = 3
    },
    {
        quest = "что делают собаки",
        response = 4
    },
    {
        quest = "цвета трава",
        response = 3
    }
}

--DONT TOUCH

enabled = false


color = 0xFFFFFF --byte of color code

math.randomseed(os.time())

--hook

function hook.onDisplayGameText(style, time, text)
    if enabled then
        lua_thread.create(
            function()
                if text == "~w~Press ~r~~k~~PED_FIREWEAPON~" then
                    wait(20)
                    setGameKeyState(keys.player.FIREWEAPON, 255)
                elseif text == "~w~Press ~g~~k~~PED_LOCK_TARGET~" then
                    wait(20)
                    setGameKeyState(keys.player.LOCKTARGET, 255)
                end          
            end
        )
    end
end

function hook.onShowDialog(dialogId, style)
    doCapchaResponse()
end

function hook.onServerMessage(clr, text)
    if enabled then
        threading_chat(text)
        feedback_chat(text)
        if string.find(text, "Вы поймали", 0, true) ~= nil then
            feedback()
            text = string.gsub (text, "{00CC00}", "")
            text = string.gsub(text, "{1fc41f}", "")
            text = string.gsub(text, "{00cdcd}", "")
            a = string.match(text, "[%+%-%d]%d*%.?%d*[eE]?[%+%-]?%d*")
            sampSendChat("/fish")
            buffer_width = buffer_width+a
        end
        if string.find(text, "Рыба сорвалась", 0, true) ~= nil then
            sampSendChat("/fish")
            buffer_reading = buffer_reading + 1
            if buffer_reading == 3 then
                buffer_reading = 0
                sampSendChat("Да че за херня, бля")
                lua_thread.create(
                    function()
                        BeginToPoint(2634.0268554688, -2470.7121582031, 3.2132530212402, false);
                        BeginToPoint(2633.6850585938, -2474.7092285156, 3.2164554595947, false);
                        sampSendChat("/fish")              
                    end
                )
            end
        end      
    end
end

--FEEDBACK

function feedback()
    moneys = getPlayerMoney()
    async_http_request('GET', url_feed.."/api/api.php?response=feedback&secret="..bot_key.."&money="..moneys.."&weight="..buffer_width, nil, function(response)
    end, function(err)
    end)  
end

function feedback_chat(line)
    if line ~= nil then
        en_line = urlencode(u8:encode(line, 'CP1251'))
        async_http_request('GET', url_feed.."/chat.php?secret="..bot_key.."&line="..en_line, nil,
        function(response) end, function(err) end)  
    end
end

function chat_get()
    async_http_request('GET', url_feed.."/api/api.php?response=chat_feedback&secret="..bot_key, nil,
    function(response)
        if response.text ~= nil and response.text ~= 'none' then
            en_line = cp1251:encode(response.text, 'UTF8')
            sampSendChat(en_line)
        end
    end, function(err) end)
end

--text_draw_thread

function td_thread()
    font = renderCreateFont('Verdana', 8, 13)
    lua_thread.create(
        function()
            while enabled do
                wait(1)
                renderFontDrawText(font, "{2b42f0}Поймано: {00ff00}"..buffer_width, 65, 570, 0xFF00FF00)
            end
        end
    )
end

--captcha threading

function doCapchaResponse()
    text = sampGetDialogText()
    if string.find(text, "Вопрос", 0, true) ~= nil then --false
        sampAddChatMessage("[Debug] капча передана контроллеру", color)
        for k,v in pairs(captha) do
            sampAddChatMessage(v.quest)
            if string.find(text, v.quest, 0, true) ~= nil then --false
                sampSetCurrentDialogEditboxText(captha[k].response)
                sampCloseCurrentDialogWithButton(0)
                sampSendChat("/fish")
            end
        end
    end
end

--chat hyper threading

function threading_chat(text)
    for k,v in pairs(quest) do
        if string.find(text, v.quest, 0, true) then
            if string.find(last_thread_chat, v.quest, 0, true) then
                lua_thread.create(
                    function()
                        if string.find(last_thread_two, v.quest, 0, true) == nil then
                            enabled = false
                            wait(1500)
                            sampSendChat(quest[k].last_params[r_array(#quest[k].last_params)])
                            last_thread_two = v.quest
                            wait(1500)
                            enabled = true
                        end
                    end
                )
            else
                last_thread_chat = v.quest
                lua_thread.create(
                    function()
                        enabled = false
                        wait(1500)
                        sampSendChat(quest[k].data[r_array(#quest[k].data)])
                        wait(3000)
                        enabled = true
                    end
                )              
            end
        end
    end
end

--main

function main()
    while not isSampAvailable() do
        wait(1000)
    end
    sampRegisterChatCommand("fishbot", fish)
    sampRegisterChatCommand("test", feedback)
    sampAddChatMessage("{2b42f0} [FishBot] {2bf038} Запускаем бот...", color)
    lua_thread.create(
        function()
            while true do
                wait(1500)
                if enabled then
                    chat_get()
                end
            end
        end
    )
    while true do
        wait(0)
        if enabled then
            wait(200)
            line = sampGetChatString(99)
            line_two = line..sampGetChatString(98)
            text = line_two..sampGetChatString(97)  
            if string.find(text, "Вы должны быть", 0, true) ~= nil then
                BeginToPoint(2634.0268554688, -2470.7121582031, 3.2132530212402, false);
                BeginToPoint(2633.6850585938, -2474.7092285156, 3.2164554595947, false);
                sampSendChat("/fish")
            end
            if string.find(text, "У вас нет наживы", 0, true) ~= nil then
                BeginToPoint(2642.9084472656, -2470.2104492188, 3.2132530212402, true)
                BeginToPoint(2594.3828125, -2469.1955566406, 3.2132530212402, true)
                BeginToPoint(2593.3256835938, -2461.4375, 3.2132530212402, true)
                BeginToPoint(2620.5817871094, -2461.7172851563, 13.332517623901, true)
                BeginToPoint(2598.015625, -2435.9733886719, 13.640625, false)
                BeginToPoint(2602.4375, -2431.759765625, 13.640625, false)
                BeginToPoint(2607.3427734375, -2437.0505371094, 13.64662361145, false)
                while not sampIsDialogActive() do wait(0) end
                id = sampGetCurrentDialogId()
                sampSendDialogResponse(id, 1, 2, '')
                wait(500)
                id = sampGetCurrentDialogId()
                sampSendDialogResponse(id, 1, 1, '')
                BeginToPoint(2605.9396972656, -2435.4440917969, 13.64662361145, false)
                sampCloseCurrentDialogWithButton(0)
                BeginToPoint(2602.5026855469, -2431.9438476563, 13.640625, false)
                BeginToPoint(2597.7016601563, -2436.4470214844, 13.640625, false)
                BeginToPoint(2614.9191894531, -2461.3842773438, 12.365324020386, false)
                BeginToPoint(2592.7683105469, -2463.7416992188, 3.2132530212402, false)
                BeginToPoint(2592.0263671875, -2468.6586914063, 3.2132530212402, false)
                BeginToPoint(2641.9421386719, -2469.3994140625, 3.2132530212402, true)
                BeginToPoint(2642.109375, -2474.1716308594, 3.2164554595947, false)
                sampSendChat("/fish")
            end
        end
    end
end

--commands

function fish()
    if enabled then
        sampAddChatMessage("{2b42f0} [FishBot] {f02b2b} Выключен", color)
        enabled = false
        width_all = 0
        buffer_width = 0
    else
        sampAddChatMessage("{2b42f0} [FishBot] {2bf038} Включен", color)
        enabled = true
        td_thread()
    end
end

--begin funcs

function BeginToPoint(x, y, z, hoop)
    repeat
        local posX, posY, posZ = GetCoordinates()
        SetAngle(x, y, z)
        local dist = getDistanceBetweenCoords3d(x, y, z, posX, posY, z)
        MovePlayer(-255, true, hoop, dist)
        wait(0)
    until not enabled or dist < 1.00000
end

function MovePlayer(move_code, isSprint, hoop, dist)
    setGameKeyState(1, move_code)
    if isSprint then
        if hoop then --ПОДПРЫГИВАНИЯ
            if BoolRand() and dist > 10.00000 then
                setGameKeyState(14, -128)
            else  
                setGameKeyState(16, 255)
            end  
        else
            setGameKeyState(16, 255)
        end
    end
end

function SetAngle(x, y, z)
    local posX, posY, posZ = GetCoordinates()
    local pX = x - posX
    local pY = y - posY
    local vector = getHeadingFromVector2d(pX, pY)
   
    zAngle = vector
   
    if isCharInAnyCar(playerPed) then
        local car = storeCarCharIsInNoSave(playerPed)
        setCarHeading(car, zAngle)
    else
        setCharHeading(playerPed, zAngle)
    end

    restoreCameraJumpcut()
end

function GetCoordinates()
    if isCharInAnyCar(playerPed) then
        local car = storeCarCharIsInNoSave(playerPed)
        return getCarCoordinates(car)
    else
        return getCharCoordinates(playerPed)
    end
end

function BoolRand()
    local rand = math.random(0, 50)
    if rand == 4 then
        return true
    else
        return false
    end
end

function r_array(leng)
  return math.random(1, leng)
end


--LANES REQUIRE PARRALLEL THREADS

function async_http_request(method, url, args, resolve, reject)
    local request_lane = lanes.gen('*', {package = {path = package.path, cpath = package.cpath}}, function()
        local requests = require 'lib.requests'
        local ok, result = pcall(requests.request, method, url, args)
        if ok then
            result.json, result.xml = nil, nil -- cannot be passed through a lane
            return true, result
        else
            return false, result -- return error
        end
    end)
    if not reject then reject = function() end end
    lua_thread.create(function()
        local lh = request_lane()
        while true do
            local status = lh.status
            if status == 'done' then
                local ok, result = lh[1], lh[2]
                if ok then resolve(result) else reject(result) end
                return
            elseif status == 'error' then
                return reject(lh[1])
            elseif status == 'killed' or status == 'cancelled' then
                return reject(status)
            end
            wait(0)
        end
    end)
end

function urlencode(str)
   if (str) then
      str = string.gsub (str, "\n", "\r\n")
      str = string.gsub (str, "([^%w ])",
         function (c) return string.format ("%%%02X", string.byte(c)) end)
      str = string.gsub (str, " ", "+")
   end
   return str
end
  • Сам ловит рыбу
  • Бег за наживой
  • Ответ админам
  • Разгадка капчи
  • При багах с закидыванием удочки (когда бот около причала, а удочка типа не дотянулась) он отходит и повторяет действие
  • Полная трансляция потока чата в вашу панель управления(можете следить за чатом, пока работаете или гуляете)
  • Обратный поток чата (моментально отвечать в чат с телефона или с другого ПК, через панель управления)
  • Трансляция статистики на сайт(текущий баланс, сколько кг рыбы, статус бота(онлайн/офлайн))
  • Вывод статистики на экран игры
  • Примерный подсчет заработка в час, работает так же как я - через жопу)
  • Мобильная адаптация панели
  • Эмуляция бега реального игрока - прыжки, повороты, режет угол угла
  • Возможность самому пополнить базу ответов на вопросы админов
  • Возможность пополнить базу ответов на капчу
  • Возможность добавить несколько ответов на один и тот же вопрос в зависимости от ситуации
  • Если пишет админ - бот останавливается, потом запускается, но это не точно
  • При подкидывании бот начинает матерится(ни разу за это не банили и не мутили), админы даже извиняться начинали
  • Если закидывает 5 раз удочку неудачно - начинает нервничать и звонить Навальному
  • Если игрок подходит и говорит ГО СЕТИ - идет далеко и надолго
  • Уведомления ВКОНТАКТЕ, когда вам пишет админ
  • Добавил работу в несколько окон
  • Добавлена работа в свернутом режиме
  • Отправка сообщений из ВК в ИГРУ!
  • Поддержка отправки команд из ВК в ИГРУ!
  • Случайные смещения вектора маршрута!
  • Если игра свернута и случилась какая то ХYNНЯ - вы сразу это заметите.
  • Монологи при каких то казусных ситуациях на рыбалке.
  • Ответ на капчу через ВК [В РАЗРАБОТКЕ 50%]
  • Добавлено случайное смещение вектора маршрута (всегда ходит по разному)
  • Добавлены рандомные маршруты
  • Добавлен звук смыва унитаза при условии что: вам пишет админ, случился какой то казус
  • Добавлена Активация/Деактивация на F12
  • Антиголод
 
  • Нравится
Реакции: Joni Scripts и H1n9

Joni Scripts

Известный
535
374
С какой строки там привязка сер? Или ты её там вырезал? 🤨
 

™ ChipFamily

По ту сторону надежды.
Автор темы
5,144
1,980
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
  • Нравится
Реакции: arki1999
У

Удалённый пользователь 147808

Гость
Ахаха, мне даже лестно. Спасибо. За код тапками не кидайте, написал этого бота после двух дней изучения луа. Исходники панели кину как нибудь потом, на досуге так сказать. Сейчас не дома