Getting Started with Development

From RAGE Multiplayer Wiki

Introduction

We are going to show you how to start developing your own server with a simple tutorial. We will show you how you can create your own resource and run it in your server. In here we are going to use NodeJS programming.

If you wish to learn server-side with C# programming, Click here.

Requirements

Starting the server

After downloading server files and running ragemp-server.exe for the first time, some new files will show up. Your folder should look like this:

  • client_packages: Folder in which client-side scripts are located and downloaded by the client. (Client-side allows you to draw GUI or do CEF work)
  • packages: Folder in which server-side scripts are located and loaded by the server. (Server-side allows you to manage the player and create your own world)
  • maps: Folder in which map files (in JSON format) are loaded into the game world.
  • plugins: Allows you to load custom .dll plugins into the server.
  • conf.json: Contains the server configuration in JSON format. Read more about server settings here.
  • ragemp-server.exe: Server executable, which if you run, starts the game server.

Currently you will find your folders empty, so if you want to load a gamemode there is a freeroam gamemode sample available to study/use on your server.

Info

Rage Multiplayer consists of 3 sides of scripting:

  • CEF allows you to create and develop user interfaces and show people your creativity.
  • Client-side allows you to manipulate game client features and show people your creativity.
  • Server-side allows you to manipulate the server itself with things like managing all players, vehicles, markers, etc (see more).

Setting up (TypeScript)

Learn how to setup your server using typescript here.

Setting Up (C#)

Learn how to setup your server using C# here.

Creating your first resource (Javascript)

We will create our first server-side resource, and will see how it works in game. To learn about creating client-side resource, see Getting started with Client-side.

First of all, go to packages and create a folder (name of game mode anything you want).

Scripting server commands

In your game mode folder, create an index.js file. After that, open the file and write the following:

//init Commands file
require('./commands.js')

Now save and close the file, then create another file named commands.js and open it.

Add these simple commands to your file:

mp.events.addCommand('hp', (player) => {
    player.health = 100;
});

mp.events.addCommand('armor', (player) => {
    player.armour = 100;
});

mp.events.addCommand('kill', (player) => {
    player.health = 0;
});

Learn more about these on Getting started with commands. Now we have created a simple source with 3 basic commands. One that gives health, one that gives armor, and one that kills you.

Now save the file and close it.

Scripting server event

Have you noticed anything wrong with the code we just wrote? If not, let me give you a hint. If you trigger the kill command, this means it will kill the player, but will you re-spawn back? I have the solution for you!

Create a JSON file and name it spawn_points.json and then add the following code:

{
    "SpawnPoints": [
        { "x": -425.517, "y": 1123.620, "z": 325.8544 },
        { "x": -415.777, "y": 1168.791, "z": 325.854 },
        { "x": -432.534, "y": 1157.461, "z": 325.854 },
        { "x": -401.850, "y": 1149.482, "z": 325.854 }
    ]
}

Done? Now save it and close.

Create a new file named events.js and add the following code:

let spawnPoints = require('./spawn_points.json').SpawnPoints;

mp.events.add('playerDeath', (player) => {
    player.spawn(spawnPoints[Math.floor(Math.random() * spawnPoints.length)]);
    player.health = 100;
});

We have defined our spawn points that we want the player to spawn in, and then we added an event for when the player dies. When this event is triggered, they re-spawn in a random location from the spawn points you defined. Also do not forget to restore the player's health 100 again or they can teleport while dead to the spawn point.

IMPORTANT: Do not forget to require the events.js in the index.js.

Putting it all together

In the end, your index.js file should look this:

//init Commands file
require('./commands.js')

//init Events file
require('./events.js')

Now save everything then launch your server and go test what you just wrote!

I hope you enjoyed creating your first script in RAGE:MP and we will be sure to create further tutorials for you to learn more. Happy Gaming!

See also