pweot17951
СˮÊÖ

UID 29739
¾«»ª
0
»ý·Ö 2
Ìû×Ó 2
ÔĶÁȨÏÞ 10
×¢²á 2007-3-6 À´×Ô ¹ã¶«
״̬ ÀëÏß
|
Äܲ»ÄÜ»»ÖÖ¸ü¸ßЧд·¨!
Ëã·¨ÓÅ»¯£¬ÈçºÎÈôúÂë¸ü¸ßЧ£¿£¿£¿
ÕâÊÇ´úÂëµÄÒ»²¿·Ö£¬ÈçºÎ¸ÄÓñðµÄÅжÏÓï¾ä£¬Ê¹´úÂëÔËÐеĿìµã£¡ÎÒ¾õµÃÔÚ´úÂëÀïͨ¹ýÅжÏÌø×ªÀ´Ö´ÐÐÏÂÒ»ÌõÓï¾äÊǵ×ЧµÄ£¨switch (route_mode)£¬switch (route_order)£©£®Çë¸ßÊÖ°ïæ£¬¸ÃÒ»ÖÖд·¢ÈôúÂë¸ü¸ßЧ
void AutoRoute::FindNearPoint()
{
float pointdist = 99999.0;
iLine = -1;
iPoint = -1;
for(int i = 0; i < cvar.linecount ; i++)
{
if (route_line[i].enabled)
{
for(int j = 0; j < route_line[i].count; j++)
{
float dist = GetPointDistance(route_line[i].point[j].origin);
if (dist < pointdist && abs(route_line[i].point[j].origin[2] - me.pmEyePos[2]) < 25)
{
pointdist = dist;
iLine = i;
iPoint = j;
}
}
}
}
if (pointdist < cvar.finddist && iPoint > -1 && iLine > -1)
{
if (GetPointVisible(route_line[iLine].point[iPoint].origin))
{
if (iPoint > 0 && iPoint < route_line[iLine].count - 1)
{
if (GetPointVisible(route_line[iLine].point[iPoint + 1].origin) && GetAngleVisible(route_line[iLine].point[iPoint + 1].origin))
{
route_order = RO_ASC;
}
else if (GetPointVisible(route_line[iLine].point[iPoint - 1].origin) && GetAngleVisible(route_line[iLine].point[iPoint - 1].origin))
{
route_order = RO_DESC;
}
}
else
{
if (iPoint == 0 && GetPointVisible(route_line[iLine].point[iPoint + 1].origin) && GetAngleVisible(route_line[iLine].point[iPoint + 1].origin))
{
route_order = RO_ASC;
}
else if (iPoint == route_line[iLine].count - 1 && GetPointVisible(route_line[iLine].point[iPoint - 1].origin) && GetAngleVisible(route_line[iLine].point[iPoint - 1].origin))
{
route_order = RO_DESC;
}
}
}
else
{
iLine = -1;
iPoint = -1;
}
}
else
{
iLine = -1;
iPoint = -1;
}
}
void AutoRoute::CreateMove(usercmd_s *usercmd)
{
if (Record)
{
if (iLine > -1)
{
if (iPoint == cvar.pointcount){Record = false;return;};
if (iPoint == -1)
{
AddPoint();
}
else
{
float dist = GetPointDistance(route_line[iLine].point[iPoint].origin);
if (dist >= cvar.routedist)
{
AddPoint();
}
}
}
return;
}
if (cvar.autoroute && me.alive)
{
if (gAimbot.target!=-1 && cvar.routepursue)
{
cvar.autoroute = 0;
iLine = -1;
iPoint = -1;
route_mode = RM_NONE;
return;
}
switch (route_mode)
{
case RM_NONE:
{
FindNearPoint();
if (iPoint > -1 && iLine > -1)
{
GotoRoutePoint(route_line[iLine].point[iPoint].origin, usercmd);
route_mode = RM_FROM;
}
break;
}
case RM_FROM:
{
int i = iPoint;
if (((route_order == RO_ASC) && (i >= route_line[iLine].count - 1)) ||
((route_order == RO_DESC) && (i <= 0)))
{
iPoint = -1;
route_mode = RM_END;
return;
}
CheckRoutePoint(route_line[iLine].point[iPoint].origin, usercmd);
if( usercmd->forwardmove>-120 && usercmd->forwardmove<120 && usercmd->sidemove>-120 && usercmd->sidemove<120)
{
switch (route_order)
{
case RO_ASC:
{
i++;
}
break;
case RO_DESC:
{
i--;
}
break;
}
iPoint = i;
GotoRoutePoint(route_line[iLine].point[iPoint].origin, usercmd);
}
return;
}
break;
case RM_END:
{
iLine = -1;
iPoint = -1;
route_mode = RM_NONE;
}
break;
}
}
else
{
iLine = -1;
iPoint = -1;
route_mode = RM_NONE;
}
}
|
|