hallo,
Ich habe ein problem, und zwar:
Ich versuche einen "packet-parser" zu machen für functionen von einem spiel.
z.B die zwei wichtigsten die ich zurzeit mache sind "find" und "whisper".
Die vorgefertigte source hatet schon einen packet-parser der aber nur nach dem packet-header (also erste byte) schaut und es dann zu der bestimmten function zuordnet.
Also die "find" und "whisper" functionen haben die gleichen packet header (0x58), doch ich muss ja rausfinden ob der user jetzt "find" oder "whisper" benützt.
Also hier mal ein beispiel:
Command: .
/find rEakW0n = 58 00
05 07 00 72 45 61 6B 57 30 6E
Whisper: rEakW0n
Msg: lol = 58 00
06 07 00 72 45 61 6B 57 30 6E 03 00 6C 6F 6C
Also wie ihr sehen könnt, der 3 byte des packets definiert ob es "find" oder "whisper" ist.
Soweit so gut.
Der byte direkt danach definiert die länge des namen nachdem jemand suchen will oder zu dem jemand whispern will mit "find" bzw "whisper".
Diese länge habe ich ganz einfach mit nicksize = getShort(packet+1) bekommen.
Also dacht ich mir, wenn ich den byte davor holen will muss ich einfach getShort(packet) benützen. Gibt mir aber leider nur eine komische zahl. (auch -2, -3, -4, -5 oder das ganze mit plus).
Dann hab ich in einer anderen function geschaut (mit einem anderen packet header) der die smilies die ein spieler per F-tasten machen kann definiert.
Hier mal ein packet davon:
5C 00
02 00 00 00
Auch hier, definiert der dritte byte etwas wichtiges, und zwar, welcher smilie der user machen will (habs getestet).
Die function benützt getInt(packet) um diese zahl aus dem packet zu bekommen.
Also hab ich das selbe bei meiner find/whisper sache versucht da ich dabei ja auch den dritten byte brauche.
Hat allerdings nicht geklappt
Hat irgendjemand eine idee wie ich aus den oben geposteten (whisper/find) packets ich den dritten byte auslesen könnte?