отправка пакетов нажатия на клавишу lua

holyoneverr

Потрачен
Автор темы
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
мне нужна отправка пакетов на сервер нажатия клавиши alt, setVirtualKeyDown(keyid, true/false) не подойдёт, пробывал с setGameKeyState(21,256) и data.keysData = data.keysData + 1024 , не работает , может я что то не так делаю. Либы все есть, локалы тоже, не воркает не знаю
 

1NEXPL1CA

Известный
751
374
мне нужна отправка пакетов на сервер нажатия клавиши alt, setVirtualKeyDown(keyid, true/false) не подойдёт, пробывал с setGameKeyState(21,256) и data.keysData = data.keysData + 1024 , не работает , может я что то не так делаю. Либы все есть, локалы тоже, не воркает не знаю
Покажи как синхру отправляешь

pressAlt.lua:
function main()
    repeat wait(0) until isSampAvailable()
    sampRegisterChatCommand('pressalt', function()
        sendPlayer(1042)
    end)
    wait(-1)
end

function sendPlayer(id)
    local player = CreateSync('player')
    player.keysData = tonumber(id)
    player.position = {getCharCoordinates(PLAYER_PED)}
    player.send()
end

function CreateSync(sync_type, copy_from_player)
    local ffi = require('ffi')
    local sampfuncs = require('sampfuncs')
    -- from SAMP.Lua
    local raknet = require ('samp.raknet')
    require('samp.synchronization')
    copy_from_player = copy_from_player or true
    local sync_traits = {
        player = {'PlayerSyncData', raknet.PACKET.PLAYER_SYNC, sampStorePlayerOnfootData}
    }
    local sync_info = sync_traits[sync_type]
    local data_type = 'struct ' .. sync_info[1]
    local data = ffi.new(data_type, {})
    local raw_data_ptr = tonumber(ffi.cast('uintptr_t', ffi.new(data_type .. '*', data)))
    -- copy player's sync data to the allocated memory
    if copy_from_player then
        local copy_func = sync_info[3]
        if copy_func then
            local _, player_id
            if copy_from_player == true then
                _, player_id = sampGetPlayerIdByCharHandle(PLAYER_PED)
            else
                player_id = tonumber(copy_from_player)
            end
            copy_func(player_id, raw_data_ptr)
        end
    end
    -- function to send packet
    local function func_send()
        local bs = raknetNewBitStream()
        raknetBitStreamWriteInt8(bs, sync_info[2])
        raknetBitStreamWriteBuffer(bs, raw_data_ptr, ffi.sizeof(data))
        raknetSendBitStreamEx(bs, sampfuncs.HIGH_PRIORITY, sampfuncs.UNRELIABLE_SEQUENCED, 1)
        raknetDeleteBitStream(bs)
    end
    -- metatable to access sync data and 'send' function
    local mt = {
        __index = function(t, index)
            return data[index]
        end,
        __newindex = function(t, index, value)
            data[index] = value
        end
    }
    return setmetatable({send = func_send}, mt)
end
 
Последнее редактирование:
  • Клоун
Реакции: Air_Official