Fahrzeug schaden ohne Fahrer

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Beitrag von nexis1 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von nexis1 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Beitrag von nexis1 ()

    Dieser Beitrag wurde vom Autor gelöscht ().

  • 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. ;)

    "Einen Streit im Internet gewinnen, ist wie ein Sieg bei den Paralympics. Du hast zwar gewonnen, aber du bist immer noch behindert."

    Einmal editiert, zuletzt von Nyuchen ()

  • Beitrag von nexis1 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • 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.

    "Einen Streit im Internet gewinnen, ist wie ein Sieg bei den Paralympics. Du hast zwar gewonnen, aber du bist immer noch behindert."

    2 Mal editiert, zuletzt von Nyuchen ()

  • Beitrag von nexis1 ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • 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.

    "Einen Streit im Internet gewinnen, ist wie ein Sieg bei den Paralympics. Du hast zwar gewonnen, aber du bist immer noch behindert."