its not full and its old AF, did it like years ago, and if i remember right its not completed, but hopefully this helps:
Code:
//if (OUT_REMOTE[i].Opcode == 0x3013)
//{
// OUT_REMOTE[i].ReadUInt32(); //ServerTime
// OUT_REMOTE[i].ReadUInt32();//RefObjID
// OUT_REMOTE[i].ReadUInt8(); //Scale
// OUT_REMOTE[i].ReadUInt8(); //curlvl
// OUT_REMOTE[i].ReadUInt8(); //maxlvl
// OUT_REMOTE[i].ReadUInt64(); //Expoffset
// OUT_REMOTE[i].ReadUInt32();//SExpoffset
// OUT_REMOTE[i].ReadUInt64(); //RemainGold
// OUT_REMOTE[i].ReadUInt32(); //Remain Skill point
// OUT_REMOTE[i].ReadUInt16(); //Remain Stat point
// OUT_REMOTE[i].ReadUInt8(); //Remain zerk point
// OUT_REMOTE[i].ReadUInt32(); //GatheredExpPoint
// OUT_REMOTE[i].ReadUInt32(); //hp
// OUT_REMOTE[i].ReadUInt32(); //mp
// OUT_REMOTE[i].ReadUInt8(); //AutoInvestEXP
// OUT_REMOTE[i].ReadUInt8(); //DailyPK
// OUT_REMOTE[i].ReadUInt8(); //TotalPK
// OUT_REMOTE[i].ReadUInt32(); //PkPenatlyPoint
// OUT_REMOTE[i].ReadUInt8(); //HwanLevel
// OUT_REMOTE[i].ReadUInt8(); //PVPCape
// byte InvSize = OUT_REMOTE[i].ReadUInt8();//Inv Size
// byte InvCnt = OUT_REMOTE[i].ReadUInt8();
// for (int x = 0; x < InvCnt; x++)
// {
// byte Slot = OUT_REMOTE[i].ReadUInt8();//Slot
// uint RentType = OUT_REMOTE[i].ReadUInt32();//RentType
// if (RentType == 1)
// {
// OUT_REMOTE[i].ReadUInt16();
// OUT_REMOTE[i].ReadUInt32();
// OUT_REMOTE[i].ReadUInt32();
// }
// else if (RentType == 2)
// {
// OUT_REMOTE[i].ReadUInt16();
// OUT_REMOTE[i].ReadUInt16();
// OUT_REMOTE[i].ReadUInt32();
// }
// else if (RentType == 2)
// {
// OUT_REMOTE[i].ReadUInt16();
// OUT_REMOTE[i].ReadUInt16();
// OUT_REMOTE[i].ReadUInt32();
// OUT_REMOTE[i].ReadUInt32();
// OUT_REMOTE[i].ReadUInt32();
// }
// uint RefItemID = OUT_REMOTE[i].ReadUInt32();
// UTILS.WriteLine("", RefItemID.ToString());
//switch (typeID)
//{
// case 1:
// byte Optlvl = OUT_REMOTE[i].ReadUInt8();
// ulong Variance = OUT_REMOTE[i].ReadUInt64();
// uint Data = OUT_REMOTE[i].ReadUInt32();//dura
// byte MagParamNum = OUT_REMOTE[i].ReadUInt8();//blue or red stat
// for (int y = 0; y < MagParamNum; y++)
// {
// uint MagParamType = OUT_REMOTE[i].ReadUInt32();
// uint MagParamValue = OUT_REMOTE[i].ReadUInt32();
// }
// byte OptType = OUT_REMOTE[i].ReadUInt8(); //(1 => Socket)
// byte OptCount = OUT_REMOTE[i].ReadUInt8();
// for (int z = 0; z < OptCount; z++)
// {
// byte OptionSlot = OUT_REMOTE[i].ReadUInt8();
// uint OptionID = OUT_REMOTE[i].ReadUInt32();
// uint OptionnParam1 = OUT_REMOTE[i].ReadUInt32();//(=> Reference to Socket)
// }
// byte adv_OptType = OUT_REMOTE[i].ReadUInt8();//(2 => Advanced elixir)
// byte adv_OptCount = OUT_REMOTE[i].ReadUInt8();
// for (int r = 0; r < adv_OptCount; r++)
// {
// byte adv_OptionSlot = OUT_REMOTE[i].ReadUInt8();
// uint adv_OptionID = OUT_REMOTE[i].ReadUInt32();
// uint adv_OptionnParam1 = OUT_REMOTE[i].ReadUInt32(); //(=> "Advanced elixir in effect [+OptValue]")
// }
// break;
// case 2:
// case 3:
// ushort StackCount = OUT_REMOTE[i].ReadUInt16();
// byte AttributeAssimilationProbability = OUT_REMOTE[i].ReadUInt8();
// break;
// case 4:
// case 5:
// byte Status = OUT_REMOTE[i].ReadUInt8(); //(1 = Unsumonned, 2 = Summoned, 3 = Alive, 4 = Dead)
// uint RefObjID = OUT_REMOTE[i].ReadUInt32();
// ushort NameLength = OUT_REMOTE[i].ReadUInt16();
// string Name = OUT_REMOTE[i].ReadAscii();
// //if (case == "AbilityPet")
// {
// uint SecondsToRentEndTime = OUT_REMOTE[i].ReadUInt32();
// }
// byte Unknown = OUT_REMOTE[i].ReadUInt8();
// break;
// case 6:
// ushort IECStackCount = OUT_REMOTE[i].ReadUInt16();
// byte IECMagParamNum = OUT_REMOTE[i].ReadUInt8();
// break;
// case 7:
// uint StoredItemCount = OUT_REMOTE[i].ReadUInt32();
// break;
// default:
// ushort Def_StackCount = OUT_REMOTE[i].ReadUInt16();
// break;
//}
//}
//byte ava_InvSize = OUT_REMOTE[i].ReadUInt8();//av Inv Size
//byte ava_InvCnt = OUT_REMOTE[i].ReadUInt8();
//UTILS.WriteLine("ava_InvCnt", ava_InvCnt.ToString());
//for (int t = 0; t < ava_InvCnt; t++)
//{
// byte Slot = OUT_REMOTE[i].ReadUInt8();//Slot
// uint RentType = OUT_REMOTE[i].ReadUInt32();//RentType
//}
//OUT_REMOTE[i].ReadUInt8();//unk, mask flag prolly ?
//byte MasteryFlag = OUT_REMOTE[i].ReadUInt8();// [0 = done, 1 = Mastery]
//while (MasteryFlag == 0x01)
//{
// uint MasteryID = OUT_REMOTE[i].ReadUInt32();
// byte MasteryLevel = OUT_REMOTE[i].ReadUInt8();
// byte MasterFlag = OUT_REMOTE[i].ReadUInt8();
//}
//byte SkillFlag = OUT_REMOTE[i].ReadUInt8();// [0 = done, 1 = Skill]
//while (SkillFlag == 0x01)
//{
// uint SkillID = OUT_REMOTE[i].ReadUInt32();
// byte SkillEnable = OUT_REMOTE[i].ReadUInt8();
// byte SkillExecFlag = OUT_REMOTE[i].ReadUInt8();
//}
//ushort CompletedQuestCount = OUT_REMOTE[i].ReadUInt16();
//for (int cq = 0; cq < CompletedQuestCount; cq++)
//{
// uint QuestID = OUT_REMOTE[i].ReadUInt16();
//}
//byte ActiveQuestCount = OUT_REMOTE[i].ReadUInt8();
//for (int ac = 0; ac < ActiveQuestCount; ac++)
//{
// uint QuestID = OUT_REMOTE[i].ReadUInt32();
// byte AchiveCount = OUT_REMOTE[i].ReadUInt8();
// OUT_REMOTE[i].ReadUInt8();
// byte QuestType = OUT_REMOTE[i].ReadUInt8();
// byte QuestStatus = OUT_REMOTE[i].ReadUInt8();
// byte QuestObjectiveCnt = OUT_REMOTE[i].ReadUInt8();
// for (int qoc = 0; qoc < QuestObjectiveCnt; qoc++)
// {
// byte ObjectiveID = OUT_REMOTE[i].ReadUInt8();
// byte ObjectiveStatus = OUT_REMOTE[i].ReadUInt8();
// ushort NameLength = OUT_REMOTE[i].ReadUInt16();
// string ObjectiveName = OUT_REMOTE[i].ReadAscii();
// byte ObjectiveTaskCount = OUT_REMOTE[i].ReadUInt8();
// for (int otc = 0; otc < ObjectiveTaskCount; otc++)
// {
// uint QObjective = OUT_REMOTE[i].ReadUInt32();
// }
// }
// if (QuestType == 0x88)
// {
// byte QuestTaskCount = OUT_REMOTE[i].ReadUInt8();
// for (int qtc = 0; qtc < QuestTaskCount; qtc++)
// {
// uint RefObjID = OUT_REMOTE[i].ReadUInt32();
// }
// }
//}
//OUT_REMOTE[i].ReadUInt8();
//OUT_REMOTE[i].ReadUInt32();
//uint UniqueID = OUT_REMOTE[i].ReadUInt32();
//ushort RegionID = OUT_REMOTE[i].ReadUInt16();
//UTILS.WriteLine("", RegionID.ToString());
//float XOffset = OUT_REMOTE[i].ReadUInt32();
//float ZOffset = OUT_REMOTE[i].ReadUInt32();
//float YOffset = OUT_REMOTE[i].ReadUInt32();
#endregion
credits goes to the guy who shared the structure i guess ?