|
You last visited: Today at 12:00
Advertisement
Reading RegionID through 3013
Discussion on Reading RegionID through 3013 within the SRO Coding Corner forum part of the Silkroad Online category.
08/12/2018, 02:52
|
#1
|
elite*gold: 100
Join Date: Sep 2017
Posts: 1,109
Received Thanks: 903
|
Reading RegionID through 3013
Hey there,
Recently, I was tryin' to read the RegionID through 3013, I saw @  topic,  .
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
|
#2
|
elite*gold: 0
Join Date: Jul 2017
Posts: 118
Received Thanks: 65
|
you can get region via database
|
|
|
08/12/2018, 18:53
|
#3
|
elite*gold: 135
Join Date: May 2015
Posts: 647
Received Thanks: 752
|
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
|
#4
|
elite*gold: 100
Join Date: Sep 2017
Posts: 1,109
Received Thanks: 903
|
Quote:
Originally Posted by $WeGs
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
you can get region via database
|
I want it through packets at any re/spawn.
|
|
|
08/13/2018, 08:48
|
#5
|
elite*gold: 0
Join Date: May 2006
Posts: 667
Received Thanks: 348
|
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
|
#6
|
elite*gold: 100
Join Date: Sep 2017
Posts: 1,109
Received Thanks: 903
|
Quote:
Originally Posted by Isoline*
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.
|
|
|
 |
Similar Threads
|
CSRO-R shardmanager regionId to select the characters in the package
12/04/2017 - SRO Coding Corner - 0 Replies
Who can help me send the regionId CSRO-R shardmanager to select the characters in the package, what is it
http://i2.bvimg.com/619000/b7eb9dde65b27ca6.png
Who told me this package is?
|
3013 Packet - Items part
02/27/2014 - SRO Coding Corner - 15 Replies
iSro
Hi , i wanna know some details about items parse here code
07 //slot
00 00 00 00 //unknown
AB 8C 00 00 //Item ID
00 //Plus
E0 B4 D9 0E 00 00 00 00 //White stat
0F 01 00 00 //Durab.
|
about 3013 Opcode
04/14/2013 - SRO Coding Corner - 12 Replies
Hey People,
I am trying to make few tools with autoit for vsro.
So, one think I am trying to build is, auto elixirs finder in it, to get info from inventory I use 3013 Op code with data string. I successfully found correct IDs of elixirs, the location in inventory and quantity. So it works perfect to find it and count all elixirs in inventory.
Now my question is, the only way I can get 3013 opcode packet is re-log or teleport, and I cannot find forces way to receive it... If there...
|
Problem with 3013 Packet (Inventory)
10/17/2012 - SRO Coding Corner - 16 Replies
Hi , i'm Analyzing Silkroad OPcode 3013 (for Inv. items and skills etc)
and have problem , which is making function to read the Inv. items.
i know that every item have its details " can read the items but if have same type (details)".
but if have Set items , Silk items , Alchemy items .... in Inv.
how to read different type items in Inv. ???
Guys i need an answer !!!
|
[rSro] 3013 Char Data
07/03/2011 - SRO Coding Corner - 4 Replies
Hi,
i try parse quests...
i parse a bit, but i stuck somewhere
QuestCount
ForEach Quest
//Parse Quest
|
All times are GMT +1. The time now is 12:01.
|
|