как сделать нажатие альта по команде?

.matteo

Участник
Автор темы
38
2
Версия MoonLoader
Другое
мне нужно, чтобы по команде он тпнулся и нажал на альт, но нажатия на альт не происходит
или придется обязательно делать задержку и lua_thread?

Lua:
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
    while not isSampAvailable() do wait(500) end
    sampRegisterChatCommand('skin', function()
        setCharCoordinates(PLAYER_PED, 2315.4748, -0.4112, 26.7421)
        setGameKeyState(21,256)
    end)
 

percheklii

Известный
733
269
Посмотреть вложение 228043


у меня там код на 1к строк бро

приватка

а нет, уже на 1200

я делаю бота, решил проверить его на несколько окон, а обычная имитация клавиш не воркает так, вот надо чтобы пакеты отправлялись в свёрнутом режиме, всё перепробывал уже, хз что делать
Как писал мне @why ega нажатие отправляется через синхру, и никак не нажмется кнопка в свёрнутом режиме,
А тьфу, как вариант поставить анти АФК

Приватка, и не умеешь работать с структурами? Да уж. Код который я тебе дал, работает, он обращается к структуре синхры игрока, по 4 оффсету int16 который занимает исходя из уроков информатики 6 класса 2 байта, в значение передает 1024 что равняется ALT, а вот почему оно у тебя не работает, ну тут не мои проблемы. Беды с кодом, полностью переделывай его.
"Приватка" копипаст без табуляции
 

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Приватка, и не умеешь работать с структурами? Да уж. Код который я тебе дал, работает, он обращается к структуре синхры игрока, по 4 оффсету int16 который занимает исходя из уроков информатики 6 класса 2 байта, в значение передает 1024 что равняется ALT, а вот почему оно у тебя не работает, ну тут не мои проблемы. Беды с кодом, полностью переделывай его.
ну потому что мне ещё не приходилось с этим работать, какие беды могут быть

Как писал мне @why ega нажатие отправляется через синхру, и никак не нажмется кнопка в свёрнутом режиме,
А тьфу, как вариант поставить анти АФК


"Приватка" копипаст без табуляции
так вот именно с этим анти афк в нужный момент alt не прожимается, а надо



так вот именно с этим анти афк в нужный момент alt не прожимается, а надо
не знаешь как это фиксить? просто хотел сразу на несколько аккаунтов поставить, просто у меня клавишы не в игре прожимаются получается, а в компе, допустим у тебя бот работает, ты смотришь ютуб и у тебя например клавиша пробел прожимается в браузере, а не в игру
 
  • Грустно
Реакции: percheklii

genius.company

Известный
614
286
А на синхре альт прожать нельзя?

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 и MLycoris

Tectrex

Активный
97
101
А на синхре альт прожать нельзя?

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
Зачем добавлять эту гигантскую функцию если можно сделать просто нажатие на нужную кнопку обращаясь к currentweapon или keysdata в структуре синхры игрока, как я ранее писал.
 

genius.company

Известный
614
286
Зачем добавлять эту гигантскую функцию если можно сделать просто нажатие на нужную кнопку обращаясь к currentweapon или keysdata в структуре синхры игрока, как я ранее писал.
Разници нету просто я так сделал
 
  • Клоун
Реакции: Air_Official

tiktokpay

Участник
84
82


так вот именно с этим анти афк в нужный момент alt не прожимается, а надо


не знаешь как это фиксить? просто хотел сразу на несколько аккаунтов поставить, просто у меня клавишы не в игре прожимаются получается, а в компе, допустим у тебя бот работает, ты смотришь ютуб и у тебя например клавиша пробел прожимается в браузере, а не в игру
Если у тебя не работает только Alt, то возможно проблема в другом, смотря для чего тебе прожимать этот Alt, если для подбора пикапа, то обязательно нужно ещё что бы игра или скрипт отправляла RPC_PICKEDUPPICKUP (сам рпс пикап не подбирает, но его отправка обязательно нужна, ведь без него сервер не даст тебе взять пикап).
И еще там есть проверка на дистанцию до этого пикапа, важно что бы в онфут синхре передавалась позиция, которая в пределах 10 метров от пикапа(на каждых серверах по разному)
 
  • Bug
Реакции: shiger

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если у тебя не работает только Alt, то возможно проблема в другом, смотря для чего тебе прожимать этот Alt, если для подбора пикапа, то обязательно нужно ещё что бы игра или скрипт отправляла RPC_PICKEDUPPICKUP (сам рпс пикап не подбирает, но его отправка обязательно нужна, ведь без него сервер не даст тебе взять пикап).
И еще там есть проверка на дистанцию до этого пикапа, важно что бы в онфут синхре передавалась позиция, которая в пределах 10 метров от пикапа(на каждых серверах по разному)
вот для этого
1704911211516.png
 

shiger

Новичок
12
1
Если не ошибаюсь, это радмир, при появлении этого диалога мне выдало это:
215, 2, 0, 4, 0, 0, 0, 2, 12, 0, 0, 0, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 25, 0, 0, 0, 91, 91, 50, 48, 55, 44, 34, 206, 242, 234, 240, 251, 242, 252, 32, 239, 238, 228, 224, 240, 238, 234, 34, 93, 93
Но как сделать так что бы оно нажималось я не знаю да и мне самому тоже самое надо для бота на радмире, может кто ни будь знает и сможет помочь.
 

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если не ошибаюсь, это радмир, при появлении этого диалога мне выдало это:

Но как сделать так что бы оно нажималось я не знаю да и мне самому тоже самое надо для бота на радмире, может кто ни будь знает и сможет помочь.
local sendAlt = {215, 2, 0, 4, 0, 0, 0, 2, 12, 0, 0, 0, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 25, 0, 0, 0, 91, 91, 50, 48, 55, 44, 34, 206, 242, 234, 240, 251, 242, 252, 32, 239, 238, 228, 224, 240, 238, 234, 34, 93, 93 }
local BitStream = raknetNewBitStream()
for i = 1, table.getn(sendAlt) do
raknetBitStreamWriteInt8(BitStream, sendAlt)
end
raknetSendBitStream(BitStream)


local sendAlt = {215, 2, 0, 4, 0, 0, 0, 2, 12, 0, 0, 0, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 25, 0, 0, 0, 91, 91, 50, 48, 55, 44, 34, 206, 242, 234, 240, 251, 242, 252, 32, 239, 238, 228, 224, 240, 238, 234, 34, 93, 93 }
local BitStream = raknetNewBitStream()
for i = 1, table.getn(sendAlt) do
raknetBitStreamWriteInt8(BitStream, sendAlt)
end
raknetSendBitStream(BitStream)
попробуй
 
  • Bug
Реакции: Vespan и MLycoris

shiger

Новичок
12
1
local sendAlt = {215, 2, 0, 4, 0, 0, 0, 2, 12, 0, 0, 0, 73, 110, 116, 101, 114, 97, 99, 116, 105, 111, 110, 115, 25, 0, 0, 0, 91, 91, 50, 48, 55, 44, 34, 206, 242, 234, 240, 251, 242, 252, 32, 239, 238, 228, 224, 240, 238, 234, 34, 93, 93 }
local BitStream = raknetNewBitStream()
for i = 1, table.getn(sendAlt) do
raknetBitStreamWriteInt8(BitStream, sendAlt)
end
raknetSendBitStream(BitStream)



попробуй
Не получилось