[TRIAL]RaceRun - Eine neue Art des Rennens

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

  • Inhalt
    1. Was ist RaceRun?
    2. Einzelne Erklärungen
    3. Videodarstellung
    4. Wieso Trial-Version?
    5. What do you mean?
    6. Downloads
    7. Installation



    Was ist RaceRun?
    RaceRun ist eine Erweiterung vom Script (Filterscript),
    welche sich zu Aufgabe setzt, dynamische Rennen zu erstellen und zu fahren.
    Die optimierten Bediungen machen es dem Benutzer leicht dieses Filterscript zu verwenden.
    Jedoch ist diese Version eine Trial Version und verfügt nicht über alle Features.



    Einzelne Erklärungen
    Mit dem System ist es dir möglich dynamische Rennen zu erstellen, löschen, fahren und stoppen.
    Das Administrationsmenu wird mit dem Befehl '/rrmenu' aufgerufen.


    Wenn du ein Rennen erstellen willst, bleiben dir 2 Möglichkeiten.
    Du kannst es über die Map (Marker) oder über das manuelle Abfahren erstellen.
    Das Ergebnis ist jedoch das gleiche. Beliebig viele Autos können gewählt werden und
    somit letztendlich auch die Slot Anzahl des einzelnen Rennens.
    Die aktuelle Position, wo man /rrmenu eingegeben hat, wird als Startposition verwendet und somit auch als Ziel.
    Hast du alles gemacht ist das Rennen fertig und startbereit.


    Als normaler User kannst du an den Rennen Teil nehmen.
    Wenn ein Event aktiviert wird, erscheint eine Globale Nachricht im Chat mit einem akustischem Signal.
    Mit dem Command '/rrtele' nimmst du am aktuellem Rennen teil.
    Warte bis die Ampel umschaltet. Der Motor startet von selbst!



    Videodarstellung

    Spoiler anzeigen
    Externer Inhalt www.youtube.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Spoiler anzeigen
    Für unsere Handy-Benutzer: http://youtu.be/JGG1EtFwMxA


    Wieso Trial-Version?
    Diese Version ist unvollständig, jedoch in sich selbst abgeschlossen.
    Die Voll-Version wird ggf. später verkauft.
    Hier kommen neue Features, kostenlose Erweiterungen sowie weitere grafische Umgebungen dazu.



    What do you mean?
    Deine Meinung ist mir sehr wichtig!
    Deswegen schreibe Verbesserungen bezüglich des Inhaltes in dieses Thema.
    Verbesserungen zum Script-technischen bitte an mich per PN!
    Ich weiß, dass die Handhabung mit der Dateiauslesung leichter geht.
    Jedoch habe ich mir als Ziel gesetzt so wenig Includes / Plugins zu verwenden, wie es nur geht.



    Downloads
    direkter Download
    Virustotal
    Pastebin
    Online-Anleitung (Als html-Datei im Paket enthalten)



    Installation
    Settings:
    //====================SETTINGS=====================//
    #define MAX_PLAYERS 50 //Maximale Anzahl an Slots auf dem Server -> Bei Bedarf ändern!
    #define MAX_RACECARS 15 //Maximale Anzahl von Autos bei einem Rennen
    #define MAX_RACES 10 //Maximale Anzahl von Rennen, die erstellt werden können
    #define MAX_CHECKPOINTS 50 //Maximale Anzahl von Checkpoints, die abgefahren werden können.
    #define MAX_LAPS 20 //Maximale Anzahl von Runden, die gefahre werden können.
    #define permissions 0 //Permissions verwenden? -> Ob bestimmte Commands nur berechtigte Leute ausführen können. (Siehe Callback "Permissions")
    #define command "/rrmenu" //Öffnen des Haupt-Dialogs


    #define mcolor 0xFFFFFFFF //Farbe der Chat-Nachrichten
    #define avehicle 411 //AutoID zum erstellen eines Rennen
    #define rvehicle 494 //AutoID für die Spieler zum Rennen fahren
    #define rvcolor1 -1 //Farbe1 für die Autos zum Rennen fahren
    #define rvcolor2 -1 //Farbe2 für die Autos zum Rennen fahren
    //=================SETTINGS-ENDE===================//
    Administrationsrechte (Hierfür muss in den Settings permissions aktiviert sein:
    Du kannst die Admin Befehle sichern, sodass nur berechtigte User Zugriff haben.
    Füge das in dein Script ein, um Spieler die Berechtigung zuzuteilen. (Letzter Parameter: 1=berechtigt / 0=nicht berechtigt)
    CallRemoteFunction("Permissions","ii",playerid, 1/0);

    Danke an meinen Betatester: @Spanky:


    /Edit: Video hinzugefügt

    5 Mal editiert, zuletzt von heyhooo ()

  • Joa, bidde bidde.


    Ist ne' ganz nette Spielerei für Reallife Server, gerade schon aus dem Grund weil man damit gut einige Events veranstalten kann. Lässt sich super in andere Scripts integrieren und verwalten, sowie auf andere Strukturen anpassen (bspwl. auf einzelne Fraktionen oder Admins).


    Gibt auf jedenfall 10/10 Punkte von mir.


    lg

    • Offizieller Beitrag

    Ich glaub du meinst "Trial"-Version


    Schicke Idee, ist aber für mich nichts neues


    „Nicht das, was du nicht weißt, bringt dich in Schwierigkeiten, sondern dass, was du sicher zu wissen glaubst, obwohl es gar nicht wahr ist.“
    Mark Twain

    ---
    ICH BIN NUR HIER UM LEUTE ANZUSCHREIEN

  • Warum nutzt man in Zeiten von SII , y_ini oder DJson noch DINI ?


    Mal nur so nebenbei, wenn ich sowas wieder sehen


    new win[MAX_RACECARS] = -1;


    da könnte ich auf meine Tastatur kotzen.


    Das funktioniert nicht du setzst lediglich den ersten index, daher initalisiert man das arrays auch anders.
    new win[MAX_RACECARS] = {-1,...};

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Wenn ich sowas lese, brech ich gleich ins Essen.
    enum Daten
    {
    Rank,
    Vehicle,
    Edit,
    Run[30],
    pos,
    Auto,
    runcar[MAX_RACECARS],
    check,
    round,
    inrace
    }
    new pDaten[MAX_PLAYERS][Daten];

    new Float:point[MAX_CHECKPOINTS][3];
    new cars[MAX_RACECARS];
    new win[MAX_RACECARS] = -1;
    new dtimer[MAX_PLAYERS];


    Erst sieht man eine Struktur(enum) und dann einen Haufen von Variabeln, die in einer Struktur viel besser aufgehoben wären.
    bspw. - was macht "dtimer" außerhalb der Struktur ?


    Was macht runcar in der Spielerstruktur ?
    Hat jeder für jedes Rennen anderes Auto ?


    Warum wird keine Struktur für Racecars genutzt ?
    Warum legt man die Races nicht sinnvoll ab, sondern lädt sie aus den Checkpoints ?
    Und warum lädt man jedes mal, wenn ein Rennen gestartet wird, die Daten aus Datein ?


    Macht man sich keine Gedanken um seinen Code ? :huh:

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Beitrag von AirM4X ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • Ach komm heyhooo, bitte optimiere mal deinen code, du bist doch kein Anfänger mehr :)


    Wie gesagt die Filespeicherung wird bald komplett optimiert.
    Ansonsten wüsste ich nicht was du meinst.


    /e:
    @BlackAce:
    Brech dir bitte erstmal in dein Essen, :pinch:
    bei dtimer magst du recht haben, werde es auch ändern.
    runcar ist bewusst in der Struktur, da es so möglich ist, 2 Renne gleichzeitig zu erstellen.
    Wofür brauche ich eine STruktur für RaceCars, wenn ich es so genauso gut kann?
    Außerdem fertige ich erst dann Strukturen an, wenn ich es für nötig halte.
    Die Byte Anzahl, die verbraucht wird ist genauso groß.

    Einmal editiert, zuletzt von heyhooo ()

  • Beitrag von Kasakow ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • runcar ist bewusst in der Struktur, da es so möglich ist, 2 Renne gleichzeitig zu erstellen.


    Was hat das damit zu tun ?
    Wieso ordnest du die Autos den Spielern zu und nicht den Rennen ?
    500 * 10 vs 10 * 10


    Zuviel zum Byteverbrauch :whistling:


    Ich rate dir auch, deine Eingaben zu überprüfen
    in diesem Teil:
    case DIALOG_AFTERE:
    {
    if(!IsNumeric(inputtext)) return ShowPlayerDialog(playerid, DIALOG_AFTERE, DIALOG_STYLE_INPUT,"Strecke hinzugefügt!","{BB0000}Hier müssen Zahlen eingegeben werden!\n{FFFFFF}Nun müssen die Positionen der Autos gespeichert werden!\nGebe nun die Anzahl der Autos für das Rennen ein!","OK","");
    new Float:posi[4],Float:po[6],text[50],spll[3][10];
    GetPlayerPos(playerid,posi[0],posi[1],posi[2]);
    GetPlayerFacingAngle(playerid, posi[3]);
    pDaten[playerid][Auto] = strval(inputtext);
    pDaten[playerid][runcar][pDaten[playerid][Auto]] = CreateVehicle(rvehicle,posi[0]+5.0,posi[1]+5.0,posi[2]+3.0,posi[3],rvcolor1,rvcolor2,-1);
    kann es zu einem Array out of Bounds bzw. Buffer underflow (negativer Wert) kommen.


    Zumal wäre es auch besser sscanf zu nutzen(fast jeder Server nutzt mitlerweile das sscanf Plugin)


    Wofür brauche ich eine STruktur für RaceCars, wenn ich es so genauso gut kann?


    Du brauchst es nicht, aber wozu 3 Scriptstile, ich sehe 3, nutzen und nicht einen ?
    Im allgemeinen sieht sowas immer zusammenkopiert aus und lässt sich für andere, sehr schwer nachvollziehen.

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • @BronX: Siehst du? So eine Idee hatte ich damals, aber leider wurde es nicht umgesetzt. Nun ist jemand anderes darauf gekommen.


    Dadurch lässt sich eine neue Fraktion erstellen. Illegale Straßenrennen und die Polizei muss es verhindern. Tolle Arbeit.

  • Beitrag von Senetral ()

    Dieser Beitrag wurde gelöscht, Informationen über den Löschvorgang sind nicht verfügbar.
  • do.de - Domain-Offensive - Domains für alle und zu super Preisen