SAMP не регистрирует нажатия на ALT

WASD1222

Новичок
Автор темы
15
1
Версия MoonLoader
.026-beta
Код:
        local text = sampGet3dTextInfoById(tid)
        if string.match(text, "Для сбора", 0) then
            if anim == 168 then
                setGameKeyState(16, -256)
            else
                if anim == 1189 then
                     if scriptEnabled and alt_pressed then
                        data.keys.unknown_walkSlow = 1 -- изменяем информацию, что Alt зажат
                        alt_pressed = not alt_pressed -- изменяем состояние переменной
                    end
                    wait(250)
                    temp = 1
                else
                    setGameKeyState(16, -256)
                end
            end
        else
            wait(25)
            found = false
            timer = 0
            lap.v = lap.v - 1
            matches = {}
            if lap.v ~= 0 then
                sampAddChatMessage("{30F867}[ARZ]{FFFFFF} Осталось ещё кругов: " .. lap.v .. "!", -255)
            elseif lap.v == 0 then
                sampAddChatMessage("{30F867}[ARZ]{FFFFFF} Круги закончились!", -255)
                if get_cash.v then
                    runtoc = true
                end
            end
        end
    end
end
end
end

Alt нажимается, но почему-то не регистрируются нажатия Alt (хотя анимация при ходьбе с зажатым Alt проигрывается), но почему-то я не могу открыть диалог, для которого как раз таки требуется нажимать Alt. Объясните пж что не так? Мне желательно нажимать на Alt с помощью синхры.
 

VanoKLR

Известный
879
488
вот код(почти готовый) который по нажатию нужной тебе клавиши(указать надо) будет активировать флуд альтом пока ты не отпустишь ранее зажатую клавишу.
alt sync:
function main()
    repeat wait(0) until isSampAvailable()
    
    while true do wait(0)
        if isKeyJustPressed(ID) then
            altsync(true)
        else
            altsync(false)
        end
    end
end

function altsync(bool)
    lua_thread.create(function()
        if bool then
            alt = not alt
            local sync = samp_create_sync_data("player")
            sync.keysData = alt and 1024 or 0
            sync.send()
        end
    end)
end

для его работы нужен ещё синхра от фипа
 
  • Нравится
Реакции: Z3roKwq

WASD1222

Новичок
Автор темы
15
1
вот код(почти готовый) который по нажатию нужной тебе клавиши(указать надо) будет активировать флуд альтом пока ты не отпустишь ранее зажатую клавишу.
alt sync:
function main()
    repeat wait(0) until isSampAvailable()
  
    while true do wait(0)
        if isKeyJustPressed(ID) then
            altsync(true)
        else
            altsync(false)
        end
    end
end

function altsync(bool)
    lua_thread.create(function()
        if bool then
            alt = not alt
            local sync = samp_create_sync_data("player")
            sync.keysData = alt and 1024 or 0
            sync.send()
        end
    end)
end

для его работы нужен ещё синхра от фипа
Всё равно, отдельно от основного скрипта работает нормально, но в этом коде почему-то не работает((

Alt нажимается, но почему-то не регистрируются нажатия Alt (хотя анимация при ходьбе с зажатым Alt проигрывается), но почему-то я не могу открыть диалог, для которого как раз таки требуется нажимать Alt. Объясните пж что не так? Мне желательно нажимать на Alt с помощью синхры.


ffffff:
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

function altsync(bool)
    if anim == 168 then
        local alt = false
        while true do
            wait(0)
            alt = not alt
            local sync = samp_create_sync_data("player")
            sync.keysData = alt and 1024 or 0
            sync.send()
        end
    elseif anim == 1189 then
        lua_thread.create(function()
            if bool then
                alt = not alt
                local sync = samp_create_sync_data("player")
                sync.keysData = alt and 1024 or 0
                sync.send()
            end
        end)
    else
        wait(25)
        found = false
        timer = 0
        lap.v = lap.v - 1
        matches = {}
        if lap.v ~= 0 then
            sampAddChatMessage("{30F867}[ARZ]{FFFFFF} Осталось ещё кругов: " .. lap.v .. "!", -255)
        elseif lap.v == 0 then
            sampAddChatMessage("{30F867}[ARZ]{FFFFFF} Круги закончились!", -255)
            if get_cash.v then
                runtoc = true
                end
            end
        end
    end
end
end
end
end
end