FOMM and FOMODs for Dummies 4: Basic FOMOD Scripting II
Posted by Zumbs on November 8, 2009
FOMM and FOMODs for Dummies
- Installing Mods
- Making FOMODS
- Basic FOMOD Scripting I
- Basic FOMOD Scripting II
- Working with Forms I
- Working with Forms II
- Load Order Magicks
In the previous tutorial we had a look at how to validate the users install and manipulate the ini. This tutorial will cover the subject of making a custom install script, overriding FOMMs default install script.
It is assumed that the user has chosen which options to install beforehand.
The first step is to declare a custom install function. This has the advantage of increasing the readability of our install script, which will be handy if we ever have to update the mod. The custom install function can be declared by:
public static void InstallSomeMod() { }
Then we must change the line
PerformBasicInstall();
to
InstallSomeMod();
This makes FOMM call our new install script when the mod is activated. It doesn’t do anything yet, though.
Installing a file
To install a specific file from the fomod archive, one can use the InstallFileFromFomod function. It takes the name of the file to install as an argument, such as
InstallFileFromFomod("somemod.esp"); InstallFileFromFomod("textures/sometexture.dds");
An esp can be activated by using SetPluginActivation, like this
SetPluginActivation("somemod.esp", true);
Renaming installation files
Sometimes you want to give the user the choice between multiple files. A classic example is a body replacer, where you want to allow the user to choose between a number of body meshes, ie. muscular/average/skinny. These will often be saved in separate folders in your fomod archive. To install a particular set of meshes, you can use the function CopyDataFile. The function can be used on multiple types of data files, as shown below:
CopyDataFile("meshes/characters/_male/upperbodymale-skinny.nif", "meshes/characters/_male/upperbody.nif"); CopyDataFile("somemod_custom_option.esp", "somemod.esp");
The first argument is the location of the file in the fomod file, the other argument is where you wish to place it in the users data folder.
Example install function
Let us assume that you have a fomod with the following files
/textures/sometexture-option1.dds
/textures/sometexture-option2.dds
/textures/sometexture-option3.dds
somemod.esp
somemod_custom_option.esp
The user can choose between the texture options and the two esps. You asked which options the user wished, and those responses are saved in the variables textureChoice and useCustomOption. The installation can be handled by the function
public static void InstallSomeMod(int textureChoice, bool useCustomOption) { CopyDataFile("/textures/sometexture-option" + textureChoice + ".dds", "/textures/sometexture.dds") if (useCustomOption) { CopyDataFile("somemod_custom_option.esp", "somemod.esp") } else { InstallFileFromFomod("somemod.esp") } SetPluginActivation("somemod.esp", true); }
The function must be called from the OnActivate function with the user choices as arguments:
InstallSomeMod(textureChoice, useCustomOption)
Leave a comment