Reading RegionID through 3013

08/12/2018 02:52 #HB#1
Hey there,

Recently, I was tryin' to read the RegionID through 3013, I saw @[Only registered and activated users can see links. Click Here To Register...] topic, [Only registered and activated users can see links. Click Here To Register...].

But I don't wanna read all these stuff, I just want the Region ID.

So, I tried to use byte array, it succeeded but it works on a specific character which I used it to find the region array index, I think that's because of the items/skill/etc different bytes in each character.

Have anyone got an idea?
08/12/2018 15:06 athena1410#2
you can get region via database
08/12/2018 18:53 $WeGs#3
You can use (SeekRead Method is SSA , it allow you to skip some offsets) or just read the packet structure and don't use it , till you get the region id
08/12/2018 21:48 #HB#4
Quote:
Originally Posted by $WeGs View Post
just read the packet structure and don't use it , till you get the region id
I thought of that actually, I will try it. I will try that SeekRead too.

Quote:
Originally Posted by athena1410 View Post
you can get region via database
I want it through packets at any re/spawn.
08/13/2018 08:48 Isoline*#5
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 ?
08/13/2018 14:56 #HB#6
Quote:
Originally Posted by Isoline* View Post
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 ?
Thank you buddy, appreciate that.