Показать сообщение отдельно
Старый 18.08.2010, 15:53   #15
Fmut
Пользователь
 
Регистрация: 20.06.2010
Сообщений: 42
Сказал(а) спасибо: 4
Поблагодарили 5 раз(а) в 5 сообщениях
Fmut На верном пути
По умолчанию

Вот держите, Наш вариант lua парсера
Код:
--[[ описание комманды  CMSG_CHAR_ENUM и обслуживающая функция ]]--

local CEnumCode, nCEnumCode = 55, 'CMSG_CHAR_ENUM'
local CEnumVers = 'Версия клиента: 3.3.5 [12340], Дата изменения: 07.07.2010'

CMSG_CHAR_ENUM = function (dBuf, lBuf, index)
        AddCodeNameMem (index, CEnumCode, nCEnumCode, lBuf)
	AddMem2(CEnumVers)
end

--[[ описание комманды  SMSG_CHAR_ENUM и обслуживающая функция ]]--

local SEnumCode, nSEnumCode = 59, 'SMSG_CHAR_ENUM'
local SEnumVers = 'Версия клиента: 3.3.5 [12340], Дата изменения: 08.07.2010'

SMSG_CHAR_ENUM = function (dBuf, lBuf, index)
        AddCodeNameMem (index, SEnumCode, nSEnumCode, lBuf)
	AddMem2(SEnumVers)
	AddMem2('')
        local CharCount, Iter, Val = 0, 4, 0
        CharCount, Iter = ReadByte(dBuf, Iter)
        AddMem2('Characters count (byte) = '..CharCount..' ($'..ByteToHexStr(CharCount)..')')
        local i, j = 0, 0
        while i < CharCount do
          AddMem2('')
          AddMem2('-------------------- Char '..i..' --------------------')
          Val, Iter = ReadInt64Hex(dBuf, Iter)
          AddMem2('CharGUID (int64) = $'..Val)
          Val, Iter = ReadString(dBuf, Iter)
          AddMem2('Name (str) = '..Val)
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Race (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Class (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Gender (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Skin (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Face (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('HairStyle (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('HairColour (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('FacialHair (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Level (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('ZoneId (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('MapId (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadFloat(dBuf, Iter)
          AddMem2('PosX (float) = '..Val)
          Val, Iter = ReadFloat(dBuf, Iter)
          AddMem2('PosY (float) = '..Val)
          Val, Iter = ReadFloat(dBuf, Iter)
          AddMem2('PosZ (float) = '..Val)
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('GuildId (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('EnumFlag (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('Unk_Wotlk (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadByte(dBuf, Iter)
          AddMem2('Rested (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('PetInfoId (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('PetLevel (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          Val, Iter = ReadInteger(dBuf, Iter)
          AddMem2('PetFamilyId (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          for j = 0, 19, 1 do
            AddMem2(' ============== Item '..j..' ==============')
            Val, Iter = ReadInteger(dBuf, Iter)
            AddMem2('   Model (int) = '..Val..' ($'..IntToHexStr(Val)..')')
            Val, Iter = ReadByte(dBuf, Iter)
            AddMem2('   InvType (byte) = '..Val..' ($'..ByteToHexStr(Val)..')')
            Val, Iter = ReadInteger(dBuf, Iter)
            AddMem2('   Unk (int) = '..Val..' ($'..IntToHexStr(Val)..')')
          end
          i = i + 1
        end
end

--[[ регистрация функций в основной программе ]]--

Register_Code(CEnumCode, nCEnumCode)
Register_Code(SEnumCode, nSEnumCode)
Fmut вне форума   Ответить с цитированием
Пользователь сказал cпасибо:
alien (22.09.2010)