Portal-Zone Gothic-Zone Gothic II-Zone Gothic 3-Zone Gothic 4-Zone Modifikationen-Zone Download-Zone Foren-Zone RPG-Zone Almanach-Zone Spirit of Gothic

 

Seite 5 von 5 « Erste 12345
Ergebnis 81 bis 98 von 98
  1. Beiträge anzeigen #81 Zitieren
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.246
     
    Milky-Way ist offline
    Zitat Zitat von Illari Beitrag anzeigen
    Kann man mit dem Tool bestehenden Inhalt von Truhen bearbeiten bzw. items hinzufügen?
    Habe versucht etwas zu finden ohne die *.Zen im Spacer öffnen zu müssen, weil ich mir nicht die Mod durch den re-compile prozess zerstören möchte.
    Ich denke mal, dass das prinzipiell möglich ist. Du kannst über alle Objekte einer bestimmten Klasse / mit einem bestimmten Visual iterieren und dann die Eigenschaft des Inhalts anpassen (einen neuen String reinschreiben). Eine bestimmte Truhe zu finden kann dabei aber etwas umständlich sein.

  2. Beiträge anzeigen #82 Zitieren
    Knight
    Registriert seit
    Aug 2009
    Ort
    Hessen
    Beiträge
    1.487
     
    Cryp18Struct ist offline
    Zitat Zitat von Illari Beitrag anzeigen
    Kann man mit dem Tool bestehenden Inhalt von Truhen bearbeiten bzw. items hinzufügen?
    Habe versucht etwas zu finden ohne die *.Zen im Spacer öffnen zu müssen, weil ich mir nicht die Mod durch den re-compile prozess zerstören möchte.
    Du könntest auch komplett mit Skripten arbeiten und zur Laufzeit den Truheninhalt verändern.
    Es gibt da von mud-freak ein schönes Beispiel wie man sowas machen kann:
    https://github.com/szapp/GothicFreeA...s#wiki-wrapper
    (Da geht es im mittlerem Teil darum in allen Truhen der Welt die Anzahl Geschosse zu verringern)

  3. Beiträge anzeigen #83 Zitieren
    Provinzheld
    Registriert seit
    Mar 2010
    Ort
    Berlin
    Beiträge
    201
     
    withmorten ist offline
    Zitat Zitat von Illari Beitrag anzeigen
    Kann man mit dem Tool bestehenden Inhalt von Truhen bearbeiten bzw. items hinzufügen?
    Habe versucht etwas zu finden ohne die *.Zen im Spacer öffnen zu müssen, weil ich mir nicht die Mod durch den re-compile prozess zerstören möchte.
    Du musst eine zen nicht neu kompilieren um sie zu editieren und zu speichern - editing von Truhen Inhalten sollte problemlos klappen. Neue vobs platzieren etc geht auch alles, compile light auch.

  4. #84 Zitieren
    Illari
    Gast
     
    Zitat Zitat von Milky-Way Beitrag anzeigen
    Ich denke mal, dass das prinzipiell möglich ist. Du kannst über alle Objekte einer bestimmten Klasse / mit einem bestimmten Visual iterieren und dann die Eigenschaft des Inhalts anpassen (einen neuen String reinschreiben). Eine bestimmte Truhe zu finden kann dabei aber etwas umständlich sein.
    Hm.. ja habe mir auch gedacht, den oC Namen einer bestimmten Truhe zu finden könnte der knifflige teil werden^^ Mal gucken. Interessieren tut es mich schon damit umgehen zu können.

    Zitat Zitat von Cryp18Struct Beitrag anzeigen
    Du könntest auch komplett mit Skripten arbeiten und zur Laufzeit den Truheninhalt verändern.
    Es gibt da von mud-freak ein schönes Beispiel wie man sowas machen kann:
    https://github.com/szapp/GothicFreeA...s#wiki-wrapper
    (Da geht es im mittlerem Teil darum in allen Truhen der Welt die Anzahl Geschosse zu verringern)
    Das sieht auf jeden fall sehr umfangreich aus. Auch schön das allgemein viel dazu erklärt wird.
    Werde mir das heute mal zum feierabend anschauen und versuchen es zu verstehen. Danke für den Link

    Zitat Zitat von withmorten Beitrag anzeigen
    Du musst eine zen nicht neu kompilieren um sie zu editieren und zu speichern - editing von Truhen Inhalten sollte problemlos klappen. Neue vobs platzieren etc geht auch alles, compile light auch.
    Im Spacer? Es ist also ausreichend wenn ich, sagen wir mal ein Bett platziere, es speichere und den Spacer verlasse? Dachte das ist so ein prozess der notwendig ist damit licht und vieles anderes im richtigen Gothic 2 stil dargestellt wird.

  5. Beiträge anzeigen #85 Zitieren
    now also in your universe  Avatar von Milky-Way
    Registriert seit
    Jun 2007
    Beiträge
    15.246
     
    Milky-Way ist offline
    Statische Lichter erfordern das Kompilieren der lightmaps. Ansonsten sollten Änderungen direkt in der Welt sein, solange du sie an der Gesamt-zen durchführst, z.B. NewWorld.zen. Falls du später aber mal lieber an den kleineren Teilstücken arbeiten würdest, wären alle an der Gesamt-zen durchgeführten Anpassungen futsch. Unter Umständen ist die NewWorld.zen aufgrund ihrer Größe auch schwierig / langsam zu öffnen, bearbeiten und speichern.

  6. Beiträge anzeigen #86 Zitieren
    Provinzheld
    Registriert seit
    Mar 2010
    Ort
    Berlin
    Beiträge
    201
     
    withmorten ist offline
    Ich verstehe gerade nicht 100% was du meinst, Milki-Way, deswegen schreib ichs mal nochmal klarer

    Compile *World* braucht die 3ds level meshes damit wieder die richtige Welt bei rauskommt. Compile *Light* legt zwar auch Daten im MeshAndBsp Teil der Zen ab, aber das ist unabhängig von den level meshes, und kann deswegen auch von einem selber neu gemacht werden. Also dürfte es problemlos klappen irgendne gemoddete Welt zu nehmen, vobs zu platzieren, truheninhalte zu ändern usw, und dann Compile Light zu machen und zu speichern OHNE die Quelldateien für die Zen zu haben.

  7. #87 Zitieren
    Illari
    Gast
     
    Zitat Zitat von withmorten Beitrag anzeigen
    Ich verstehe gerade nicht 100% was du meinst, Milki-Way, deswegen schreib ichs mal nochmal klarer

    Compile *World* braucht die 3ds level meshes damit wieder die richtige Welt bei rauskommt. Compile *Light* legt zwar auch Daten im MeshAndBsp Teil der Zen ab, aber das ist unabhängig von den level meshes, und kann deswegen auch von einem selber neu gemacht werden. Also dürfte es problemlos klappen irgendne gemoddete Welt zu nehmen, vobs zu platzieren, truheninhalte zu ändern usw, und dann Compile Light zu machen und zu speichern OHNE die Quelldateien für die Zen zu haben.
    Und ich verstehe nicht was daran so schwer zu verstehen ist das er mir nach diesem Compile World irgendwas in der ZEN kaputt macht. Damit meine ich, ein Mob fehlt, n Script geht nicht, die beleuchtung fehlt auf dem Mob.
    Ich habe das Compile-Light erwähnt weil es für mich nur logisch ist das ich nach abschluss der arbeiten alles neu kompiliere und nicht nur 50% der ZEN.
    Wenn das jetzt immer noch unverständlich war, kp wie ich es noch beschreiben soll.

  8. Beiträge anzeigen #88 Zitieren
    Provinzheld
    Registriert seit
    Mar 2010
    Ort
    Berlin
    Beiträge
    201
     
    withmorten ist offline
    Warum machst du überhaupt Compile World wenn du an irgendeiner Zen rumbastelst? Compile World brauchst du nicht dauernd machen. Nur wenn du was am Mesh geändert hast. Das nur unnützer zusätzlicher Aufwand.

    Compile World baut das Msh aus den 3ds Dateien, und dabei auch den BspTree der Map. Wenn die 3ds Dateien nicht da sind, oder es nicht die editieren aus irgendnem Mod sind, klappt das natürlich nicht.

    Compile Light editiert zwar auch den BspTree (in dem es den Light Data Chunk neuschreibt), aber braucht die 3ds Dateien nicht.

    Editiere Vobs, Compile Light, und speicher. Kapiere jetzt nicht was da das Problem sein sollte. Das klappt auch problemlos wenn du nicht der originale Hersteller des Mods bist, sondern nur etwas an einer kompilierten, bestehenden Map ändern willst.

  9. Beiträge anzeigen #89 Zitieren
    Veteran
    Registriert seit
    Jan 2012
    Beiträge
    681
     
    Frank-95 ist offline
    Hello.

    I'm trying to split the NewWorld from a mod into its several parts. I've read many things on this topic (there also some posts of mine in the first page of this thread) and years ago I was able to accomplish this task even if not perfectly.

    This is what I have:
    - NewWorld from the mod
    - Every part of the newworld as empty zen files with just waypoints and relative level-compos

    I decided to try out the code from milkyway for NewWorld_City, so I added waypoints all around the smaller map in the spacer, which was pretty hard because of the walls and the sea, and the result was that I didnt get every vob inside the walls and I got some vobs outside too. It might have been pobably due to the small number of WPs (I used around 50/60 to encircle the map) and the jagged borders, but if I have to place 100/200 WPs for every newworld part it's just too much time consuming, and there might be problems with vobs across the border.

    So I tried a faster but rawer approach, which just consider the level compo bounding box.

    This is a test script that must be definetely completed.

    Code:
    #include<stdlib.zsl>
    
    func bool posInsideBox(var float pos[], var float box[])
    {
        if    (((pos[0] <= box[0]) && (pos[0] >= box[3])) || ((pos[0] >= box[0]) && (pos[0] <= box[3]))) &&
            (((pos[2] <= box[2]) && (pos[2] >= box[5])) || ((pos[2] >= box[2]) && (pos[2] <= box[5])))
        {
            return true;
        }
        else
        {
            return false;
        }
    }
    
    func void main()
    {
        var string smallPart = "C:\Program Files (x86)\GOG Galaxy\Games\Gothic 2 Gold\_work\data\Worlds\NewWorld\NewWorld_Part_City_01.zen";    
        var string largePart = "C:\Program Files (x86)\GOG Galaxy\Games\Gothic 2 Gold\_work\data\Worlds\NewWorld\NewWorld.zen";
    
        WLD_Load(smallPart);
        
        // I store boxes of level-compo in a 2D array
        var object compos[] = CVT_SelToArr(WLD_GetVobsOfClass("zCVobLevelCompo"));
        var float bboxes[compos.size][6];
        for (var int i = 0; i < compos.size; i += 1)
        {
            bboxes[i] = compos[i].bbox3DWS;
        }
        
        WLD_Merge(largePart);
        
        // I join the big world and check whether vob position lies within bboxes
        var selection vobs = WLD_GetVobs();
        var object objs[] = CVT_SelToArr(vobs);
        
        //foreach vob in vobs
        for (var int i = 0; i <= 20; i+=1) //I try the first 20 vobs for debug reasons
        {
            var object vob = objs[i];
            if (vob.className == "zCVobLevelCompo")
            {
                continue;
            }
            if posInsideBox(vob.trafoOSToWSPos, bboxes[0])
            {
                Info("---------------------");
                Info(vob.trafoOSToWSPos[0] + " " + vob.trafoOSToWSPos[2]);
                Info(bboxes[0][0] + " " + bboxes[0][2] + " " + bboxes[0][3] + " " + bboxes[0][5]);
                Info(vob.visual + " ok");
            }
            else
            {
                Info("---------------------");
                Info(vob.trafoOSToWSPos[0] + " " + vob.trafoOSToWSPos[2]);
                Info(bboxes[0][0] + " " + bboxes[0][2] + " " + bboxes[0][3] + " " + bboxes[0][5]);
                Info(vob.visual + " no");
            }
        }
    
        //WLD_Save(smallPart);
    }
    And this is just an example output:
    [i] 00:08 Info: ---------------------

    [i] 00:08 Info: 12490.7705 25724.0078

    [i] 00:08 Info: -55912.4805 -82036.1406 35238.6055 88573.0156

    [i] 00:08 Info: ASM_SMALLTREE_0.3DS ok

    [i] 00:08 Info: ---------------------

    [i] 00:08 Info: 13366.749 23549.7227

    [i] 00:08 Info: -55912.4805 -82036.1406 35238.6055 88573.0156

    [i] 00:08 Info: NW_NATURE_SMALLTREE_79P_X2_OAK_OLD.3DS ok

    [i] 00:08 Info: ---------------------

    [i] 00:08 Info: 12644.6279 23424.8047

    [i] 00:08 Info: -55912.4805 -82036.1406 35238.6055 88573.0156

    [i] 00:08 Info: ASM_SMALLTREE_0.3DS ok
    As you can see, even though single zCVobLevelCompo bbox has different bbox field (it can be seen in the spacer too), they are all too large for vob position and most vobs fall within their limits even if they are anywhere else.
    Thank you if you can help me
    Geändert von Frank-95 (13.08.2019 um 16:57 Uhr)

  10. Beiträge anzeigen #90 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Did you make sure to form a convex hull with your boundary-WPs? I remember something about this being required for the algorithm to work correctly.

    I'm not sure how to help you otherwise - have you tried contacting the modder? Maybe he still has the individual ZENs available.


    Edit: I think it's not necessarily a problem if you don't define a convex hull, but the algorithm to split up the worlds will determine the convex hull from your WPs, so the result will not be what you expected it to be in that case. Some manual cleanup is certainly expected.

  11. Beiträge anzeigen #91 Zitieren
    Veteran
    Registriert seit
    Jan 2012
    Beiträge
    681
     
    Frank-95 ist offline
    The hull was convex because parts like the city and its adjacent have a strong concave shape. I will try to consider other parts first and check if they works.
    Geändert von Frank-95 (14.08.2019 um 10:39 Uhr)

  12. Homepage besuchen Beiträge anzeigen #92 Zitieren
    Gothic Reloaded Mod Avatar von ThielHater
    Registriert seit
    Nov 2006
    Beiträge
    6.995
     
    ThielHater ist offline
    Ich habe zwei verschiedene Stände derselben Welt und würde gerne alle neu hinzu gekommenen Objekte isolieren. Irgendwie hab ich im Hinterkopf, das mit zSlang schon mal gemacht zu haben, aber aktuell klappt es nicht. Mein erster Ansatz sah so aus:

    Code:
    #include<stdlib.zsl>
    func void main() {
        WLD_Load("ALT.ZEN");
        var selection alt = WLD_GetAll();
        WLD_Load("NEU.ZEN");
        var selection neu = WLD_GetAll();
        var selection diff = neu - alt;
        WLD_SaveSelection("DIFF.ZEN", diff);
    }
    Das läuft auch durch, im Diff sind aber viele Objekte, die hätten aussortiert werden müssen. Ich dachte, dass die Gleichheit der Objekte möglicherweise anders geprüft wird als angenommen und wollte die Selektion diff selbst erzeugen:

    Code:
    var selection diff = WLD_GetNone();
    foreach n in neu {
        foreach a in alt {
            if (n.pos == a.pos) {
                break;
            }
        }
        // kein Objekt mit selber Position gefunden => neu, in Selektion aufnehmen
        diff = diff + n;
    }
    Dabei bekam ich die Meldung "Requested property 'trafoOSToWSPos' does not exist". Um irgendwie festzustellen, bei welchem Objekt der Fehler auftritt, habe ich mir den Klassennamen ausgeben lassen und dann bekam ich "Trying to access member 'className' of object that was destroyed previously".

    Daraus schließe ich, dass bei dem zweiten Aufruf von WLD_Load() die in der Selektion alt befindlichen Objekte teilweise verworfen werden. Das ist ärgerlich und mir fällt gerade keine Lösung ein.

    Edit:
    Ah, es funktioniert wenn ich bem zweiten Mal stattdessen WLD_Merge() nutze. Man muss halt die Dokumentation lesen..
    "Weltmacht mit drei Buchstaben?" – Fred & Günther


    Geändert von ThielHater (05.09.2020 um 07:22 Uhr)

  13. Beiträge anzeigen #93 Zitieren
    Schwertmeister Avatar von Ska-Ara
    Registriert seit
    Nov 2010
    Ort
    Bayern
    Beiträge
    802
     
    Ska-Ara ist offline
    Der Download link aus dem Startpost ist tod, kann man es vielleicht irgendwo im WOG reuploaden?

  14. Beiträge anzeigen #94 Zitieren

  15. Beiträge anzeigen #95 Zitieren
    Neuling
    Registriert seit
    Aug 2013
    Beiträge
    8
     
    KnightGotha ist offline
    Ist es irgendwie möglich die Rotation eines Objektes in Winkel zu extrahieren anstatt der Rotationsmatrix? Hat da zufällig jemand Erfahrung mit?

  16. Homepage besuchen Beiträge anzeigen #96 Zitieren
    Team Velen
    Registriert seit
    Aug 2015
    Beiträge
    952
     
    Bloodfly91 ist offline
    Hat schon mal jemand mit zSlang Vobs durch Vobtrees ersetzt oder weiß, wie man das anstellt und würde sein Wissen teilen? Möglich sein soll es wohl, auch laut der zSlang-Doku, aber zSlang selbst hat dafür keine integrierte Funktion. Und ich möchte eigentlich wirklich wirklich nicht die ganzen Vobs einzeln ersetzen.

    Edit:
    Nach einigem rumprobieren, bin ich nun zumindest schon mal so weit, dass ich den Vobtree mit der Welt zusammenführen kann. Nun aber ist das große Problem, dass die Kinder sich nicht mit dem Haupt-Vob bewegen, sondern diese an Position 0,0,0 bleiben. Im Spacer aber hängen die auf jedem Fall noch zusammen. Wenn ich nun diesen Code mit zSlang verwende:

    Code:
    #include<stdlib.zsl>
    
    func void Wld_ReplaceWithVobtree(var object obj, var string vobtreePath) {
        var object newObjParent;
        var selection newObjects_Selection = WLD_Merge(vobtreePath);
        foreach newObj in newObjects_Selection
        {
            newObjParent = newObj.parent;
            if (newObjParent) {
                newObjParent.pos = {obj.pos[0],obj.pos[1],obj.pos[2]};
            };
        };
        WLD_DeleteGentle(obj);
    };
    
    func void main () {
        var string world = "XYZ.ZEN";
        var string world_saveAs = "XYZ_NEU.ZEN";
        
        WLD_Load(world);
        
        var selection vobs = WLD_GetVobs();
        foreach vob in vobs
        {
            if (vob.visual == "GESUCHTESVISUAL.3DS")
            {
                Wld_ReplaceWithVobtree(vob,"XYZ_MEINVOBTREE.ZEN");
            }
        }
        WLD_Save(world_saveAs);
        Warn("execution finished");
    }
    Bewegt sich nur das Haupt-Vob selbst, nicht aber die Kinder. Führe ich nun für jedes Objekt aber diesen Positionswechsel durch, dann verschieben sich die Kinder klar auch an diese Position, hängen dann aber alle ineinander, weil ich sie ja an die selbe Position alle setze. Ich habe keine Idee, wie ich die Kinder einfach mit bewege. zSlang selbst hat dafür wohl auch allein keine Funktion, was mir stark wundert.

    Edit #2:
    Ich habe nun doch einfach alles manuell ersetzt. An einer Lösung wäre ich aber trotzdem weiterhin interessiert, so eine Funktion wäre wirklich sehr nützlich, vor allem wenn man wirklich sehr viele Vobs durch Vobtrees ersetzen will. In meinem Fall waren es zum Glück nur knapp 70 Stück.
    Geändert von Bloodfly91 (07.05.2022 um 21:35 Uhr)

  17. Beiträge anzeigen #97 Zitieren
    Dea
    Registriert seit
    Jul 2007
    Beiträge
    10.447
     
    Lehona ist offline
    Kannst du nicht einfach den Differenzvektor (Parent-Child) bilden, und den dann nach der Verschiebung wieder auf die Position der Kinder addieren? Ich glaube zSlang hat genug Unterstützung für Matrizen-/Vektorrechnung dass das möglich ist.

  18. Homepage besuchen Beiträge anzeigen #98 Zitieren
    Gothic Reloaded Mod Avatar von ThielHater
    Registriert seit
    Nov 2006
    Beiträge
    6.995
     
    ThielHater ist offline
    Hat jemand zufällig noch eine Kopie des Quellcodes, also zSlang_source.zip? In Lehonas Repack ist der nicht. Ich habe immerhin noch die originale zSlangInterpreter_1.0.zip.

    Edit: Reupload.
    "Weltmacht mit drei Buchstaben?" – Fred & Günther


    Geändert von ThielHater (14.10.2023 um 20:08 Uhr)

Seite 5 von 5 « Erste 12345

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
Impressum | Link Us | intern
World of Gothic © by World of Gothic Team
Gothic, Gothic 2 & Gothic 3 are © by Piranha Bytes & Egmont Interactive & JoWooD Productions AG, all rights reserved worldwide