Page 2 of 7 « First 123456 ... Last »
Results 21 to 40 of 128
  1. #21 Reply With Quote
    Ehrengarde Issues's Avatar
    Join Date
    Apr 2007
    Location
    Bocholt, NRW
    Posts
    2,319
    Quote Originally Posted by Penthesilea View Post
    [...]

    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 is offline

  2. #22 Reply With Quote
    Knight Commander Penthesilea's Avatar
    Join Date
    Sep 2003
    Location
    Bei mir Zuhause :o
    Posts
    2,196
    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 is offline

  3. #23 Reply With Quote
    Sword Master
    Join Date
    Jun 2015
    Posts
    755
    Quote Originally Posted by disi123 View Post
    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.)
    https://g3csp.de/de/2018/06/08/entwi...er-des-xardas/

    George Soros: Die „marktfundamentalistische“ Ideologie lässt außer Acht, dass „Finanzmärkte kein Gleichgewicht anstreben“.
    "Wenn du was fixt, machst du immer was kaputt." (Björn Pankratz, DevPlay) - Maryn: "Aufgeben ist keine wirkliche Option."
    Ich bin happy: die begrasten, steilsten Hänge hoch und runter, erinnert mich an alte Gothic 3-Tage, nur mit Jetpack jetzt.
    tombom81 is offline Last edited by tombom81; 26.11.2017 at 12:17.

  4. #24 Reply With Quote
    Knight Commander Penthesilea's Avatar
    Join Date
    Sep 2003
    Location
    Bei mir Zuhause :o
    Posts
    2,196
    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 is offline

  5. #25 Reply With Quote
    Adventurer
    Join Date
    Nov 2017
    Posts
    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 is offline

  6. #26 Reply With Quote
    Ehrengarde Baltram's Avatar
    Join Date
    Jun 2006
    Posts
    2,234
    @disi123
    Mit den DebugKeys kannst du dir das viele Wegrennen sparen.

    Über Fraktionswechsel weiß ich leider nichts.

    Quote Originally Posted by tombom81 View Post
    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 is offline Last edited by Baltram; 26.11.2017 at 15:21.

  7. #27 Reply With Quote
    Adventurer
    Join Date
    Nov 2017
    Posts
    95
    Quote Originally Posted by Baltram View Post
    @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 is offline Last edited by disi123; 30.11.2017 at 01:19.

  8. #28 Reply With Quote
    Abenteurer Grumbledore's Avatar
    Join Date
    Nov 2017
    Posts
    95
    Quote Originally Posted by tombom81 View Post
    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 is offline

  9. #29 Reply With Quote
    Abenteurer Grumbledore's Avatar
    Join Date
    Nov 2017
    Posts
    95
    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 is offline

  10. #30 Reply With Quote
    Abenteurer Grumbledore's Avatar
    Join Date
    Nov 2017
    Posts
    95
    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 is offline

  11. #31 Reply With Quote
    Knight Commander Penthesilea's Avatar
    Join Date
    Sep 2003
    Location
    Bei mir Zuhause :o
    Posts
    2,196
    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 is offline

  12. #32 Reply With Quote
    Abenteurer Grumbledore's Avatar
    Join Date
    Nov 2017
    Posts
    95
    Quote Originally Posted by Penthesilea View Post
    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

    Quote Originally Posted by Penthesilea View Post
    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 is offline

  13. #33 Reply With Quote
    Ehrengarde Issues's Avatar
    Join Date
    Apr 2007
    Location
    Bocholt, NRW
    Posts
    2,319
    Quote Originally Posted by 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 is offline

  14. #34 Reply With Quote
    Knight Commander Penthesilea's Avatar
    Join Date
    Sep 2003
    Location
    Bei mir Zuhause :o
    Posts
    2,196
    Quote Originally Posted by Issues View Post
    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 is offline

  15. #35 Reply With Quote
    Ehrengarde Issues's Avatar
    Join Date
    Apr 2007
    Location
    Bocholt, NRW
    Posts
    2,319
    Besten Dank, hilft mir schonmal einen großen Schritt weiter.
    Issues is offline

  16. #36 Reply With Quote
    Abenteurer Grumbledore's Avatar
    Join Date
    Nov 2017
    Posts
    95
    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 is offline

  17. #37 Reply With Quote
    Adventurer
    Join Date
    Nov 2017
    Posts
    95
    Quote Originally Posted by Grumbledore View Post
    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 is offline Last edited by disi123; 03.12.2017 at 13:28.

  18. #38 Reply With Quote
    Abenteurer Grumbledore's Avatar
    Join Date
    Nov 2017
    Posts
    95
    Quote Originally Posted by disi123 View Post
    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 is offline

  19. #39 Reply With Quote
    Knight Commander Penthesilea's Avatar
    Join Date
    Sep 2003
    Location
    Bei mir Zuhause :o
    Posts
    2,196
    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 is offline

  20. #40 Reply With Quote
    Adventurer
    Join Date
    Nov 2017
    Posts
    95
    Quote Originally Posted by Penthesilea View Post
    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 is offline

Page 2 of 7 « First 123456 ... 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
  •