Difference between revisions of "HPL3/Scripting/Scripting Guide/Helper Files"

From Frictional Wiki
Jump to navigation Jump to search
Line 40: Line 40:
 
Player_SetMoveSpeedMul(5.0f);
 
Player_SetMoveSpeedMul(5.0f);
 
}
 
}
</syntaxhighlight>As you can see, the helper file "helper_player.hps" is included in the script file. If this file wasn't included, the game will display an error message and our map won't run.{{NavBar|HPL3/Scripting/Calling Functions and Function Callbacks|Calling Functions and Function Callbacks|HPL3/Scripting/HPL3 Scripting Guide|HPL3 Scripting Guide|HPL3/Scripting/The OnAction method|The OnAction method}}
+
</syntaxhighlight>As you can see, the helper file "helper_player.hps" is included in the script file. If this file wasn't included, the game will display an error message and our map won't run.
 +
 
 +
== Custom Helper Files ==
 +
Let’s create our own helper file and see how it works.
 +
In our mod folder, create a scripts folder. Inside that, create a helpers folder.
 +
 
 +
Add /script to our resources.cfg file, so the game will search for script files in that folder.
 +
 
 +
*creates a script file*
 +
We have two map files. Now, instead of copy-pasting our function Entity_Explode, we can just use the helper file and call that function.
 +
 
 +
As you can see, using helper files reduces the size of our script file, and makes our code reusable everywhere.
 +
 
 +
 
 +
{{NavBar|HPL3/Scripting/Calling Functions and Function Callbacks|Calling Functions and Function Callbacks|HPL3/Scripting/HPL3 Scripting Guide|HPL3 Scripting Guide|HPL3/Scripting/The OnAction method|The OnAction method}}
  
 
[[Category:HPL3 Scripting]]
 
[[Category:HPL3 Scripting]]
 
[[Category:English]]
 
[[Category:English]]

Revision as of 22:01, 10 August 2020

This article explains what helper files are and how to use them.

Introduction

When you're writing your script, you can find yourself ending up with a lot of code. If all this code is inside a single file, that can make things difficult to manage - whenever you want to add or change something, you have to pour through hundreds or thousands of lines of code looking for that one spot.

Also, what if you want to use some code that was written by someone else? Do you just copy their code and paste it into your own? What if they update their code, forcing you to find everywhere in your code that was updated and perform the update yourself?

As I'm sure you've surmised by now, there's an easier way. There's a special keyword that references a script file and “pastes” it on top of another file. This allows functions and other things to be called from that other file without requiring that the code is in the same place - the include keyword.

Using Helper Files

As the name suggests, we include external script files in our code, which allows us to call other functions from other files.

As you have noticed, there are several includes at the top of our map script file. Each include points to another script file, which are labeled as helpers, because they help us with performing common scripts and actions.

For example, if we want to use player related functions, we need to include “helper_player.hps”

#include "interfaces/Map_Interface.hps"
#include "base/Inputhandler_Types.hps"

#include "helpers/helper_map.hps"
#include "helpers/helper_props.hps"
#include "helpers/helper_effects.hps"
#include "helpers/helper_audio.hps"
#include "helpers/helper_imgui.hps"
#include "helpers/helper_sequences.hps"
#include "helpers/helper_game.hps"
#include "helpers/helper_modules.hps"
#include "helpers/helper_ai.hps"

// Required helper file for player related functions
#include "helpers/helper_player.hps"

//...Somewhere in your code:

////////////////////////////
// Run first time starting map
void OnStart()
{
	Player_SetMoveSpeedMul(5.0f);
}

As you can see, the helper file "helper_player.hps" is included in the script file. If this file wasn't included, the game will display an error message and our map won't run.

Custom Helper Files

Let’s create our own helper file and see how it works. In our mod folder, create a scripts folder. Inside that, create a helpers folder.

Add /script to our resources.cfg file, so the game will search for script files in that folder.

  • creates a script file*

We have two map files. Now, instead of copy-pasting our function Entity_Explode, we can just use the helper file and call that function.

As you can see, using helper files reduces the size of our script file, and makes our code reusable everywhere.