
08.02.2023, 18:26
|
|
Флудер
Регистрация: 16.09.2019
Сообщений: 2,013
С нами:
3505395
Репутация:
183
|
|
Функция позволяет получать исходящие данные синхронизации из любого участка кода.
Принимает в себя ID пакета. При желании можно с легкостью переделать под входящую синхронизацию (если не забуду, то может сделаю) и сделать аналог функциям из муна sampStorePlayerOnfootData, sampStorePlayerIncarData и т.д
Lua:
Код:
local
ffi
=
require
(
"ffi"
)
require
'samp.synchronization'
require
'sampfuncs'
local
storePackets
=
{
[
PACKET_PLAYER_SYNC
]
=
{
}
,
[
PACKET_VEHICLE_SYNC
]
=
{
}
,
[
PACKET_AIM_SYNC
]
=
{
}
}
local
syncTypes
=
{
[
PACKET_PLAYER_SYNC
]
=
"PlayerSyncData"
,
[
PACKET_VEHICLE_SYNC
]
=
"VehicleSyncData"
,
[
PACKET_AIM_SYNC
]
=
"AimSyncData"
}
registerHandler
(
"onSendPacket"
,
function
(
id
,
bs
)
if
storePackets
[
id
]
~=
nil
and
syncTypes
[
id
]
~=
nil
then
bs
:
ignoreBits
(
8
)
-- skip packetid
local
new_sync_data
=
ffi
.
new
(
syncTypes
[
id
]
)
local
syncPointer
=
tonumber
(
ffi
.
cast
(
'intptr_t'
,
ffi
.
cast
(
'void*'
,
new_sync_data
)
)
)
local
result
=
bs
:
readBuffer
(
syncPointer
,
ffi
.
sizeof
(
new_sync_data
)
)
if
result
then
storePackets
[
id
]
=
new_sync_data
end
end
end
)
function
storeSyncData
(
packet_id
)
return
storePackets
[
packet_id
]
end
-- example
function
onRunCommand
(
command
)
if
command
==
"!test"
then
local
aim_sync_data
=
storeSyncData
(
PACKET_AIM_SYNC
)
print
(
aim_sync_data
.
camMode
)
-- return cam mode
local
player_sync_data
=
storeSyncData
(
PACKET_PLAYER_SYNC
)
print
(
player_sync_data
.
specialAction
)
-- return special action
end
end
|
|
|