BOOL CTown::TakeWP(DWORD AreaID) { UnitAny* WPUnit; POINT Position; Position.x=0; Position.y=0; switch(fpGetPlayerArea()) { case A1: if(!GetPositionByClassID(WPId[ACT_ONE],&Position)) return FALSE; WPUnit = GetUnitByPosition(Position.x,Position.y); break; case A2: // if(!GetPositionByClassID(WPId[ACT_TWO],&Position)) // return FALSE; // Log(1,"%d,%d",Position.x,Position.y); Position.x=5069; Position.y=5084; WPUnit = GetUnitByPosition(Position.x,Position.y); break; case A3: if(!GetPositionByClassID(WPId[ACT_THREE],&Position)) return FALSE; WPUnit = GetUnitByPosition(Position.x,Position.y); break; case A4: if(!GetPositionByClassID(WPId[ACT_FOUR],&Position)) return FALSE; WPUnit = GetUnitByPosition(Position.x,Position.y); break; case A5: if(!GetPositionByClassID(WPId[ACT_FIVE],&Position)) return FALSE; WPUnit = GetUnitByPosition(Position.x,Position.y); break; default: return FALSE; break; } if(!WPUnit) return FALSE; while(!PlayerActAble()) Sleep(100); DWORD OldArea = fpGetPlayerArea(); if(OldArea == AreaID) return TRUE; while(fpGetPlayerArea() != AreaID) { byte WPPacket[9]= {0x49,00,00,00,00, 00,0x00,0x00,0x00}; *(DWORD*)&WPPacket[1]=WPUnit->dwId; *(BYTE*)&WPPacket[5]=AreaID; fpSendPacket(WPPacket,9); Sleep(500); } Sleep(500); return TRUE; }