Рванка это просто подмена или отправка ржачных исходящих пакетов синхронизации, рассинхрон тут не причём.Привет, хотелось бы прочитать уроки про рассинхрон и его функции, есть такое? Хоть бы, ту самую рванку или слаппер написать
Как мне скорость с ног поставить?Рванка это просто подмена или отправка ржачных исходящих пакетов синхронизации, рассинхрон тут не причём.
К примеру отправляешь PACKET_VEHICLE_SYNC( пакет инкар синхры) с координатами другого игрока и скорость 3000 км/ч - рванка готова.
Заполняешь пакет онфут синхры и отправляешь.Как мне скорость с ног поставить?
Можно пример?Заполняешь пакет онфут синхры и отправляешь.
Можно пример?
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?Делал когда ещё недели не прошло с начала изучения луа, так что выглядит не очень. Это для инкар рванки.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.lua
Привет, решил написать данный гайд, потому, что половина людей которые пишут скрипты на Lua не знают, как отправлять пакеты на сервер без использования библиотеки SAMP.lua. Это конечно дело каждого, использовать самп луа или нет, кому надо - тому будет полезен гайд. Подобных гайдов я не видел...www.blast.hk
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: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
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км/ч с ногничего не происходит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км/ч с ног
3000км/ч с ног не будет никакой сервер хавать, я подобное на сервере для читов тестил. Для машины сделайтак, я с другом делаю. Я у друга просто стою на месте, его не подкидывает
если ставить космические цифры с ног то просто нихера не произойдет. Я с ног мув спид ебанул под косарь рванка даже не работала, хоть писалось что пакеты отправляються3000км/ч с ног не будет никакой сервер хавать, я подобное на сервере для читов тестил. Для машины сделай