Seite 2 von 8 « Erste 123456 ... Letzte »
Ergebnis 21 bis 40 von 144
  1. #21 Zitieren
    Ehrengarde Avatar von Issues
    Registriert seit
    Apr 2007
    Ort
    Bocholt, NRW
    Beiträge
    2.488
    Zitat Zitat von Penthesilea Beitrag anzeigen
    [...]

    Würde eher vorschlagen, den Helm beim Gleiter zu platzieren (dort wirft Jax ihn ja auf den Boden wärend der Cutscene) und die Rüstung in einem passenden Banditenlager oder gar im Fort unterzubringen, nur eben nicht mit den vollen Stats, sondern in einer beschädigten Version. Vll noch mit einer Notiz dazu, dass jemand versucht hätte, die Technologie zu der Rüstung zu studieren und diese dabei beschädigt wurde. Dann könnte man sie reparieren oder nimmt einfach Abschied davon und macht normal mit der Story weiter.
    So ähnlich hatte ich mir das vorgestellt. Das man die einzelnen Teile (Kopf, Oberkörper, Hose) auf ganz Magallan wiederfinden muss. Quasi eine so Art Chromanin-Quest für Elex. Man durchsucht das ein oder andere Banditenversteck, bei dem man dann Hinweise zu den einzelnen Parts finden kann.
    Issues ist offline

  2. #22 Zitieren
    Ehrengarde Avatar von Penthesilea
    Registriert seit
    Sep 2003
    Ort
    Bei mir Zuhause :o
    Beiträge
    2.190
    Die Albrüstung besteht leider nur aus 2 Teilen...Helm und Körper. Da hat man es sich wohl etwas einfacher gemacht weil die Rüstung eh nicht für den Spieler zugänglich sein sollte.
    Obwohl..wenn man sich die Rüstung so anschaut, sieht die auch aus wie ein Einteiler

    Edit: Mal eine allgemeine "Machbarkeit" Frage: Kann man über die "RequiredSkills" nur eine minimale Skill- oder Attributvorrausetzung bestimmen oder auch eine maximale?
    Hab hier noch so ein paar Ideen um das "roleplaying" ein bisschen anzupassen wie "als Berserker kann man keine Energiewaffen mehr verwenden" und am einfachsten wäre es dann natürlich, wenn ich einfach alle den "verbotenen" Gegenständen einen maximal erlaubten "Berserker" Skill von 0 zuordnen könnte.
    Man könnte natürlich auch eintragen, dass man für diese Waffen den Skill "Kleriker" braucht, nur wenn man dass dann mit allen "Gilden" Waffen so macht, kann man als Fraktionsloser nahezu keine Waffen mehr verwenden
    Penthesilea ist offline

  3. #23 Zitieren
    General Avatar von tombom81
    Registriert seit
    Jun 2015
    Beiträge
    3.128
    Zitat Zitat von disi123 Beitrag anzeigen
    Genau, Helm muss beim Gleiter hin.
    Gute Idee, geht aber wohl nicht. Oder hat schon jemand einen "losen" Helm (oder Rüstung) im Spiel gesehen, also außerhalb einer Kiste? (Ich meine, jemand hat einmal bezüglich eines Risens gesagt, dass eine ingame platzierte Rüstung wie ein geschnürtes Paket aussähe.)

    Andere Sache: hat schon jemand einen der vielen Helper (Combat, Tuning, Routine) sinnvoll einsetzen können? Der hier aus dem Testlevel_Kaveram hat offenbar nur Dummy-Routinen:
    [Bild: RoutineHelper.jpg]

    Zu den "RequiredSkills": das wird schwierig (für so etwas bräuchte man ein mächtigeres script-System.)
    Ich könnte mir aber vorstellen, dass man das möglicherweise über Dialoge regeln könnte, derart, dass einen der Gesprächspartner anpault, wenn man eine Energiewaffe im Inventory hat (ob man das mit einem Guildtest auf "Berserker" verknüpfen kann, weiß ich nicht).

    Hintergrund ist das PB-Questsystem, wo eine Quest erfüllt ist, wenn man ein bestimmtes Item "besorgt" hat.

    (Ob man permanente Quests anlegen kann und ob man dann für jede Energiewaffe eine extra Quest erstellen müsste, und ob man den Aufwand dann überhaupt treiben will, steht in den Sternen.)
    "in der Erkundung dieser weiten und wunderbaren Welt" (post #70, höre link unten)
    TAS for Elex 2 at ELEX II Nexus - Mods and Community (nexusmods.com)
    Umsturz bei den Morkons: best PB quest ever!
    "Hört mir bloß auf mit "Stormson".
    "In Toussaint wird schon für kleinere Schmähungen als diese Satisfaktion verlangt."
    Genug der "Blumensträuße". Ich WILL MadBob! Beugt die Realität!
    tombom81 ist offline Geändert von tombom81 (26.11.2017 um 12:17 Uhr)

  4. #24 Zitieren
    Ehrengarde Avatar von Penthesilea
    Registriert seit
    Sep 2003
    Ort
    Bei mir Zuhause :o
    Beiträge
    2.190
    Da die Berserker ja immerhin bereits nervige Sprüche von sich lassen wenn man in ihrer Gegenwart irgendeine Form der Technik verwendet, werde ich wohl mal schauen ob ich das verschärfen kann und diese dann aggressiv reagieren, als ob man eine Waffe gezogen hätte. Aber das wäre nur zur Hälfte das, was ich mir vorgestellt hätte, da ich wirklich verhindern wollte, dass man als Berserker überhaupt eine Energiewaffe anlegen kann (um mal bei dem Beispiel zu bleiben). Im inventory darf die gerne sein, da spricht erstmal nichts dagegen, schließlich sammeln und zerstören die Berserker ja bekanntermaßen auch alles elexhaltige. Dadurch wäre deine Idee über das Questsystem vll ein Overkill aber ich behalte das mal im Hinterkopf, das kann man vll an anderer Stelle noch einsetzen.

    Evtl. ist es auch gar nicht so schlimm, wenn man die fraktionsspezifischen Waffen an deren Skills bindet, dann hat man eher das Bedürfnis danach sich früh einer Fraktion anzuschließen und erledigt später den Aufstieg zum höchsten Rang nicht binnen einer Stunde. Man könnte dann sogar noch überlegen neue Craftingrezepte für Ringe zu erstellen, die einem erlauben fraktionsfremde Waffen zu verwenden
    (Wäre ja nur ein temporärer Bonusskill und schaltet dadurch keine Gildenlehrer frei)

    Zu den Helpern kann ich leider nichts sagen, über deren Templates bin ich zwar schon gestolpert aber bin bisher nie auf die Idee gekommen mal einen im Spiel einzufügen...
    Penthesilea ist offline

  5. #25 Zitieren
    Adventurer
    Registriert seit
    Nov 2017
    Beiträge
    95
    Weiss Jemand wie man Fraktionen wechseln kann?
    Nach dem 'poesen' bzw. eiskalten Ende moechte ich gerne wieder Alb sein. Da wollte ich einmal testen was passiert wenn ich als Alb und nicht Independent starte:
    [Video]

    Es gibt ja etliche Quests die ein JoinGuild Script aufrufen. Es koennte ja sein das es die Guild des Questtargets nimmt.
    Wenn man nun weiss wo der Dialog oder die Entscheidung ausgeloest wird, dort dann die Fraktion wechseln?
    disi123 ist offline

  6. #26 Zitieren
    Ehrengarde Avatar von Baltram
    Registriert seit
    Jun 2006
    Beiträge
    2.264
    @disi123
    Mit den DebugKeys kannst du dir das viele Wegrennen sparen.

    Über Fraktionswechsel weiß ich leider nichts.

    Zitat Zitat von tombom81 Beitrag anzeigen
    Andere Sache: hat schon jemand einen der vielen Helper (Combat, Tuning, Routine) sinnvoll einsetzen können? Der hier aus dem Testlevel_Kaveram hat offenbar nur Dummy-Routinen:
    Wenn ich mir so die Infos anschaue, dann sind dort nicht besonders viele interessante Infos (=Dialoge) für diese Helper vorhanden. Die einzige Info des TradeHelpers sieht zum Beispiel so aus:
    Code:
    InfoCommands {
        class gCInfoCommandDescription {
            Version = 1;
            Properties {
                class gCInfoDescLocString Text = "INFO_DESC_KALVERAMX62_00000033";
            }
            ClassData {
            }
        }
        class gCInfoCommandRunAIScript {
            Version = 1;
            Properties {
                class gCScriptProxyAIFunction AIScript = "OnOpen_Trade";
                class bCString Self = "";
                class bCString Other = "";
                int Param = 0;
            }
            ClassData {
            }
        }
    }
    InfoConditions {
    }
    Da passiert nichts, außer dass sich das Handelsfenster öffnet.

    Uns hält aber nichts davon ab, eigene Infos (mit vorhandenen Texten) zu schreiben und so unsere eigenen Helper-NPCs zu basteln.
    Baltram ist offline Geändert von Baltram (26.11.2017 um 15:21 Uhr)

  7. #27 Zitieren
    Adventurer
    Registriert seit
    Nov 2017
    Beiträge
    95
    Zitat Zitat von Baltram Beitrag anzeigen
    @disi123
    Mit den DebugKeys kannst du dir das viele Wegrennen sparen.

    Über Fraktionswechsel weiß ich leider nichts.
    Dangoe, ich hatte das vor laengerer Zeit einmal genutzt und da war mir das allererste Mal das Spiel abgestuerzt, da dachte ich lieber nicht permanent. Zum Testen ist es aber super.

    Ich kann schonmal sagen:
    Nur das bestimmt das Verhalten der Nicht-Quest-NPC:
    enum gEGuild Guild = gEGuild_Independent;
    Ich hatte mir Perks in Kleriker oder auch Outlaw gegeben und wurde trotzdem nicht als Kleriker angesehen.
    Nicht-Quest-NPC sind die Namenlosen im Spiel. Selbst als Alb kannst du noch normal die Quests mit Duras und Co. machen.

    Als gEGuild_Alb oder gEGuild_Bandit ist man Feind mit allen anderen (KoS).
    gEGuild_Separatist macht keinen grossen Unterschied und ist auch egal wenn man mit den Separatisten redet.

    Alle Gild-Quests haben diese als Parent: player_joinguild
    Die Unterquests wie Player_JoinKLE schliessen die Hauptquest mit ab.
    Diese Quest muss abgeschlossen werden um die Hauptgeschichte voran zu bringen.
    Hier findet die Magie statt:
    class eCScriptProxyScript SucceededQuestScript = "OnQuestSuccess_PlayerJoinGuild";
    Ich nehme an es guckt welche der Sub-Quests abgeschlossen wurden (oder bekommt man den i.e. Outlaw Perk erst und es guckt dann welchen Skill man hat?). Ich denke es guckt nach der Quest und gibt dem Spieler dann auch den entsprechenden Perk, kann jedenfalls nirgends eine Zeile finden wie:
    enum gESkill Skill = gESkill_Perk_Outlaw;

    Jeder Gild-NPC hat seine eigene Quest:
    Player_JoinOUT fuer William
    mit Parent player_joinguild

    In der ELEX.exe gibt es nur diese Eintraege:
    SetPlayerGuild_KLE
    SetPlayerGuild_BSK
    SetPlayerGuild_OUT
    Ich denke es gibt keine Moeglichkeit den Spieler Alb werden zu lassen

    Dann ist da:
    SetGuild_Alb

    Boldly go where no man has gone before:
    [Video]
    Als Referenz, du kannst Potions vermutlich alle moeglichen Skripte ausfuehren lassen:
    Code:
    class eCScriptProxyScript ConsumeScript = "SetGuild_Alb";
    unsigned int Amount = 1;
    p.s. Ich wuerde dann sagen:
    - ALLES TOP SECRET

    p.s. Das funktioniert besser fuer Potions:
    Code:
    class eCScriptProxyScript PostInteractScript = "SetGuild_Alb";
    disi123 ist offline Geändert von disi123 (30.11.2017 um 01:19 Uhr)

  8. #28 Zitieren
    Waldläufer Avatar von Grumbledore
    Registriert seit
    Nov 2017
    Beiträge
    113
    Zitat Zitat von tombom81 Beitrag anzeigen
    Gute Idee, geht aber wohl nicht. Oder hat schon jemand einen "losen" Helm (oder Rüstung) im Spiel gesehen, also außerhalb einer Kiste? (Ich meine, jemand hat einmal bezüglich eines Risens gesagt, dass eine ingame platzierte Rüstung wie ein geschnürtes Paket aussähe.)
    Aye die Sonnenbrillen liegen lose Rum ^^
    Grumbledore ist offline

  9. #29 Zitieren
    Waldläufer Avatar von Grumbledore
    Registriert seit
    Nov 2017
    Beiträge
    113
    und der alb commander helm bei mir jetzt auch, nur der mesh passt noch nicht xD mal schauen, ob ich das noch hinkriege ^^

    [Bild: aFgmD6m.jpg]
    [Bild: y4yvB8j.jpg]
    [Bild: VqRQYCN.jpg]
    Grumbledore ist offline

  10. #30 Zitieren
    Waldläufer Avatar von Grumbledore
    Registriert seit
    Nov 2017
    Beiträge
    113
    Items in der Welt platzieren/ersetzen:


    Ich hab als Beispiel mal den Alb Commander Helm genommen. Hab ein, in der Welt, bereits platziertes Item genommen und umgewandelt. Das Item war ein altes Medkit, dass beim Händler im Dorf der Mitte, auf dem Thresen stand.


    Code:
    "It_Helmet_ALB_High" {
                GUID = {BE6C1F3C-2B11-4D4D-925B-7279653B2501};
                //Creator muss die GUID aus dem Template sein (die 2. auftauchende) 
                Creator = {9EA46D28-371D-435A-8331-74356D8619A3};
                MatrixLocal = (mat 1 0 0 0 0 1 0 0 0 0 1 0 -126359.406 50044.3281 -104947.945 1);
                MatrixGlobal = (mat 1 0 0 0 0 1 0 0 0 0 1 0 -126359.406 50044.3281 -104947.945 1);
                Extents = (box -126389.406 50014.3281 -104977.945 -126329.406 50081.9219 -104917.945);
                Center = (vec -126359.406 50048.125 -104947.945);
                Radius = 10.2423134;
                Range = 3000;
                Unknown0 = <69 66 3A BF BE 0B 53 B3>;
                Unknown1 = <00>;
                Unknown2 = <9D A5 00 00 02 00>;
                class eCMesh_PS {
                    Version = 2;
                    Properties {
                        //Das Mesh muss in dem Ordner Mesh zufinden sein.
                        class bCString MeshFileName = "Obj_Cs_Helmet_1_L1";
                        int MaterialSwitch = 1;
                        class bCFloatColor ObjectColor = (color 255 100 100);
                        unsigned int GIVoxelLevel = 2;
                        bool BlockVegetation = True;
                        bool ShowOnMap = False;
                        enum eSGameMapType GameMapType = eSGameMapType_None;
                        bool RiverObstacle = True;
                    }
                    ClassData {
                    }
                }
                class gCItem_PS {
                    Version = 2;
                    Properties {
                        unsigned int Amount = 1;
                        int GoldBuy = 20;
                        int GoldSell = 4;
                        bool MissionItem = False;
                        bool MagicItem = False;
                        bool AlchemyItem = False;
                        bool GoldItem = False;
                        bool AdventureItem = False;
                        bool Permanent = False;
                        int SortValue = 5800;
                        class eCEntityProxy Owner = {00000000-0000-0000-0000-000000000000};
                       //Muss dem Itemtyp angespasst werden. Da wir hier einen Helm haben muss die Category Equippable sein.
                        enum gEItemCategory Category = gEItemCategory_Equippable;
                        class bCString IconOverlay = "Moep";
                       //Das Icon anpassen nicht vergessen :-P
    
                        class bCString IconImage = "Icon_Helmet_ALB_High";
                        enum gEUIImageBackground IconBackground = gEUIImageBackground_Black;
                        class bCMotion HoldOffset = <00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                        class bCMotion EquipOffset = <00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                        bool Dropped = False;
                        class eCTemplateEntityProxy ItemWorld = {00000000-0000-0000-0000-000000000000};
                        class eCTemplateEntityProxy ItemInventory = {00000000-0000-0000-0000-000000000000};
                        class bTSceneObjArray<class gCSkillValue> RequiredSkills = [
                        ];
                        class bTSceneObjArray<class gCModifySkill> OnUseModifySkills = [
                        ];
                        class bTSceneObjArray<class gCModifySkill> OnPossessModifySkills = [
                        ];
                         //Der UseType muss auch entsprechend modifiziert werden.
                        enum gEItemUseType UseType = gEItemUseType_Hat;
                        class eCScriptProxyScript CanEquipScript = "CanEquipHasRequieredStats";
                        class eCScriptProxyScript OnPreUnEquipScript = "";
                        class eCScriptProxyScript OnEquipScript = "OnEquip";
                        class eCScriptProxyScript OnUnEquipScript = "OnUnEquip";
                        class eCScriptProxyScript OnPossessScript = "";
                        class eCScriptProxyScript OnUnholdScript = "";
                        class eCScriptProxyScript OnHoldScript = "";
                        //Hier bin ich mir nicht sicher, ob das Effectmaterial angepasst werden muss, hab es vorsichtshalber gemacht.
                        class bCString EffectMaterial = "plate";
                        enum gEItemHoldType HoldType = gEItemHoldType_None;
                        bool IsDangerousWeapon = False;
                        enum gECoolDownType CoolDownType = gECoolDownType_None;
                        unsigned int CoolDownMS = 0;
                        unsigned int AttachedItemId = 0;
                        int PickPocketModificator = 0;
                        unsigned int StackFlags = 0;
                        int NumSocketSlots = 0;
                    }
                    ClassData {
                        [class gCItem_PS, Version 2] = <02 CA A8 90 00 00 00 00 01 00 00 00>;
                    }
                }
                class gCInteraction_PS {
                    Version = 2;
                    Properties {
                        enum gEInteractionUseType UseType = gEInteractionUseType_Item;
                        class eCScriptProxyScript EnterROIScript = "OnEnterProcessingRange";
                        class eCScriptProxyScript ExitROIScript = "OnExitProcessingRange";
                        class eCScriptProxyScript TouchScript = "";
                        class eCScriptProxyScript IntersectScript = "";
                        class eCScriptProxyScript UntouchScript = "";
                        class eCScriptProxyScript TriggerScript = "";
                        class eCScriptProxyScript UntriggerScript = "";
                        class eCScriptProxyScript DamageScript = "";
                        class eCScriptProxyScript CanAttachSlotScript = "";
                        class eCScriptProxyScript AttachedSlotScript = "";
                        class eCScriptProxyScript DetachedSlotScript = "";
                        class eCScriptProxyScript BlockRemovingDeadScript = "";
                        class eCScriptProxyScript GeneratePlunderScript = "GeneratePlunder";
                        class gCScriptProxyAIState RoutineTask = "";
                        bool GroundBias = False;
                        class bCString FocusNameBone = "";
                        class bCVector FocusViewOffset = (vec 0 0 0);
                        class bCVector FocusWorldOffset = (vec 0 0 0);
                        class eCScriptProxyScript FocusPriorityScript = "GetFocusEntityPriority";
                        class eCScriptProxyScript FocusNameScript = "GetFocusEntityName";
                        class bTSceneObjArray<class gCInteraction> Interactions = [
                            class gCInteraction {
                                Version = 1;
                                Properties {
                                    enum gEInteractionType Type = gEInteractionType_Interact_Player;
                                    class eCScriptProxyScript CanInteractScript = "";
                                    class gCScriptProxyAIFunction PreInteractScript = "";
                                    class gCScriptProxyAIFunction InteractScript = "Interact_Player_TakeItem";
                                    class eCScriptProxyScript PostInteractScript = "";
                                }
                                ClassData {
                                }
                            },
                            class gCInteraction {
                                Version = 1;
                                Properties {
                                    enum gEInteractionType Type = gEInteractionType_Magic;
                                    class eCScriptProxyScript CanInteractScript = "CanInteract_Magic_Item";
                                    class gCScriptProxyAIFunction PreInteractScript = "PreInteract_Magic_Item";
                                    class gCScriptProxyAIFunction InteractScript = "Telekinesis_Item";
                                    class eCScriptProxyScript PostInteractScript = "";
                                }
                                ClassData {
                                }
                            }
                        ];
                        class bCMatrix SlotOffset = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                        enum gEFocusPriority FocusPriority = gEFocusPriority_Normal;
                        enum gEFocusNameType FocusNameType = gEFocusNameType_Entity;
                        int InteractionCounter = 0;
                        class eCEntityProxy SlotWorldItem = {00000000-0000-0000-0000-000000000000};
                        class eCTemplateEntityProxy SlotItem = {00000000-0000-0000-0000-000000000000};
                    }
                
                }
                
            }
    So das sind alle Änderungen, die ich an dem vorhandenen Objekt gemacht habe. Die ganzen Werte könnt ihr bequem aus der Template Datei kopieren. Ich hoffe es hilft jemanden

    P.S.: Es gibt scheinbar nur ganze 3 Meshes für Helme. Einmal die Sunglasses, und dann noch 2 "unbekannte" wovon einer zufälligerweise der Albhelm (Obj_Cs_Helmet_1_L1) ist.
    Grumbledore ist offline

  11. #31 Zitieren
    Ehrengarde Avatar von Penthesilea
    Registriert seit
    Sep 2003
    Ort
    Bei mir Zuhause :o
    Beiträge
    2.190
    Ich bin grade ein wenig irritiert..sollte das MedKit denn aussehen wie ein Helm oder sich beim Einsammeln "verwandeln" in einen Helm?

    Für letzteres reicht es die Creator GUID zu ändern, sobald das Item in deinem Inventar liegt, werden Angaben wie "effektmaterial", "Icon", "UseType" usw. aus der Templatedatei des Items mit der entsprechenden Creator GUID gelesen.

    Wenn es dann noch aussehen soll wie der Helm, sollte demnach genügen, auch noch das Mesh anzupassen.
    Funktioniert die "Verwandlung" mit "Obj_Cs_Helmet_1_L1" überhaupt? Das "Cs" lässt auf ein Mesh für eine Cutscene schließen.
    Penthesilea ist offline

  12. #32 Zitieren
    Waldläufer Avatar von Grumbledore
    Registriert seit
    Nov 2017
    Beiträge
    113
    Zitat Zitat von Penthesilea Beitrag anzeigen
    Ich bin grade ein wenig irritiert..sollte das MedKit denn aussehen wie ein Helm oder sich beim Einsammeln "verwandeln" in einen Helm?

    Für letzteres reicht es die Creator GUID zu ändern, sobald das Item in deinem Inventar liegt, werden Angaben wie "effektmaterial", "Icon", "UseType" usw. aus der Templatedatei des Items mit der entsprechenden Creator GUID gelesen.
    Das Spiel zickt so schon bei jedem kleinen Fehler rum, deswegen hab ich gar nicht erst probiert, ob nur eine Änderung der GUID ausreicht. Schlichtweg aus dem Grunde, dass ein Template für ein Rüstungsteil nicht die Klasse gCItem_PS sondern nur die Klasse gCItemCloth_PS. Die Klasse abzuändern hat bei mir in einem Crash resultiert. Und das war nur Copy&Paste. Hmm gerade mal die Sonnenbrille in einer Sektor datei rausgesucht, dort ging es mit ItemCloth. Lustigerweise funktioniert es auch mit Item oO

    Zitat Zitat von Penthesilea Beitrag anzeigen
    Wenn es dann noch aussehen soll wie der Helm, sollte demnach genügen, auch noch das Mesh anzupassen.
    Funktioniert die "Verwandlung" mit "Obj_Cs_Helmet_1_L1" überhaupt? Das "Cs" lässt auf ein Mesh für eine Cutscene schließen.
    das mesh in der Klasse eCMesh_PS wird aus dem Mesh Ordner gelesen und ist scheinbar für Meshes, die in der Welt platzierbar sind. Funktioniert wunderbar.

    [Bild: DqHayw2.jpg]
    Grumbledore ist offline

  13. #33 Zitieren
    Ehrengarde Avatar von Issues
    Registriert seit
    Apr 2007
    Ort
    Bocholt, NRW
    Beiträge
    2.488
    Zitat Zitat von Grumbledore
    Items in der Welt platzieren/ersetzen:
    Vorab: Ich hab' derzeit noch 0 Ahnung von Risen- oder Elexmodding.

    Die Archive bekomme ich wohl entpackt, aber das war's dann momentan auch schon fast ... wie genau komme ich an vernünftigen Code wie aus deinem Post? Das sind die entpackten "templates" richtig? Gibt's da ein Tool mit dem die geöffnet werden müssen?
    Issues ist offline

  14. #34 Zitieren
    Ehrengarde Avatar von Penthesilea
    Registriert seit
    Sep 2003
    Ort
    Bei mir Zuhause :o
    Beiträge
    2.190
    Zitat Zitat von Issues Beitrag anzeigen
    Vorab: Ich hab' derzeit noch 0 Ahnung von Risen- oder Elexmodding.

    Die Archive bekomme ich wohl entpackt, aber das war's dann momentan auch schon fast ... wie genau komme ich an vernünftigen Code wie aus deinem Post? Das sind die entpackten "templates" richtig? Gibt's da ein Tool mit dem die geöffnet werden müssen?
    Wenn du die .pak Archive bereits entpacken konntest, nehme ich mal an, dass du bereits den Ressourcen Manager (elexresman.exe) geladen hast. Wenn du nun aus den entpüacken Templates, Sektoren usw. lesbare Dateien machen willst, gehst du genauso vor wie beim entpacken der Archive, sprich: einfach die Datei auf die elexresman.exe ziehen und du erhälst eine ".elex*doc" , welche du mit einem beliebigen Texteditor öffnen, lesen und bearbeiten kannst.
    Wenn du einfach nur den Ressourcen Manager mit einem Doppelklick startest, siehst du auch eine Übersicht aller Möglichen Dateitypen und in welche diese Umgewandelt werden können.
    Schau auch ruhig mal im Moddingbereich von Risen vorbei, dort findest auch den Ressourcen Manager für Risen 3 zusammen mit einer Readme, welche dessen Funktionen beschreibt und (größtenteils) genauso auch auf die Elex Version angewendet werden können.
    Penthesilea ist offline

  15. #35 Zitieren
    Ehrengarde Avatar von Issues
    Registriert seit
    Apr 2007
    Ort
    Bocholt, NRW
    Beiträge
    2.488
    Besten Dank, hilft mir schonmal einen großen Schritt weiter.
    Issues ist offline

  16. #36 Zitieren
    Waldläufer Avatar von Grumbledore
    Registriert seit
    Nov 2017
    Beiträge
    113
    ich hatte gestern nacht eine idee für einen modlauncher.

    allerdings bin ich seit ewigkeiten raus, was programmieren angeht. das letzte mal ernsthaft mit c++ / visual basic gearbeitet hab ich vor ca 13 jahren.

    grundlegendes probleme mit mods ist die kompabillität, sobald sie w_info, w_quest.hd und world.elexwrl modifizieren. später werden dann vielleicht auch noch die lokalisierungs strings hinzu kommen.

    das auslesen der mod dateien und extrahieren der änderungen an den entsprechenden dateien würde wahrscheinlich zu viele ressourcen fressen.

    dementsprechend müssten modder ihre änderungen in einer seperaten txt datei festhalten und diese dem mod archiv beilegen.
    der launcher liesst den ordner mit den mods aus, zeigt sie im launcher an und der user kann per checkbox die mods auswählen, die er benutzen will.
    bei klick auf aktivieren schaut der launcher nach text dateien zu den mods und verbindet sie mit den original files. danach packt er das ganze in einen eigenständigen mod und fertig.
    Grumbledore ist offline

  17. #37 Zitieren
    Adventurer
    Registriert seit
    Nov 2017
    Beiträge
    95
    Zitat Zitat von Grumbledore Beitrag anzeigen
    ich hatte gestern nacht eine idee für einen modlauncher.

    allerdings bin ich seit ewigkeiten raus, was programmieren angeht. das letzte mal ernsthaft mit c++ / visual basic gearbeitet hab ich vor ca 13 jahren.

    grundlegendes probleme mit mods ist die kompabillität, sobald sie w_info, w_quest.hd und world.elexwrl modifizieren. später werden dann vielleicht auch noch die lokalisierungs strings hinzu kommen.

    das auslesen der mod dateien und extrahieren der änderungen an den entsprechenden dateien würde wahrscheinlich zu viele ressourcen fressen.

    dementsprechend müssten modder ihre änderungen in einer seperaten txt datei festhalten und diese dem mod archiv beilegen.
    der launcher liesst den ordner mit den mods aus, zeigt sie im launcher an und der user kann per checkbox die mods auswählen, die er benutzen will.
    bei klick auf aktivieren schaut der launcher nach text dateien zu den mods und verbindet sie mit den original files. danach packt er das ganze in einen eigenständigen mod und fertig.
    Ich habe schon xml Dateien manipuliert mit dem Notepad++ C++ plugin. Das laesst dich C++ Skripte in Notepad++ ausfuehren.
    So konnte ich die massiven AI Daten von Superpower2 per Mouseklick manipulieren.

    Das waere ein Ansatz, wenn man einfach sagt XML-maessig mit geschweiften Klammern um die Felder zu identifizieren.

    Allerdings muessten die Mod Authoren auch idealerweise die bereits extrahierten w_info.hdrdoc Dateien bereitstellen und Benutzer koennen die dann zusammenfuehren, anschliessend muessen sie praktisch ihre eigene Mod (w_info.hdr) erstellen.

    Oder fuer The Forest hatte ich in Unity/C++ die Daten direkt als CSV mit einer XML Class gelesen und gespeichert. Leider ist das hier kein offizielles Format und man muesste alles manuell einlesen, dann zusammenfuehren und wieder in eine neue w_info.hdrdoc schreiben.
    disi123 ist offline Geändert von disi123 (03.12.2017 um 13:28 Uhr)

  18. #38 Zitieren
    Waldläufer Avatar von Grumbledore
    Registriert seit
    Nov 2017
    Beiträge
    113
    Zitat Zitat von disi123 Beitrag anzeigen
    Ich habe schon xml Dateien manipuliert mit dem Notepad++ C++ plugin. Das laesst dich C++ Skripte in Notepad++ ausfuehren.
    So konnte ich die massiven AI Daten von Superpower2 per Mouseklick manipulieren.

    Das waere ein Ansatz, wenn man einfach sagt XML-maessig mit geschweiften Klammern um die Felder zu identifizieren.

    Allerdings muessten die Mod Authoren auch idealerweise die bereits extrahierten w_info.hdrdoc Dateien bereitstellen und Benutzer koennen die dann zusammenfuehren, anschliessend muessen sie praktisch ihre eigene Mod (w_info.hdr) erstellen.

    Oder fuer The Forest hatte ich in Unity/C++ die Daten direkt als CSV mit einer XML Class gelesen und gespeichert. Leider ist das hier kein offizielles Format und man muesste alles manuell einlesen, dann zusammenfuehren und wieder in eine neue w_info.hdrdoc schreiben.

    also die idee war so:

    die original w_info.hdr wird als template benutzt. die mods selber beinhalten keine gepackten dateien der info world quest etc mehr. sondern nur noch eine info datei mit den zeilen, die angehängt worden sind.

    der user wählt mod 1 3 und 6 aus.

    mod 1 benutzt nur eine modifizierte w_info.hrd
    mod 3 benutzt eine modifizierte world und info datei
    mod 6 benutzt gar nichts.

    das programm ließt die info datei und fügt den inhalt an die template info an.

    in diesem falle würde das template für die info mit den nötigen modifikationen von mod 1 und 3 erweitert und die world nur von den infos zu mod 3 erweitert.

    das programm packt dann die info world und quest in eine eigenständige mod und fertig.

    auf diese weise hätte man den geringsten aufwand seitens des users und nur einen minimalen aufwand seitens des modders. er kann zum testen seines mods weiterhin mit den modifizierten info dateien arbeiten und brauch beim updaten dann nur die modfizierten oder neuen sachen in die info datei packen.

    welches format die datei hat ist im prinzip egal. das programm muss sie nur lesen können.
    Grumbledore ist offline

  19. #39 Zitieren
    Ehrengarde Avatar von Penthesilea
    Registriert seit
    Sep 2003
    Ort
    Bei mir Zuhause :o
    Beiträge
    2.190
    Mal ganz doof gefragt: Hat das schon jemand getestet ob es überhaupt kompatibilitäts Probleme zwischen Mods gibt oder ist das eine reine Vermutung? Ich erinnere mich daran, dass in dem Diskussionsthread zu einem Modkit erwähnt wurde, dass es egal sein sollte wieviele Mods man gleichzeitig hat und dies bereits bei Risen 3 funktioniert habe.
    Penthesilea ist offline

  20. #40 Zitieren
    Adventurer
    Registriert seit
    Nov 2017
    Beiträge
    95
    Zitat Zitat von Penthesilea Beitrag anzeigen
    Mal ganz doof gefragt: Hat das schon jemand getestet ob es überhaupt kompatibilitäts Probleme zwischen Mods gibt oder ist das eine reine Vermutung? Ich erinnere mich daran, dass in dem Diskussionsthread zu einem Modkit erwähnt wurde, dass es egal sein sollte wieviele Mods man gleichzeitig hat und dies bereits bei Risen 3 funktioniert habe.
    *hust* Bin neu hier

    Es gibt dieses 0-9 fuer die Versionen der .pak Dateien aber ich dachte immer die ueberschreiben jede Datei mit der jeweils hoeheren Version. Getestet habe ich das nicht.
    disi123 ist offline

Seite 2 von 8 « Erste 123456 ... Letzte »

Berechtigungen

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