Ergebnis 1 bis 20 von 52

Thema: RM 2k3: Block-System funktioniert nicht richtig

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Cherry und Corti haben Recht, du solltest lieber vorher eine Nummer kleiner anfangen und genau verinnerlichen wie jeder Befehl funktioniert und selber versuchen einen Lösungsansatz zu finden.
    Versuche nicht wild drauf los zu skripten, sondern überlege dir erst einen "Pseudo-Algorithmus".

    Dennoch:
    Pass auf, ganz einfach, nach diesem Fall, kann es vier verschiedene Alternativen geben. Die Alternativen hintereinander so auszuführen würde zu einer Überschreibung einer wohlmöglich erfüllten Bedingung führen. Das heißt, dass immer das ausgerüstete Schild von der "WITCH" alles vorher nichtig macht, weil das immer als Letztes ausgeführt wird. Das heißt, wenn man diese Klasse spielt, sollte das eigentlich funktionieren, aber mit den anderen Klassen dann wiederum nicht. Stattdessen musst du dem Maker sagen, dass es Alternativen sind, indem du Bedingungen mit Else-Verzweigungen benutzt.

    Code:
    @> Conditional Branch: [Albert] is in the party
      @> Control Variables: [0001:Shield ID] = [Albert]'s Shield ID
      @>
     : Else
      @> Conditional Branch: [Vance] is in the party
        @> Control Variables: [0001:Shield ID] = [Vance]'s Shield ID
        @>
       : Else
        @> Conditional Branch: [Craise] is in the party
          @> Control Variables: [0001:Shield ID] = [Craise]'s Shield ID
          @>
         : Else
          @> Conditional Branch: [Arthur] is in the party
            @> Control Variables: [0001:Shield ID] = [Arthur]'s Shield ID
            @>
           : Else
            @> Control Variables: [0001:Shield ID] = 0 
            @>
           : Branch End
          @>
         : Branch End
        @>
       : Branch End
      @>
     : Branch End
    @> Conditional Branch: Variable [0001:Shield ID] >= 1
      @> Control Switches: [0001:Shield Control] = ON
      @>
     : Else
      @> Control Switches: [0001:Shield Control] = OFF
      @>
     : Branch End
    Hier wird die Shield ID je nachdem, wer gerade in der Party ist, nach dem aktuellen Helden zugewiesen. Allerdings geht das auch nur so, wenn du wirklich immernur einen einzigen Charakter in der Party hast! (Bei einem ABS üblich, es sei denn Du benutzt NPC-Mitstreiter, was allerdings für einen Amateur zu viel des Guten wäre)

    EDIT: Trotzdem überlege dir bitte Mal, was es mit diesem Befehl @> Control Variables: [0001:Shield ID] = [CHARACTER]'s Shield ID GENAU auf sich hat.

    Geändert von Drakee (02.09.2015 um 22:51 Uhr) Grund: wg. Blödsinn

  2. #2
    Ja, ich weiß ja, dass ihr mir nur helfen wollt & dafür bin ich sehr dankbar. (:
    Allerdings sind für Nicht-Mathematiker Programmiersprachen gar nicht so logisch aufgebaut, wie ihr denkt.
    Z.B. wäre ich nie darauf gekommen, dass ich die Conditional Branches ineinander verschachteln muss, damit das Programm weiß, dass es sich um gleichrangige Alternativen handelt. Ich habe immer alles schön untereinander geschrieben & dachte: "Passt schon."

    @ Drakee Nach einigen Fehlern, die darauf beruhten, dass ich deinen Code einfach nicht richtig gelesen habe, funktioniert dein Code prima. Danke.
    Also, bei "@> Control Variables: [0001:Shield ID] = [CHARACTER]'s Shield ID" würde ich sagen, dass eine Variable, die "[0001:Shield ID]" heißt, gleich der Shield-ID des CHARAKTERs gesetzt wird, wahrscheinlich um in einem zweiten Schritt abfragen zu lassen, ob die Shield-ID einen bestimmten Wert erreicht hat.

  3. #3
    Ich würde dir tatsächlich raten lieber alles untereinanderzuschreiben und weniger zu verschachteln. Ist natürlich immer persönliche Vorliebe. Ich mache dies eben am liebsten genauso, weil es für mich übersichtlicher ist und weniger Codezeilen benötigt. Zudem rutscht das ganze beim Verschachteln immer weiter nach rechts. Gerade bei sehr vielseitigen Abfragen wird das kritisch.
    Das Problem mit dem Überschreiben von bereits erfüllten Bedingungen löst du ganz simpel mit Labeln.

    1)
    2)
    Das sind nun zwei verschiedene Codes.
    Wenn man nur einen Helden in der Party haben kann, dann nimm das erste, da es kürzer ist.
    Wenn man mehrere Partymitglieder haben kann, dann nimm das zweite. Der Unterschied ist einfach, dass dort nicht nur gefragt wird, ob ein Held in der Party ist, sondern auch, ob dieser ein Schild trägt. Also die Variable größer als 0 ist, da 0 kein Schild bedeutet. Dadurch würde solange das Inventar deiner Party überprüft, bis du einen Schild gefunden hast oder eben bereits alle Partymitglieder dran waren.
    Es geht dir ja darum, ob ein Held in der Party einen Schild ausgerüstet hat. Wenn du das mal mit "ja" beantworten kannst, dann interessiert dich der Rest der Party nicht und du überspringst die übrigen Abfragen.

    Label sind sehr nützlich und leicht zu verstehen. Teste es einfach mal. Das wirst du sicher mal gut gebrauchen können.
    So sieht alles gleich aus und habe damit einzelne Blöcke, die eben alles dasselbe machen. Jeder steht für sich und ich kann es so besser erkennen. Persönlich verschachtel ich in der Regel nur, wenn es nötig ist. Wenn z.B. mehrere Bedingungen gleichzeitig erfüllt sein müssen, wie, wenn bestimmte Helden in der Party sein müssen, andere aber nicht. Bei deinem Beispiel aber, ist es nicht nötig. Du möchtest es ja nur bei einem der Helden wissen und der Rest wird überflüssig.
    Für mich funktioniert es so am besten. Ich habe ebenso eher wenig Erfahrung im Programmieren, daher kann ich dich in der Hinsicht schon verstehen. Aber du wirst für dich selbst rausfinden müssen, was dir am meisten liegt.

  4. #4
    @Nagasaki Die Idee mit den Labels gefällt mir sehr gut, da dadurch der Code schön übersichtlich bleibt. Danke.

  5. #5
    Labels sind cool, aber beim Copy und Paste kommts schnell mal vor, dass man ein Label doppelt hat und dann baut man schnell mal schleifen und Sachen, die so nicht sein sollen. Ich benutze Labels sehr gerne, die sind super. Nur wenn mal was nicht klappt, oder sich komisch verhält, schau dir auf jeden Fall deine Labels an.

  6. #6
    Zitat Zitat von Norpoleon Beitrag anzeigen
    Also, bei "@> Control Variables: [0001:Shield ID] = [CHARACTER]'s Shield ID" würde ich sagen, dass eine Variable, die "[0001:Shield ID]" heißt, gleich der Shield-ID des CHARAKTERs gesetzt wird, wahrscheinlich um in einem zweiten Schritt abfragen zu lassen, ob die Shield-ID einen bestimmten Wert erreicht hat.
    Speziell auf deinen Code, der sich selbst überschrieben hat, heißt es, dass durch den Befehl die ID des ausgerüsteten Shields in der Variable gespeichert wird, AUCH WENN der Charakter sich nicht in der Party befindet.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •