Урок

Shepard

Активный
Автор темы
459
88
Версия MoonLoader
.027.0-preview
Привет, хотелось бы прочитать уроки про рассинхрон и его функции, есть такое? Хоть бы, ту самую рванку или слаппер написать
 

bottom_text

Известный
675
318
Привет, хотелось бы прочитать уроки про рассинхрон и его функции, есть такое? Хоть бы, ту самую рванку или слаппер написать
Рванка это просто подмена или отправка ржачных исходящих пакетов синхронизации, рассинхрон тут не причём.
К примеру отправляешь PACKET_VEHICLE_SYNC( пакет инкар синхры) с координатами другого игрока и скорость 3000 км/ч - рванка готова.
 

Shepard

Активный
Автор темы
459
88
Рванка это просто подмена или отправка ржачных исходящих пакетов синхронизации, рассинхрон тут не причём.
К примеру отправляешь PACKET_VEHICLE_SYNC( пакет инкар синхры) с координатами другого игрока и скорость 3000 км/ч - рванка готова.
Как мне скорость с ног поставить?
 

bottom_text

Известный
675
318
Lua:
floatx, floaty, floatz = getOffsetFromCharInWorldCoords(handle, 0, 0, -0.5)
    
      heh = allocateMemory(67)
    _, idi = sampGetPlayerIdByCharHandle(PLAYER_PED)
      sampStorePlayerIncarData(idi, heh)
      setStructFloatElement(heh, 24, floatx, true)
      setStructFloatElement(heh, 28, floaty, true)
      setStructFloatElement(heh, 32, floatz, true)
      setStructFloatElement(heh, 36, 0.0, true)
      setStructFloatElement(heh, 40, 0.0, true)
      setStructFloatElement(heh, 44, 10.0, true)
      sampSendIncarData(heh)
      freeMemory(heh)
Делал когда ещё недели не прошло с начала изучения луа, так что выглядит не очень. Это для инкар рванки.

 

Shepard

Активный
Автор темы
459
88
А с самп луа?
Lua:
floatx, floaty, floatz = getOffsetFromCharInWorldCoords(handle, 0, 0, -0.5)
   
      heh = allocateMemory(67)
    _, idi = sampGetPlayerIdByCharHandle(PLAYER_PED)
      sampStorePlayerIncarData(idi, heh)
      setStructFloatElement(heh, 24, floatx, true)
      setStructFloatElement(heh, 28, floaty, true)
      setStructFloatElement(heh, 32, floatz, true)
      setStructFloatElement(heh, 36, 0.0, true)
      setStructFloatElement(heh, 40, 0.0, true)
      setStructFloatElement(heh, 44, 10.0, true)
      sampSendIncarData(heh)
      freeMemory(heh)
Делал когда ещё недели не прошло с начала изучения луа, так что выглядит не очень. Это для инкар рванки.

samp_create_sync?
 

bottom_text

Известный
675
318
Lua:
floatx, floaty, floatz = getOffsetFromCharInWorldCoords(handle, 0, 0, -0.5)
 local data = samp_create_sync_data('player')
            data.position = {floatx, floaty, floatz }
            data.moveSpeed = {0.0, 0.0, 30.0}
            data.send()


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
Вроде так
 

Shepard

Активный
Автор темы
459
88
Lua:
floatx, floaty, floatz = getOffsetFromCharInWorldCoords(handle, 0, 0, -0.5)
local data = samp_create_sync_data('player')
            data.position = {floatx, floaty, floatz }
            data.moveSpeed = {0.0, 0.0, 30.0}
            data.send()


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
Вроде так
Lua:
    sampRegisterChatCommand("stop", function(arg)
        if tonumber(arg) == nil or tonumber(arg) == "" then
            sampAddChatMessage("Ид введи!", -1)
        else
            if sampIsPlayerConnected(arg) then
                local result, handle = sampGetCharHandleBySampPlayerId(arg)
                if result then
                    local tX,tY,tZ = getCharCoordinates(handle)
                    local pX,pY,pZ = getCharCoordinates(PLAYER_PED)
                    if getDistanceBetweenCoords3d(pX,pY,pZ,tX,tY,tZ) < 15 then
                        local data = samp_create_sync_data('player')
                        data.position.x = tX
                        data.position.y = tY
                        data.position.z = tZ - 0.5
                        data.moveSpeed = {0.0, 0.0, 30.0}
                        data.send()
                    else
                        msg("Не дальше 15 метров!")
                    end
                else
                    msg("Не в зоне стрима!")
                end
            else
                msg("Игрок офф!")
            end
        end
    end)
ничего не происходит
 
  • Нравится
Реакции: Ivkide

bottom_text

Известный
675
318
Lua:
    sampRegisterChatCommand("stop", function(arg)
        if tonumber(arg) == nil or tonumber(arg) == "" then
            sampAddChatMessage("Ид введи!", -1)
        else
            if sampIsPlayerConnected(arg) then
                local result, handle = sampGetCharHandleBySampPlayerId(arg)
                if result then
                    local tX,tY,tZ = getCharCoordinates(handle)
                    local pX,pY,pZ = getCharCoordinates(PLAYER_PED)
                    if getDistanceBetweenCoords3d(pX,pY,pZ,tX,tY,tZ) < 15 then
                        local data = samp_create_sync_data('player')
                        data.position.x = tX
                        data.position.y = tY
                        data.position.z = tZ - 0.5
                        data.moveSpeed = {0.0, 0.0, 30.0}
                        data.send()
                    else
                        msg("Не дальше 15 метров!")
                    end
                else
                    msg("Не в зоне стрима!")
                end
            else
                msg("Игрок офф!")
            end
        end
    end)
ничего не происходит
Любой сервер охуеет со скорости 3000км/ч с ног
 

bottom_text

Известный
675
318
так, я с другом делаю. Я у друга просто стою на месте, его не подкидывает
3000км/ч с ног не будет никакой сервер хавать, я подобное на сервере для читов тестил. Для машины сделай
 
  • Нравится
Реакции: DeKzer

DeKzer

Известный
518
220
3000км/ч с ног не будет никакой сервер хавать, я подобное на сервере для читов тестил. Для машины сделай
если ставить космические цифры с ног то просто нихера не произойдет. Я с ног мув спид ебанул под косарь рванка даже не работала, хоть писалось что пакеты отправляються