|
You last visited: Today at 04:51
Advertisement
packet send hook format[i] ausgeben
Discussion on packet send hook format[i] ausgeben within the Kal Online forum part of the MMORPGs category.
04/14/2015, 12:23
|
#1
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
packet send hook format[i] ausgeben
hey habs vor kurzem geschafft send function in kal zu hooken habe zur hilfe der ausgabe den teil vom kalsendhack genommen
for (i = 0; i<strlen(format); i++)
{
switch (format[i])
{
case 'b': //BYTE
temp = va_arg(args, BYTE);
printf(" %d: %d\n",i+1,temp);
break;
case 'd': //DWORD
temp = (DWORD)va_arg(args, DWORD);
printf(" %d: %d\n",i+1,temp);
break;
case 'w': //WORD
printf(" %d: %d\n",i+1,(WORD)va_arg( args, DWORD));
break;
case 's': //STRING
something = va_arg(args, char*);
char* somethings;
//printf(" %d: %s\n",i+1,something);// wird ja garnet ausgegebn
break;
case 'm':
printf(" %d: %d\n",i+1,(DWORD)va_arg( args, DWORD));
break;
}
}
jetzt meine frage, wieso klappt das mit der ausgabe nicht? es wird immer nur das erste printf ausgegeben.. z.b bei einem packet move stop steht da bbb aber nur das erste byte wird ausgegeben... erstmal dachte ich mir vllt buggt das bei dem strlen(format), habe da dafür dann ein printf direkt unter die for schleife gemacht
printf("%d\n", strlen(format));
dann wurde nur noch das ausgegeben xD ich peil einfach nicht woran das liegen könnte :S
|
|
|
04/14/2015, 17:08
|
#2
|
elite*gold: 220
Join Date: Jun 2007
Posts: 3,768
Received Thanks: 1,126
|
weil du mit break die schleife beendest ?
Edit: achsooo Mh, kann mich auch irren...
Sry hab die func nie benutzt XD
ich dachte eig. das die Sendhook geprüft wird aus der engine
Weil in der ws32_2.dll send sind die packete verschlüsselt und anders aufgebaut als in der KalSendhook
|
|
|
04/14/2015, 18:22
|
#3
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
Quote:
Originally Posted by meak1
weil du mit break die schleife beendest ?
Edit: achsooo Mh, kann mich auch irren...
Sry hab die func nie benutzt XD
ich dachte eig. das die Sendhook geprüft wird aus der engine
Weil in der ws32_2.dll send sind die packete verschlüsselt und anders aufgebaut als in der KalSendhook
|
das ist die normale sendhook womit ich auch packets senden kann nicht die aus ws32_2.dll
|
|
|
04/14/2015, 20:38
|
#4
|
elite*gold: 281
Join Date: Oct 2007
Posts: 6,248
Received Thanks: 886
|
Quote:
Originally Posted by meak1
weil du mit break die schleife beendest ?
|
ne, break is von der switch anweisung - des passt schon so...
@erfan100 bitte nächstes mal den sourcecode etwas strukturierter und mit syntax-highlighting posten, dann is das ganze übersichtlicher und man kann dir besser helfen
hab mir das ganze angesehen und find eigentlich keinen grund warum er es net vollständig ausgeben sollte... :-/
würde mir an deiner stelle einfach noch ein paar debug ausgaben ausgeben lassen - beispielsweise ausserhalb der switch in der schleife, damit du mal siehst wie oft die schleife durchlaufen wird undso
würde dann beispielsweise so aussehen:
PHP Code:
char* something; int len = strlen(format); printf("[DEBUG] format: %s - strlen: %d\n", format, len); for (int i = 0; i < len; i++){ printf("[DEBUG] i: %d - format: %c\n", i, format[i]); switch (format[i]){ case 'b': //BYTE temp = va_arg(args, BYTE); printf(" %d: %d\n",i+1,temp); break; case 'd': //DWORD temp = (DWORD)va_arg(args, DWORD); printf(" %d: %d\n",i+1,temp); break; case 'w': //WORD printf(" %d: %d\n",i+1,(WORD)va_arg( args, DWORD)); break; case 's': //STRING something = va_arg(args, char*); printf(" %d: %s\n",i+1,something); // wird ja garnet ausgegebn break; case 'm': printf(" %d: %d\n",i+1,(DWORD)va_arg( args, DWORD)); break; } }
|
|
|
04/14/2015, 20:46
|
#5
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
Quote:
Originally Posted by Mahatma
ne, break is von der switch anweisung - des passt schon so...
@erfan100 bitte nächstes mal den sourcecode etwas strukturierter und mit syntax-highlighting posten, dann is das ganze übersichtlicher und man kann dir besser helfen
hab mir das ganze angesehen und find eigentlich keinen grund warum er es net vollständig ausgeben sollte... :-/
würde mir an deiner stelle einfach noch ein paar debug ausgaben ausgeben lassen - beispielsweise ausserhalb der switch in der schleife, damit du mal siehst wie oft die schleife durchlaufen wird undso
würde dann beispielsweise so aussehen:
PHP Code:
char* something; int len = strlen(format); printf("[DEBUG] format: %s - strlen: %d\n", format, len); for (int i = 0; i < len; i++){ printf("[DEBUG] i: %d - format: %c\n", i, format[i]); switch (format[i]){ case 'b': //BYTE temp = va_arg(args, BYTE); printf(" %d: %d\n",i+1,temp); break; case 'd': //DWORD temp = (DWORD)va_arg(args, DWORD); printf(" %d: %d\n",i+1,temp); break; case 'w': //WORD printf(" %d: %d\n",i+1,(WORD)va_arg( args, DWORD)); break; case 's': //STRING something = va_arg(args, char*); printf(" %d: %s\n",i+1,something); // wird ja garnet ausgegebn break; case 'm': printf(" %d: %d\n",i+1,(DWORD)va_arg( args, DWORD)); break; } }
|
okay werd ich machen das mit dem code ab jetzt habe schon alles versucht, als ich etwas oberhalb der for schleife gemacht habe gings aber da wurde auch nur 1 werd zurück gegeben^^ und die for schleife ignoriert, aber direkt unter der forschleife, da gings nichtmal mehr ins switch rein^^
|
|
|
04/15/2015, 16:45
|
#6
|
elite*gold: 20
Join Date: Jul 2007
Posts: 1,979
Received Thanks: 270
|
sehe keinen Grund warum es nicht funzen sollte. Sehe nur, dass dein i global ist und evtl durch nen anderen thread verändert wird
|
|
|
04/16/2015, 00:48
|
#7
|
elite*gold: 0
Join Date: Oct 2007
Posts: 856
Received Thanks: 35
|
ach das was in der schleife passiert ist hat 0 sinn gemacht xD
in der for schleife war das i nach dem ersten durchlauf bei iwie 45675474 statt bei 1 xD naja mit global hatte das nichts zu tun, gleiches problem war auch als ich i zu m geändert habe^^ naja egal hab das schon längst anders gelöst in dem ich einfach immer 4 werte ausgebe
PHP Code:
temp = (DWORD)va_arg(args, DWORD); printf(" 1: %d\n", temp); temp = (DWORD)va_arg(args, DWORD); printf(" 2: %d\n", temp); temp = (DWORD)va_arg(args, DWORD); printf(" 3: %d\n", temp); temp = (DWORD)va_arg(args, DWORD); printf(" 4: %d\n", temp);
da ich die strings eh nicht benötige
|
|
|
Similar Threads
|
Play sound via Packet Send?? [Question String Packet]
07/14/2010 - CO2 Private Server - 5 Replies
Yow im trying to figure out why i cant play music with the string packet
What im doin is;
MyChar.Client.SendPacket(Game.Packet.String(MyCha r.UID, 20, Splitter));
My Packet is:
public byte String(long CharId, byte Type, string name)
|
All times are GMT +2. The time now is 04:51.
|
|