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

.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)
 

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
lua_thread.create(function()
    setVirtualKeyDown(18, true)
    wait(50)
    setVirtualKeyDown(18, false)
end)
18 - ид клавишы, в данном случае ALT, ид клавиш можешь посмотреть здесь
нужна именно отправка пакетов на сервер, как сделать? всё перепробывал, не получается, не нажимает alt
 

holyoneverr

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

Lua:
_, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
mem = allocateMemory(68)
sampStorePlayerOnfootData(id, mem)
setStructElement(mem, 4, 1, 1024, false)
sampSendOnfootData(mem)
setStructElement(mem, 4, 1, 0, false)
freeMemory(mem)
просто в цикле вставить? Библиотеку надо какую-то объявлять?

Если память не изменяет, то так:

Lua:
_, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
mem = allocateMemory(68)
sampStorePlayerOnfootData(id, mem)
setStructElement(mem, 4, 1, 1024, false)
sampSendOnfootData(mem)
setStructElement(mem, 4, 1, 0, false)
freeMemory(mem)
не работает

Если память не изменяет, то так:

Lua:
_, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
mem = allocateMemory(68)
sampStorePlayerOnfootData(id, mem)
setStructElement(mem, 4, 1, 1024, false)
sampSendOnfootData(mem)
setStructElement(mem, 4, 1, 0, false)
freeMemory(mem)
1704825469517.png
даже сообщение не отправляется
 

Tectrex

Активный
97
101
просто в цикле вставить? Библиотеку надо какую-то объявлять?


не работает
1. В main не надо объявлять потоки
2. Библиотек не надо
3.

Lua:
sampRegisterChatCommand('skin', function()
    _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    mem = allocateMemory(68)
    sampStorePlayerOnfootData(id, mem)
    setStructElement(mem, 4, 1, 1024, false)
    sampSendOnfootData(mem)
    setStructElement(mem, 4, 1, 0, false)
    freeMemory(mem)
end)

просто в цикле вставить? Библиотеку надо какую-то объявлять?


не работает


Посмотреть вложение 228039даже сообщение не отправляется
Попробуй вместо 4, поставь 36
 

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1. В main не надо объявлять потоки
2. Библиотек не надо
3.

Lua:
sampRegisterChatCommand('skin', function()
    _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    mem = allocateMemory(68)
    sampStorePlayerOnfootData(id, mem)
    setStructElement(mem, 4, 1, 1024, false)
    sampSendOnfootData(mem)
    setStructElement(mem, 4, 1, 0, false)
    freeMemory(mem)
end)


Попробуй вместо 4, поставь 36
всё равно не воркает
 

Tectrex

Активный
97
101
всё равно не воркает
Lua:
require 'lib.moonloader'

function main()
    while not isSampAvailable() do wait(0) end
   
    sampRegisterChatCommand('altt', cmd)

    while true do
        wait(0)
       
    end
end

function cmd()
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    local mem = allocateMemory(68)
    sampStorePlayerOnfootData(id, mem)
    setStructElement(mem, 4, 2, 1024, false)
    sampSendOnfootData(mem)
    setStructElement(mem, 4, 2, 0, false)
    freeMemory(mem)
    sampAddChatMessage('Нажал ALT', -1)
end
Не уследил за размером в байтах, теперь будет работать
 

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Lua:
require 'lib.moonloader'

function main()
    while not isSampAvailable() do wait(0) end
  
    sampRegisterChatCommand('altt', cmd)

    while true do
        wait(0)
      
    end
end

function cmd()
    local _, id = sampGetPlayerIdByCharHandle(PLAYER_PED)
    local mem = allocateMemory(68)
    sampStorePlayerOnfootData(id, mem)
    setStructElement(mem, 4, 2, 1024, false)
    sampSendOnfootData(mem)
    setStructElement(mem, 4, 2, 0, false)
    freeMemory(mem)
    sampAddChatMessage('Нажал ALT', -1)
end
Не уследил за размером в байтах, теперь будет работать
всё равно не работает

1704826321850.png


1704826349578.png
 

holyoneverr

Потрачен
22
2
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
1704826365450.png


Покажи полный код, где ты используешь ее, как она у тебя вообще вызывается
у меня там код на 1к строк бро

приватка

а нет, уже на 1200

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

Tectrex

Активный
97
101
Посмотреть вложение 228043


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

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