Jump to content

Map Editor Tutorial - Template Scripts


R4bitF00t

Recommended Posts

logo.png.2daaf617449a0c9e1c637ec4ce05d03a.png

Hello again!

As I have investigated some scripts by the original BattleForge developers, I have stumbled upon template scripts!

These templates are used when you want multiple scripts to have the same functionality, but with different targets, spawnpoints, respawn times etc.
You define one template and use it in multiple scripts, in which you only need to declare the specified arguments.

This can prevent mistakes that can happen when you copy-paste the same code multiple times, and forget to adjust the values, or introduce some typos.

Here are the scripts I will create in this tutorial.

spawn_template.luaspawn2.luaspawn1.lua

 

If you encounter any issues, don't hesitate to ask in Skylords Reborn Map Making Discord.

 

 Content

splitter.png.b88958376f2b49606f513de34d9a3733.png

  • Creating a Template Script
  • Passing Arguments
  • Using a Template
  • Homepage

 

 Creating a Template Script

splitter.png.b88958376f2b49606f513de34d9a3733.png

I will create a simple script as a template to show you an example.

Quote

Important Note: All the templates you create, and the scripts that use that template need to be declared in the _scriptlist.lua.
The exception are scripts that use the template, but are named after a tagged entity or a script group on the map.

The template script itself should never be tied to a tagged entity/SG, it should always be declared in the _scriptlist.lua.

I will create a script called spawn_template.lua (it is always best to include the "template" in the name of your template scripts).

spawn_template (1).jpg

 

In the template script, we need to declare a function - I've called it "SpawnTemplate". A function needs to have the () brackets after its name is declared (I will tell you what these brackets are for in a little while).

The function needs to return the code we write into it, so we need the return keyword.

After that, we need to encompass all the code we want to include in the function between {} curly brackets - it is important that you use the curly brackets for this.

And we end the function with the end keyword after the closing curly bracket.

 

Inside the function, I have created two states, each with one event.
I want the script to be inactive at the start, and spawn a squad of thugs, once it is activated.

 

And, this is it, this is a template script.
It is very basic mind you, it does only one thing and with all the same parameters, so it is not very useful at the moment, we might as well have written this into a standard script.

 

Now, let's have a look at how we can make this script actually usable...

 

 Passing Arguments

splitter.png.b88958376f2b49606f513de34d9a3733.png

We can pass arguments to the function, that we can then use in the code!

For that, we need to tell the function to expect some arguments first.
We do that by writing something in the function's () brackets - I chose args (for arguments), but you can write whatever you want in there, just name it something sensible.

image.png

Now, in our code, we can specify which arguments the function will expect.
We can do that by writing
args.ArgumentName for the arguments we want to pass to the function, like this.

image.png

I have added arguments for the map flag that activates the spawning, the tag of the spawn building which needs to be alive, and the target tag, where to spawn our squad of thugs.

image (66).jpg

 

Now the code is actually reusable!
Let's look at how we can do that.

Quote

Note: Don't forget to declare the template script in the _scriptlist.lua.

 

 Using a Template

splitter.png.b88958376f2b49606f513de34d9a3733.png

I will create two scripts - the spawn1.lua and spawn2.lua.

So my script1 folder looks like this.

image.png

In these scripts, we only need to type the name of our template function, and pass it all the arguments we've specified in the template script, separated by a comma - In my case, the ActivateFlag, SpawnerTag and SpawnpointTag.

You need to write these arguments between curly brackets {}, otherwise you will get an error.

These are my arguments for spawn1.lua and spawn2.lua.

image.png image.png

 

Quote

Important Note: Notice that in scripts using the template, we do not put any character after the closing curly bracket }.

If you do, you will get an error when loading the map.

Now, obviously our template is very simple, and copy-pasting it into multiple scripts wouldn't be much of an issue, but when you have more complex behaviour that is used in multiple scripts, having a template can really save your time, as you only need to truly debug the template script.

At last, I will add the spawn1.lua and spawn2.lua scripts into _scriptlist.lua, as they don't share the name with a tagged entity, or a script group.

Now, if I were to activate my map flags, for example in the _main script, I will have a squad of thugs spawn on every spawnpoint I declared, if the tagged buildings are alive.

image (67).jpg

 

 

 Homepage

splitter.png.b88958376f2b49606f513de34d9a3733.png

You can return to the homepage here.

 

 Map Editor Tutorial Homepage 

 

Middle_splitter.png.a770f452e94ed383c001e9d7af974010.png

Edited by R4bitF00t
Metagross31 likes this
Link to comment
Share on other sites

  • R4bitF00t changed the title to Map Editor Tutorial - Template Scripts

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use