Ergebnis 1 bis 4 von 4
  1. #1 Zitieren
    Neuling
    Registriert seit
    Oct 2018
    Beiträge
    3
    Hey everyone!

    I'm experimenting with a mod that would replace jetpacks with bag or backpacks (for style and immersion). It went even better because I found out that if you replace only Msh_It_Jetpack_Body_01_L1.elex2msh model the jetpack itself would remain as it is but you'll also have a bag on your back (or whatever model you use). I got some results but only one or two of them were acceptable - trouble is, there are some models that would fit very well but they're totally misaligned and don't look good because of it.

    So would it be possible to adjust jetpack (and whatever you replace it with) position on the character's model? I unpacked the jetpack template (It_Jetpack.elex2tpl) and tried to edit these lines in the doc (these are changed by me, were 0 0 0 and 0 0 0 1 respectively):

    Position = (vec 10 20 30);
    Rotation = (quat 50 70 90 1);

    but it didn't do anything. Any ideas?

    UPD - I also tried changing class bCMatrix LocalPose, class bCMotion HoldOffset and class bCMotion EquipOffset (took those from Alb Shield) but the only change I saw is that the position in the jetpack workbench changed, but it's still the same on the character.

    The template code itself:

    Code:
    <master> {
        GUID = {BF6CF9A6-86AB-4BD9-AE72-EC60A192111A};
        RefTemplateGUID = {00000000-0000-0000-0000-000000000000};
        Position = (vec 10 20 30);
        Rotation = (quat 50 70 90 1);
        Unknown0 = <05>;
        Unknown1 = 50000;
        Unknown2 = <1D A0 00 00 01 00>;
        "It_Jetpack" {
            GUID = {63C843A6-E94F-4C29-B0B5-CA5A18172547};
            RefTemplateGUID = {00000000-0000-0000-0000-000000000000};
            Position = (vec 0 0 0);
            Rotation = (quat 0 0 0 1);
            Unknown0 = <00>;
            Unknown1 = 7500;
            Unknown2 = <1D A0 00 00 01 00>;
            class eCMeshPrefab_PS {
                Version = 3;
                Properties {
                    class bTSceneObjArray<class eCPrefabMesh> Meshes = [
                        class eCPrefabMesh {
                            Version = 3;
                            Properties {
                                class eCMeshResourceMaterialMapProxy Mesh = <19 00 4D 73 68 5F 49 74 5F 4A 65 74 70 61 63 6B 5F 42 6F 64 79 5F 30 31 5F 4C 31 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>;
                                class eCTemplateEntityProxy Template = {00000000-0000-0000-0000-000000000000};
                                class bCMatrix LocalPose = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                                unsigned int MaterialSwitch = 0;
                                class bCByteAlphaColor ObjectColor = <FF 00 00 00>;
                                unsigned int GIVoxelLevel = 0;
                                bool BlockVegetation = False;
                                enum eSGameMapType GameMapType = eSGameMapType_None;
                                bool RiverObstacle = False;
                            }
                            ClassData {
                                [class eCPrefabMesh, Version 3] = <00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                            }
                        },
                        class eCPrefabMesh {
                            Version = 3;
                            Properties {
                                class eCMeshResourceMaterialMapProxy Mesh = <23 00 4D 73 68 5F 49 74 5F 4A 65 74 70 61 63 6B 5F 42 6F 74 74 6F 6D 5F 65 78 68 61 75 73 74 5F 30 31 5F 4C 31 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>;
                                class eCTemplateEntityProxy Template = {00000000-0000-0000-0000-000000000000};
                                class bCMatrix LocalPose = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                                unsigned int MaterialSwitch = 0;
                                class bCByteAlphaColor ObjectColor = <FF 00 00 00>;
                                unsigned int GIVoxelLevel = 0;
                                bool BlockVegetation = False;
                                enum eSGameMapType GameMapType = eSGameMapType_None;
                                bool RiverObstacle = False;
                            }
                            ClassData {
                                [class eCPrefabMesh, Version 3] = <00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                            }
                        },
                        class eCPrefabMesh {
                            Version = 3;
                            Properties {
                                class eCMeshResourceMaterialMapProxy Mesh = <1E 00 4D 73 68 5F 49 74 5F 4A 65 74 70 61 63 6B 5F 4D 69 64 62 75 74 74 6F 6E 5F 30 31 5F 4C 31 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>;
                                class eCTemplateEntityProxy Template = {00000000-0000-0000-0000-000000000000};
                                class bCMatrix LocalPose = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                                unsigned int MaterialSwitch = 0;
                                class bCByteAlphaColor ObjectColor = <FF 00 00 00>;
                                unsigned int GIVoxelLevel = 0;
                                bool BlockVegetation = False;
                                enum eSGameMapType GameMapType = eSGameMapType_None;
                                bool RiverObstacle = False;
                            }
                            ClassData {
                                [class eCPrefabMesh, Version 3] = <00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                            }
                        },
                        class eCPrefabMesh {
                            Version = 3;
                            Properties {
                                class eCMeshResourceMaterialMapProxy Mesh = <18 00 4D 73 68 5F 49 74 5F 4A 65 74 70 61 63 6B 5F 54 6F 70 5F 30 31 5F 4C 31 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>;
                                class eCTemplateEntityProxy Template = {00000000-0000-0000-0000-000000000000};
                                class bCMatrix LocalPose = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                                unsigned int MaterialSwitch = 0;
                                class bCByteAlphaColor ObjectColor = <FF 00 00 00>;
                                unsigned int GIVoxelLevel = 0;
                                bool BlockVegetation = False;
                                enum eSGameMapType GameMapType = eSGameMapType_None;
                                bool RiverObstacle = False;
                            }
                            ClassData {
                                [class eCPrefabMesh, Version 3] = <00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                            }
                        },
                        class eCPrefabMesh {
                            Version = 3;
                            Properties {
                                class eCMeshResourceMaterialMapProxy Mesh = <1C 00 4D 73 68 5F 49 74 5F 4A 65 74 70 61 63 6B 5F 54 75 72 62 69 6E 65 5F 30 31 5F 4C 31 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>;
                                class eCTemplateEntityProxy Template = {00000000-0000-0000-0000-000000000000};
                                class bCMatrix LocalPose = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                                unsigned int MaterialSwitch = 0;
                                class bCByteAlphaColor ObjectColor = <FF 00 00 00>;
                                unsigned int GIVoxelLevel = 0;
                                bool BlockVegetation = False;
                                enum eSGameMapType GameMapType = eSGameMapType_None;
                                bool RiverObstacle = False;
                            }
                            ClassData {
                                [class eCPrefabMesh, Version 3] = <00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                            }
                        },
                        class eCPrefabMesh {
                            Version = 3;
                            Properties {
                                class eCMeshResourceMaterialMapProxy Mesh = <1A 00 4D 73 68 5F 49 74 5F 4A 65 74 70 61 63 6B 5F 57 69 6E 67 73 5F 30 31 5F 4C 31 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>;
                                class eCTemplateEntityProxy Template = {00000000-0000-0000-0000-000000000000};
                                class bCMatrix LocalPose = (mat 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1);
                                unsigned int MaterialSwitch = 0;
                                class bCByteAlphaColor ObjectColor = <FF 00 00 00>;
                                unsigned int GIVoxelLevel = 0;
                                bool BlockVegetation = False;
                                enum eSGameMapType GameMapType = eSGameMapType_None;
                                bool RiverObstacle = False;
                            }
                            ClassData {
                                [class eCPrefabMesh, Version 3] = <00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 80 3F>;
                            }
                        }
                    ];
                    float BreakingForce = 0;
                    enum eEPrefabForceMode ForceMode = eEPrefabForceMode_None;
                    bool DecomposeOnTrigger = False;
                    enum eSGameMapType GameMapType = eSGameMapType_None;
                }
                ClassData {
                }
            }
            class gCItem_PS {
                Version = 2;
                Properties {
                    unsigned int Amount = 1;
                    int GoldBuy = 0;
                    int GoldSell = -1;
                    bool MissionItem = True;
                    bool MagicItem = False;
                    bool AlchemyItem = False;
                    bool GoldItem = False;
                    bool AdventureItem = False;
                    bool Permanent = False;
                    int SortValue = 0;
                    class eCEntityProxy Owner = {00000000-0000-0000-0000-000000000000};
                    enum gEItemCategory Category = gEItemCategory_None;
                    class bCString IconOverlay = "";
                    class bCString IconImage = "Ico_Jetpack";
                    bool GenerateIcon = True;
                    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 60 41 ED 44 32 BF ED 44 32 BF 30 78 FB 3D 30 78 FB 3D>;
                    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 = [
                        class gCModifySkill {
                            Version = 1;
                            Properties {
                                enum gESkillModifier Modifier = gESkillModifier_SetBaseToValue;
                                int Amount = 1;
                                enum gESkill Skill = gESkill_Perk_Jetpack;
                            }
                            ClassData {
                            }
                        }
                    ];
                    enum gEItemUseType UseType = gEItemUseType_Jetpack;
                    class eCScriptProxyScript CanEquipScript = "CanEquipHasRequieredStats";
                    class eCScriptProxyScript OnPreUnEquipScript = "";
                    class eCScriptProxyScript OnEquipScript = "OnEquip";
                    class eCScriptProxyScript OnUnEquipScript = "OnUnEquip";
                    class eCScriptProxyScript OnPossessScript = "OnPossess_Jetpack";
                    class eCScriptProxyScript OnUnholdScript = "";
                    class eCScriptProxyScript OnHoldScript = "";
                    class bCString EffectMaterial = "metal";
                    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 = "";
                    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};
                    class eCScriptProxyScript BlockInteractionScript = "";
                    float Radius = 0;
                    float Angle = 0;
                    class eCLocString ActionText = "";
                    class eCScriptProxyScript ActionTextScript = "GetFocusEntityActionText";
                }
                ClassData {
                }
            }
        }
    }
    Wang_Laoshi ist offline Geändert von Wang_Laoshi (27.04.2022 um 17:00 Uhr)

  2. #2 Zitieren
    General Avatar von tombom81
    Registriert seit
    Jun 2015
    Beiträge
    3.159
    Zitat Zitat von Wang_Laoshi Beitrag anzeigen
    Hey everyone!

    I'm experimenting with a mod that would replace jetpacks with bag or backpacks (for style and immersion). It went even better because I found out that if you replace only Msh_It_Jetpack_Body_01_L1.elex2msh model the jetpack itself would remain as it is but you'll also have a bag on your back (or whatever model you use). I got some results but only one or two of them were acceptable - trouble is, there are some models that would fit very well but they're totally misaligned and don't look good because of it.

    So would it be possible to adjust jetpack (and whatever you replace it with) position on the character's model? I unpacked the jetpack template (It_Jetpack.elex2tpl) and tried to edit these lines in the doc (these are changed by me, were 0 0 0 and 0 0 0 1 respectively):

    Position = (vec 10 20 30);
    Rotation = (quat 50 70 90 1);

    but it didn't do anything. Any ideas?
    Hey, use NewPos = (vec x y z);
    and (example) NewRot = (euler 0.000000 1.570796 0.000000);
    (introduced by Baltram)

    (Works with entities in world sector files; didn't test it with templates so far.)
    "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)
    Tuvok, scannen Sie den Planeten nach Mikroplastik!
    "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

  3. #3 Zitieren
    Neuling
    Registriert seit
    Oct 2018
    Beiträge
    3
    Zitat Zitat von tombom81 Beitrag anzeigen
    Hey, use NewPos = (vec x y z);
    and (example) NewRot = (euler 0.000000 1.570796 0.000000);
    (introduced by Baltram)

    (Works with entities in world sector files; didn't test it with templates so far.)
    Thanks for the input! Where exactly do I put this? And do these edits require some additional mods so that the game would pick it up?

    Just tried to add this NewPos line as a new one and as a replacement for Position, in both cases I got parse error when converting the doc back to elex2tpl

    Found Baltram's post where this is described, it's suggested to put it right before the Pose attribute but items templates don't have these, only LocalPose. I still tried to add NewPos before LocalPose and got the parse error just as before
    Wang_Laoshi ist offline Geändert von Wang_Laoshi (28.04.2022 um 16:08 Uhr)

  4. #4 Zitieren
    General Avatar von tombom81
    Registriert seit
    Jun 2015
    Beiträge
    3.159
    Seems all templates use
    Position = (vec 0 0 0);
    Rotation = (quat 0 0 0 1)

    (Is there any template with different values? Guess, no.)
    I assume that NewPos () was designed for entities in world sector files, not for templates.

    In the jetpack template you might try out to set x, y, z different from zero.
    class bCMatrix SlotOffset = (mat 1 0 0 0 0 1 0 0 0 0 1 0 x y z 1);

    Just a wild guess only. (Iirc I used mat 2 0 0 0 0 2 0 0 0 0 2 0 to double the size of a sword 3 years ago, but no sure.)
    "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)
    Tuvok, scannen Sie den Planeten nach Mikroplastik!
    "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 (29.04.2022 um 19:04 Uhr)

Berechtigungen

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