[Question]Walk with packets.

04/18/2009 19:56 kalhacker9000#1
Hey guys/ladies..
because i don't know how to make a bot....what means i don't know...i know but i still can't do it...no enough experience.
so i think i try to start only to walk with packets.
i try to make a "walk-hack", that means:
PHP Code:
                int difx=Player[0].X-ItemX;
                
int dify=Player[0].Y-ItemY;
                
float range=difx*difx+dify*dify;
                
float sqrt_range=sqrt(range);
                
unsigned char tempitemx=-(difx/sqrt(range))*30;
                
unsigned char tempitemy=-(dify/sqrt(range))*30;
                
printf("Item dropped [%d] [%d , %d]\n",id,x,y);
                
printf("Walk to Item...\n");
                
SendDetour(0x15,"bbb",tempitemx,tempitemy,0); 
as you can see in the code i try to walk to items which was dropped in my near.
but there are still bugs i can't fix.
ex.:
my character walking.....yeah i was surprised he walking...but not to the items....he walking everywhere.
(baaad english...)
i don't know why.
Player[0].X-ItemX
Player[0].Y-ItemY
...
is right or not?
Player[0].Z i've set away....i change it to 0.
because when i try to sniff my Z-Coordinate it nothing changed to the actually Z-Coordinate....but 0 can work or not?
--
okay lange rede kurzer sinn
--
the only one thing i want to ask you is:
what i've to changed in my code that my character go to the items?
--
Thank you for reading.
Diamond
04/18/2009 19:57 meak1#2
wollt dir gerade ne pm schicken auf deine pm frage, warte kurz^^
04/18/2009 20:01 kalhacker9000#3
jo^^
04/19/2009 11:13 chibis#4
hab doch ne source gepostet, benutz die doch
04/19/2009 12:56 kalhacker9000#5
ich hab die auch benutzt nur leider geht das bei mir nicht....also es geht schon....aber er läuft weder zu den mobs hin, noch in die safezone, noch zu gedroppten items....
es sieht eher so aus
Packet Type: 0x15 Byte: Ubbb
U: 0
b: 15
b: 354
b: 0

und er läuft in alle möglichen richtungen nur nich dahin wo er soll...
04/19/2009 12:59 Mahatma#6
difx und dify haste doch...send doch einfach immer 255 und ziehs vom difx/dify ab bis die beiden 0 sind....wenns kleiner als 255 is sendest du noch rest....
04/19/2009 13:12 kalhacker9000#7
Quote:
Originally Posted by Mahatma View Post
difx und dify haste doch...send doch einfach immer 255 und ziehs vom difx/dify ab bis die beiden 0 sind....wenns kleiner als 255 is sendest du noch rest....
PHP Code:
if (packet[2] == 0x36)
{
DWORD itemid,x,y,itemX,itemY;
memcpy((void*)&itemid,(void*)((DWORD)packet+5),4);
memcpy((void*)&x,(void*)((DWORD)packet+5+4),4);
memcpy((void*)&y,(void*)((DWORD)packet+5+4+4),4);
itemX=x;
itemY=y;
                
int difx=Player[0].X-itemX;
                
int dify=Player[0].Y-itemY;
                
float range=difx*difx+dify*dify*1.0;
                
float sqrt_range=sqrt(range);
                
unsigned char tempitemx=-(difx/sqrt(range))*30;
                
unsigned char tempitemy=-(dify/sqrt(range))*30;
                
printf("Item dropped [%d] [%d , %d]\n",itemid,itemX,itemY);
if (
sqrt(range) < 15)
{
SendDetour(0x20,"ddd",itemid,itemX/32,itemY/32);
printf("Item picked...\n");
}
else
{
printf("Item too far away...walk to item...\n");
SendDetour(0x15,"bbb",tempitemx,tempitemy,0);
SendDetour(0x20,"ddd",itemid,itemX/32,itemY/32); 
das ist mein bisheriger code...
ich weiß jetzt nicht wie du das meinst.....
:D

edit:
meinste jetzt 255-difx, 255-dify ??
04/19/2009 14:19 Grabgewalt#8
hab genau das gleiche problem. und ich schnall nich warums nicht geht..
hab eben auch die differenz zwischen ziel und eigener position gebildet. und sende dann 0x15 mit den variable. dabei kommt dann aber nur müll raus. der char bewegt sich zwar aber nich so wie er soll. mein problem ist allerdings auch das ich irgendwie warten muss bis der bot mit dem laufen fertig ist. sleep() ist ungünstig, da verabschiedet sich kal.

achja, müsste man bei der differenz nicht eigentlich ziel-koord - eigene-koord. rechnen? anstatt eigene-koord. - ziel-koord.

PHP Code:
    Xdif Mob[i].X-PlayerX
    
Ydif Mob[i].Y-PlayerY;

    
SendPacket(0x15,"bbb",Xdif,Ydif,0);    //walkstop
    
    
PlayerX += Xdif;
    
PlayerY += Ydif
04/19/2009 14:24 meak1#9
hm ich weiß schon so ungefähr wie mahatma meint, wenn man X in minus berreich läuft und Y ,schreibt er 255 oder 250 oder so, man rechnet 256 - 255 = 1, 256 - 250 = 6 dann läuft er 1 in minus oder 6 halt aber kp muss noch kurz überlegen ;D
04/19/2009 14:39 kalhacker9000#10
@Grabgewalt
ich glaub dein code ist komplett für die tonne...

PHP Code:
    Xdif Mob[i].X-PlayerX
    
Ydif Mob[i].Y-PlayerY;

    
SendPacket(0x15,"bbb",Xdif,Ydif,0);    //walkstop 
    
------
    
Xdif PlayerX-MobX
    Ydif 
PlayerY-MobY 
ich weiß nicht ob sqrt, also die quadratwurzel ausrechnen, umbedingt notwendig ist aber
PHP Code:
    Xdif PlayerX-MobX
    Ydif 
PlayerY-MobY 
reicht doch nicht alleine aus oder?

edit:
hier mal der link von kalhack11....@grabgewalt da kannst dir ein wenig ideen raussammeln. da ist auch erst die eigene position-die andere
[Only registered and activated users can see links. Click Here To Register...]
04/19/2009 14:43 Grabgewalt#11
hm naja, soweit ich weiß wird bei 0x15 ja nur die differenz gesendet. also das was man + oder - auf x,y,z läuft. aber naja.. ka
nebenbei, dein code ist ja im grunde genau das gleiche nur das du noch was mit der range machst. da ich aber nur erstmal laufen will interessiert es mich nicht ob das ziel schon in meiner range ist oder nicht.
04/19/2009 14:57 kalhacker9000#12
okay hast recht....naja bin ersma back in reallife heute abend weiter daran "arbeiten"......
04/19/2009 16:26 Mahatma#13
der maximale x/y/z wert, der pro 0x14/0x15 packet gesendet werden kann is 255
ihr müsst das also auf mehrere packets aufteilen....geht net alles in einem packet^^
04/19/2009 16:44 meak1#14
joa so ich guck jez mal zum mob laufen ;S@Grabwalt du hast recht mit MobX - PlayerX
ich kriege es zwar hin das er in richtung des items läuft aber ich muss das noch i-wie mit gettickcount() checken ;S
04/19/2009 16:46 bloodx#15
meak dann poste es halt für die anderen xD damit die probieren können ihre bots oder what ever weiter zu machen