Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Bienvenue Guest!

Rejoignez la communauté pour avoir accès à l'entièreté du site! Une fois que vous serez enregistré, vous pourrez créer, aider, partager et discuter avec les membres de la communauté et également participer à l'amélioration du site. Alors, qu'attendez vous ? Enregistrez-vous !

Sign in to follow this  
Poro

novice Les bases de Rage : Les evenements

Recommended Posts

Poro

De retour pour un tuto des bases de RageMP, aujourd'hui on attaque une partie importante : les événements !

 

Qu'est ce qu'un événement ?

 

Un événement fonctionne sous le même principe qu'une fonction, il en contient d'ailleurs une, mais alors quelle est l'utilité ?

Et bien un événement peut être activé depuis un autre script ou même depuis le serveur vers le client et inversement.

Encore mieux, un événement peut posséder plusieurs "handler" qui permettent de faire plusieurs fonctions à son appel, il peut donc être intéressant 

de créer des événements qui seront utilisés fréquemment pour transférer des données entre le client et le serveur et entre les scripts.

 

Comment créer un événement ?

 

Et bien rien de plus simple, une commande est prévue pour ça :

mp.events.add('<name>', handler);

Il y a deux possibilités pour le handler, on peut utiliser une fonction anonyme ou une fonction crée au préalable :

function foo(p1,p2){
//code
}

//déclaration avec fonction créée
mp.events.add('event', foo);

//déclare avec une fonction anonyme
mp.events.add('event', (p1,p2) => {
//code
});

 

Voilà notre événement est prêt a être appelé, à partir de la il y a plusieurs façons de l'appeler, selon de quel côté(serveur ou client) est appelé l'événement et la cible. Voici un récapitulatif rapide :

//Serveur vers un client (player est un objet contenant les infos du joueur côté serveur)
player.call('name', [arg1, arg2...]) //Ici les arguments sont dans un tableau

//Serveur vers tous les clients
mp.players.call('name', [arg1, arg2])

//client vers serveur 
mp.events.callRemote('name', args) // Et ici les arguments sont mis a la suite

//Local (client<->client ou server<->server)
mp.events.call('name', args)


//Pour aller plus loin, il est possible dans l'appel a tous les clients de mettre une fonction de filtre :
mp.players.call(mp.players.toArray().filter((_player) => _player.money >100),'name', [args])
//Ici cela sera déclenché pour tous les personnes possédant plus de 100$ par exemple

Il existe également des appels pour le CEF mais nous aborderons cela dans un autre tutoriel. En plus de la mise en place, Rage met à disposition des événements appelés dans certaines conditions. Une liste de ces événements est mise à disposition aux liens suivants : 

 

Parmi ces événements, certains nous seront utiles dans des tutoriels à venir et d'autre dans la mise en place d’interactions qui ne seraient pas synchronisées de base par le serveur.

 

Pour aller un peu plus loin :

 

Il est possible de déclarer un événement et de le stocker dans un handler :

let ev = new mp.Event('name', (args) => {
...
});

ev.destroy(); //L'événement ne pourra plus être appelé
ev.enable(); //Cela réactive l'événement

 

 

Edited by Poro

Share this post


Link to post
Share on other sites
Kanda Sorata

Merci à toi pour le tuto !

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×
×
  • Create New...

Important Information

En utilisant ce site, vous acceptez les présents règlements Terms of Use, Privacy Policy,Guidelines.