Da ich schon länger mit dem RPG-Maker XP arbeite hab ich schon sehr viele Skripte geschrieben.

Einige davon stelle ich hier frei zur Verfügung. Wenn ihr sie in euer Projekt einbaut vergesst den Crediteintrag nicht.

Inhalt:


Collisions-Skript

Maker-Version: XP

Skript-Version: 1.3

Da der Maker ein starkes Defizit in der Kollisionserkennung hat kommt es bei größeren Maps häufig zu Ruckeln.

Abhilfe soll da dieses Skript bringen. Getestet: (38 statt 8 Frames) bei 200 Events.

Das Script erneuret alle Funktionen, die Event-Positionen prüfen oder ändern. Das sollte besonders bei anderen Skripten, welche Bewegungsfunktionen überschreiben berücksichtigt werden.
Events, die „ghost“ im Namen tragen werden als Ghost-Objekt gehandelt.

Objekt-typ „Ghost“.

Ghost sind alle Events, die „ghost“ im Namen haben. (Auch der Spieler, hat dort aber keinen Einfluss)
Eine Interaktion mit Ghost-Events ist nicht möglich. Umgekert schon.
So kann z.B. eine Maus Wände und Events erkennen ohne, dass sie für solche ein Hindernis darstellt.
Event-Tiles oder Vögel, welche keinerlei Interaktionen benötigen erleichtern somit anderen Events die Kollisionsabfragen.

Quellcode


Spiegel-Skript

Maker-Version: XP

Skript-Version: 1.0

Es lässt ein Event andere Events spiegeln.

Wegen der perspekivischen 2D-Sicht kann die Umgebung nicht gespiegelt werden, und muss simuliert werden.
Auch ist es nicht ratsam komplexe Objekte spiegeln zu lassen.

Objekte mit „direction_fix“ werden im Spiegel nicht spiegelnd dargestellt. (z.b. für Kisten)

Anwendung:

  1. Male einen Spiegel. (Nur die Spiegelfläche darf/muss transparent sein)
  2. Setze mit dem Chipset eine Spiegelwelt hinter den Spiegel.
  3. Skript einfügen.
  4. Schreibe in ein Skript-Event:
    Mirror.new(char_id, höhe)

    char_id: ID des Spiegel-Events

    höhe: höhe des Spiegels relativ zum Boden. (Optional)

  5. weise dem Event den Trigger Autostart zu. (Nicht Parallelprozess!)

Quellcode


Mapimport-Skript

Maker-Version: XP

Skript-Version: 1.0.1

Dieses Skript soll das Arbeiten von mehreren Standorten aus an einem Projekt erleichtern.
Dabei stellt der Import der Maps gewiss das Hauptproblem dar.

Bisher werden dabei folgende Dinge berücksichtigt:

Aktualisierungen:
– Teleport-Events zwischen den zu ladenen Maps.

Ressourcen:
– Charsets (EventPage-Zuweisungen + Änderung durch SetMoveRoute->ChangeGraphic)
– Pictures
– Tilesets /Autotiles

projektordner: Der Ordner des Projektes von dem Importiert werden soll z.B. „C:/Users/TheWhiteShadow/Documents/RPGXP/Project“

map_id: (Optional) ID der Map, die Importiert werden soll oder ein Array mit den ID’s.

Wichtig: Nach dem Ausführen muss das Projekt neu geladen werden!

Quellcode


View-Range-Skript

Maker-Version: XP

Skript-Version: 1.0

Abhängigkeit: Collisions-Skript

Das Skript gibt an, ob sich ein Event im Sichtkegel eines anderen befindet.

Dabei berücksichtigt es alle Hindernisse, die:
– Unpassierbare Events mit sprites sind.
– einen Terraintag im „WALL_TAG“-Array (Skript-Zeile 3) haben, welches beliebig angepasset werden kann.

Es wird kein kompletter Sichtkegel berechnet, was sich positiv auf die Performance auswirkt.
Benutzen lässt es sich am besten über die Scriptfunktion vom „Conditional Branch…“

Funktionen:

in_sicht?(ev1, ev2, winkel , dist)
ev1: Event-ID des sehenden Events
ev2: Event-ID des gesehenden Events
winkel: Sichtwinkel in Grad (60-90 sind optimal)
dist: Maximale Entfernung in Feldern

player_in_sicht?(ev, winkel, dist)
ev: Event-ID des sehenden Events
winkel: Sichtwinkel in Grad (60-90 sind optimal)
dist: Maximale Entfernung in Feldern

Die Funktionen sind so in der Interpreter-Klasse vorhanden.

Verwendungsbeispiel in einem Event:

Conditional Branch: Script: player_in_sicht?(@event_id, 75, 8)
   "Aktion, wenn Spieler entdeckt wurde"
 : Branch End

* „@event_id“ zeigt auf die ID des eigenen Events.

Quellcode


Maus/Tastertur-Skript

Maker-Version: XP

Skript-Version: 1.3

Im Gegensatz zu vielen Maus-Skripten im Internet bietet dieses hier eine bereits integrierte Mausunterstützung in Menüs und Kampfsystem.
Dazu einige nützliche Funktionen zur einfachen Benutzung über den Editor.
Die Maus kann über „MOUSE_ENABLED“ wahlweise an(standart) oder ausgeschaltet werden.
Wenn kein explizites Cursor-Bild über „Input.set_cursor“ definiert wurde wird die cursor.png datei aus dem Pictures-Ordner genommen, wenn sie vorhanden ist.
Das Script funktioniert zwar auch ohne, aber im Vollbild sieht man sonst die Maus nicht.

Input.set_cursor(source, ox = 0, oy = 0)
source: kann eine Datei im picture-Ordner sein oder ein Bitmap.
ox /oy: Offset oder auch Aufhängung des Bildes. (optional)

Für den Editor gibt es 3 weitere Möglichkeiten zur Einbindung:

mouse_over_pic?(id)
id: picture-nummer

gibt true zurück, wenn die Maus über dem Picture ist, andernfalls false.

mouse_over_event?(id)
id: event_id (0 für den Player)

gibt true zurück, wenn die Maus über dem Event ist, andernfalls false.

MouseEvent.new(x, y, width, height, event_id, button = Input:: VK_LBUTTON)
x, y, width, height: Rechteck für den Eventbereich.
event_id: id des Commonevents, das aufgerufen werden soll.
button: Taststur-/Maus-Taste, die für die Aktivierung gedrückt werden muss. (optional)

erstellt ein Mausevent, welches bei Aktivierung ein Commonevent aufruft und gibt dieses zurück. (wichtig um es wieder zu löschen)

event.dispose
löscht das Event wieder
zum löschen aller Events kann „Input.delete_event(:all)“ aufgerufen werden.

Quellcode


Update-Maker-Skript

Maker-Version: XP

Skript-Version: 1.1

Jeder, der ein größeres Spiel veröffentlicht hat wird es sicher kennen, Bugs die so manchen begeisterten RPG-Spieler schnell die Lust am Spiel rauben.
Ein Update ist wegen der Archivdatei nicht einzeln möglich und erneut hunderte von MB runterladen, weil ein Event falsch läuft ist nicht jedermanns Sache.
Deshalb hab ich mir überlegt wie man dieses Problem möglichst bequem lösen kann und präsentiere nun meine Lösung:
Sie Funktioniert für XP und VX und eingeschränkt auch für die älteren Maker.

Beinhaltend:

Ein Updater-Manager

Ein FTP-Updater (Die Projektdateien dazu sind unauffindbar)

Ein Update-Skript

Der Update-Manager ist in C# geschrieben und benötigt .Net 2.0
Damit lassen sich 2 Projekt-Versionen vergleichen und alle geänderten Dateien ausfindig machen.
Dazu am Besten auf „Projekt abgleichen“ gehen und die alte und neue Version vergleichen lassen, indem eine beliebige Datei aus dem Projektordner gewählt wird.
Anschließend auf „Erstellen“ klicken und den Inhalt des erstellten „Update“-Ordners auf den Server packen.
zusätzlich erlaubt es nachträgliche Änderungen im Skript. Wichtig ist, dass „Codieren“ aktiviert sein muss, wenn das Spiel verschlüsselt wurde.
Sounds lassen sich ebenfalls updaten und bei unverschlüsselten Spielen auch die Bilder.
Link wird bei Gelegenheit erneuert. Bei Bedarf kann auch nachgefragt werden.

Das Skript gibts hier: (Nur bei verschlüsselten Spielen benötigt)

!!! Wichtig !!!
Es muss in der Main-Funktion Update.check aufgerufen werden um es zu starten.
Außerdem müssen im Skript die load_data-Aufrufe durch Update.load ersetzt werden.

Scene_Title (alle Einträge unter main (XP) bzw. load_database (VX))
Game_Map (1x im setup)

Aus kompatiblitätsgründen hab ich es nicht implementiert.

Edit: Nicht vergessen die Verschlüsslungssequenz „KEY = [1, 2, 3, 4, 5, 6, 7, 8]“ mit dem Update zu synchronisieren, sonst können die Daten nicht gelesen werden.

Quellcode


Multi-Tilset-Skript

Maker-Version: VX!

Skript-Version: 1.0

Da der VX nur 5 Tilesets verwalten kann hab ich eine provisorische Abhilfe geschrieben um diese Einschränkung zu umgehen.
Für jede Map, die eigene Einstellungen haben soll, kann eine seperate Grafik mit der Map-ID hinzugefügt werden.

Außerdem ist für die Kollisions-Daten eine „System.rvdata“-Datei für jede Map, mit anderen Grafiken dem Data-Ordner vom Spiel beizufügen.
Alle Maps ohne diese Dateien benutzen die Standard-Einstellungen vom Spiel.

Ab Besten kann man die in einem Zweitprojekt modifizieren und ins Hauptspiel einfügen.

Beispiel: Map004
TileA1_004.png
TileA2_004.png

System004.rvdata

Quellcode

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert