Admin Prison mit Checkpoints

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 liebe BreadFish Community,


    Ich möchte ein Admin Prison system wo man Checkpoints ablaufen MUSS.


    Es sollte eine nachricht kommen wie beim kick.


    Der Spieler > %s < wurde vom Admin >> %s << zu 100 Checkpoints verdonnert.Grund: SDM


    Kann mir da jemand helfen ich breuchte es als
    If(strcmp(cmd,"/Checkpoints",true)== 0)


    So sollte es anfangen ich brauch eure hilfe bitte.


    Freundliche Grüsse,
    Justin

  • Geh in dein ADM Prison und save ugf. 10-15 Checkpoints, füge diese in ein Enum ein und verknüpfe es mit der Random Funktion.
    Lasse diese beim durch laufen der Checkpoints durch eine Variablen Abfrage die checkpoints einfach neu regenerieren und solange durch laufen bis diese Variable bei 100 angelangt ist.
    Ab 100 lässt du ihn dann einfach wieder am normalen Platz spawnen :)

    KleineHilfe 2.0

  • Ist relativ leicht:
    new RunningCP[MAX_PLAYERS]; // gelaufene CP
    new xPrison[MAX_PLAYERS]; // Prison Abfrage für cp
    new CCP[MAX_PLAYERS]; // Anzahl der cp
    Hier trägst du deine gespeicherten X,Y,Z Werte ein die durch random zufällig ausgewählt werden sollen.
    new Float:CP[][3] =
    {
    {X,Y,Z},
    {X,Y,Z}
    };


    Unter deinem Befehl(sscanf+angabe der CP Anzahl(Im sccanf = Anzahl der CP's die zu laufen sind = CCP))
    CCP[pID] = CPP; // Variable in eine globale variable zur Abfrage der Anzahl der CP abfragen
    new rand = random(sizeof(CP)); // deine Floats von oben durch würfeln lassen
    SetPlayerCheckpoint(pID, CP[rand][0], CP[rand][1], CP[rand][2], 3.0); // Setzen des Checkpoints durch Random
    xPrison[pID] = 1; // Variable für OnPlayerEnterCP Abfrage


    OnPlayerEnterCheckpoint
    public OnPlayerEnterCheckpoint(playerid)
    {
    if(xPrison[playerid] == 1)
    {
    if(RunningCP[playerid] < CCP[playerid])
    {
    DisablePlayerCheckpoint(playerid);
    RunningCP[playerid] ++;
    new rand = random(sizeof(CP));
    SetPlayerCheckpoint(playerid, CP[rand][0], CP[rand][1], CP[rand][2], 3.0);
    }
    else
    {
    DisablePlayerCheckpoint(playerid);
    RunningCP[playerid] = 0;
    xPrison[playerid] = 0;
    CCP[playerid] = 0;
    SetPlayerPos(playerid,0,0,0); // Wo der Spieler beim ablaufen aller CPS spawnen soll
    }
    }
    return 1;
    }


    Wenn Fragen bestehen einfach bescheid sagen.


    Die Varis sollten noch in deinem jeweiligen Speichersystem gespeichert werden damit kein dc es nicht löscht. :)
    mfg


    Spoiler anzeigen
    Edit Info

    KleineHilfe 2.0

    Einmal editiert, zuletzt von YaBroo ()

  • Wo muss ich das hin machen ins Script?


    CCP[pID] = CPP; // Variable in eine globale variable zur Abfrage der Anzahl der CP abfragen
    new rand = random(sizeof(CP)); // deine Floats von oben durch würfeln lassen
    SetPlayerCheckpoint(pID, CP[rand][0], CP[rand][1], CP[rand][2], 3.0); // Setzen des Checkpoints durch Random
    xPrison[pID] = 1; // Variable für OnPlayerEnterCP Abfrage

    und das

    new Float:CP[][3] =
    {
    {X,Y,Z},
    {X,Y,Z}
    };

    Was muss ich bei X,Y,Z eintragen ?

  • CMD:Checkpoints(playerid, params[])
    {
    new pID, str[128];
    if(sscanf(params,"us",pID,str)); return SendClientMessage(pID,FARBE,"BENUTZE: /Checkpoints [ID/Name] [Checkpoints]");
    new Spieler[MAX_PLAYER_NAME];
    GetPlayerName(pID,Spieler,sizeof(Spieler));
    CCP[pID] = CPP; // Variable in eine globale variable zur Abfrage der Anzahl der CP abfragen
    new rand = random(sizeof(CP)); // deine Floats von oben durch würfeln lassen
    SetPlayerCheckpoint(pID, CP[rand][0], CP[rand][1], CP[rand][2], 3.0); // Setzen des Checkpoints durch Random
    xPrison[pID] = 1; // Variable für OnPlayerEnterCP Abfrage
    }


    Sry, aber ich benutze nur zcmd.


    Den Rest musste selber hinbekommen...

  • Kann das jemand umwandeln?eventuell mit Grund


    /checkpoints [PlayerID] [Checkpoints] [Grund]

    Kannst du auch mal was selbst machen? Ich hab in dem Thread hier keinen einzigen Willen von dir gesehen, etwas selbst zu erstellen.


    Für den Grund machst du ein neues "new":
    new pID, str[128], grund[64];


    Bei der SSCANF-Abfrage fügst du einen neuen String (s) ein, mit dem "Wert" "grund".
    Diesen fügst du dann einfach in die Nachricht ein, die gesendet wird, also:
    format(string, sizeof string, "Admin ... steckt ... für ... Checkpoints ins Prison. Grund: %s", ..., grund);

    [align=center]


  • Ihr zeigt es ihm aber auch vollkommen falsch. Wo nimmt ihr hier CCP her und warum ein String für die Anzahl an CP's?
    Abgesehen davon kommt bei einer if Abfrage kein ";" hinten ran.


    new pID,CPs;
    if(sscanf(params,"ui",pID,CPs)) return SendClientMessage(pID,FARBE,"BENUTZE: /Checkpoints [ID/Name] [Checkpoints]");
    CCP[pID] = CPs; // Variable in eine globale variable zur Abfrage der Anzahl der CP abfragen


    Und dann mit CCP Abfragen unter OnPlayerEnterCP ob der Spieler diese Anzahl erreicht hat.
    ich hab die anderen Varis bereits oben genannt.
    Wenn du magst baue ich es dir direkt in dein GameMode ein.


    Mit Grund schau dir das von ShiiX an.

    KleineHilfe 2.0

  • Ja ich hab grad dran gearbeitet den Befehl umzuschreiben dafuer bedanke ich mich nochmal ganz herzlich. Und dann lese ich so ein Kommentar,ich werde den befehl bald testen.


    Tut mir leid das ist so "Ausgerastet" bin


    Danke an alle Helfer.
    Eine Frage noch,
    Kann ich da wo Cmd steht auch Command: hinschreiben ? Denn jn meinem Script gibts if strcmp und command: auch stock aber geht auch command:?