Неактуально [RAKSAMP] Вопрос по hook

kultizdat.

Известный
Автор темы
155
12
Всем привет. Хотел переделать хук showtextdraw из библеотеки под RakBot на RakSamp.
Lua:
local bs = bitStreamInit(data, size)
        local data = {}
        local textdrawId = bitStreamReadWord(bs)
        data.flags = bitStreamReadByte(bs)
        data.letterWidth = bitStreamReadFloat(bs)
        data.letterHeight = bitStreamReadFloat(bs)
        data.letterColor = bitStreamReadDWord(bs)
        data.lineWidth = bitStreamReadFloat(bs)
        data.lineHeight = bitStreamReadFloat(bs)
        data.boxColor = bitStreamReadDWord(bs)
        data.shadow = bitStreamReadByte(bs)
        data.outline = bitStreamReadByte(bs)
        data.backgroundColor = bitStreamReadDWord(bs)
        data.style = bitStreamReadByte(bs)
        data.selectable = bitStreamReadByte(bs)
        local vx = bitStreamReadFloat(bs)
        local vy = bitStreamReadFloat(bs)
        data.position = {x=vx,y=vy}
        data.modelId = bitStreamReadWord(bs)
        local vx = bitStreamReadFloat(bs)
        local vy = bitStreamReadFloat(bs)
        local vz = bitStreamReadFloat(bs)
        data.rotation = {x=vx,y=vy,z=vz}
        data.zoom = bitStreamReadFloat(bs)
        data.color = bitStreamReadDWord(bs)
        local l = bitStreamReadWord(bs)
Но не понял, какие аналоги для работы с этой функцией (bitStreamReadByte и bitStreamReadDWord) на RakSamp

Спасибо большое за помощь.
 

Maxim25012

Известный
518
240
Я это прекрасно видел, но я не понимаю, что конкретно подходит под то, что я выделил в топике
DWord = UInt32
Byte = UInt8

Соответственно, вместо функции "bitStreamReadDWord" надо использовать метод "readUInt32", а вместо функции "bitStreamReadByte" – метод "readUInt8".
 
  • Нравится
Реакции: kultizdat.

kultizdat.

Известный
Автор темы
155
12
Lua:
function onReceivePacket(id, bs)
    --[[{textdrawId = 'uint16'},
    {textdraw = {
    {flags = 'uint8'},
    {letterWidth = 'float'},
    {letterHeight = 'float'},
    {letterColor = 'int32'},
    {lineWidth = 'float'},
    {lineHeight = 'float'},
    {boxColor = 'int32'},
    {shadow = 'uint8'},
    {outline = 'uint8'},
    {backgroundColor = 'int32'},
    {style = 'uint8'},
    {selectable = 'uint8'},
    {position = 'vector2d'},
    {modelId = 'uint16'},
    {rotation = 'vector3d'},
    {zoom = 'float'},
    {color = 'int32'},
    {text = 'string16'}
    }}]]
    if id == 134 then
        bs = bitStream.new() 
        local data = {}
        local textdrawId = bs:readUInt16()
        data.flags = bs:readUInt8()
        data.letterWidth = bs:readFloat()
        data.letterHeight = bs:readFloat()
        data.letterColor = bs:readInt32()
        data.lineWidth = bs:readFloat()
        data.lineHeight = bs:readFloat()
        data.boxColor = bs:readInt32()
        data.shadow = bs:readUInt8()                            
        data.outline = bs:readUInt8()
        data.backgroundColor = bs:readInt32()
        data.style = bs:readUInt8()
        data.selectable = bs:readUInt8()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        data.position = {x=vx,y=vy}
        data.modelId = bs:readUInt16()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        local vz = bs:readFloat()
        data.rotation = {x=vx,y=vy,z=vz}
        data.zoom = bs:readFloat()
        data.color = bs:readInt32()
        local l = bs:readUInt16()
        if l <= 0 then
            data.text = ''
        else
            data.text = bs:readString(l)
        end
        onShowTextDraw(textdrawId,data)
    end
end
function onShowTextDraw(textdrawId,data)
    print(textdrawId, data)
    
end

Помогите, в чем ошибка?
Не выводит print
 

Maxim25012

Известный
518
240
Lua:
function onReceivePacket(id, bs)
    --[[{textdrawId = 'uint16'},
    {textdraw = {
    {flags = 'uint8'},
    {letterWidth = 'float'},
    {letterHeight = 'float'},
    {letterColor = 'int32'},
    {lineWidth = 'float'},
    {lineHeight = 'float'},
    {boxColor = 'int32'},
    {shadow = 'uint8'},
    {outline = 'uint8'},
    {backgroundColor = 'int32'},
    {style = 'uint8'},
    {selectable = 'uint8'},
    {position = 'vector2d'},
    {modelId = 'uint16'},
    {rotation = 'vector3d'},
    {zoom = 'float'},
    {color = 'int32'},
    {text = 'string16'}
    }}]]
    if id == 134 then
        bs = bitStream.new()
        local data = {}
        local textdrawId = bs:readUInt16()
        data.flags = bs:readUInt8()
        data.letterWidth = bs:readFloat()
        data.letterHeight = bs:readFloat()
        data.letterColor = bs:readInt32()
        data.lineWidth = bs:readFloat()
        data.lineHeight = bs:readFloat()
        data.boxColor = bs:readInt32()
        data.shadow = bs:readUInt8()                        
        data.outline = bs:readUInt8()
        data.backgroundColor = bs:readInt32()
        data.style = bs:readUInt8()
        data.selectable = bs:readUInt8()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        data.position = {x=vx,y=vy}
        data.modelId = bs:readUInt16()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        local vz = bs:readFloat()
        data.rotation = {x=vx,y=vy,z=vz}
        data.zoom = bs:readFloat()
        data.color = bs:readInt32()
        local l = bs:readUInt16()
        if l <= 0 then
            data.text = ''
        else
            data.text = bs:readString(l)
        end
        onShowTextDraw(textdrawId,data)
    end
end
function onShowTextDraw(textdrawId,data)
    print(textdrawId, data)
 
end

Помогите, в чем ошибка?
Не выводит print
Новый битстрим создавать не надо было. У тебя он уже передаётся в функцию хука. Его нужно создавать только тогда, когда тебе его нужно сэмулировать или отправить на сервер, заполнив самостоятельно.
 
  • Нравится
Реакции: kultizdat.

kultizdat.

Известный
Автор темы
155
12
Новый битстрим создавать не надо было. У тебя он уже передаётся в функцию хука. Его нужно создавать только тогда, когда тебе его нужно сэмулировать или отправить на сервер, заполнив самостоятельно.
Lua:
bs = bitStream.new()
Удалил, но по-прежнему ничего не выводит.
Ошибся с типами переменных?
 

kultizdat.

Известный
Автор темы
155
12
Ты не то ловишь, тебе нужно ловить RPC (onReceiveRPC), а не пакет.
Стыдно, но что опять не так?

Lua:
function onReceiveRpc(id, bs)
    if id == 134 then
        local data = {}
        local textdrawId = bs:readUInt16()
        data.flags = bs:readUInt8()
        data.letterWidth = bs:readFloat()
        data.letterHeight = bs:readFloat()
        data.letterColor = bs:readInt32()
        data.lineWidth = bs:readFloat()
        data.lineHeight = bs:readFloat()
        data.boxColor = bs:readInt32()
        data.shadow = bs:readUInt8()                            
        data.outline = bs:readUInt8()
        data.backgroundColor = bs:readInt32()
        data.style = bs:readUInt8()
        data.selectable = bs:readUInt8()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        data.position = {x=vx,y=vy}
        data.modelId = bs:readUInt16()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        local vz = bs:readFloat()
        data.rotation = {x=vx,y=vy,z=vz}
        data.zoom = bs:readFloat()
        data.color = bs:readInt32()
        local len = bs:readUInt16()
        l = bs:readString(len)
        if l <= 0 then
            data.text = ''
        else
            data.text = bs:readString(l)
        end
        onShowTextDraw(textdrawId,data)

       
    end
end
function onShowTextDraw(textdrawId, data)
    print(data.text)
    
end
 

Maxim25012

Известный
518
240
Стыдно, но что опять не так?

Lua:
function onReceiveRpc(id, bs)
    if id == 134 then
        local data = {}
        local textdrawId = bs:readUInt16()
        data.flags = bs:readUInt8()
        data.letterWidth = bs:readFloat()
        data.letterHeight = bs:readFloat()
        data.letterColor = bs:readInt32()
        data.lineWidth = bs:readFloat()
        data.lineHeight = bs:readFloat()
        data.boxColor = bs:readInt32()
        data.shadow = bs:readUInt8()                           
        data.outline = bs:readUInt8()
        data.backgroundColor = bs:readInt32()
        data.style = bs:readUInt8()
        data.selectable = bs:readUInt8()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        data.position = {x=vx,y=vy}
        data.modelId = bs:readUInt16()
        local vx = bs:readFloat()
        local vy = bs:readFloat()
        local vz = bs:readFloat()
        data.rotation = {x=vx,y=vy,z=vz}
        data.zoom = bs:readFloat()
        data.color = bs:readInt32()
        local len = bs:readUInt16()
        l = bs:readString(len)
        if l <= 0 then
            data.text = ''
        else
            data.text = bs:readString(l)
        end
        onShowTextDraw(textdrawId,data)

      
    end
end
function onShowTextDraw(textdrawId, data)
    print(data.text)
   
end
RPC полностью большими буквами надо было
 
  • Нравится
Реакции: kultizdat.

kultizdat.

Известный
Автор темы
155
12
RPC полностью большими буквами надо было
Е-мааа. Спасибо большое!
Долгих лет жизни тебе, твоим близким до 10 колена <3
обнял, приподнял, покружил, поставил на место =)
 
Последнее редактирование:
  • Влюблен
Реакции: Maxim25012

kultizdat.

Известный
Автор темы
155
12
Зачем с этим ебаться вообще? В самп.луа же этот хук есть
Да хуй его знает. Нужна была проверка на существование текстдрава и получение текста с текстава вне хука, да и для общего развития полезно
 

Rei

Известный
Друг
1,616
1,674
Да хуй его знает. Нужна была проверка на существование текстдрава и получение текста с текстава вне хука, да и для общего развития полезно
В бета версии добавлен нативный пул текстдравов и луа функции для работы с ним. Но так или иначе для создания своего пула проще использовать готовый хук из самп эвентс
 
  • Нравится
Реакции: kultizdat.

kultizdat.

Известный
Автор темы
155
12
В бета версии добавлен нативный пул текстдравов и луа функции для работы с ним. Но так или иначе для создания своего пула проще использовать готовый хук из самп эвентс
Какие аргументы для новой команды getTextdraw?
Если вводить ID текстдрава, то выдает table 0x...