Drive by COPS
#1

ARe cineva idee cum asa putea face un sistem anti drive by gen: Cand cel care trage este in masina si cel in care se trage tot in masina iar masina ajunge la 550 viata, sa-l blocheze pt cateva secunde si sa-l avertizeze de drive by. Vreau sa fac asta pentru politisti pentru a reduce reclamatiile, certurile pe tema asta. Politisti au voie sa traga doar la roti in urmarire si de multe ori se incalca asta. Am incercat sa fac asta:

Code:
PUBLIC: OnPlayerShootPlayer(Shooter,Target,Float:HealthLost,Float:ArmourLost)
{
       if(GetPlayerState(Shooter) == 3)
	{
	    new Float:vhealth;
		new veh = GetPlayerVehicleID(Target);
		if(GetVehicleHealth(veh, vhealth) <= 550)
		{
	 		SetVehicleHealth(veh, 550);
	   		TogglePlayerControllable(Shooter, 0);
	   		SetTimerEx("ResetFreeze", 10000, false, "i", Shooter);
			SendClientMessage(Shooter,COLOR_RED,"Drive-By: You`re freeze for 10 seconds !");
		}
	}
        return 1;
}
Codul de mai sus functioneaza doar cand playerul in care se trage este lovit si masina are <= 550 viata, partea proasta este ca nu actioneaza daca masina are viata <= 550, ci doar daca lovesti si playerul din masina.
Reply
#2

Idea ta e destul de drăguță, doar că are cвteva probleme:

1. Nu numai pasagerul poate trage, și șoferul poate dacă se uita stanga/dreapta sau dacă este pe motor.
2. Dacă tragi la roți, tot iei dmg mașinii respective.

Оncearcă așa:
Code:
                new Float:vhealth, Float:phealth;
		new veh = GetPlayerVehicleID(Target);
                GetVehicleHealth(veh, vhealth);
                GetPlayerHealth(Traget, phealth);
		if(vhealth <= 550 && IsPlayerConnected(shooter) && IsPlayerConnecter(Traget) && phealth != 0)
		{
	 		SetVehicleHealth(veh, 550);
	   		TogglePlayerControllable(Shooter, 0);
	   		SetTimerEx("ResetFreeze", 10000, false, "i", Shooter);
			SendClientMessage(Shooter,COLOR_RED,"Drive-By: You`re freeze for 10 seconds !");
		}
Am оncercat să includ și jucătorul оn acea condiție deoarece funcția se referă la jucător, nu la mașină. Оn plus, era greșită condiția.
Return Values:
1 - success
0 - failure (i.e. player not connected).
The player's health is stored in the specified variable.

Sursa: https://sampwiki.blast.hk/wiki/GetPlayerHealth
Acea funcție returna mereu 1, iar 1 este mereu mai mic decвt 550. Deci orice glonț dădeai, mereu luai freeze.
Reply
#3

Nu functioneaza man ...
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)