нажатие Alt не замедляясь

NaN.

Активный
Автор темы
111
45
Версия MoonLoader
.027.0-preview
Нужно, чтобы сервер думал, что я нажимаю ALT, но при этом я не останавливался/замедлялся. Можно ли такое реализовать?
Делаю следующим образом:

Lua:
function samp_create_sync_data(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},
        vehicle = {'VehicleSyncData', raknet.PACKET.VEHICLE_SYNC, sampStorePlayerIncarData},
        passenger = {'PassengerSyncData', raknet.PACKET.PASSENGER_SYNC, sampStorePlayerPassengerData},
        aim = {'AimSyncData', raknet.PACKET.AIM_SYNC, sampStorePlayerAimData},
        trailer = {'TrailerSyncData', raknet.PACKET.TRAILER_SYNC, sampStorePlayerTrailerData},
        unoccupied = {'UnoccupiedSyncData', raknet.PACKET.UNOCCUPIED_SYNC, nil},
        bullet = {'BulletSyncData', raknet.PACKET.BULLET_SYNC, nil},
        spectator = {'SpectatorSyncData', raknet.PACKET.SPECTATOR_SYNC, nil}
    }
    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 func_send = function()
        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


local data = samp_create_sync_data('player')
data.keysData = data.keysData + 1024
data.send()
 

NaN.

Активный
Автор темы
111
45
Lua:
function pressAlt(bool, x, y, z)
    local data = allocateMemory(18)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendSpectatorData(data)
    freeMemory(data)
end
Использование:

Lua:
local x, y, z = getCharCoordinates(PLAYER_PED)
pressAlt(true, x, y, z)
откат, не работает, кикает за невидимку
 

CaJlaT

Овощ
Модератор
2,806
2,614
откат, не работает, кикает за невидимку
а ой, это спект синхра, извиняюсь... Попробуй это
Lua:
function pressAlt(bool, x, y, z)
    local data = allocateMemory(18)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end
 
  • Нравится
Реакции: NaN.

NaN.

Активный
Автор темы
111
45
а ой, это спект синхра, извиняюсь... Попробуй это
Lua:
function pressAlt(bool, x, y, z)
    local data = allocateMemory(18)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end
или я тупой, или это не работает, но теперь кикает за телепорт пешком
 

CaJlaT

Овощ
Модератор
2,806
2,614
или я тупой, или это не работает, но теперь кикает за телепорт пешком
Скорее всего ты забыл указать координаты, у меня всё отлично работает...
Lua:
function pressAlt(bool)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local data = allocateMemory(18)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end
Lua:
pressAlt(true)
 
  • Нравится
Реакции: NaN.

NaN.

Активный
Автор темы
111
45
Скорее всего ты забыл указать координаты, у меня всё отлично работает...
Lua:
function pressAlt(bool)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local data = allocateMemory(18)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end
Lua:
pressAlt(true)
точно так же кикает, ты на арз тестил?
 

Sargon

Известный
Проверенный
164
367
Скорее всего ты забыл указать координаты, у меня всё отлично работает...
Lua:
function pressAlt(bool)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local data = allocateMemory(18)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end
Lua:
pressAlt(true)
Lua:
local data = allocateMemory(68)
 
  • Нравится
Реакции: CaJlaT и NaN.

FugaMagic

Известный
1,122
528

Вложения

  • изображение_2021-07-07_215312.png
    изображение_2021-07-07_215312.png
    20.9 KB · Просмотры: 58

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,152
1,194
тоесть эта штука убирает кд между нажатиями альта? если да, то я правильно сделал?

Lua:
function pressAlt(bool)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local data = allocateMemory(68)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end

pressAlt(true) -- вызывается один раз.
Как ты собрался убирать кд нажатия альта, если его нету?
 
  • Нравится
Реакции: хромиус)

NaN.

Активный
Автор темы
111
45
Lua:
function pressAlt(bool)
    local x, y, z = getCharCoordinates(PLAYER_PED)
    local data = allocateMemory(68)
    setStructElement(data, 4, 2, bool and 1024 or 0, true)
    setStructFloatElement(data, 6, x, true)
    setStructFloatElement(data, 10, y, true)
    setStructFloatElement(data, 14, z, true)
    sampSendOnfootData(data)
    freeMemory(data)
end

pressAlt(true) -- вызывается один раз.
Как ты собрался убирать кд нажатия альта, если его нету?
Lua:
local data = allocateMemory(68)
кикает через раз
 

damag

Женюсь на официантке в моем любимом баре
Проверенный
1,152
1,194
чет я не понял че эта ваша поебота делает, но я увеличил до 500 и кикать перестало
отправляет нажатия альта, можно снизить до 400, ибо синхра с такой задержкой отправляется.
 
  • Нравится
Реакции: NaN.

Hatiko

Известный
Проверенный
1,471
612
Lua:
addEventHandler("onWindowMessage", function (msg, wparam, lparam)
    if msg == 0x0104 and wparam == 18 and not isCharInAnyCar(PLAYER_PED) then
        local data = allocateMemory(68)
        sampStorePlayerOnfootData(select(2, sampGetPlayerIdByCharHandle(PLAYER_PED)), data)
        setStructElement(data, 4, 2, 1024)
        sampSendOnfootData(data)
        freeMemory(data)
        consumeWindowMessage(true, true)
    end
end)
 
  • Нравится
Реакции: NaN.