Code: Select all
COMMAND("face",CMD_Face,true,false);
Code: Select all
int CMD_Face(int argc, char* argv[])
{
if (!ppSpawnList) return 0;
if (!pSpawnList) return 0;
PSPAWNINFO pSpawn = ((PSPAWNINFO)pTarget);
bool bfPredict=false;
bool bfAway=false;
bool bfNolook=false;
bool bfFast=false;
bool bfLoc=false;
double Y;
double X;
for (int i = 1 ; i < argc ; i++)
{
if (!stricmp(argv[i],"predict"))
bfPredict=true;
else if (!stricmp(argv[i],"nolook"))
bfNolook=true;
else if (!stricmp(argv[i],"away"))
bfAway=true;
else if (!stricmp(argv[i],"fast"))
bfFast=true;
else if (!stricmp(argv[i],"loc")) {
bfLoc=true;
Y = atof(argv[++i]);
X = atof(argv[++i]);
} else if (!stricmp(argv[i],"help")) {
WriteChatf("Syntax: %s predict|nolook|away|fast|loc y x",argv[0]);
return 0;
}
}
if (!bfLoc) {
if (pSpawn->SpawnID==((PSPAWNINFO)pCharSpawn)->SpawnID) // If it is ourself, don't do anything.
return 1;
gFaceAngle = (
atan2(pSpawn->X - ((PSPAWNINFO)pCharSpawn)->X,
pSpawn->Y - ((PSPAWNINFO)pCharSpawn)->Y)
* 256.0f / PI);
} else {
gFaceAngle = (
atan2(X - ((PSPAWNINFO)pCharSpawn)->X,
Y - ((PSPAWNINFO)pCharSpawn)->Y)
* 256.0f / PI);
}
if (bfPredict)
{
DOUBLE Distance;
Distance = DistanceToSpawn((PSPAWNINFO)pCharSpawn, pSpawn);
gFaceAngle = (
atan2((pSpawn->X + (pSpawn->SpeedX * Distance)) - ((PSPAWNINFO)pCharSpawn)->X,
(pSpawn->Y + (pSpawn->SpeedY * Distance)) - ((PSPAWNINFO)pCharSpawn)->Y)
* 256.0f / PI);
}
if (!bfNolook) {
DOUBLE Distance = DistanceToSpawn((PSPAWNINFO)pCharSpawn, pSpawn);
gLookAngle = (
atan2(pSpawn->Z + pSpawn->AvatarHeight*StateHeightMultiplier(pSpawn->StandState) - ((PSPAWNINFO)pCharSpawn)->Z -
((PSPAWNINFO)pCharSpawn)->AvatarHeight*StateHeightMultiplier(((PSPAWNINFO)pCharSpawn)->StandState),
(FLOAT)Distance)
* 256.0f / PI);
if (bfAway) gLookAngle = -gLookAngle;
if (bfFast) {
((PSPAWNINFO)pCharSpawn)->CameraAngle = (FLOAT)gLookAngle;
gLookAngle=10000.0f;
}
}
if (bfAway) {
gFaceAngle += 256.0f;
}
if (gFaceAngle>=512.0f) gFaceAngle -= 512.0f;
if (gFaceAngle<0.0f) gFaceAngle += 512.0f;
if (bfFast) {
((PSPAWNINFO)pCharSpawn)->Heading = (FLOAT)gFaceAngle;
gFaceAngle=10000.0f;
}
return 1;
}


