21.01.2015, 20:47
Like the title says, how do I know when a player is running? GetPlayerAnimationIndex won't actually work because it only tells the truth when the animation is executed.
new Float:VX, Float:VY, Float:VZ;
GetPlayerVelocity(playerid, VX, VY, VZ);
if(VX > 5.0 || VY > 5.0 || VZ > 5.0)
{
/* code */
}
stock IsPlayerRunning(playerid)
{
if(!IsPlayerConnected(playerid)) return 0;
if(IsPlayerInAnyVehicle(playerid)) return 0;
new keys, updown, leftright;
GetPlayerKeys(playerid, keys, updown, leftright);
if(keys & KEY_SPRINT) return 1;
return 0;
}
//untested
stock IsPlayerRunning(playerid)
{
if(!IsPlayerConnected(playerid) || IsPlayerInAnyVehicle(playerid)) return 0;
new keys, updown, leftright;
GetPlayerKeys(playerid, keys, updown, leftright);
if(keys & KEY_SPRINT) return 1;
if(GetPlayerAnimationIndex(playerid))
{
new animlib[32], animname[32];
GetAnimationName(GetPlayerAnimationIndex(playerid),animlib,32,animname,32);
if(!strcmp(animlib, "PED"))
{
new const names[8][] = { "run_fat", "run_fatold", "run_old", "swat_run", "woman_run", "WOMAN_runbusy", "woman_runpanic", "WOMAN_runsexy" };
for(new i; i < sizeof(names); i++)
{
if(!strcmp(animname, names[i])) return 1;
}
}
}
return 0;
}