Skip to content

NCF – Extended list of Neutral creatures.

User Avatar
#2300
Auto-translated

In Heroes, the model file structure looks like this

There's a Model file, sometimes it comes without a label, and inside it there are references to files

Material

Skeleton

Geometry

The first file leads to a Texture file, which in turn leads to a dds file with the actual texture — you can open it and recolor it

Skeleton and Geometry contain model data, namely codes referencing the skeleton and the model

For models from the original game, these may be written directly into the Model file itself

Take the Psathi mod and try to find such a file there

You can even reference files from the original game, like the Revenger does

model file

<?xml version="1.0" encoding="UTF-8"?>

<Model>

                <Materials>

                               <Item href="Revenger.(Material).xdb#xpointer(/Material)"/>

                </Materials>

                <Skeleton href="/Characters/Creatures/Necropolis/AlternativeUpgrade/SkeletonWarrior-skel.xdb#xpointer(/Skeleton)"/>

                <Geometry href="/Characters/Creatures/Necropolis/AlternativeUpgrade/SkeletonWarrior-geom.xdb#xpointer(/Geometry)"/>

                <Animations/>

                <WindPower>1</WindPower>

</Model>

 

 

 

Now about animation

The AnimSet file

Inside this file, paths to files responsible for different animations are recorded

animsets

<AnimSet>

                <animations>

                               <Item>

                                               <Kind>attack00</Kind>

                                               <Anim href="Revenger-arena-attack00.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                               <Item>

                                               <Kind>happy</Kind>

                                               <Anim href="Revenger-arena-happy.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                               <Item>

                                               <Kind>hit</Kind>

                                               <Anim href="Revenger-arena-hit.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                               <Item>

                                               <Kind>idle00</Kind>

                                               <Anim href="Revenger-arena-idle00.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                               <Item>

                                               <Kind>move</Kind>

                                               <Anim href="Revenger-arena-move.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                               <Item>

                                               <Kind>stir00</Kind>

                                               <Anim href="Revenger-arena-stir00.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                               <Item>

                                               <Kind>stir01</Kind>

                                               <Anim href="Revenger-arena-stir01.xdb#xpointer(/BasicSkelAnim)"/>

                               </Item>

                </animations>

                <ExpSrcScene/>

                <ExpSrcClipFolder/>

                <ExpRootTransform/>

</AnimSet>

 

 

Inside each animation there's also a numeric code responsible for it, a path to the sound file, and a path to the EFFECT file

individual animation

<?xml version="1.0" encoding="UTF-8"?>

<BasicSkelAnim>

                <SrcName href="/H5A2/Creatures/AlternativeUpgrades/Necropolis/T1_SkeletonWarrior/SkeletonWarrior.mb"/>

                <uid>0C9C5A1E-FC1C-4F9A-A2D5-F5E7C2649C9F</uid>

                <ExpSrcClip href="/H5A2/Creatures/AlternativeUpgrades/Necropolis/T1_SkeletonWarrior/Animations/Clip/SkeletonWarrior.idle00.ma"/>

                <ExpRootTransform>Global</ExpRootTransform>

                <ExpFrameFirst>0</ExpFrameFirst>

                <ExpFrameLast>0</ExpFrameLast>

                <ExpSettingsFile href=""/>

                <MovementSpeed>0</MovementSpeed>

                <SpeedFactor>1</SpeedFactor>

                <Sound href="/Sounds/_(Sound)/Creatures/Necropolis/T1/idle00.xdb#xpointer(/Sound)"/>

                <Effect href="/Effects/_(Effect)/Characters/Creatures/Neutral/H5A0/Revenger/idle.(Effect).xdb#xpointer(/Effect)"/>

                <SpeedLineFallTime>250</SpeedLineFallTime>

                <SpeedLineMaterial/>

</BasicSkelAnim>

 

 

To start, you need to practice on models with ready-made effects, for example the Revengers have a helmet attached, a shield, left and right pauldrons, and a sword

The effect file contains a reference to each attached model, more precisely to a ModelInstance file

effect

<?xml version="1.0" encoding="UTF-8"?>

<Effect>

                <Instances/>

                <Lights/>

                <Models>

                               <Item href="Revenger_helmet.(ModelInstance).xdb#xpointer(/ModelInstance)"/>

                               <Item href="Revenger_LC.(ModelInstance).xdb#xpointer(/ModelInstance)"/>

                               <Item href="Revenger_RC.(ModelInstance).xdb#xpointer(/ModelInstance)"/>

                               <Item href="Revenger_sword.(ModelInstance).xdb#xpointer(/ModelInstance)"/>

                               <Item href="Revenger_shield.(ModelInstance).xdb#xpointer(/ModelInstance)"/>

                </Models>

                <WindAffected>false</WindAffected>

                <WindPower>1</WindPower>

                <Duration>2.5</Duration>

</Effect>

 

Now about ModelInstance

These files contain the path to the attached model, its position along xyz, rotation around those same axes, scaling, and bone attachment

modelinstance

<?xml version="1.0" encoding="UTF-8"?>

<ModelInstance>

                <Model href="Revenger_helmet.(Model).xdb#xpointer(/Model)"/>

                <SkelAnim/>

                <Position>

                               <x>0</x>

                               <y>0</y>

                               <z>0.2</z>

                </Position>

                <Rotation>

                               <x>0</x>

                               <y>0</y>

                               <z>0</z>

                               <w>1</w>

                </Rotation>

                <Scale>1</Scale>

                <Offset>0</Offset>

                <CycleLength>0</CycleLength>

                <CycleCount>0</CycleCount>

                <GlueToBone>1</GlueToBone>

                <GlueToNamedBone>Head</GlueToNamedBone>

</ModelInstance>



Effects need to be edited through the map editor — when you launch it, the map properties window will pop up automatically. Place the Psathi creature on the map, select it, and then the map properties window will turn into an object properties window. Find the line with the path to the mapobject file, click on the path, and a button with an ellipsis and a New button will appear — click the ellipsis.
A window with paths to the model and animset files will open. You also need to click the animset line and select the ellipsis, then do the same to open the desired animation (idle), then the effect and the required ModelInstance. In it, you need to change the position, rotation, and scale parameters until the model sits properly.

Attachments 1
1 file attached • Total size: 257.8 KB
Мои мини-моды

Мод RTF

Мои NCF существа