-
Notifications
You must be signed in to change notification settings - Fork 22
The Extended THK Library
The Leviathon language specification supports syntactical operations and compilation that go beyond the limits of traditional naked THK files. This capabilities are added as part of the Extended THK Library (ETL). The ETL allows the game to interpret a number of functions beyond the ones it's natively coded with. Additionally it empowers a few existing functions.
The ETL itself is distributed with the Amsterdam Bucharest Compiler, however the ETL relies on Fexty's MHW THK Extender. The ETL.dll and ETL.json files go in nativePC\plugins\thk-extensions while the main mhw-thk-extender.dll goes in nativePC\plugins.
Without the MTE and the ETL plugins, lines of code that depend on ETL functionality will simply evaluate to False. So if you depend on functionality provided by the ETL (which is explicitly defined by the Leviathon Language Reference) your users must separately download the MTE and ETL. The ETL is provided for free use and bundling with mods that depend on it, as long as the upload site for the mod does not require ownership transfer (for example Nexus Mods has such requirements and thus the ETL download must be done separately by your users if your mod is hosted there).
The MHW THK Extender is a plugin framework designed by Fexty and AsteriskAmpersand and written and maintained by Fexty. It enables extending the existing library of functions already present in the game, allowing checking non-standard or more complex conditions than existing checks and also powering more adventurous edits of monster state and behavior.
An example extension is provided within the repository. Additionally one specifies the function ID to be used in a JSON file named the same as the DLL generated from compiling the extension.
For example, if we had test-extension.dll with a function TestExtension that we wished to assign to ID 0x1001, our JSON would look like:
{
"functions": [
{"name": "TestExtension",
"id": "0x1001"}
]
}
It's recommended to start from the range of 0x1XXX and avoid values below that as they will conflict with in-game checks. Additionally the range on 0x3XXX is also reserved for the ETL.
It's then possible to introduce this function into the compiler so one can call it by a friendly identifier within NACK Files. To do this, copy the default.fexty file and add your entries at the bottom following the FEXTY File Syntax.
For example in the previous case we'd add the following at the end of the file:
1001: isRathian()
And we could call our check within a NACK file through
def node
self.isRathian() -> self.takeoff()
endf
Remember to pass the FEXTY file to the compiler through the -fexty flag. Otherwise the compiler will not be able to recognize your additional functions.
General Tutorials
Animation Tutorials
Audio Tutorials
File & In Game IDs
- Accessory and Specialized Tool IDs (Asset)
- Armor IDs (Asset)
- Decorations IDs
- EFX IDs
- Endemic Critter IDs (Asset)
- Face IDs (Asset)
- Furniture IDs (Asset)
- Gimmick IDs (Asset)
- Hairstyle IDs (Asset)
- Item IDs
- LMT IDs
- Material IDs
- Medal IDs
- Model Bone Function IDs
- Monster IDs
- Monster Shell IDs (A-P)
- Monster Shell IDs (Q-Z)
- NPC IDs (Asset)
- NPC Base Model (Asset)
- Palico Equipment IDs (Asset)
- Pendant IDs (Asset)
- Poogie Clothes IDs
- Quest IDs
- Skill IDs
- Stage IDs (Asset)
- Player Weapon Action IDs
- Weapon IDs (Asset)
- Weapon ID Dump (GS,SnS,DB)
- Weapon ID Dump (LS,Ham,HH)
- Weapon ID Dump (Lan,GL)
- Weapon ID Dump (SA,CB)
- Weapon ID Dump (Bow,HBG,LBG)
Model Tutorials
- Quick Guide to Importing Models (Blender 2.79)
- Walkthrough of a Weapon Import
- Basics of Exporting Into the .mod3 Format
- How To Fix UVs Sharing a Seam
- How To Separate Mesh Parts in Blender
- Rotating, Moving and Resizing in Blender
- How to Split a Single Mesh Outfit into Player Equippable Parts
- Jigglebone Chains (.ctc) and Colliders (.ccl)
- Axial CTC Rotations
- Editing Hair Models and Materials
- Useful Blender Scripts
- [external page] How to Make All Polygons Into Triangles (Required for MHW models)
- [external page] How to Convert Triangles Back Into Quads
- [external page] How to Change The View-port clipping Parameters For Large Models
- [external page] How to Set Origin to Vertex in Edit Mode
- [external page] Shortcut to repeat the last operation in Blender
- [external page] Transferring Rig Weights From One Mesh To Another
- [external page] How to Copy Paint Weights From One Object to Another
- [external page] How to Remove All Zero-Weight Vertex Groups
- [external page] How to Weight Paint Against Current Pose
- [external page] Making a Hair Rig
- [external page] Physics Transfer
EFX Tutorials
FSM Editing
MRL3 Tutorials
NPC Editing
Plugins and Memory Editing
Monster AI Editing
General Texture Tutorials
- Obtaining, Converting and Replacing Textures
- Textures with Paint NET
- How To Open DDS Files
- Editing Textures
- Understanding Alpha Channels
- Exporting Textures with Transparency
- How To Achieve Glass Texture
- How to create Crystal materials with Alpha Textures
- Working Around the Mip Map Loading Bug
- [external page] Extracting a UV Layout
Specific Texture Tutorials
Asterisk's Plugin Notes
Miscellaneous Tutorials
Outdated Tutorials
- How to Make an NPC Skin Material Support Skin Color Customization
- Plugin Comparison
- A Theoretical Proposal on Skeleton Extension
- Monster Hunter World Save Editor Tutorial
- Making Copies of a Save Slot
- Making a Green Screen
- Notes on CTC Physics Jiggle Files
- Opening MRL3 file with a template
- Transferring MRL3 Files Between Models
- Expanding mrl3 Reference List
- How to Edit Eye Color in mrl3 Files