SA-MP Forums Archive
beat block - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+--- Thread: beat block (/showthread.php?tid=359838)



beat block - Sielly - 15.07.2012

I would like to create beat block on my serwer. I have got code:
Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
	if((newkeys & KEY_FIRE) && GetPlayerWeapon(playerid) == 0)
	{
        PobierzInfoGracza(playerid,17);
		new s=strval(PobieraczDanych);
		if(s>0)
		{
		    TogglePlayerControllable(playerid,0);
		    Odblokuj[playerid]=1;
		    GameTextForPlayer(playerid,"~r~Blokada bicia!",1000,5);
		}
	}
	return 1;
}
This code checks if player has beat bock and freeze him if he is trying to beat, but sometimes player can beat anyother player and he get freeze after that, and I have got no idea how to correct it. Please help.


Sorry for my bad English


Re: beat block - Matz - 15.07.2012

pawn Код:
#define PRESSED(%0) \
    (((newkeys & (%0)) == (%0)) && ((oldkeys & (%0)) != (%0)))
pawn Код:
public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
{
    if(PRESSED(KEY_FIRE) && GetPlayerWeapon(playerid) == 0)
    {
        TogglePlayerControllable(playerid,0);
        SetTimerEx("UnFreeze",3000,0,"i",playerid);
        SendClientMessage(playerid,-1,"Don't fight.");
    }
    return 1;
}
pawn Код:
forward UnFreeze(playerid);
public UnFreeze(playerid)
{
    TogglePlayerControllable(playerid,1);
    return 1;
}