PDA

View Full Version : small tool to search inside blobs


stormgod
06-02-2002, 03:55 AM
ok its ugly , may not be usefull to antone except me , but I did it to help me search number occurence inside a blob and to see if its an int8 int16 or int32 , basically its to search inside the character_ profile but its usable for items too and for other blobs

you can specify starting position ending position (profile is 1 8241 for exemple ) column to use as ref (name for character_ , id for items ) name to look in this column ( player name for character itemid for items )

search will prompt you if you want to stop / continue when an occurence of the number is found.

you can look too at a specific position

well thats it , as quest helper its using MyODBC and .NET Framework sorry for that ;P

http://www.stormgod-online.com/ to get it

any feedback / comment / request accepted in this thread


I will NOT support OS issues or things like that
only support is to explain how it works , thats it
source can be requested if someone want it

stormgod
06-02-2002, 08:18 AM
Hrmmph forgot to change formulae to get int16 so I basically was getting a double int8 , anyway I updated it to get the good int16 now but I dont know how to get an int32 (sorry hehe ) if someone can get me the good formulae I will update it , also I dont know how to get a uint8 or an sint8 (is there any difference with the int8 to get it out of mysql ?)


this is the formulae I use to get int16
((ascii(mid(profile,263,1))*1)+(ascii(mid(profile, 264,1))*256)) as \'FEET\'


and this one for int8 , any help appreciated ;)
ascii(mid(profile, 143, 2)) as \'RACE\'

Trumpcard
06-02-2002, 12:11 PM
Try this for int32

int16 = 2 ^ 16 = 256 ^ 2 ( 2 ascii value)
int32 = 2 ^ 32 = 256 ^4 (4 ascii values)

so,
something like this should work..

(pos is the 1st bit of the value string)

((ascii(mid(profile,pos,1))*1)+(ascii(mid(profile, pos+1,1))*256))
+ ((ascii(mid(profile,pos+2,1))*256*256)+(ascii(mid( profile,pos+3,1))*256*256*256))

Give that a shot and see if it gets ya..

For signed int's, Im not sure, you need to get the value and subtract half the max value of the int range, so it would be something like this..

int8 = 2 ^ 8 = 256 , so sint8 =

ascii(mid(profile, pos, 2)) - 128

stormgod
06-02-2002, 01:06 PM
hehe thanks trumpcard :)

stormgod
06-02-2002, 01:51 PM
as I'm beginning this , if someone want something specific just tell me , currently I'm adding search profiles , like if you want to search inside the items raw_data blob , the player profile blob or things like that .

it's now searching for int8 int16 int32 and sint8 and two profiles are built in ( you can still specify all manually )

stormgod
06-03-2002, 04:30 PM
just updated the tool so now position is displayed using the 0....x position instead of the mysql one ( 1..x+1) and its displaying the Hex position too
(both fields are linked so if you change the value in one it changed the value in the second too )