Вопрос по поводу функции moonloaderа

Кем же я могу быть?

Участник
Автор темы
66
7
Версия MoonLoader
.027.0-preview
Добрый вечер!
Один раз я изменил клавишу для медленного шага в настройках SAMPа, и на Arizona RP вместо нажатия на Alt считывалась другая клавиша (тоже самое с быстрым бегом и прыжком).
Таким образом, я пришёл к выводу, что на Arizona RP считывается не нажатие клавиши, а выполнение медленного шага, прыжка и быстрого бега.
СУТЬ ВОПРОСА: Есть ли в moonloaderе функция, которая будет выполнять эти действия, чтобы сервер Arizonы RP думал, что якобы была нажата клавиша?
Меня не интересуют функции имитирующие нажатие клавиши (например, virtualkey).
Заранее спасибо, господа!
 
  • Эм
Реакции: qdIbp

Vespan

loneliness
Проверенный
2,104
1,635
Добрый вечер!
Один раз я изменил клавишу для медленного шага в настройках SAMPа, и на Arizona RP вместо нажатия на Alt считывалась другая клавиша (тоже самое с быстрым бегом и прыжком).
Таким образом, я пришёл к выводу, что на Arizona RP считывается не нажатие клавиши, а выполнение медленного шага, прыжка и быстрого бега.
СУТЬ ВОПРОСА: Есть ли в moonloaderе функция, которая будет выполнять эти действия, чтобы сервер Arizonы RP думал, что якобы была нажата клавиша?
Меня не интересуют функции имитирующие нажатие клавиши (например, virtualkey).
Заранее спасибо, господа!
типо,ты нажал на ну к премеру на кнопку B и на аризона она как АЛЬТ отправлялась?
 

Кем же я могу быть?

Участник
Автор темы
66
7
типо,ты нажал на ну к премеру на кнопку B и на аризона она как АЛЬТ отправлялась?
Не совсем, я хочу сделать AutoAlt, который не будет имитировать нажатие Alt, а выполнять медленный шаг непосредственно.
 

Vespan

loneliness
Проверенный
2,104
1,635

Кем же я могу быть?

Участник
Автор темы
66
7
шоб не отправлялся АЛЬТ на сервер кароч да?
Мне нужно, чтобы в скрипте не было никаких setvirtualkeydown, и чтобы персонаж выполнял действие медленного шага.

Сам знаю, моя идея звучит непонятной.

Является ли медленный шаг анимацией?
 
Последнее редактирование:

YarikVL

Известный
Проверенный
4,796
1,813
Мне нужно, чтобы в скрипте не было никаких setvirtualkeydown, и чтобы персонаж выполнял действие медленного шага.

Сам знаю, моя идея звучит непонятной.

Является ли медленный шаг анимацией?
Ты хочешь сделать бота, который будет сам нажимать альт, но чтобы ленни ферст ( или другие админы с тулсом ) не видели в реконе за тобой ( на своей панели ) то что ты нажимаешь альт?🧐
 

Кем же я могу быть?

Участник
Автор темы
66
7
Ты хочешь сделать бота, который будет сам нажимать альт, но чтобы ленни ферст ( или другие админы с тулсом ) не видели в реконе за тобой ( на своей панели ) то что ты нажимаешь альт?🧐
Да. Я думаю, такой AutoAlt был бы эффективнее.
 

YarikVL

Известный
Проверенный
4,796
1,813

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,776
11,224
Эту штуку ( в тулсе у админов ) нашёл вроде @chapo ( или космо https://www.blast.hk/threads/128348/post-1011459 )
Короче он возможно знает как обойти это
1. космо сделал это и кинул автору тулса, после чего он это добавил
2. надо хукать PlayerSync и как то "вырезать" нажатие альта из data.keysData
 
  • Влюблен
Реакции: YarikVL

Кем же я могу быть?

Участник
Автор темы
66
7
1. космо сделал это и кинул автору тулса, после чего он это добавил
2. надо хукать PlayerSync и как то "вырезать" нажатие альта из data.keysData
Добрый день, в любом случае большое спасибо, не ожидал Вас здесь увидеть. Но видели ли Вы такую функцию, чтобы персонаж выполнял действие медленного шага?

Чуть не забыл, @chapo , он точно ответит через час)
 

moreveal

Известный
Проверенный
857
536
Добрый день, в любом случае большое спасибо, не ожидал Вас здесь увидеть. Но видели ли Вы такую функцию, чтобы персонаж выполнял действие медленного шага?

Чуть не забыл, @chapo , он точно ответит через час)
любой сервер сампа не может ловить настоящие нажимаемые тобой кнопки, список кнопок, что может получать сервер сильно ограничен, а полный их список ты можешь найти тут:

Чтобы отправить серверу нажатие кнопки, фактически не имитируя его, нужно отправлять в пакете синхронизации keysData, равным "идентификатору" нажимаемой кнопки (на сайте он во втором столбце)

примерная реализация с использованием samp events:
Lua:
function sendSyncKey(id) 
    syncKey = id
    sampForceOnfootSync()
end

function sampev.onSendPlayerSync(data)
    if syncKey then
        data.keysData = syncKey
        syncKey = nil
    end
    -- а так можно не отправлять серверу нажатие альта
    if (data.keysData == 1024) then return false end
end

--
sendSyncKey(1024) -- отправка альта
sendSyncKey(1024 + 65536) -- отправка сочетания Alt + Y
 
Последнее редактирование:

Кем же я могу быть?

Участник
Автор темы
66
7
любой сервер сампа не может ловить настоящие нажимаемые тобой кнопки, список кнопок, что может получать сервер сильно ограничен, а полный их список ты можешь найти тут:

Чтобы отправить серверу нажатие кнопки, фактически не имитируя его, нужно отправлять в пакете синхронизации keysData, равным "идентификатору" нажимаемой кнопки (на сайте он во втором столбце)

примерная реализация с использованием samp events:
Lua:
function sendSyncKey(id)
    syncKey = id
    sampForceOnfootSync()
end

function sampev.onSendPlayerSync(data)
    if syncKey then
        data.keysData = syncKey
        syncKey = nil
    end
    -- а так можно не отправлять серверу нажатие альта
    if (data.keysData == 1024) then return false end
end

--
sendSyncKey(1024) -- отправка альта
sendSyncKey(1024 + 65536) -- отправка сочетания Alt + Y
Спасибо за код, но это не совсем то, что нужно. Я просил, чтобы не отправляли функции с имитацией нажатия клавишы. Ведь они не сразу срабатывают, потому что на Аризоне вычисляется не нажатие Альта, а выполнения игроком медленного шага. Я хочу узнать, есть ли такие фунуции, которые будут выполнять медленный шаг. В любом случае спасибо!
 

moreveal

Известный
Проверенный
857
536
на Аризоне вычисляется не нажатие Альта, а выполнения игроком медленного шага.
первая часть об этом и говорит, 1024 - это не код альта какой-нибудь, а KEY_WALK (ака действие медленного шага), и если ты в настройках гта медленным шагом сделаешь шифт, то при нажатии на шифт, сервер будет получать 1024 все равно
 

Кем же я могу быть?

Участник
Автор темы
66
7
первая часть об этом и говорит, 1024 - это не код альта какой-нибудь, а KEY_WALK (ака действие медленного шага), и если ты в настройках гта медленным шагом сделаешь шифт, то при нажатии на шифт, сервер будет получать 1024 все равно
Спасибо большое, я даже не проверив Ваш скрипт, подумал, что это очередной virtual key, но нет! Чудесная работа была проделана Вашими руками. За 2 дня никто мне не дал нужное решение, но Вы единственный, кто мне сильно помог! На какой чёрной магии синхры это работает? Не важно, самое главное - оно работает!

любой сервер сампа не может ловить настоящие нажимаемые тобой кнопки, список кнопок, что может получать сервер сильно ограничен, а полный их список ты можешь найти тут:

Чтобы отправить серверу нажатие кнопки, фактически не имитируя его, нужно отправлять в пакете синхронизации keysData, равным "идентификатору" нажимаемой кнопки (на сайте он во втором столбце)

примерная реализация с использованием samp events:
Lua:
function sendSyncKey(id) 
    syncKey = id
    sampForceOnfootSync()
end

function sampev.onSendPlayerSync(data)
    if syncKey then
        data.keysData = syncKey
        syncKey = nil
    end
    -- а так можно не отправлять серверу нажатие альта
    if (data.keysData == 1024) then return false end
end

--
sendSyncKey(1024) -- отправка альта
sendSyncKey(1024 + 65536) -- отправка сочетания Alt + Y
Можете ответить, а как сделать, чтобы скрипт работал(постоянно), даже тогда, когда не нажимаешь никакую из клавиш?
 
Последнее редактирование:
  • Влюблен
Реакции: moreveal

moreveal

Известный
Проверенный
857
536
Можете ответить, а как сделать, чтобы скрипт работал(постоянно), даже тогда, когда не нажимаешь никакую из клавиш?
так, например
Lua:
sampRegisterChatCommand("alt_flood", function()
    activated = not activated
    sampAddChatMessage("Флуд кнопкой " .. (activated and "начат" or "закончен"), 0xCCCCCC)
end)

-------
lua_thread.create(function()
    while true do wait(0)
        if activated then
            sendSyncKey(1024)
            wait(200)
        end
    end
end)