Home Risen Risen2 Risen3 Forum English Russian

Register FAQ Calendar Today's Posts
Page 1 of 2 12 Last »
Results 1 to 20 of 37
  1. #1 Reply With Quote
    Legende JFaron's Avatar
    Join Date
    Sep 2010
    Posts
    7,179
    HINWEISE
    • Es ist von größter Wichtigkeit Risen nach Möglichkeiten nicht in den normalen Programmen zu installieren. Im Idealfall einfach auf eine eigene Partition oder in einem Ordner wie C:\Games. Der Hintergrund ist denkbar einfach: Im Risen-Verzeichnis werden am laufenden Band Dateien geändert, entweder von irgendwelchen Tools oder Risen selbst. Standardmäßig werden dazu (unter Win7 und höher) Administratoren-Rechte gefordert. Glaubt mir an dieser Stelle: Es ist einfacher das Spiel einmal "richtig" zu installieren, als immer alles als Admin zu starten. Außerdem ist es für uns so einfacher euch zu helfen.

    Videos

    Einstieg (Kuchenschlachter)

    Einem namenlosen NPC einen Namen geben (Kuchenschlachter)

    Spacern (Welt befüllen) (Kuchenschlachter)

    Moddateien vom Original abgrenzen (Kuchenschlachter)

    Levelmesh erweitern (Kuchenschlachter)

    Geschriebene Tutorials


    Dokumentationen


    Anderes

    Dieser Thread ist gleichermaßen zum Sammeln als auch zum Diskutieren gedacht. Themenspezifische Fragen falls möglich bitte in den entsprechenden Threads, sonst einfach einen erstellen.
    JFaron is offline Last edited by JFaron; 21.11.2016 at 15:25.

  2. #2 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    Erstellen einer neuen, leeren Welt

    Voraussetzungen:

    Vorkenntnisse:

    1. Vorbereitung

    Welche Welt geladen wird, hängt von den Parametern ab, mit denen die Risen.exe gestartet wird. Werden keine Parameter angegeben, so wie es der Fall ist, wenn wir Risen ganz normal starten, dann geht das Spiel von folgenden Standardparametern aus:
    Code:
    -mnt=mountlist_packed.ini -projectfile=Projects.prj -worldfile=World
    'World' ist der Name der Standardwelt. Wollen wir in einer eigenen Welt spielen, sagen wir 'Epic', müssen wir der Risen.exe also diese Parameter übergeben:
    Code:
    -mnt=mountlist_packed.ini -projectfile=Projects.prj -worldfile=Epic
    Am einfachsten bekommen wir das hin, indem wir uns eine neue Verknüpfung zur Risen.exe auf dem Desktop anlegen, sie in 'Epic' umbenennen und (nach einem Rechtsklick) unter Eigenschaften > Verknüpfung > Ziel ein Leerzeichen plus den eben gezeigten Text ganz am Ende der Zeile einfügen. Über diese Verknüpfung kann man Risen nun mit der Welt 'Epic' starten. Die normale Risen-Verknüpfung funktioniert natürlich weiterhin.

    Wichtig: Wenn Risen unter C:\Programme oder einem anderen geschützten Ordner installiert ist, dann muss in allen Verknüpfungen zur Risen.exe unter Rechtsklick > Eigenschaften > Kompatibilität noch das Häkchen bei 'Programm als Administrator ausführen' gesetzt werden. (Insbesondere bei der Epic-Verknüpfung.)

    Als nächstes entpacken wir mit Risenaut die projects.pak aus Risen/data/common. Den entpackten 'projects'-Ordner benennen wir um in '_projects', damit Risen nicht die hundert Dateien darin lädt. Wir erstellen die beiden leeren Ordner Risen/data/common/meshes und Risen/data/common/projects und kopieren in den projects-Ordner folgende drei Dateien hinein:

    • _Intern.lrent (aus _projects/World/_System)
    • Projects.prj (aus _projects)
    • SysDyn_{C3960F11-2A7F-42BA-B9F6-5D8BFA392E82}.lrent (aus _projects\World)

    Bei allen dreien noch den Schreibschutz entfernen, dann kann es losgehen.

    2. Die Welt erstellen

    Wir starten Risen über die Epic-Verknüpfung und drücken die Tastenkombination Strg+Alt+NumPad0, um den Cheatmodus zu aktivieren. In der Konsole tippen wir World CreateWorld Epic ein und bestätigen mit Enter. Wenn alles geklappt hat, müsste die Ausgabe "Created new world." lauten, die neue Welt ist also bereit - fast.

    Erst müssen wir noch einmal zurück in den Explorer wechseln (Risen lassen wir aber laufen!), wo wir feststellen, dass es im projects-Ordner einen neuen Unterordner namens Epic gibt. Eine der Dateien darin hat einen recht langen Dateinamen, den kopieren wir in die Zwischenablage und geben ihn der SysDyn_{C3960F11-2A7F-42BA-B9F6-5D8BFA392E82}.lrent, die wir zuvor nach projects kopiert hatten. (Die Endung .lrent lassen wir aber unverändert.) Die _Intern.lrent benennen wir ebenfalls um, und zwar in _Intern_Epic.lrent.

    Nun können wir zurück zur Risen.exe wechseln und ein neues Spiel starten. Sobald die Welt geladen ist, speichern wir sie per World Save. Wenn wir die Maus etwas nach oben bewegen, kommen jede Menge Bäume ins Bild, die sind ein Überrest aus der Originalwelt den wir über die SysDyn_{...}.lrent "eingschleppt" haben. Um die Bäume zu entfernen, öffnen wir wieder die Konsole und führen Editor CreateSpeedTreeBillboards aus. Noch hat sich nichts verändert aber beim nächsten Spielstart ist die unerwünschte Flora dann verschwunden.

    Was fehlt ist der Held und der befindet sich in der _Intern_Epic.lrent, die noch nicht Teil der neuen Welt ist. Wir führen also World AddSector _Intern_Epic aus (das erstellt eine _Intern_Epic.sec) und anschließend World AddLayer _Intern_Epic _Intern_Epic, das fügt dem eben erstellten Sektor die .lrent hinzu. Es reicht übrigens, das "_Intern_Epic" nur einmal selbstständig einzutippen, danach kann man die AutoVervollständigung (TAB) nutzen.

    Im Großen und Ganzen war's das auch schon, per F12 verlassen wir das Spiel. Die neue Welt ist fertig und ab dem nächsten Programmstart spielbar!

    3. Aufräumen

    Damit alles schön übersichtlich bleibt, verschieben wir die Sys_Dyn{...}.lrent nach Epic, wo sich auch die Sys_Dyn{...}.sec befindet. Die _Intern_Epic.lrent kommt zusammen mit der gleichnamigen .sec in einen neuen Unterordner: Epic/_System.
    Baltram is offline Last edited by Baltram; 12.05.2015 at 19:40.

  3. #3 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    Vegetation Painting mit Script_Extensions

    Vorkenntnisse:
    Grasbüschel, Blumen, kleine Steinchen und andere Kleinstobjekte die tausendfach in der Welt vorkommen sind keine einzelnen Entities, da das viel zu viel Leistung und Speicherplatz kosten würde. Stattdesen werden von diesen Objekten lediglich die Koordinaten und ein paar wenige Eigenschaften gespeichert und sie werden in einer großen "Sammel"-Entity zusammengefasst. Diesen großen Entities - man kann sie Vegetations-Entities nennen - besitzen ein eCVegetation_PS-PropertySet, das ein unsichtbares Gitter enthält, in dem alle VegetationMeshes (Pflanzen/Steinchen/etc.) ihren Platz haben.

    Um VegetationMeshes in diesem Gitter zu setzen, gibt es eine sehr praktische Methode, das Vegetation Painting: Man fährt mit einem sogenannten VegetationBrush (Vegetationspinsel) über die Spielwelt und "malt" die VegetationMeshes auf, so ähnlich wie die Sprühpistole in Paint, nur dreidimensional.

    A) Vegetation Painting-Features von Script_Extensions

    Templates:

    • _VegBrush (dient als Grundlage für eigene Vegetationspinsel-Templates)
    • _Vegetation (spawnt man 1x in Vegetations-Layern - das ist die Vegetations-Entity)

    Konsolenbefehle:
    Code:
    Editor ExportVegetationMeshes <Dateiname> <Optional: GUID einer Vegetations-Entity oder Name eines Vegetationspinsels>
    Erstellt in %localappdata%\Risen\Vegetation eine Textdatei mit einer Liste aller VegetationMeshes, die Teil der aktuellen Spielwelt, der angegebenen Vegetations-Entity oder des angegebenen Vegetationspinsels sind.

    Code:
    Editor ImportVegetationMeshes <Dateiname> <Vegetationspinsel>
    Importiert Vegetationsmeshes aus %localappdata%\Risen\Vegetation\<Dateiname>.txt und weist sie dem angegebenen Vegetationspinsel zu.

    Vegetation Paint-Modus:

    Die Vegetationspinsel-Templates organisiert/ordnet man ganz normal per Entity-Filter. Wählt man im Spawn-Modus ein Vegetationspinsel-Template aus, wird der Vegetation Paint-Modus aktiv:

    • Hält man Strg gedrückt, bewegt sich die Kamera nicht mehr, so dass man bequemer den Pinsel bewegen kann
    • Per Strg + Mausrad kann man durch die verschiedenen Vegetations-Meshes scrollen, die zum aktuellen Pinsel gehören.
    • Per Alt + Mausrad kann man die Pinselgröße ändern.
    • Linke Maustaste aktiviert den Pinsel (man kann dann bei gedrückter Maustaste die Vegetation verteilen)
    • Linke Maustaste + Alt aktiviert den Lösch-Modus (Radiergummi)
    • Rechte Maustaste aktiviert nur das Zentrum des Pinsels
    • Rechte Maustaste + Alt aktiviert den "sanften" Lösch-Modus (es können nur VegetationMeshes vom aktuellen Typ entfernt werden)

    Außerdem kann man andes als im normalen Spawn-Modus per Leertaste den Eigenschaften-Editor für den Pinsel öffnen und die Variable #e benutzen (sie hält die Pinsel-GUID).

    B) Allgemeines

    1. Vegetation-Meshes sind in Script-Extensions Zeichenketten dieser Form: Brush_Plant_Grass_02 35.8271 0.1500 1 1

    • Name der ._xmsh-Datei in data\common\meshes\Objects_Brushes_01
    • Minimaler Abstand in cm zwischen zwei Instanzen von diesem Mesh
    • Windstärke zwischen 0 und 1, für feste Objekte wie Steine/Äste immer 0 (tatsächlich gibt es keinen sichtbaren Unterschied zwischen verschiedenen Werten größer 0)
    • 0 oder 1, bei 1 werden die Rückseiten der Polygone des Meshs mit dargestellt. 1 macht z.B. Sinn bei Gras, bei einem Stein aber nicht, weil man in dem Fall die rückseitigen Flächen nur sehen könnte, wenn man im Innern des Steins wäre.
    • 0 oder 1 (eEVegetationMeshShading_MeshNormal oder eEVegetationMeshShading_EntryOrientation - Auswirkung unbekannt, im Zweifel 1 wählen)

    Hier eine vorgefertigte VegetationMesh-Liste für alle, die sich den Aufwand sparen wollen, eine eigene zusammenzustellen:
    Spoiler:(zum lesen bitte Text markieren)
    Code:
    Brush_Branch_Small_01 60.0 0.5 0 1
    Brush_Branch_Small_02 60.0 0.0 0 1
    Brush_Forest_Groundstuff_01 50.0 0.5 0 0
    Brush_Forest_Groundstuff_02 100.0 0.5 0 1
    Brush_Forest_Twigs_01 50.0 0.5 1 1
    Brush_GoundIvy_01 80.0 0.5 0 1
    Brush_Plant_DungeonGrass_01 20.0 0.5 1 1
    Brush_Plant_DungeonGrass_02 20.0 0.5 1 1
    Brush_Plant_DungeonGrass_03 30.0 0.5 1 1
    Brush_Plant_ForestLeaf_01 12.0 0.5 1 1
    Brush_Plant_ForestLeaves_Cluster_01 80.0 0.5 1 1
    Brush_Plant_Grass_02 45.0 0.5 1 1
    Brush_Plant_Grass_04 45.0 0.5 1 1
    Brush_Plant_Grass_05 50.0 0.5 1 1
    Brush_Plant_Grass_Green_01 45.0 0.5 1 1
    Brush_Plant_Herb_01 35.0 0.5 1 1
    Brush_Plant_Herb_02 50.0 0.5 1 1
    Brush_Plant_Herb_03 30.0 0.5 1 1
    Brush_Plant_Herb_04 30.0 0.5 1 1
    Brush_Plant_Herb_05 40.0 0.5 1 1
    Brush_Plant_Herb_06 50.0 0.5 1 1
    Brush_Plant_Herb_07 40.0 0.5 1 1
    Brush_Plant_Herb_08 40.0 0.5 1 1
    Brush_Plant_Herb_09 35.0 0.5 1 1
    Brush_Plant_Herb_10 30.0 0.5 1 1
    Brush_Plant_SmallBushes_01 90.0 0.5 1 1
    Brush_Plant_SmallBushes_02 95.0 0.5 1 1
    Brush_Plant_SmallBushes_03 110.0 0.5 1 1
    Brush_Plant_StrawGrass_01 55.0 0.5 1 1
    Brush_Plant_StrawGrass_02 50.0 0.5 1 1
    Brush_Plant_Thorns_01 40.0 0.5 1 1
    Brush_Plant_Twigs_01 100.0 0.5 1 1
    Brush_Plant_White_Flower_01 40.0 0.5 1 1
    Brush_Plant_White_Flowers_Cluster_01 45.0 0.5 1 1
    Brush_Stone_01 40.0 0.0 0 0
    Brush_Stone_02 60.0 0.0 0 0
    Brush_Stone_Brick_01 5.0 0.0 0 1
    Brush_Stone_Brick_02 7.0 0.0 0 1
    Brush_Stone_Brick_03 7.0 0.0 0 1
    Brush_Stone_Brick_04 9.0 0.0 0 1

    2. Jede Vegetations-Entity (Template: _Vegetation) benötigt einen eigenen Layer (.lrent). Die Position der Vegetations-Entity sollte 0/0/0 sein. Für kleinere Welten ist eine einzige Vegetations-Entity ausreichend.

    3. Um im Vegetation Paint-Modus Vegetationsobjete setzen oder löschen zu können, muss der aktuelle Layer (#l) der Vegetations-Layer sein.

    4. Per Leertaste lässt sich der aktuellen Pinsel bearbeiten. Die wichtigsten Eigenschaften von eCVegetationBrush_PS:

    • Placement: Gibt an was passiert, wenn ein VegetationMesh dort erzeugt wird, wo ein anderes "im Weg" ist. DistanceSelf, DistanceOther, oder RemoveOther möglich.
    • Density: Gibt an, wie dicht die Vegetations-Meshes in der Pinselfläche verteilt werden (soweit es der o.g. minimale Abstand zulässt).
    • UniformDistribution: Bei 'False' werden bereits gesetzte VegetationMeshes nicht in die Auswertung der "Density" mit einbezogen.
    • Probability*: Mit diesen Eigenschaften kann man herumexperimentieren, um möglichst schöne Zufallsverteilungen der VegetationMeshes zu erreichen. Am wichtigsten ist die 'ProbabilityFunction', für die ich PerlinNoise oder PerlinNoise_Improved empfehle.
    • MaxScaling und MinScaling: Maximale und minimale Skalierung (Breite; Höhe). Für jedes gespawntes VegetationMesh wird eine zufällige Skalierung zwischen den beiden Grenzen gewählt. Es ist also möglich, gigantische Grasbüschel oder winzig kleine Steine zu setzen.
    • AlignRotation: Bestimmt, ob die zufällige Rotation relativ zur Oberfläche sein soll. Für Pflanzen sollte man 'False' nehmen (weil sie immer "nach oben" wachsen), für den Rest 'True'.
    • RandomRotation: Ein Winkel im Bogenmaß, der die maximale zufällige Neigung der gespawnten VegetationMeshes angibt.

    5. Die zu einem Pinsel zugehörigen VegetationMeshes kann man zwar direkt im Eigenschaften-Editor bearbeiten (eCArea_StringProperty_PS, nach dem Bearbeiten einmal mit gedrücktem Strg das Mausrad bewegen). Aber um neue hinzuzufügen oder bestehende zu löschen, wird der Konsolenbefehl ImportVegetationMeshes benötigt, der die angegebene Textdatei im Ordner %loclappdata%\Risen\Vegetation ausliest und die darin aufgelisteten VegetationMeshes auf den Pinsel anwendet.

    C) Mini-Workshop

    1. Risen starten und alle Vegetationsmeshes die in der Welt benutzt werden ausgeben lassen: Editor ExportVegetationMeshes alle
    2. Aus der %localappdata%\Risen\Vegetation\alle.txt ein paar Zeilen raussuchen (und evt. nach den eigenen Wünschen bearbeiten), die man für den eigenen Vegetationspinsel verwenden möchte. Die ausgesuchten Zeilen im selben Ordner als meinpinsel.txt speichern. Im Spoiler unten ist ein Beispiel. Warnung: PB hat einige unsinnige VegetationMeshes verwendet, z.B. Äste die sich im Wind verbiegen oder Blumen, bei denen die Rückseite fehlt. Wenn ihr auf Nummer Sicher gehen wollt, könnt ihr anstatt der alle.txt auch die Liste im Spoiler unter Punkt B) verwenden.
    3. Neuen Sektor und Layer für die Vegetation erstellen.
    4. Im neuen Layer das Template '_Vegetation' spawnen und im PropertyEditor an die Position [0; 0; 0] verschieben.
    5. Im Spawnmodus das Template '_VegBrush' auswählen und folgenden Befehl ausführen: Editor ImportVegetationMeshes meinpinsel #t
    6. Den neuen Pinsel als Pinsel_1.tple speichern: DynEntity ExportAsTemplate #e Pinsel_1
    7. Einen EntityFilter für die eigenen Pinsel anlegen, z.B. mit den Kriterien "PS_All: eCVegetationBrush_PS" und "PartTemplatePath: Pinsel_".
    8. Den neuen Filter und das einzige Template darin (Pinsel_1) auswählen.
    9. Den neuen Vegetations-Layer als aktiven Layer setzen.
    10. Strg gedrückt halten und losmalen

    Spoiler:(zum lesen bitte Text markieren)
    meinpinsel.txt:
    Code:
    Brush_Plant_Grass_02 45.0 0.5 1 1
    Brush_Branch_Small_02 60.0 0.0 0 1
    Brush_Plant_ForestLeaf_01 12.0 0.5 1 1
    Baltram is offline Last edited by Baltram; 27.10.2013 at 10:10.

  4. #4 Reply With Quote
    Mod-Starter Project  LordOfWAR's Avatar
    Join Date
    Mar 2008
    Location
    Ukraine
    Posts
    3,981
    Thanks a lot for tutorials

    But, is there any plans for english translation?
    #Stand With Ukraine
    LordOfWAR is offline

  5. #5 Reply With Quote
    Legende JFaron's Avatar
    Join Date
    Sep 2010
    Posts
    7,179
    Not yet, at least not for the tutorials I have written.
    JFaron is offline

  6. #6 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    I would not mind if someone translated my tutorials.

    Also, eventually I will do it myself but not now (too less time).
    Baltram is offline

  7. #7 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    Einführung in den Minsky-Mode - nützliche Befehle, Tastenkombinationen und Makros für Modder

    Voraussetzungen:

    1. Vorbereitung

    Öffnet die ConfigUser.xml und fügt den Text für die DebugKeys an der richtigen Stelle ein, wie es hier beschrieben wird. Um Konflikte mit dem Editor zu vermeiden, müssen einige der Tasten geändert werden, schaut euch dazu den ersten Abschnitt in der Script_Extensions-Anleitung an. Stellt außerdem sicher, dass die Script_Extensions.dll in eurem Risen\bin\scripts-Verzeichnis liegt.

    2. Nützliche Tastenkombinationen

    Per Strg+Alt+NumPad0 wird der Minsky-Mode aktiviert und deaktiviert. Hier eine kleine Auswahl an wichtigen DebugKeys. (Schaut aber auch ab und zu in die volle Liste rein, also der Text, den ihr in die ConfigUser.xml kopiert habt. Die meisten der DebugKeys sind in irgendeiner Situation nützlich!)

    F12 Beendet Risen
    F2 Wechselt zwischen Vollbild und Fenstermodus
    F7 Belebt den Helden wieder, füllt Mana und Leben auf
    Strg+Einfg Wechselt zwischen der normalen Kamera und der freien Flugkamera
    Strg+Entf Teleportiert die Spielfigur an die Kameraposition - in Kombination mit der Flugkamera das wichtigste Fortbewegunsmittel
    Str+C, Strg+U, Strg+I Besiegt oder tötet NPCs und Monster auf verschiedene Arten

    3. Benutzung der Konsole

    Mit der Tase '^' (in der Regel liegt sie links neben der '1') öffnet ihr die Konsole. Mit Enter führt ihr die aktuelle Eingabe aus. Mit dem Mausrad kann hoch- und runtergescrollt werden und mit den Pfeiltasten wechselt ihr zwischen den zuletzt eingegebenen Befehlen. Der Befehl 'clear' löscht den Inhalt des Konsolenfensters und der Befehl 'list' gibt eine Liste aller verfügbarer Befehle aus. Korrekte Groß- und Kleinschreibung der Befehle ist entscheidend!

    Das wichtigste Prinzip der Konsole ist die AutoVervollständigung, mit der ihr eine große Menge an Zeit und Tipparbeit spart: Mit einem Druck auf die Taste TAB (in der Regel direkt über CapsLock) wird die aktuelle Eingabe automatisch zum alphabetisch nächsten Befehl vervollständigt. Anstatt beispielsweise zu tippen IsoCamera genügt auch is[TAB], anstatt World UpdateProcessingRange reicht w[TAB][TAB] u[TAB]. Für die durch Script_Extensions eingeführten Konsolenbefehle ist auch für die Parameter AutoVervollständigung verfügbar: Mehrmaliges Drücken von TAB wechselt zwischen den zehn zuletzt eingegeben Parametern und Resultaten. Ein Beispiel:

    Um den Helden mit einem feurigen Spezialeffekt zu zeigen, müsst ihr zunächst seine eindeutige Kennung, die GUID bestimmen und diese dann dem Befehl DynEntity Show als Parameter übergeben:
    Code:
    DynEntity GetGuid PC_Hero
    Ergebnis: {C061A561-A862-4092-9D2D-2E55C18627ED}
    DynEntity Show {C061A561-A862-4092-9D2D-2E55C18627ED}

    Also eine Menge Tipparbeit. Mit der Autovervollständigung genügt aber:
    Code:
    dy[TAB] g[TAB] PC_Hero
    Ergebnis: {C061A561-A862-4092-9D2D-2E55C18627ED}
    dy[TAB] sh[TAB] [TAB]

    Probiert es aus!

    4. Nützliche Konsolenbefehle

    god Godmode (unbegrenztes Leben)
    invisible Macht den Helden für NPCs unsichtbar (also greifen z.B. Monster nicht an)
    give <Item-Template> <Anzahl> Fügt das angegebene Item dem Inventar hinzu, optional kann eine Anzahl angegeben werden
    (Beispiel: give It_1H_Club)
    goto <Entity> Teleportiert die Spielfigur zur nächsten Entity mit dem angegebenen Namen
    (Beispiel: goto It_Plant_STR)
    time <Stunde> <Minute> Setzt die Uhrzeit. (In der Regel möchte man in einer Welt modden, in der es schön hell ist.)
    timescale <Faktor> Macht das Spielgeschehen schneller oder langsamer (nützlich um sehr schnell zu rennen)
    Weather Sunny_Full Schönes Wetter. (Wer will schon im Regen modden. )
    FreeCamSpeed <Zahl> Setzt die Geschwindigkeit der freien Kamera (standardmäßig 500)
    (Beispiel: FreeCamSpeed 4000)

    5. Variablen und Makros

    Häufig ist man als Risen-Modder in der Situation, dass man bestimmte Werte oder Zeichenketten nicht in jeder Spielsitzung aufs neue in die Konsole eintippen möchte. Nimmt man zum Beispiel häufig irgendwelche Operationen am Helden vor, dann möchte man dessen GUID {C061A561-A862-4092-9D2D-2E55C18627ED} nicht jedes Mal erst über den Befehl DynEntity GetGuid ermitteln oder gar von Hand eintippen.

    Aus diesem Grund werden durch Script_Extensions Konsolenvariablen eingeführt, die mit beliebigen Zeichenketten belegt werden können und die auch nach Beenden des Spiels gespeichert bleiben. Es existiert außerdem eine Spezialvariable (#c) mit der direkt auf die Zwischenablage zugegriffen werden kann. Sehr nützlich, wenn man eine GUID aus dem Forum oder einem externen Programm in die Konsole in Risen kopieren möchte.

    Darüber hinaus können Variablen sogar ausgeführt werden. Man kann also einen langen Konsolenbefehl inklusive Parametern als Variable speichern und dann diese Variable bei Bedarf ausführen. Es ist möglich, durch das Gruppieren von Variablen mehrere Befehle aneinanderzureihen und nacheinander ausführen zu lassen. Solche in Variablen gespeicherte Befehlketten werden Makros genannt und können mit Tasten auf dem Nummernblock der Tastatur verknüpft werden.

    Lest euch dazu die Abschnitte 3 und 4 in der Anleitung zu Script_Extensions durch (betrachtet die beiden Abschnitte als Teil dieses Tutorials )

    6. Nützliche Makros

    Beendet Risen falls es läuft, öffnet die ConsoleVariables.ini in %localappdadta%\Risen (falls die Datei noch nicht existiert könnt ihr sie einfach ersellen) und kopiert folgenden Text hinein:
    Code:
    1 #start* !
    1a #unstart* !
    2 time 12
    2a time 0
    3 FreeCamSpeed 4000
    3a FreeCamSpeed 500
    4 timescale 5
    4a timescale 1
    start1 god on
    start2 invisible on
    start3 Weather Sunny_Full
    start4 Session SetGameEvent Gamestart
    unstart1 god off
    unstart2 invisible off
    unstart3 Weather Auto

    Ihr habt nun folgende Tastenbelegung auf dem Nummernblock der Tastatur:

    NumPad1 Godmode wird aktiviert und der Held wird unsichtbar für NPCs. Außerdem wird das Wetter auf volle Sonne gestellt und die GameVariable 'Gamestart' gesetzt. Wenn ihr ein neues Spiel in Risen anfangt und dieses Makro schon im Ladebildschirm ausführt, dann wird der Spielstart übersprungen (also das Aufrappeln des Heldes: "Wo zum Gyrger bin ich hier?")
    Alt+NumPad1 Godmode wird deaktiviert, der Held wird wieder sichtbar für NPCs und das Wetter wird auf automatisch gestellt.
    NumPad2 Zeit wird auf 12 Uhr Mittags gestellt
    Alt+NumPad2 Zeit wird auf 12 Uhr Mitternacht gestellt
    NumPad3 Hohe Geschwindigkeit der Flugkamera
    Alt+NumPad3 Normale Geschwindigkeit der Flugkamera
    NumPad4 Spielgeschehen läuft 5x so schnell wie normal ab
    Alt+NumPad4 Spielgeschehen läuft normal schnell ab
    Mit der Zeit werdet ihr natürlich eigene Ideen für Makros haben und diese hier ersetzen.
    Baltram is offline Last edited by Baltram; 06.09.2014 at 21:42.

  8. #8 Reply With Quote
    OdysseeModTeam blackpirate's Avatar
    Join Date
    Jan 2008
    Location
    Jharkendar
    Posts
    20,509
    Ja, sehr hilfreich. Ich werde mir das heute genauer ansehen.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS


    blackpirate is offline

  9. #9 Reply With Quote
    OdysseeModTeam blackpirate's Avatar
    Join Date
    Jan 2008
    Location
    Jharkendar
    Posts
    20,509
    Ich habe das jetzt mal versucht, doch habe ich den Eindruck, dass der neue Name nicht gespeichert wird. Zumindest wird unter PropertySets immer noch PropertySets (3) angegeben, obwohl ich das mit "Levelmesh_Test._xmsh überschrieben hatte.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS


    blackpirate is offline

  10. #10 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    Quote Originally Posted by blackpirate View Post
    Ich habe das jetzt mal versucht, doch habe ich den Eindruck, dass der neue Name nicht gespeichert wird. Zumindest wird unter PropertySets immer noch PropertySets (3) angegeben, obwohl ich das mit "Levelmesh_Test._xmsh überschrieben hatte.
    Ich antworte mal im anderen Thread.
    Baltram is offline

  11. #11 Reply With Quote
    Legende JFaron's Avatar
    Join Date
    Sep 2010
    Posts
    7,179
    Quote Originally Posted by blackpirate View Post
    Ich habe das jetzt mal versucht, doch habe ich den Eindruck, dass der neue Name nicht gespeichert wird. Zumindest wird unter PropertySets immer noch PropertySets (3) angegeben, obwohl ich das mit "Levelmesh_Test._xmsh überschrieben hatte.
    Ich betrachte das mal als Feedback. Ich schreibe eine neue, hoffentlich besser zu verstehende Version. Ich sag' Bescheid, wenn die fertig ist.

    edit: Neue Version ist oben. Pirate, kannst du mir kurz sagen, ob das Ganze jetzt nun klarer oder noch verwirrender ist? Würdest du dir noch etwas in diesem Kontext wünschen, was ggf. zu kurz kommt?
    JFaron is offline

  12. #12 Reply With Quote
    OdysseeModTeam blackpirate's Avatar
    Join Date
    Jan 2008
    Location
    Jharkendar
    Posts
    20,509
    Quote Originally Posted by JFaron View Post
    Ich betrachte das mal als Feedback. Ich schreibe eine neue, hoffentlich besser zu verstehende Version. Ich sag' Bescheid, wenn die fertig ist.

    edit: Neue Version ist oben. Pirate, kannst du mir kurz sagen, ob das Ganze jetzt nun klarer oder noch verwirrender ist? Würdest du dir noch etwas in diesem Kontext wünschen, was ggf. zu kurz kommt?
    Auf jeden Fall sind schon mal mehr Infos da. Das ist schon mal gut. Wenn ich mehr Zeit habe, schaue ich mir das genauer an.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS


    blackpirate is offline

  13. #13 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    @JFaron
    Habe dein neues Tut erst gerade eben bemerkt. Gefällt mir sehr gut, danke für die Mühe! (Hab's einmal zügig durchgelesen.)
    Wenn mir ein Verbesserungsvorschlag einfallen sollte, sag ich Bescheid.
    Baltram is offline

  14. #14 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    Hinzufügen eines Levelmeshs zur Spielwelt

    Voraussetzungen:

    Vorkenntnisse:

    Zu einem Levelmesh gehört neben dem rein visuellen Mesh (._xmsh) auch ein unsichtbares Kollisionsmesh (._xcom), das die Kollision von NPCs/Monster/Spielfigur mit der Spielwelt regelt und den Sound bestimmt, der beim "Drüberlaufen" entsteht. Beides kann in einem 3D-Programm wie Blender oder GMax erstellt und mithilfe von Rimy3D in das entsprechende Dateiformat umgewandelt werden. Für dieses Tutorial bedienen wir uns der Originaldaten: MiniLocation_Bridge_01_L01._xmsh für das Aussehen und MiniLocation_Bridge_01_L01_COL._xcom für die Kollision.

    1. Vorbereitung

    Wir entpacken (falls noch nicht geschehen) die meshes.pak, physics.pak und projects.pak in Risen\data\common und benennen die entstehenden Ordner um in _meshes, _physics bzw. _projects, so dass Risen nicht sämtliche darin enthaltenen Dateien beim Spielstart ein zweites Mal lädt - sie sind schließlich schon in den drei PAKs vorhanden. Dann erstellen wir im selben Verzeichnis die vier leeren Ordner meshes, physics, projects und templates.

    Aus Risen\data\common\_projects\World kopieren wir die beiden Dateien World.wrl und World.wrldatasc nach Risen\data\common\projects\World und entfernen - wichtig! - den Schreibschutz. (Falls ihr in einer anderen Welt als der originalen Spielwelt ein Levelmesh einfügen wollt, sind die entsprechenden Weltdateien vermutlich bereits im projects-Ordner vorhanden, etwa Epic.wrl und Epic.wrldatasc, wenn ihr diesem Tutorial gefolgt seid.)

    Aus Risen\data\common\_meshes kopieren wir die compiled_meshes.bin und die MiniLocation_Bridge_01_L01._xmsh (im Unterordner Levelmesh_MiniLocations) nach Risen\data\common\meshes und entfernen auch hier den Schreibschutz. Von Risen\data\common\_physics nach Risen\data\common\physics kopieren wir die MiniLocation_Bridge_01_L01_COL._xcom.

    Schließlich entpacken wir noch diese drei .tple-Dateien nach Risen\data\common\templates.

    2. Layer und Sektor für die Levelmesh-Entitiy erstellen

    Wir starten Risen, beginnen ein neues Spiel, aktivieren per Strg+Alt+NumPad0 den Minsky-Mode und öffnen die Konsole, um folgende zwei Befehle auszuführen:
    Code:
    World AddSector Levelmeshes_Tut
    World AddLayer Levelmeshes_Tut Levelmeshes_Tut (AutoVervollständigung nicht vergessen - ihr müsst den Namen 'Levelmeshes_Tut' nicht selbst ein zweites und drittes Mal eintippen!)
    Im projects-Ordner befinden sich nun der neue Sektor Levelmeshes_Tut.sec und der Layer Levelmeshes_Tut.lrent. Außerdem wurde in der World.wrldatasc ein Verweis auf den neuen Sektor hinzugefügt.

    (Der Name des Sektors/Layers spielt keine Rolle, wir könnten uns anstatt 'Levelmeshes_Tut' auch für 'PattyIstDoof99' entscheiden oder komplett auf das Erstellen eines eigenen Sektors/Layers verzichten und im nächsten Schritt die Levelmesh-Entity in einen bereits vorhandenen Layer wie z.B. Gyrger_Island_NPC_01.lrent stecken - für die Übersichtlichkeit wäre das aber nicht die beste Wahl. )

    3. Die Levelmesh-Entity erstellen

    Wir steigen zur besseren Aussicht im Spiel auf irgendeinen hohen Felsen, spawnen eine Levelmesh-Entity und betrachten sie im PropertyEditor:
    Code:
    DynEntity Spawn _Level_Col
    DynEntity Edit #r1
    Im Feld 'Name' überschreiben wir den Text "_Level_Col" mit "Levelmesh_Tut_1" (es ist aber jeder beliebige Name möglich) und bestätigen die Eingabe mit der Enter-Taste.
    Dann navigieren wir zu der Eigenschaft PropertySets > Mesh > MeshFileName und tippen in das Feld den Dateinamen des visuellen Meshs ein: MiniLocation_Bridge_01_L01._xmsh
    Auch hier bestätigen wir die Eingabe mit Enter und sehen, dass die Grasfläche durch eine Brücke ersetzt wurde. (Hinweis: Für einige andere ._xmsh-Dateien ist noch ein DynEntity Update #r1 nötig, bevor die Änderung sichtbar wird.) Es fehlt allerdings noch das Kollisionsmesh:
    Code:
    ColShape AddMesh #r1 MiniLocation_Bridge_01_L01_COL._xcom
    Nun müssen wir nur noch unsere frisch erstellte Levelmesh-Entity in den dafür vorgesehenen Layer verschieben und speichern:
    Code:
    DynEntity SetLayer #r1 Levelmeshes_Tut
    World SaveLayer Levelmeshes_Tut
    Das wars: das neue Levelmesh ist nun dauerhaft in die Spielwelt integriert und bereit, vom Helden betreten zu werden. (Für NPCs/Monster müssen noch NavZones und Ähnliches gesetzt werden, dazu mehr in einem späteren Tutorial.)

    Ein Levelmesh bei laufendem Spiel bearbeiten

    Beim Erstellen/Bearbeiten eines Levelmeshes in einem 3D-Programm ist es hilfreich, das Gebaute ab und zu im Spiel zu betrachten, etwa um Größenverhältnisse zu überprüfen oder Texturübergänge zu testen. Das Tolle: Es muss dazu nicht jedes Mal das Spiel neu gestartet werden. Mithilfe von Makros genügt sogar ein einziger Tastendruck, um das visuelle Mesh (._xmsh) sowie das Kollisionsmesh (._xcom) neu zu laden und im Spiel zu updaten.

    Als Vorbereitung beenden wir Risen (wichtig) und fügen in einem Texteditor folgenden Text am Ende der %localappdata%\Risen\ConsoleVariables.ini ein:
    Code:
    9 #updatemesh* !
    updatemesh1 Editor UpdateCompiledResourceFile Mesh 0
    updatemesh2 Editor UpdateCompiledResourceFile CollisionMesh 0
    updatemesh3 DynEntity GetGuid #mesh_entity
    updatemesh4 ColShape RemoveShapeAt #r1 -1
    updatemesh5 ColShape AddMesh #r1 #colmesh_file
    updatemesh6 World SaveLayer #mesh_layer
    Nun starten wir Risen und setzen in der Konsole die drei Variablen #mesh_entity, #colmesh_file und #mesh_layer:
    Code:
    #mesh_entity = Levelmesh_Tut_1                       (Name der Levelmesh-Entity)
    #colmesh_file = MiniLocation_Bridge_01_L01_COL._xcom (Dateiname des Kollisionsmeshes)
    #mesh_layer = Levelmeshes_Tut                        (Name des Layers zu dem die Levelmesh-Entity gehört)
    Per F2 schalten wir in den Fenstermodus und wechseln mit Alt+TAB aus dem Spiel. Nun bearbeiten wir (mithilfe von Rimy3D) die MiniLocation_Bridge_01_L01._xmsh aus data\common\meshes in einem 3D-Programm und passen auch die MiniLocation_Bridge_01_L01_COL._xcom aus data\common\physics entsprechend an. Anschließend wechseln wir wieder ins Spiel und starten das oben vorbereitete Makro mit der Taste NumPad9. Das Spiel friert kurz ein, danach sind die Änderungen im Spiel sichtbar.
    Baltram is offline Last edited by Baltram; 09.09.2016 at 16:51.

  15. #15 Reply With Quote
    Ritter Ignius's Avatar
    Join Date
    Apr 2012
    Posts
    1,156
    Die Pdf Dateien sind nicht aufrufbar.
    Ignius is offline

  16. #16 Reply With Quote
    Legende JFaron's Avatar
    Join Date
    Sep 2010
    Posts
    7,179
    Es hat wohl ein Problem bei meinem Webspace-Anbieter gegeben. Sollte im Augenblick wieder funktionieren, scheint aber ein immer wieder kurz auftretendes Problem zu sein. Die Links im Eingangspost habe ich erstmal durch Dropbox-Links ersetzt
    JFaron is offline

  17. #17 Reply With Quote
    OdysseeModTeam blackpirate's Avatar
    Join Date
    Jan 2008
    Location
    Jharkendar
    Posts
    20,509
    Wo ist nochmal das Video, das erklärt wie man die Vobs einfügt? Bin heute irgendwie blind.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS


    blackpirate is offline

  18. #18 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,264
    Quote Originally Posted by blackpirate View Post
    Wo ist nochmal das Video, das erklärt wie man die Vobs einfügt? Bin heute irgendwie blind.
    Meinst du das? Da wird aber nix erklärt, das Video habe ich nur zu Demonstrationszwecken aufgenommen.

    Das was eingefügt wird sind übrigens Entities.
    Baltram is offline

  19. #19 Reply With Quote
    OdysseeModTeam blackpirate's Avatar
    Join Date
    Jan 2008
    Location
    Jharkendar
    Posts
    20,509
    Quote Originally Posted by Baltram View Post
    Meinst du das? Da wird aber nix erklärt, das Video habe ich nur zu Demonstrationszwecken aufgenommen.

    Das was eingefügt wird sind übrigens Entities.
    Ja, das Video meinte ich.

    Und, natürlich die Entities. Wer so lange wie ich in Gothic moddet, muss sich sich noch an diese Begriffe gewöhnen.

    Der Krieg gegen die Orks schien verloren, - da machte sich eine Gruppe von Paladinen auf die Welt zu retten:
    ODYSSEE - IM AUFTRAG DES KÖNIGS


    blackpirate is offline

  20. #20 Reply With Quote
    Neuling
    Join Date
    Oct 2015
    Posts
    3
    Hey Leute erstmal will ich mich für die tollen Tutorials bedanken.
    Hätte aber eine Frage: Könnte mir vieleicht jemand einen Link zu Rimy 3D schicken oder mir sagen wo ich es finden kann.

    PS:Habe wirklich das ganze Forum durchsucht und nichts gefunden
    Elotrix is offline

Page 1 of 2 12 Last »

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •