This repository has been archived on 2024-10-30. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
2018-11-01 09:31:53 -04:00
src Add local events support 2018-11-01 09:31:53 -04:00
.gitignore Add .gitignore 2018-11-01 00:53:26 -04:00
index.js Add package.json 2018-11-01 08:50:33 -04:00
package-lock.json Add local events support 2018-11-01 09:31:53 -04:00
package.json Add local events support 2018-11-01 09:31:53 -04:00
README.md Fix README typo 2018-11-01 08:47:38 -04:00

rage-eventbus simplifies two-way communication between the RAGE Multiplayer server, client, and browser instances. It can be used as a full-on replacement for RAGE's built-in mp.events API, providing consistency and clarity.


Examples

Server to Client

Situation: The server wants to ask a specific player if they are currently running.

Server-side
const rbus = require('rage-eventbus');

const player = mp.players.at(0); // or any player object

rbus.sendClient(player, 'getIsRunning').then(running => {
    if(running){
        console.log('The player is running!');
    }else{
        console.log('The player is not running!');
    }
});

// or even just this inside an async function:
const isRunning = await rbus.sendClient(player, 'getIsRunning');
Client-side
const rbus = require('rage-eventbus');

rbus.on('getIsRunning', () => mp.players.local.isRunning);

That's it! No extra code to sort out who is asking for what, or setting up multiple events on each side just to send a single piece of data back to the caller.


CEF to Server

Situation: A CEF instance wants a list of all vehicle license plates directly from the server.

Browser
const rbus = require('rage-eventbus');

rbus.sendServer('getAllLicensePlates').then(plates => {
    alert(plates.join(', '));
});
Client-side
// even if not using rbus on the client, it must be required somewhere before CEF can send any events
require('rage-eventbus');
Server-side
const rbus = require('rage-eventbus');

rbus.on('getAllLicensePlates', () => {
    return mp.vehicles.toArray().map(vehicle => vehicle.plate);
});

With rage-eventbus, CEF can directly communicate with the server and vice-versa.

In vanilla RAGE, you would have to set up multiple events for sending/receiving on the client-side, call them from CEF, then resend the data to the server and back. It's a hassle.