Hallo,
hier ein kleines Tutorial, wie man ein Fahrzeug per EMP deaktivieren kann.
1. (Zu den new´s und #define´s im Script
new bool:Motor[MAX_VEHICLES]=false; // Das wird Später die Abfrage ob das Fahrzeug getroffen wurde oder nicht.
new engine,lights,alarm,doors,bonnet,boot,objective; // Für "GetVehicleParamsEx(...)"
new bool:Motor[MAX_VEHICLES]=false; // Für das Motor ein/ausschalt System ([b]muss auf euer System angepasst werden![/b])
#define PLAYER_RANGE 200 // Wie weit der Spieler von dem Fahrzeug entfernt sein kann.
#define EMP_WEAPON 23 // Die Waffe zum deaktivieren der Fahrzeuge (23 = SD-Pistole)
2. Damit die Fahrzeuge beim Zerstören wieder freigegeben sind machen wir das unter "OnVehicleSpawn(vehicleid)"
public OnVehicleSpawn(vehicleid)
{
Vehicle_EMP_Active[vehicleid] = false;// Damit die Fahrzeuge beim Zerstören wieder freigegeben sind machen wir das unter "OnVehicleSpawn(vehicleid)"
return 1;
}
3. Das System zum deaktivieren.
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
if(hittype == BULLET_HIT_TYPE_VEHICLE) // Hier wird abgefragt ob das abgeschossene "Objekt" ein Fahrzeug ist.
{
if(GetPlayerWeapon(playerid) == EMP_WEAPON) // Hier wird abgefragt ob es die EMP Waffe ist (wie oben definiert ist es die ID 23)
{
GetVehiclePos(hitid, fX, fY, fZ);// Findet die Fahrzeug Position heraus
if(IsPlayerInRangeOfPoint(playerid, PLAYER_RANGE, fX, fY, fZ)){//fragt ab ob sich das Fahrzeug an in der Reichweite von 200m befindet.
GetVehicleParamsEx(hitid,engine,lights,alarm,doors,bonnet,boot,objective);// "Holt" sich die Parameter des Fahrzeuges.
SetVehicleParamsEx(hitid,VEHICLE_PARAMS_OFF,lights,alarm,doors,bonnet,boot,objective); // Schaltet den Motor des Fahrzeugs aus.
Motor[hitid] = false; // Schaltet die Motor "variable" aus, damit man den Motor nicht mehr starten kann.
Vehicle_EMP_Active[hitid] = true;// Hier wird "gesagt" das dass Fahrzeug getroffen und deaktiviert wurde.
SendClientMessage(playerid, -1, "Fahrzeug ausgeschaltet!");
}
else SendClientMessage(playerid, -1, "EMP fehlgeschlagen!"); // Wenn das Fahrzeug nicht in der Reichweite ist.
}
}
return 1;
}
4. Wenn das Fahrzeug getroffen wurde und eine Person das Fahrzeug starten möchte.
if(strcmp(cmdtext, "/motor", true) == 0)
{
if(GetPlayerVehicleSeat(playerid) == 0) // Überprüft zuerst ob der Spieler der Fahrer eines Fahrzeugs ist.
{
new car = GetPlayerVehicleID(playerid);
if (Motor[car] == false) // Prüft ob der Motor aus ist.
{
if(Vehicle_EMP_Active[car] == false){//Wenn das Fahrzeug nicht per EMP deaktiviert wurde, kann der Motor gestartet werden.
//...
}
else SendClientMessage(playerid, -1, "Das Fahrzeug wurde von einer EMP getroffen!");// Wenn das Fahrzeug von einer EMP getroffen wurde kommt diese Meldung und das Fahrzeug bleibt aus.
}
}
return 1;
}
if(strcmp("/de", cmdtext, true, 10)==0){//Hier ein TEST Befehl um zu zeigen wie man EMP wieder ausschalten kann.
new car = GetPlayerVehicleID(playerid);
Vehicle_EMP_Active[car] = false;
return 1;
}
Das Verwendete Motor System ist von Padarom. (Link)
MfG