[INCLUDE] Templer´s NoDM-Zone

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
  • Templer´s NoDM-Zone Include

    (Geeignet für alle GameModes...)


    Hallo Liebe Leute,


    Vorwort:


    Ich stelle euch hiermit ein neues Include vor, was dem Spieler einfach mit einer Funktion eine DM Zone ohne große Aufwände ermöglichen soll. Die Idee enstand durch einen Breadfish Typen Namens Marco2406 der ein gutes NoDM System haben wollte und kurz darauf dachte ob es nicht besser wäre ein schönes Include daraus zu machen. Auch wenn sich diese Include für den Anfang eher langweilig anhört bzw. anscheinend bereits in einem Forum veröffentlicht wurde, hat diese Include ein paar tole Zusatzerweiterungen bzw. eine Viefalt an Änderungen in der Include durchzuführen ^^.
    Funktionen (inkl. v4):

    • DM-Zonen auf der MiniMap anzeigen lassen (selbst einstellbar für den Programmierer in der Include Datei!)
    • Waffen werden abgenommen wenn in NoDM-Zone und zurückgegeben wenn Spieler aus der NoDM-Zone geht / fährt. (Speziell für Fahrzeuge auch eingerichtet und Flugzeuge sind davon ausgeschlossen)
    • Schonendes Script durch Benützung von 'PVar' Funktionen und kleinen Strings (Arrays)
    • Vermeidung von Code Überschneidungen wie z.B.: das bereits definierte

    >> Aktuell in der Version 3:

    • Leichter Einbau ins GameMode (Unterstützung auch für Filterscripts *NEU*)
    • Verwendung des vordefinierten Textdraws bzw. Erstellung eines eigenen Textdraws ganz leicht *NEU*
    • Compiler-Fehler wenn falsche Werteingabe in Definitionen *NEU*
    • Verbesserte Geschwindigkeit als in der alten Version *NEU*
    • Auswählbare Einstellungen wie, ob die Waffen abgenommen werden sollen, in welchen Intervallen geprüft werden soll, ob Spieler in einer NoDM-Zone ist, oder welche Farbe die Markierung auf der Mini-Map haben soll. *NEU*

    >> Aktuell in der Version 4:

    • Erkennung von Spieler Angriffen, die außerhalb der NoDM Zonen auf Spieler, welche in der NoDM Zone sind, schießen.
    • Standartgemäßer Timer (Intervall 2 Sekunden : Default), welcher das OnPlayerUpdate ablösen soll, da viele nicht zufrieden damit waren.


    >> Neuerungen in der nächsten Version:

    • Erkennung von DM´ler, welche in der NoDM Zone mit Fahrzeugen Spieler angreifen.
    • Verbesserung der derzeitigen Erkennung von DM´ler.


    Credits:


    /* NoDM-Zone v4 Include by Templer

    (for SAMP 0.3 / or higher)

    (Inspiriert durch Marco2406 vom Breadfish Forum)

    Dieses Script darf von jedermann verändert und benutzt werden!

    Mir ist es sogar egal, wenn Ihr was von hier für euren Vorteil rauskopiert!

    Credits:
    -Marco2406 : Für die geistreiche Idee der NoDM Zone für Neulinge & für das einfache TextDraw
    -Double-O-Seven : Für das Zeigen wie Include und GM am besten kommunizieren!
    -Samp-Team : Die es überhaupt ermöglicht haben sowas für GTA SanAndreas Programmierbar zu machen!
    -creck : Für die wichtigen BugReport in v1 und v2

    -niCe : Für sein 'IsPlayerAimingAtPlayer'*/

    Installation:

    • Öffne dein GameMode

    • Füge oben in dein Script unter der Zeile #include folgendes ein:

    #include

    • Erstelle eigene NoDM-Zonen unter dem Callback OnGameModeInit


    public OnGameModeInit()
    {
    //restlicher Code oben...
    //AddNoDMZone(Float:minX, Float:maxX, Float:minY, Float:maxY)
    AddNoDMZone(1094.37, 1280.709, -1038.38, -864.6794); //BurgerShot Nord
    //restlicher Code unten...
    return 1:
    }

    • Kompiliere das Script und Starte deinen Server ;)

    Screenshots:


    Screenshot 1 Ego-Perspektive
    Screenshot 2 Karten-Perspektive



    !!Ab Version 4 nicht mehr in Benützung!!

    Zitat

    Erklärung zur Benützung von OnPlayerUpdate:
    Da manche denken "Oh mein Gott er benützt OnPlayerUpdate" will ich für andere kurz Erläutern warum ich diese Variante ausgesucht habe. OnPlayerUpdate wird ja stehts ausgeführt, wenn Spieler InGame ist (und nicht am Desktop oder GTA Menu) und es dann ca alle 0,5 Sekunden aufgerufen wird (wenn nicht kürzer). Anstatt das ich die Timerfunktionen SetTimer und SetTimerEx verwende, nütze ich gleich OnPlayerUpdate mit einer Variable die überprüft ob so und soviele Sekunden vergangen sind und erst dann die Überprüfung für diesen Spieler startet. Somit erspart man sich an Leistung und keine Geschwindigskeitsverluste wegen der mageren Abfrage. Da ich leider schwer zeigen kann wieviel Leistung dieses Script vom Server verbraucht, da ich nicht wisse wie die Leistung abgemessen wird, müsst ihr es leider selber austesten wenn es unbedingt notwendig ist. Verbrauchen tut es trotz OnPlayerUpdate Benützung wenig an Leistung, was ich vom Wissen her kenne.

    Downloads:


    Pastebin Link v1
    Pastebin Link v2
    Pastebin Link v3

    Pastebin Link v4


    Für weitere Fragen / Anregung / Kritik einfach unter das Thema Posten :rolleyes:


    Mfg Templer

    Edit: Include PWN-Code fix...
    Edit2: Screenshot Links eingefügt ...+ Beschreibung der Funktion +Links gefixxt
    Edit3: Neue Version von der NoDM-Zonen Include...
    Edit4: Dummheitsfehler in v2 gefixxt...
    Edit5: Wichtige Bugfixxes die schweren Bug auslösen...

    Edit6: Extreme BugFixes, sowie neue Erweiterungen

    Edit7: Versionsnummer Fix


    BITTE,
    Sollte wer von euch noch eine ältere Version besitzen so möge er sofort die v4 laden, da die v1, v2 und v3 einen oder mehrere schwerliegenden Fehler enthalten

    Jedoch biete ich euch ältere Versionen zum download an, damit Ihr den Fortschritt erkennen könnt ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

    10 Mal editiert, zuletzt von Templer ()

  • OnPlayerUpdate naja^^ Ist aber nicht weiter schlimm denke ich
    Aber
    new zone = 0;
    for(; zone < gCountNoDMZone; zone++)
    finde ich schön, das machen die wenigsten ;)


    Insgesamt ganz gut, nur dass es so etwas schon öfter gibt

  • Neo, schau genau hin, ich nütze OnPlayerUpdate als ein 1Sekunden Timer ^^ Weil ich generell SetTimer und Schleifen mit MAX_PLAYERS hasse

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Jo ok das einstellen kann ich in der nächsten Version machen, aber OnPlayerUpdate wird so oder so immer ausgeführt, auch wenn nix drinnen steht also ises doch egal ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • @ creck : Vielen dank für diesen wichtigen BugReport, habe sofort neue Version hochgeladen. Entschuldige, hab jedoch gerade Probleme mit dem PC gehabt und ich jetzt den Fix später releasen müsste...

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Da du ja anscheinend gerne OnPlayerUpdate benutzt - lass es :D
    Es gibt genau eine Funktion von OnPlayerUpdate, und das ist das ein AFK-Check.
    Aber Befehle unter OnPlayerUpdate bedeuten den Tod ;)


    Bitte, tu´s für mich ;)
    Benutz SetTimerEx, das brauchste sowieso, man kann Parameter einstellen, und es wird nicht unkontrolliert oft aufgerufen...

  • Nun ja, ich habe eigentlich ein Ass im Ärmel, was besser ist als mein "Sekundenzähler" im OnPlayerUpdate und besser als ein Timer der bei OnGameModeInit oder bei OnPlayerConnect gestartet wird. Wenn ich dir jetzt damit deine "gedachte" Möglichkeit erfasst habe, dann bin ich zufrieden. Wenn Nicht, dann beantworte mir folgende Frage "Wäre bei deiner Möglichkeit OnPlayerUpdate in benützung oder würdest du diesen Callback bei deiner Möglichkeit ganz weglassen?" ^^

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Ja ins Auto, damit die Waffen die Weggenommen werden, also die SMG, wieder benutzbar sind. Natürlich kannst du oben in den defines die Option, dass die Waffen abgenommen werden in der DM Zone abstellen

    Mfg Templer


    >>Dein Breadfish-Thema im Unterforum ScriptingBase / Scriptingwünsche wurde nicht richtig beantworter?<<
    >>Es handelt sich um ein Programmier Problem und du nicht einfach weiter kommst wo der Fehler sein könnte?<<
    Dann melde dich bei mir über die PN-Funktion indem du den Link zu deinem Breadfish-Themen Problem schickst.
    Voraussetzung:
    Thema älter als 1 Tag und im Breadfish Forum gespostet!

  • Zitat

    Nun ja, ich habe eigentlich ein Ass im Ärmel, was besser ist als mein "Sekundenzähler" im OnPlayerUpdate


    Ein Sekudnenzähler braucht ebenfalls Ressourcen ;)
    Das beste Ass dabei ist und bleibt ein Timer...


    Zitat

    "Wäre bei deiner Möglichkeit OnPlayerUpdate in benützung oder würdest du diesen Callback bei deiner Möglichkeit ganz weglassen?"


    Ganz weglassen,
    definitiv

  • Die No-DM Zone kann man auch für reallife verwenden.. weiter so 8/10.-

  • Zitat

    [OnPlayerUpdate wird] ca alle 0,5 Sekunden aufgerufen

    Es wird ca. 30 mal pro Sekunde aufgerufen. Wie Trooper schon sagte, nimm lieber SetTimer bzw. SetTimerEx.
    Das spart Leistung und verhindert Laggs, die bei Servern mit deinem Include und vielen Usern auftreten können.


    Nicht jeder, der sich für super hält, ist ein Superheld. :love:
    ------------------------------------------------------------------------------------------------

  • Hey,
    danke erstmal, aber du hast bei return ein : und kein ;
    Mfg
    /edit:
    Als ich bei mir das return 1; ganz rausgenommen hab, hatte ich kein Warning mehr..
    Vllt ist das falsch, glaub ich aber nicht .. :D

    Noob

    Einmal editiert, zuletzt von Don ()