[RakBot]Как получить BitStream данных в любой момент?

vegas

Известный
Автор темы
643
448
Версия SA-MP
  1. Другая
Мне в ракботе нужно было найти альтернативу команды getAllVehicles(), и понял что надо использовать onRecvRpc 164, но я получаю данные о авто только при появлении самого этого авто, а я хочу в любой момент получить массив данных о всех авто, как такое реализовать?

Lua:
function onRecvRpc(id, data, size)
    if id == 164 then
        bs = bitStreamInit(data, size)
        data = {}
        data.vehId = bitStreamReadWord(bs) -- [UINT16]
        data.modelId = bitStreamReadDWord(bs) -- [UINT32]
        data.position = {x = bitStreamReadFloat(bs), y = bitStreamReadFloat(bs), z = bitStreamReadFloat(bs)}-- [FLOAT]
        data.angle = bitStreamReadFloat(bs) -- [FLOAT]
        data.color1 = bitStreamReadByte(bs) -- [UINT8]
        data.color2 = bitStreamReadByte(bs) -- [UINT8]
        data.health = bitStreamReadFloat(bs) -- [FLOAT]
        data.interior = bitStreamReadByte(bs) -- [UINT8]
        data.doorDamageStatus = bitStreamReadDWord(bs) -- [UINT32]
        data.panelDamageStatus = bitStreamReadDWord(bs) -- [UINT32]
        data.lightDamageStatus = bitStreamReadByte(bs) -- [UINT8]
        data.tireDamageStatus = bitStreamReadByte(bs) -- [UINT8]
        data.addsiren = bitStreamReadByte(bs) -- [UINT8]
        data.modslot0 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot1 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot2 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot3 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot4 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot5 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot6 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot7 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot8 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot9 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot10 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot11 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot12 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot13 = bitStreamReadByte(bs) -- [UINT8]
        data.paintJob = bitStreamReadByte(bs) -- [UINT8]
        data.bodyColor1 = bitStreamReadDWord(bs) -- [UINT32]
        data.bodyColor2 = bitStreamReadDWord(bs) -- [UINT32]

        onVehicleStreamIn(data)
    end
end
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,889
1,255
ракбот такого не умеет
Да с чего бы он так не умеет?
хочу в любой момент получить массив данных о всех авто, как такое реализовать?
При появлении машины заноси все данные в таблицу и проходись по ней циклом
 

paulohardy

вы еще постите говно? тогда я иду к вам
Всефорумный модератор
1,889
1,255
ракбот был сделан для прокачки аккаунтов на спавне, а не для получения всех машин в зоне стрима
И что ты высрал? Зачем тогда в ракбот добавляли луа апи раз он нужен для прокачки акков на спавне?
 

Shamanije

Известный
Друг
961
922
Lua:
local vehicles = {}

function onRecvRpc(id, data, size)
    if id == 164 then
        local bs = bitStreamInit(data, size)
        local data = {}
        data.vehId = bitStreamReadWord(bs) -- [UINT16]
        data.modelId = bitStreamReadDWord(bs) -- [UINT32]
        data.position = {x = bitStreamReadFloat(bs), y = bitStreamReadFloat(bs), z = bitStreamReadFloat(bs)}-- [FLOAT]
        data.angle = bitStreamReadFloat(bs) -- [FLOAT]
        data.color1 = bitStreamReadByte(bs) -- [UINT8]
        data.color2 = bitStreamReadByte(bs) -- [UINT8]
        data.health = bitStreamReadFloat(bs) -- [FLOAT]
        data.interior = bitStreamReadByte(bs) -- [UINT8]
        data.doorDamageStatus = bitStreamReadDWord(bs) -- [UINT32]
        data.panelDamageStatus = bitStreamReadDWord(bs) -- [UINT32]
        data.lightDamageStatus = bitStreamReadByte(bs) -- [UINT8]
        data.tireDamageStatus = bitStreamReadByte(bs) -- [UINT8]
        data.addsiren = bitStreamReadByte(bs) -- [UINT8]
        data.modslot0 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot1 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot2 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot3 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot4 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot5 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot6 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot7 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot8 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot9 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot10 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot11 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot12 = bitStreamReadByte(bs) -- [UINT8]
        data.modslot13 = bitStreamReadByte(bs) -- [UINT8]
        data.paintJob = bitStreamReadByte(bs) -- [UINT8]
        data.bodyColor1 = bitStreamReadDWord(bs) -- [UINT32]
        data.bodyColor2 = bitStreamReadDWord(bs) -- [UINT32]
        bitStreamDelete(bs)
        vehicles[data.vehId] = data
    end
    if id == 165 then
        local bs = bitStreamInit(data, size)
        local vehId = bitStreamReadWord(bs)
        bitStreamDelete(bs)
        if vehicles[vehId] then
            vehicles[vehId] = {}
        end
    end
end

function getAllVehicles()
    for k, v in pairs(vehicles) do
        printLog(string.format('vehicle id: %d | model: %d | pos: x: %f; y: %f; z: %f', v.vehId, v.modelId, v.position.x, v.position.y, v.position.z))
    end
end

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