0x3013 packet problem!

06/26/2019 18:09 hoangphan7#1
hello epvpers!
How can i skip Read Item part in 3013 packet!
I want to read Skill in Slotbar (F1~F4) step by step but i only get it after parse anything in pck 0x3013 bcs they in end of 3013 packet.
!!!
Thank's
06/26/2019 21:39 sarkoplata#2
There are no offsets to jump, you have to go by parsing.
You can use a few cheats, which I do not recommend, for example get the uniqueID from 0x3020. Search the entire packet for the unique ID to get where it's located. I dont know where the Slotbar info is (I didn't even know it was in 3013) but you may use something like this.
06/26/2019 22:15 Isoline*#3
Quote:
Originally Posted by hoangphan7 View Post
hello epvpers!
How can i skip Read Item part in 3013 packet!
I want to read Skill in Slotbar (F1~F4) step by step but i only get it after parse anything in pck 0x3013 bcs they in end of 3013 packet.
!!!
Thank's
There is no reason why you should skip the item Inventory parsing part.
May i ask why do you want to read the f1-f4 slot bars?
As far as i can recall its at the end of the packet, there are a few things you could do to "jump" to it, but..idk...yikes:S
06/26/2019 22:56 hoangphan7#4
Quote:
Originally Posted by Isoline* View Post
There is no reason why you should skip the item Inventory parsing part.
May i ask why do you want to read the f1-f4 slot bars?
As far as i can recall its at the end of the packet, there are a few things you could do to "jump" to it, but..idk...yikes:S
i want to make small bot (ingame feature). read skill in slotbar (without reading inventory item...).
SomePeople, they dont like using Bot (maybe they dont know using bot because of knowledge other language, machine...etc)
i want to make it easily. put skill to F1/F2 (att F1, buff F2). Go to train place then type !auto on and auto will start :D.

Quote:
Originally Posted by sarkoplata View Post
There are no offsets to jump, you have to go by parsing.
You can use a few cheats, which I do not recommend, for example get the uniqueID from 0x3020. Search the entire packet for the unique ID to get where it's located. I dont know where the Slotbar info is (I didn't even know it was in 3013) but you may use something like this.
How can i Jump to CharUniqueID in 0x3013 :D
i only know read sequence from start to finish @@
06/27/2019 03:51 Isoline*#5
Quote:
Originally Posted by hoangphan7 View Post
i want to make small bot (ingame feature). read skill in slotbar (without reading inventory item...).
SomePeople, they dont like using Bot (maybe they dont know using bot because of knowledge other language, machine...etc)
i want to make it easily. put skill to F1/F2 (att F1, buff F2). Go to train place then type !auto on and auto will start :D.



How can i Jump to CharUniqueID in 0x3013 :D
i only know read sequence from start to finish @@
You can "cheat" by searching your UniqueID in the 0x3013 byte array and start an index from there, calculate whatever you want, but thats ill-advised.
06/27/2019 05:03 hoangphan7#6
Quote:
Originally Posted by Isoline* View Post
You can "cheat" by searching your UniqueID in the 0x3013 byte array and start an index from there, calculate whatever you want, but thats ill-advised.
i already saw UniqueID in 3013 but Can you write some line to continue reading from (Character Unique ID) index? i can't visualization which i do @@~
06/27/2019 05:23 Isoline*#7
Quote:
Originally Posted by hoangphan7 View Post
i already saw UniqueID in 3013 but Can you write some line to continue reading from (Character Unique ID) index? i can't visualization which i do @@~
Get your unique ID from 0x3020, get the 0x3013 packet dump in a byte[]
write a function that finds a byte[] pattern within another byte[] and returns an int (position index), once you have the position you can simply calculate and go from there.

Personally i would tell you to parse the entire packet like i did, but this is up to you.

I will fairly warn you that this is based on a fixed amount of bytes and if you dare to use this method even a single byte change would screw up your byte reading.
06/27/2019 07:01 JellyBitz#8
You have all source and all data... why no start reading from character name? It's closer to the end. And it's more trusty worth than unique ID. Again you will need to read previously his character name selected from client 0x7001.

You are asking for a little push, some of code right? something fast but clean :
PHP Code:
public int FindBytes(byte[] data,byte[] pattern)
{
    
// just in case
    
if(data.Length pattern.Length)
        return -
1;
    
// keep data to compare
    
byte[] temp = new byte[pattern.Length];
    
// read byte per byte
    
int maxBytes data.Length pattern.Length 1;
    for (
int i 0maxBytes i++)
    {
        
// first byte found!
        
if(temp[i] == data[i]){
            
bool found true;
            
// move all bytes and compare rigth there
            
for (int t 1temp.Lengtht++)
            {
                
temp[t] = data[i];
                if (
temp[t] != pattern[t])
                {
                    
found false;
                    break;
                }
            }
            
// exactly the same?
            
if (found)
                return 
i;
        }
    }
    return -
1;

Then using like :
PHP Code:
// data : bytes taken from 0x3013
int pos FindBytes(data,Encoding.ASCII.GetBytes("Jelly"));
if(
pos != -1)
{
    
// consider two bytes from length string
    
pos -= 2;
    
// Continue reading :)

06/27/2019 13:34 hoangphan7#9
Quote:
Originally Posted by JellyBitz View Post
You have all source and all data... why no start reading from character name? It's closer to the end. And it's more trusty worth than unique ID. Again you will need to read previously his character name selected from client 0x7001.

You are asking for a little push, some of code right? something fast but clean :
PHP Code:
public int FindBytes(byte[] data,byte[] pattern)
{
    
// keep data to compare
    
byte[] temp = new byte[pattern.Length];
    
// read byte per byte
    
for (int i 0data.Lengthi++)
    {
        
bool found true;
        
// move all bytes and compare rigth there
        
for (int t 0temp.Length && data.Lengtht++)
        {
            if (
temp[t] != pattern[t])
            {
                
found false;
            }
            
temp[t] = data[i];
        }
        
// exactly the same?
        
if (found)
            return 
i;
    }
    return -
1;

Then using like :
PHP Code:
// data : bytes taken from 0x3013
int pos FindBytes(data,Encoding.ASCII.GetBytes("Jelly"));
if(
pos != -1)
{
    
// consider two bytes from length string
    
pos -= 2;
    
// Continue reading :)


Yeah. Good idea :D
Thank's all <3 Now i will try :D
06/28/2019 02:02 sarkoplata#10
You can use BoyerMoore algorithm for a fast search, doubt it's required/good for an array of this size though.
[Only registered and activated users can see links. Click Here To Register...]