Beitrag von nexis1 ()
Dieser Beitrag wurde vom Autor gelöscht ().
Einfach abfragen auf welches auto, und wenn der das auto trifft soll das auto so und so viel Heal verlieren.
stock IsVehicleInUse(vehicleid)
{
for(new i; i < MAX_PLAYERS; i++) //Schleife durch alle Spieler
{
if(!IsPlayerConnected(i)) continue; // Wenn nicht da, überspringen
if(GetPlayerVehicleID(i) == vehicleid && GetPlayerVehicleSeat(i) == 0) return 1; // Wenn Fahrer vorhanden, geben wir 1 zurück
}
return 0; // Wenn nicht, dann nicht :3
}
public OnPlayerWeaponShot(playerid, weaponid, hittype, hitid, Float:fX, Float:fY, Float:fZ)
{
new Float:buffer; // Als kleiner Zwischenspeicher
new Float:newvalue; // Falls man einen zweiten Zwischenspeicher möchte für weitere berechnungen (je nach belieben)
if (hittype == 2 && !IsVehicleInUse(hitid)) // Handelt es sich um ein Fahrzeug (Hittype = 2) und ist es unbesetzt?
{
GetVehicleHealth(hitid,buffer); // Buffer mit dem Wert der Fahrzeug HP besetzen
newvalue = buffer - 50; // Wir speichern auf Newvalue die aktuelle FahrzeugHP (Buffer) und ziehen 50 ab.
// if (newvalue < 260.0){ newvalue = 260.0 }; // Als Zusatz, falls du möchtest dass man Autos nicht ganz zerstört ohne Fahrer
SetVehicleHealth(hitid,newvalue); // 50 HP vom buffer wert abziehen, was die alte HP entspricht
return 0; // Ende... wir haben unsere eigene Schadensberechnung gemacht.
}
// Rest von dir
return 1;
}
Edit: Anpassungen damit niemand in die Irre geführt wird.
Du kannst je nachdem noch Abfragen um welche Waffe es sich handelt mit der jemand schießt und vieles mehr.
Meine Methode ist ungetestet, sollte aber funktionieren und das bewirken was du angesprochen hast.
Hoffe das konnte dein Problem lösen, hättest dich aber auch in Steam melden können.
F:\SAMP Server\gamemodes\gm.pwn(145) : warning 202: number of arguments does not match definition
Zeile:
if (hittype == 2 && !IsVehicleInUse(hitid))
stock IsVehicleInUse(vehicleid)
{
for(new i; i < MAX_PLAYERS; i++) //Schleife durch alle Spieler
{
if(!IsPlayerConnected(i)) continue; // Wenn nicht da, überspringen
if(GetPlayerVehicleID(i) == vehicleid && GetPlayerVehicleSeat(i) == 0) return 1; // Wenn Fahrer vorhanden, geben wir 1 zurück
}
return 0; // Wenn nicht, dann nicht :3
}
Edit: Anpassungen damit später andere nicht in die Irre geführt werden.
Nochmal überarbeitet.
Jetzt funktioniert das ganze bei mir und hab es selbst getestet.
Abgsehen von MAX_USERS war alles richtig, klappt danke
Oh stimmt, ich nutze eher MAX_USERS.
Ich werde mal meine Beiträge überarbeiten, damit andere nicht in die Irre geführt werden.
Bitte sehr.