Zeige Ergebnis 1 bis 2 von 2
  1. #1
    Maps Benutzerbild von Swordman
    Registriert seit
    Okt 2008
    Beiträge
    171
    Likes
    0

    [Bibliothek] Code Ersteller/Leser

    Hiho, für eine Meiner map hab ich einen Code Ersteller bzw. Leser gemacht.

    Er macht folgendes:

    Durch eine Aktion kann man mehrere Werte in einen Code umkompilieren.
    Diesen kann man dann irgendwo speichern, oder kopieren, wie man halt will.

    Eine Andere Aktion liest den Code, und speichert die Werte des Codes in Variablen, die man leicht abrufen kann.

    Ein beispiel:
    Wenn ich z.B die Nummer der auslösenden Spielers, und die Nummer "1" in nem Code speichern will, sieht das so aus:

        Aktionen
    Code erstellen/Lesen - Code Erstellen()
    Neuer Wert
    Code erstellen/Lesen - Element(1,(String((Auslösender Spieler))))
    Code erstellen/Lesen - Element(1,(String(1)))
    Fertigstellen(NUR EINMAL EINSETZEN!)
    Code erstellen/Lesen - Code Fertig stellen(1)


    Die 1 am anfang gibt die Gruppe aus, in der der Code gespeichert wird (der Code wird erstellt, und in einem Slot gespeichert. In diesem fall in Slot 1).

    So, um den Code nun irgendwie zu erhalten (in diesem Beispiel als Nachricht), machen wir folgende aktion:

            UI - (Text((Code Ausgeben(1)))) von (Alle Spieler) im Bereich Untertitel einblenden


    So, doch nun wollen wir den Code auch Lesen.

    In diesem Beispiel muss der Spieler den Code in den chat eingeben:

    code beispiel
    Ereignisse
    Spiel - Spieler Beliebiger Spieler tippt eine Chatnachricht, die "" beinhaltet und Teilweise entspricht
    Lokale Variablen
    Bedingungen
    Aktionen
    Code erstellen/Lesen - Code Lesen((Eingegeben Chat-String),1)


    So. Der Gelesene Code wird wieder in einem Slot gespeichert (nicht in dem selben, wie der erstellte code, man kann also in beiden fällen die 1 verwenden).

    Nun wollen wir jedoch die einzelnen werte erhalten.
    Das machen wir so (im Beispiel werden beide werte Als textnachricht ausgegeben):


    UI - (Text((Element eines Codes ausgeben(1,1)))) von (Alle Spieler) im Bereich Untertitel einblenden
    UI - (Text((Element eines Codes ausgeben(1,2)))) von (Alle Spieler) im Bereich Untertitel einblenden



    Die erste Zahl gibt den Saving Slot aus, und die Zweite Zahl, welches Element ausgegeben werden soll (Also muss man die Reihenfolge beim erstellen des Codes beachten).

    Hier z.B wurde zuerst der auslösende Spieler gespeichert, und als zweites die Zahl "1".

    Also wird nun als erstes die Nummer des Spielers als Nachricht ausgegeben, und danach die Zahl "1".

    Ich habe Im Anhang das System + Beispielmap mit Kommentaren.

    Dieses System wird außerdem in Meiner Map Last Minute für den Editor, und in Last Minute 2 für das Importieren/Exportieren von Selbst erstellten Challenges verwendet.

    Fröhliches Coden
    Geändert von Mietfekatfe (13. April 2013 um 15:13 Uhr)
    Mietfekatfe: I have the weirdest boner right now.


  2. #2
    Ein paar Kommentare dazu:


    • Du solltest den Code nicht in [quote-Tags schreiben. Benutz besser [code oder [gui
    • Dadurch, dass du direkt die Strings speicherst und nicht die Integer machst du es dir schwer, den Code klein zu halten. Das versuchst du ja auch gar nicht, aber wäre vielleicht nicht schlecht, wenn der Code möglichst klein ist. Wenn du um Zahlen zu speichern nicht nur die 10 verfügbaren Ziffern nimmst, sondern auch noch Buchstaben kannst du den Code ein Stück kleiner bekommen. Wenn du Prefix-Codes (oder Blöcke mit fester Länge) verwendest, könntest du dir noch das Trennzeichen sparen.
      Also wenn wenn du die Codes noch kleiner machen willst, gibt es da noch Potential nach oben
    • Wieso muss der Code so viele Trennzeichen am Ende haben? Es sollte doch auch möglich sein, die weg zu lassen. Also man sollte einstellen können, wie viele Elemente der Code hat und nicht auf 30 Elemente fixiert sein.




    Zum Code:

    • In der Funktion "Code lesen" hast du 30 mal das gleiche da stehen, wenn ich das richtig sehe. Pack das doch einfach in eine repeat Schleife, wie du es auch anderen Stellen gemacht hast.
    • Ich habe es nicht ausprobiert, aber es gibt ja die Funktionen um einen String in einem String zu ersetzen und es gibt eine Funktion um das i-te Wort in einem String zu bekommen. Wenn man nun zuerst die Trennzeichen durch Leerzeichen ersetzt mit der ersten Funktion kann man sich mit der zweiten ganz einfach die einzelnen Komponenten geben lassen. So geht es vielleicht etwas schneller als mit deiner Variante, den String von Hand zu teilen. Falls das nicht klappt gibt es ja noch die "Position of Substring" Methode. Die wäre denke ich auch schneller, als jedes Zeichen von Hand durch zu gehen.


    Was mir relativ gut an dem System gefällt ist, wie man es benutzen kann. Also diese Variante mit den Subfunctions finde ich ziemlich cool und kannte ich auch noch nicht. Damit lassen sich die einzelnen Werte sehr gut hinzufügen, da man immer nur ein neues Element hinzufügen muss und nicht immer die richtige Funktion suchen muss.
    ლ(ಠ益ಠლ)
    „Gedanken sind Arschgeigen“            

Forumregeln

  • Es ist dir nicht erlaubt, neue Themen zu verfassen.
  • Es ist dir nicht erlaubt, auf Beiträge zu antworten.
  • Es ist dir nicht erlaubt, Anhänge hochzuladen.
  • Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
  •