Lua [RakBot] OnFoot/InCar Route Recording System

xMatrix

Новичок
10
0
Такой трабл, когда в игрока врезается - встает в афк и ничего не работает, мб можно как-то коллизию сделать?
 

Shamanije

Известный
Автор темы
Друг
959
924
Такой трабл, когда в игрока врезается - встает в афк и ничего не работает, мб можно как-то коллизию сделать?
Думаю тебе стоит глубже изучить что такое коллизия. Как, по-твоему, можно определить столкновение если физически игры нету? По поводу проблемы с афк при столкновении разберусь
 

BlastSrack

Известный
18
3
Почему зависает ракбот через некоторое время после воспроизведения маршрута?
 

BlastSrack

Известный
18
3
Потому что это ракбот
Я запустил 13 штук defCallAdd и бот работал, потом я запустил маршрут и бот завис и так всегда


Из этого следует, что ракбот зависает не из-за того что вызвано много defCallAdd, а из-за того, что что-то его подвисает в коде выполнения маршрута! Что это может быть????? ХЕЛП МИ

Сделай фикс этой фигни, понятно же что это 100% из-за кода воспроизведения из-за какой-то фигни начинает подвисать во время воспроизведения


UPD: у меня уже 30 минут фигачит 13 штук defCallAdd и нету зависания.
Щас запустил маршрут и все окна повисли!!!!!!


1593186809579.png
1593186841289.png
 
Последнее редактирование:
  • Нравится
Реакции: atomlin

Shamanije

Известный
Автор темы
Друг
959
924
Я запустил 13 штук defCallAdd и бот работал, потом я запустил маршрут и бот завис и так всегда


Из этого следует, что ракбот зависает не из-за того что вызвано много defCallAdd, а из-за того, что что-то его подвисает в коде выполнения маршрута! Что это может быть????? ХЕЛП МИ

Сделай фикс этой фигни, понятно же что это 100% из-за кода воспроизведения из-за какой-то фигни начинает подвисать во время воспроизведения


UPD: у меня уже 30 минут фигачит 13 штук defCallAdd и нету зависания.
Щас запустил маршрут и все окна повисли!!!!!!


Посмотреть вложение 60452Посмотреть вложение 60453
чувствуешь разницу между запуском 13 пустых отложенок и циклическим заполнением структуры пакетов с последующей отправкой? код открыт, если найдешь фикс зависаний - ты молодец и лучший разработчик в мире. я делал код максимально оптимизированный, явной причины зависаний не вижу
 

Rei

Известный
Друг
1,616
1,671
Я запустил 13 штук defCallAdd и бот работал, потом я запустил маршрут и бот завис и так всегда


Из этого следует, что ракбот зависает не из-за того что вызвано много defCallAdd, а из-за того, что что-то его подвисает в коде выполнения маршрута! Что это может быть????? ХЕЛП МИ

Сделай фикс этой фигни, понятно же что это 100% из-за кода воспроизведения из-за какой-то фигни начинает подвисать во время воспроизведения


UPD: у меня уже 30 минут фигачит 13 штук defCallAdd и нету зависания.
Щас запустил маршрут и все окна повисли!!!!!!


Посмотреть вложение 60452Посмотреть вложение 60453
месяца полтора назад делал качатель акков, используя маршруты от этого роут рекордера, это был мой первый хоть сколько то серьезный скрипт и тогдашний говнокод ( а там были такие нестабильные функции как реконнект, смена акка при бане, нотификации в телегу, и соответственно куча дефКАЛлов) показывал себя просто отлично, у меня свет вырубался чаще, чем падал рак

ты явно чото не так делаешь, лучше бы показал код
 

BlastSrack

Известный
18
3
чувствуешь разницу между запуском 13 пустых отложенок и циклическим заполнением структуры пакетов с последующей отправкой? код открыт, если найдешь фикс зависаний - ты молодец и лучший разработчик в мире. я делал код максимально оптимизированный, явной причины зависаний не вижу
Ну я заметил такую фигню, что маршрут зависает во время исполнения отложенных функций. Например, если запускаешь маршрут во время выполнения отл. функций, то бот сразу повисает. Если запускаешь, когда функции в режиме ожидания и еще не выполняются, то отложенные функции могут выполниться полностью и на втором круге выполнения подвиснуть ракбота. скоей всего конфликт происходит в function onScriptUpdate() и defCallAdd.

1593192045352.png


а не лучше ли тут сделать elseif? это я к вопросу про максимальную оптимизацию..
месяца полтора назад делал качатель акков, используя маршруты от этого роут рекордера, это был мой первый хоть сколько то серьезный скрипт и тогдашний говнокод ( а там были такие нестабильные функции как реконнект, смена акка при бане, нотификации в телегу, и соответственно куча дефКАЛлов) показывал себя просто отлично, у меня свет вырубался чаще, чем падал рак

ты явно чото не так делаешь, лучше бы показал код
Ок, предположим, что я написал какой-то говноскрипт. ОК удаляем все и создаем 2 файла: 1 скрипт воспроизведения, 2 с дефкалладами.

Сперва тестим окно без запуска скрипта воспроизведения маршрута, о чудо все работает, дефкаллады хуячат уже 100500 часов и ниче не зависает. Ок, запустим маршрут
1593192728188.png

КАКОГО Х? все зависло
1.lua тестовый скрипт:
defCallAdd(10000, true, function()
printLog('1')
end)

defCallAdd(10000, true, function()
printLog('2')
end)
defCallAdd(10000, true, function()
printLog('3')
end)
defCallAdd(10000, true, function()
printLog('4')
end)
defCallAdd(10000, true, function()
printLog('5')
end)
defCallAdd(10000, true, function()
printLog('6')
end)
defCallAdd(10000, true, function()
printLog('7')
end)
defCallAdd(10000, true, function()
printLog('8')
end)
defCallAdd(10000, true, function()
printLog('9')
end)
defCallAdd(10000, true, function()
printLog('10')
end)
defCallAdd(10000, true, function()
printLog('11')
end)
defCallAdd(10000, true, function()
printLog('12')
end)
defCallAdd(10000, true, function()
printLog('13')
end)

Скрипт воспроизведения маршрута:
--[[
Route Recorder for shitty app called "Rakbot".
I don't trust that shit gonna work right, but whatever
 + Onfoot sync record/replay system
 + Incar sync record/replay system.
 + Moonloader lua script for this shit to record sync in compatible file format (.rt)
 * I don't really understand how to do all this stuff, but I did!!!

TODO:
 + Loop current route
 + Stop current route

Author: Shamanije
URL: https://blast.hk/members/163165/
Version: 1.1
]]

local rep = false
local loop = false
local packet = {}
local counter = 0

local veh = {}

function onRunCommand(cmd)
    if cmd:find('!play .*') then
        packet = loadIni(getRakBotPath(1)..'/routes/'..cmd:match('!play (.*)')..'.rt')
        if packet then
            printLog('playing route "'..cmd:match('!play (.*)')..'". total length: '..#packet)
            counter = 1
            rep = true
            loop = false
        else
            printLog('route doesnt exist')
        end
        return true
    end
    if cmd:find('!stop') then
        if counter > 1 then
            rep = not rep
            if not rep then
                setQuaternion(packet[counter].qw, packet[counter].qx, packet[counter].qy, packet[counter].qz)
            end
            printLog(rep and 'playing resumed' or 'stopped on packet: '.. counter)
        else
            printLog('not playing any route')
        end
        return true
    end
    if cmd:find('!loop') then
        if rep then
            loop = not loop
            printLog(loop and 'looping current route' or 'loop off')
        else
            printLog('not playing any route')
        end
        return true
    end
end

function onSync()
    if rep then
        return true
    end
end

function onSendPacket(id, data, size)
    if not rep and id == 200 then
        local bs = bitStreamInit(data, size)
        bitStreamSetReadOffset(bs, 1)
        local vehId = bitStreamReadDWord(bs)
        bitStreamSetReadOffset(bs, 49)
        local vehHealth = bitStreamReadFloat(bs)
        veh[vehId] = vehHealth
    end
end

function onScriptUpdate()
    if rep then
        if packet[counter].packetId == 200 and getBotState() == 2 then
            local bs = bitStreamNew()
            bitStreamWriteByte(bs, packet[counter].packetId)
            bitStreamWriteWord(bs, getBotVehicle())
            bitStreamWriteWord(bs, packet[counter].lr)
            bitStreamWriteWord(bs, packet[counter].ud)
            bitStreamWriteWord(bs, packet[counter].keys)
            bitStreamWriteFloat(bs, packet[counter].qw)
            bitStreamWriteFloat(bs, packet[counter].qx)
            bitStreamWriteFloat(bs, packet[counter].qy)
            bitStreamWriteFloat(bs, packet[counter].qz)
            bitStreamWriteFloat(bs, packet[counter].x)
            bitStreamWriteFloat(bs, packet[counter].y)
            bitStreamWriteFloat(bs, packet[counter].z)
            bitStreamWriteFloat(bs, packet[counter].sx)
            bitStreamWriteFloat(bs, packet[counter].sy)
            bitStreamWriteFloat(bs, packet[counter].sz)
            bitStreamWriteFloat(bs, veh[getBotVehicle()])
            bitStreamWriteByte(bs, getHealth())
            bitStreamWriteByte(bs, getArmour())
            bitStreamWriteByte(bs, getWeapon())
            bitStreamWriteByte(bs, 0)
            bitStreamWriteByte(bs, 0)
            bitStreamWriteByte(bs, packet[counter].gear)
            bitStreamWriteWord(bs, 0)
            bitStreamWriteFloat(bs, 0)
            sendPacket(bs)
            counter = counter + 1
            bitStreamDelete(bs)
        end
        if packet[counter].packetId == 207 and getBotState() == 1 then
            local bs = bitStreamNew()
            bitStreamWriteByte(bs, packet[counter].packetId)
            bitStreamWriteWord(bs, packet[counter].lr)
            bitStreamWriteWord(bs, packet[counter].ud)
            bitStreamWriteWord(bs, packet[counter].keys)
            bitStreamSetWriteOffset(bs, 7)
            bitStreamWriteFloat(bs, packet[counter].x)
            bitStreamWriteFloat(bs, packet[counter].y)
            bitStreamWriteFloat(bs, packet[counter].z)
            bitStreamWriteFloat(bs, packet[counter].qw)
            bitStreamWriteFloat(bs, packet[counter].qx)
            bitStreamWriteFloat(bs, packet[counter].qy)
            bitStreamWriteFloat(bs, packet[counter].qz)
            bitStreamWriteByte(bs, getHealth())
            bitStreamWriteByte(bs, getArmour())
            bitStreamWriteByte(bs, getWeapon())
            bitStreamWriteByte(bs, packet[counter].sa)
            bitStreamWriteFloat(bs, packet[counter].sx)
            bitStreamWriteFloat(bs, packet[counter].sy)
            bitStreamWriteFloat(bs, packet[counter].sz)
            bitStreamWriteFloat(bs, 0)
            bitStreamWriteFloat(bs, 0)
            bitStreamWriteFloat(bs, 0)
            bitStreamWriteWord(bs, 0)
            bitStreamWriteWord(bs, packet[counter].anim)
            bitStreamWriteWord(bs, packet[counter].flags)
            sendPacket(bs)
            counter = counter + 1
            bitStreamDelete(bs)
        end
        setPosition(packet[counter].x, packet[counter].y, packet[counter].z)
        if counter == #packet then
            if not loop then
                rep = false
                packet = {}
            end
            counter = 1
        end
    end
end

function loadIni(fileName)
    local file = io.open(fileName, 'r')
    if file then
        local data = {}
        local section
        for line in file:lines() do
            local tempSection = line:match('^%[([^%[%]]+)%]$')
            if tempSection then
                section = tonumber(tempSection) and tonumber(tempSection) or tempSection
                data[section] = data[section] or {}
            end
            local param, value = line:match('^([%w|_]+)%s-=%s-(.+)$')
            if param and value ~= nil then
                if tonumber(value) then
                    value = tonumber(value)
                elseif value == 'true' then
                    value = true
                elseif value == 'false' then
                    value = false
                end
                if tonumber(param) then
                    param = tonumber(param)
                end
                data[section][param] = value
            end
        end
        file:close()
        return data
    end
    return false
end
1593194080489.png
 
Последнее редактирование:

Shamanije

Известный
Автор темы
Друг
959
924
Ты пытаешься вопроизводить маршрут и парралельно запускаешь отложенные вызовы? Я даже не удивлён что ракбот падает, пытаясь одновременно обработать цикл scriptupdate и созданный поток defCall.
Если своими постами здесь ты пытаешься выставить этот скрипт хуйнёй, а меня хуёвым программистом - окей, милости прошу, напиши свою альтернативу с отличной оптимизацией без вылетов, я буду только рад этому.
 
  • Нравится
Реакции: Nerykery

MaksQ

Известный
967
834
мб сделаешь такое же только для сампа? чтобы в сампе маршрут мог воспроизводить