[FILTERSCRIPT] Checkpoint Jail System

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, heute mal ein ganz simples System von mir.
    Habe ein Thema entdeckt wo jemand nach solch ein System gefragt hat, worauf ich dann losgelegt habe :)


    Informationen


    Es handelt sich um ein Filterscript womit man Spieler bestrafen kann in Form von "Checkpoints ablaufen".
    Dafür habe ich ebenfalls kleine TextDraws erstellt die anzeigen wie viele Checkpoints noch abgelaufen werden müssen.
    Nachdem man die Checkpoints abgelaufen hat, wird man zur ursprünglichen Position mit den alten Werten gesetzt.
    Habe jetzt nicht wirklich versucht alles perfekt zu schreiben, gibt mir einfach bescheid wenn's etwas zu verbessern gibt.
    Ideen können mir ebenfalls vorgeschlagen werden.


    Screenshots



    Befehle

    • /cpjail <Name/ID> <Grund> <Checkpoint Anzahl> - Steckt den Spieler ins CP Prison.
    • /cpunjail <Name/ID< - Holt den Spieler aus dem CP Prison raus.
    • /prisonlist - Zeigt ein Dialog mit allen Spielern die sich im CP Prison + die Anzahl an Checkpoints die noch abgelaufen werden müssen.


    Credits / Erforderliche Includes / Plugins

    Updates / Bugs


    v-1.0.2


    Added: Nachricht erscheint nachdem man /prisonlist benutzt und sich niemand darin befindet.
    Changed: Zahlen werden höchgezählt anstatt runtergezählt.
    Fixed: Checkpoint nicht betretbar wenn man ein Relog gemacht hat während man im CP Prison war.


    v-1.0.3


    Changed: TextDraws werden erst erstellt wenn ein Spieler ins Jail landet
    Fixed: Spieler muss zu gespawnt sein um ins Prison gesteckt werden zu können
    Fixed: Textdraws beim reloaden vom FS
    Fixed: Bug bei Server Restart


    v-2.0.0


    Das Script speichert & lädt jetzt Informationen via SQLite. Folgende Sachen werden gespeichert & geladen


    • Spieler
    • Checkpoint Anzahl
    • Alte Position
    • Alte Virtuelle Welt
    • Alte Interior
    • Alte Waffen


    Diese werden gespeichert wenn ein Spieler sich vom Server trennt und geladen wenn er sich wieder mit dem Server verbindet.


    Außerdem gibt's nun mehrere kleine Einstellungsmöglichkeiten, darunter auch die optinale Einstellung Spieler in verschiedene Welten zu setzen @LeonMrBonnie
    Siehe selbst:




    Testserver


    server.lndsquad.com:2222


    Download


    Version 2.0.0- KLICK MICH


    Ende


    Das war alles. Ich hatte wenig Zeit um das System auszutesten, es könnte sein das Bugs auftreten.
    Meldet diese einfach unter diesem Thema und ich werde sie beheben :)


    Mit freundlichen Grüßen
    JustMe.77 8)

    5 Mal editiert, zuletzt von JustMe.77 () aus folgendem Grund: Updates angepasst

  • Bei /cpunjail steht wenn man es falsch benutzt hat "Use: /cpjail <Name/ID>" sonst habe ich noch keinen Fehler gefunden.


    EDIT:
    Ich weiß nicht ob das nur bei mir so ist aber bei mir steht wenn ich im CP Prison bin "05/05 Checkpoints abgelaufen" und wenn ich in einen Checkpoint reingehe wird daraus "04/05 Checkpoints abgelaufen" Also statt es hochzuzählen zählt es runter...

  • Achso ok aber das ist trotzdem ziemlich komisch... könntest du eventuell den Code posten damit es höher wird? Ich selbst habe davon keine Ahnung.


    Hast recht! Ist nun abgeändert :)


    Edit:


    Testserver ist wieder verfügbar, Befehle funktionieren jetzt auch ohne RCON Admin zu sein (da es ja manche Vollidioten gibt die meinen es ausnutzen zu müssen ^^ )


    Mit freundlichen Grüßen
    JustMe.77 8)

    Einmal editiert, zuletzt von JustMe.77 ()

  • Benutze das Script jetzt auch auf meinem Server, funktioniert wirklich gut, danke!


    EDIT:
    Ich hätte noch eine Idee fürs Script, undzwar wenn niemand im CP Prison ist und man /prisonlist eingibt passiert nichts, wie wäre es wenn man da eine Nachricht im Chat kriegt dass niemand im CP Prison ist?


    EDIT2:
    Hier mal ne Idee wie man das umsetzen könnte:

    CMD:prisonlist(playerid)
    {
    new cQuery[1024];
    if(Player[playerid][Level] < 1) return SendErrorMessage(playerid,"Du musst ein Supporter sein um diesen Befehl zu benutzen.");
    foreach(new i: Player)
    {
    if(pJailed[i] == true)
    {
    format(cQuery, sizeof(cQuery),"{FFFF00}%s {FFFFFF}|| Verbleibende CP's: {FFFF00}%d\n", GetName(i), MaxCheckPoints[i]-CheckPointCounter[i]);
    ShowPlayerDialog(playerid, D_PRISONLIST, DIALOG_STYLE_MSGBOX, "Spieler im CP Prison", cQuery, "Schliessen", "");
    }
    }
    if(strlen(cQuery) < 1) ShowPlayerDialog(playerid,D_PRISONLIST,DIALOG_STYLE_MSGBOX,"{FFFF00}Spieler im CP Prison", "Es ist niemand im CP Prison.","Schliessen","");



    return 1;
    }

  • Hast du /prisonlist auch mal mit mehr als 1 Spieler im Prison ausprobiert? Wird nämlich nicht korrekt funktionieren.

    Er hätte das ShowPlayerDialog außerhalb der Schleife packen sollen, allerdings klappt es, da der Dialog sich dann immer aktualisiert ^^

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Ehrlich gesagt ist es jetzt auch nicht so viel besser.
    Jetzt wird versucht den Dialog immer anzuzeigen. Was allerdings nicht unbedingt immer passiert, da ggf der Text leer ist. Der Funktionsaufruf findet aber trotzdem statt.
    Ich würde das ShowPlayerDialog nur aufrufen, wenn pCount > 0 ist bzw wenn cQuery nicht leer ist. Das pCount kann man sich sowieso sparen.


    //Edit
    format(str, sizeof(str),"%02d", MaxCheckPoints[playerid]);
    mit %02d wird der Zahlenwert mit 0 aufgefüllt, bis die Zahl zweistellig (2) ist. Bedeutet:
    1 -> 01
    8 -> 08
    10 -> 10
    234 -> 234
    Würde dir helfen bei Zeile 349 bis 370.

  • Die Variable benötige ich für ein Update das bald auf euch zu kommt, jetzt wird's nur angezeigt wenn pCount höher als 0 ist.
    Das mit den Zahlenwert habe ich nicht gewusst, danke! Ist nun auch abgeändert :)


    Push :)


    Mit freundlichen Grüßen
    JustMe.77 8)

    2 Mal editiert, zuletzt von JustMe.77 ()

  • Wenn ich das richtig sehe wird momentan jeder in die gleiche virtuelle Welt teleportiert, ich denke mal das könnte Probleme bereiten bei vielen Spielern deswegen warum nicht in eine Random virtuelle Welt teleportieren?
    Beispiel:



    stock randomEx(min, max)
    {
    //Credits to y_less
    new rand = random(max-min)+min;
    return rand;
    }
    Das hinzufügen.


    Bei /cpjail oben:
    new world = randomEx(5, 2147483647);


    SetVirtualWorld bei /cpjail zu:
    SetPlayerVirtualWorld(target, world);

  • Wieso sollte es denn Probleme bereiten, kannst du irgendwelche Beispiele machen?
    Finde es besser wenn man alle in einem Überblick hat, kann aber auch bei Bedarf eine Einstellung hinzufügen mit der man zwischen beiden Möglichkeiten wählen kann.


    Da ich schon gerade dabei bin eine Antwort zu verfassen:


    Das FS ist nun auch auf Englisch verfügbar, hier das Thema dazu:


    http://forum.sa-mp.com/showthread.php?t=629838



    Am nächsten Freitag wird's ein neues Update geben. Es ist bereits fertig, muss aber noch ordentlich ausgetestet werden und kleine Dinge fehlen ebenfalls. Das neue Update enthält viele Verbesserungen und einige Erneuerungen, seid gespannt :)


    Mit freundlichen Grüßen
    JustMe.77 8)

  • warum nicht in eine Random virtuelle Welt teleportieren?

    Warum nicht sicher gehen, dass der Spieler eindeutig in eine Welt kommt, in der kein anderer ist? ^^


    Zum Beispiel mit:


    SetPlayerVirtualWorld(playerid, playerid+1);

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S