das heißt, wenn ich das jetzt richtig gelesen habe, muss nich Player[0].X-itemX sondern itemX-Player[0].X ??
if (pick == 1)
{
if (packet[2] == 0x36)
{
DWORD itemid,x,y,itemX,itemY,move1,move2,itemdrop;
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;
itemdrop=+0;
while (itemdrop < 1)
{
int difx=itemX-Player[0].X;
int dify=itemY-Player[0].Y;
float range=(difx*difx+dify*dify)*1.0;
printf("sqrt_Range: %d\n",range);
printf("Item dropped [%d] [%d , %d]\n",itemid,itemX,itemY);
//move1=difx-255;
//move2=dify-255;
if (sqrt(range) < 50.0)
{
SendDetour(0x20,"ddd",itemid,itemX/32,itemY/32);
printf("Item picked...\n");
itemdrop++;
}
else if (sqrt(range) > 50.0)
{
unsigned char tempx=(double(difx)/sqrt(range))*30;
unsigned char tempy=(double(dify)/sqrt(range))*30;
printf("Item too far away...walk to item...\n");
//SendDetour(0x15,"bbb",tempitemx,tempitemy,0);
SendDetour(0x15,"bbb",tempx,tempy,0);
printf("Walk: X %d Y %d\n",difx,dify);
SendDetour(0x20,"ddd",itemid,itemX/32,itemY/32);
itemdrop++;
}
}
}
}
wenn es dir nichts ausmacht würde ich gerne einmal deinen code sehen um zu sehen was ich falsch mache :D kannst ja ne pm schicken...Quote:
hm zum item läuft er ohne probleme und lootet es jez mit den mobs klappts nich so richtig da range ausrechnen und den nähesten nehmen bla ;S und bei mob appear is manchmal der gleiche mob ;<
if ((packet[2] == 0x24) || (packet[2] == 0x25))
{
//mob move..
DWORD id;
memcpy((void*)&id,(void*)((DWORD)packet+3),4);
int i;
for (i=0;i<500;i++)
{
//check if x =0
if (Mob[i].MID == id)
{
signed char x,y/*,z*/=0;
memcpy((void*)&(x),(void*)((DWORD)packet+3+4),1);
memcpy((void*)&(y),(void*)((DWORD)packet+3+4+1),1) ;
//memcpy((void*)&(z),(void*)((DWORD)packet+3+4+1+1), 1);
Mob[i].X+=x;
Mob[i].Y+=y;
//Player[i].Z+=z;
break;
}
}
}