Notrufsystem

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
  • Hallo,


    Also ich Erwarte, wie bei jeder Frage eine hilfreiche Antwort. Das klappt aber ja leider nicht immer,doch bei dieser Frage,erwarte ich hilfreiche Antworten Min. 5 Sätze. Und hilfreich am besten mit Codes.


    Also ich möchte einen Notruf machen. Mit /call Medic soll eine Meldung an alle Medics gehen. "%s hat einen Notruf abgesetzt geb /accept Medic ein um abzunehmen. Wenn er das gemacht hat, dann soll ein Checkpoint erstellt werden wo der Spieler ist der den Befehl eingegeben hat.


    Aber wie mache ich das genau ? Wie sende ich eine Meldung die nur eine bestimmte Fraktion lesen kann in den Fall Medic. Hat jemand lust mir kostenlos mit Tv zu helfen oder jemand schickt mir einfach so ein System oder erklärt mir. Danke im Vorraus.

  • Mit einer Schleife in der jeder Spieler, der in der jeweiligen Fraktion ist, durch SendClientMessage eine Nachricht erhält.



    for(new i=0;i<MAX_PLAYERS;i++)
    {
    if(GetPVarInt(playerid, "Fraktion") == 2)
    {
    SendClientMessage(playerid, 0xFFFFFFFF, "A");
    }
    }

  • Wie markiert man ein Spieler als Sanitäter? Natürlich mit Variablen, die jedoch auch alle Spieler gleichzeitig speichern kann: Array.
    new bool:Medic[MAX_PLAYERS];


    Damit die Verwaltung leichter fällt, erschaffen wir Funktionen dafür, die den Zustand ändern
    stock setPlayerMedic(playerid, bool:isMedic) return (Medic[playerid] = isMedic);


    Und jetzt noch eine Funktion, um den Zustand abzufragen
    stock isPlayerMedic(playerid) return (Medic[playerid]);;


    Da gewöhnlich Variablen immer beim Connect ein anderen Wert gespeichert haben können, so setzen wir diesen unter OnPlayerConnect auf 0.
    Dazu verwenden wir die erstellte Funktion.
    setPlayerMedic(playerid, false);


    Nun, wir haben jetzt die Möglichkeit, Spieler als Sanitäter zu markieren. Wie jedoch machen wir den Befehl?
    Wir könnten jetzt für jeden Spieler ein Array erstellen, der mit dem Wert versetzt ist, ob der Spieler ein Sanitäter angefordert hat.
    Um es einfach zu halten, speichern wir den letzten Spieler.
    new gLastMedicUser = -1;


    In einem Befehl (z. B. /call - Es gibt schon eine nette Auswahl an Tutorials für Befehle mit Parametern) machen wir eine Schleife für alle Spieler. In der Schleife
    überprüfen wir, ob der Spieler in der Schleife Online und ein Sanitäter ist. Wenn der Fall zutrifft, dann sendest du ihm eine Nachricht.
    Anschließend setzt du den letzten Aufruf von einen Spieler an die Sanitäter.
    gLastMedicUser = playerid;


    Jetzt fehlt noch ein Befehl, um als Sanitäter den Aufruf aufzunehmen. Dazu machst du ein Befehl, in dem du prüfst, ob der Spieler ein Sanitäter ist. Wenn er einer ist,
    dann überprüfst du nur noch, ob der "gLastMedicUser" Online ist. Dannach ermittelst du seine Koordinaten und mit diesen setzt du ein Checkpoint für den Sanitäter.
    Vergiss aber nicht, "gLastMedicUser" zurückzustellen (auf -1), um mehrfache Annahme zu unterbinden.