- 18
- 1
Всем привет! Решил сделать систему смены походки. Игроку нужно нажать кнопку движения куда-либо и alt, только тогда сработает анимация походки, но почему-то при нажатии только alt происходит анимация. Я сделал через таймер, чтобы он постоянно проверял, нажаты ли еще кнопки, но он все равно проигрывает анимацию и быстро ее останавливает, поскольку кнопки не нажаты. Ниже прикреплю только одну из походок, остальные идентичны:
public OnPlayerKeyStateChange
if (player_info[playerid][WALKSTYLE] != 20 && ((newkeys & KEY_WALK && newkeys & KEY_UP) || (newkeys & KEY_WALK && newkeys & KEY_DOWN) || (newkeys & KEY_WALK && newkeys & KEY_LEFT) || (newkeys & KEY_WALK && newkeys & KEY_RIGHT))
|| ((oldkeys & KEY_WALK && newkeys & KEY_UP) || (oldkeys & KEY_WALK && newkeys & KEY_DOWN) || (oldkeys & KEY_WALK && newkeys & KEY_LEFT) || (oldkeys & KEY_WALK && newkeys & KEY_RIGHT))
|| ((newkeys & KEY_WALK && oldkeys & KEY_UP) || (newkeys & KEY_WALK && oldkeys & KEY_DOWN) || (newkeys & KEY_WALK && oldkeys & KEY_LEFT) || (newkeys & KEY_WALK && oldkeys & KEY_RIGHT))
&& GetPlayerState(playerid) == PLAYER_STATE_ONFOOT)
{
walktime[playerid] = SetTimerEx("WalkAnim",2,0,"d",playerid);
}
forward WalkAnim(playerid);
public WalkAnim(playerid)
new keys, updown, leftright;
GetPlayerKeys(playerid,keys,updown,leftright);
if(player_info[playerid][WALKSTYLE] == WALK_PLAYER)
{
if((keys & KEY_WALK && updown & KEY_UP) || (keys & KEY_WALK && updown & KEY_DOWN) || (keys & KEY_WALK && leftright & KEY_LEFT) || (keys & KEY_WALK && leftright & KEY_RIGHT))
{
KillTimer(walktime[playerid]);
ApplyAnimation(playerid,"PED","WALK_player",4.1,1,1,1,1,1);
walktime[playerid] = SetTimerEx("WalkAnim",2,0,"d",playerid);
}
else ApplyAnimation(playerid,"PED","WALK_player",1.0,0,0,0,0,1), KillTimer(walktime[playerid]);
}