- 3
- 0
- Версия SA-MP
-
- Любая
Имеем следующий код:
Мне нужно преобразовать данные для отправки по следующей структуре, используя Lua:
Lua:
-- Функция отправки бистрима в чистом виде побайтово.
function sendTable(tab)
local bs = raknetNewBitStream()
for i = 1, #tab do
raknetBitStreamWriteInt8(bs, tab[i])
end
raknetSendBitStream(bs)
end
sendTable({207, 0, 0, 0, 0, 4, 0, 90, 232, 188, 196, 22, 236, 78, 196, 36, 8, 113, 66, 78, 146, 84, 63, 0, 0, 0, 128, 0, 0, 0, 0, 180, 166, 14, 191, 117, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 4, 232, 128, 0})
-- Строка выше получена следующим образом, где array - это таблица.
function bitStreamStructure(bs)
local text, array = '', {}
for i = 1, raknetBitStreamGetNumberOfBytesUsed(bs) do
local byte = raknetBitStreamReadInt8(bs)
if byte >= 32 and byte <= 255 and byte ~= 37 then text = text .. string.char(byte) end
table.insert(array, byte)
end
raknetBitStreamResetReadPointer(bs)
return text, array
end
Мне нужно преобразовать данные для отправки по следующей структуре, используя Lua:
C++:
struct stOnFootData
{
uint16_t sLeftRightKeys;
uint16_t sUpDownKeys;
union
{
uint16_t sKeys;
struct stSAMPKeys stSampKeys;
};
float fPosition[3];
float fQuaternion[4];
uint8_t byteHealth;
uint8_t byteArmor;
uint8_t byteCurrentWeapon;
uint8_t byteSpecialAction;
float fMoveSpeed[3];
float fSurfingOffsets[3];
uint16_t sSurfingVehicleID;
short sCurrentAnimationID;
short sAnimFlags;
};