Ergebnis 1 bis 5 von 5

Thema: Kleine XP-Script-Sammlung ...

  1. #1

    Kleine XP-Script-Sammlung ...

    ... für alle, die keine Lust haben Ruby zu lernen und trotzdem ein paar mehr Funktionen haben wollen, als der Maker normalerweise bietet. Es handelt sich im Grunde zwar nur um Kleinigkeiten, aber wenn man die mit dem Eventcode scripten wollte, wäre das viel umständlicher. Vielleicht kann der eine oder andere sie ja gebrauchen. Ich weiß nicht, ob die Scripte auch im VX oder Ace benutzt werden können, weil ich dessen Syntax nicht kenne. Ich hab im Code auf allzu kryptische Ausdrücke verzichtet, weil ich nichts von denen halte, wobei das für die Ruby-Uninteressierten wohl sowieso egal ist. Und mir ist bewusst, dass man die Scripte vielleicht hätte besser lösen können, z. B. indem man sie direkt bei Game_Character einbindet, aber für die Funktionalität ist das ja nicht so entscheidend. Falls es Fehler gibt, sagt bitte sofort Bescheid. Falls die Scripte Unsinn sind natürlich auch.

    Um die Scripte zu benutzen, müsst ihr den Code im Spoiler in den Script-Editor einfügen:
    - Script markieren und mit Strg+c kopieren
    - F11 im Maker drücken
    - In der linken Liste ganz nach unten zu Main scrollen
    - Rechte Maustaste, Insert auswählen
    - Beim neuen Eintrag einen beliebigen Namen eingeben
    - Das Script im rechten Bereich mit Strg+v einfügen

    Im Moment gibt es folgende Methoden:

    eventInBereich(event, x1, y1, x2, y2)
    Testet, ob sich das Event mit der ID 'event' innerhalb der Koordinaten befindet. Beim Event 0 wird der Held getestet. 'x1' und 'y1' sind die obere linke Ecke,
    'x2' und 'y2' die untere rechte des Bereiches.

    Aufrufen könnt ihr das Script so:
    - im Eventcode "Conditional Branch" auswählen
    - auf der letzten Seite "Script" anklicken
    - Falls ihr z. B. testen wollt, ob sich Event 1 innerhalb der Koordinaten 0,0 bis 2,2 befindet, gebt ihr Folgendes ein: Sammlung.eventInBereich(1, 0, 0, 2, 2) == true
    - Wenn ihr testen wollt, ob sich das Event nicht innerhalb der Koordinaten befindet, schreibt ihr: Sammlung.eventInBereich(1, 0, 0, 2, 2) == false

    inReichweite(event1, event2, radius)
    Testet, ob das Event mit der ID 'event1' 'radius' Felder oder weniger vom Event mit der ID 'event2' entfernt ist. Beim Event 0 wird wieder der Held genommen.

    Aufrufen könnt ihr das Script so:
    - im Eventcode "Conditional Branch" auswählen
    - auf der letzten Seite "Script" anklicken
    - Falls ihr z. B. testen wollt, ob sich Event 1 3 oder weniger Felder von Event 2 entfernt ist, gebt ihr Folgendes ein: Sammlung.inReichweite(1, 2, 3) == true
    - wenn ihr testen wollt, ob Event 1 außerhalb der Entfernung ist, schreibt ihr: Sammlung.inReichweite(1, 2, 3) == false

    stepTowardEvent(event1, event2)
    Diese Methode funktioniert genauso wie step toward hero, nur dass ein beliebiges Event mit der ID 'event1' zum Event mit der ID 'event2' geht. Beim Event 0 wird wieder der Held genommen.

    Aufrufen könnt ihr das Script so:
    - im Eventcode "Script" auswählen
    - falls ihr z. B. wollt, dass Event 1 zu Event 2 geht, gebt ihr Folgendes ein: Sammlung.stepTowardEvent(1, 2)
    - ihr müsst danach aber je nachdem wie schnell euer Event ist selbst ein Wait eingeben (s. u. bei Schritttempo) und es wird auch nur ein einziger Schritt gemacht.


    Schritttempo (bei höchster Frequenz):
    1: Slowest - Wait 32
    2: Slower - Wait 16
    3: Slow - Wait 8
    4: Fast - Wait 4
    5: Faster - Wait 2
    6: Fastest - Wait 1

  2. #2
    Zitat Zitat von Kelven Beitrag anzeigen
    return false
    true # Wegen Bug vom XP
    Das bringt so aber nichts, das true wird ja nie erreicht.

  3. #3
    Dann tritt das Problem also nur auf, wenn man eine Variable auf false setzt? Ich war mir da nicht so sicher. Es ist auf jeden Fall so, dass der Interpreter, wenn der letzte Befehl ein false liefert, den Code nicht vernünftig ausführt.

  4. #4
    Zitat Zitat von Kelven Beitrag anzeigen
    Dann tritt das Problem also nur auf, wenn man eine Variable auf false setzt? Ich war mir da nicht so sicher. Es ist auf jeden Fall so, dass der Interpreter, wenn der letzte Befehl ein false liefert, den Code nicht vernünftig ausführt.
    Das ist nicht ganz korrekt.
    Es geht darum, dass die Methode als ganzes immer ein "true" zurück liefern muss. In Ruby besitzt jede Methode einen Return-Wert, selbst diejenigen, welche kein "return" im Code stehen haben.
    Der Wert der zurückgegeben wird ist dann immer die Auswertung des letzten Commandos.

    Allerdings ist das natürlich nur dann relevant wenn du die Methode außerhalb des Conditional-Branches verwenden willst.
    Im Übrigen ist dieses Verhalten des Interpreters im XP ein Programmierfehler soweit ich das erkennen kann. Es scheint so als würde es absolut keinem Zweck entsprechen und sei durch unachtsamkeit entstanden. Es könnte natürlich auch sein, dass ich dabei etwas übersehe, aber das scheint mir höchst unwahrscheinlich.

  5. #5
    Halloa.
    Ich versuche im Moment ein Script zu gestalten in dem ein Event eine Sichtlinie hat und wenn der Spieler diese berührt soll ein Event ausgelöst werden. Ich habe mir den XP neulich erst zugelegt und bin daher noch sehr frisch mit all diesen Dingen. Es wäre nett wenn mir jemand ein Tutorial oder ein Skript geben könnte. Ich habe gegoogelt bis die Finger Bluten aber nur kram für den Vx Ace gefunden.

Berechtigungen

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