Dans ce tutoriel, nous allons vous guider dans la création de votre premier package Onset. Vous allez le voir, créer un package est très simple! Un package (en savoir plus sur les packages) est une collection de script (principalement LUA) et de fichiers assets (HTML, JS, CSS) utilisés pour la création d'interface GUI. Un package à son propre état LuaVM. Un méchanisme est disponible pour que les packages puissent communiquer entre eux, permettant de partager des fonctions.
Les scripts LUA vous permettent de personnaliser entièrement le jeu et peuvent être exécutés côté serveur ou côté client.
Comment créer un package Onset?
Première chose à savoir, un package possède son propre répertoire, qui sera le nom du package utilisé dans les fichiers de configuration. Les packages sont dans le répertoire onset/packages
.
Chaque package doit avoir un fichier package.json
à la racine de son dossier, décrivant le plugin et contenant la liste des fichiers qui seront chargés et téléchargés par les joueurs. Ce fichier sera lu au démarrage de votre serveur Onset si le package est actif.
- Créer un nouveau dossier qui va contenir notre premier package. Par exemple,
onset/packages/helloworld
.
Note: le nom du dossier du package est le nom utilisé pour la configuration, c'est donc le nom du package. - Créer un fichier
package.json
dans le dossieronset/packages/helloworld
. - Le contenu du fichier
package.json
doit être au format JSON!{ "author": "YourName", "version": "1.0", "server_scripts": [], "client_scripts": [], "files": [] }
- Pour l'instant notre package n'est pas actif sur le serveur Onset.
Pour activer le package, éditez le fichieronset/server_config.json
(voir config server onset) et ajoutez le package dans la liste (nom du dossier dansonset/packages
) dans la sectionpackages
:"packages": [ ..., "helloworld" ],
- Redémarrez votre serveur Onset. Dans la console, vous devriez voir:
[ERROR] Package "helloworld" does not have any scripts [ERROR] Package "helloworld" failed loading
Le serveur essai de charger notre package, mais actuellement, il est vide!
Créer votre premier script LUA Onset
Dans un package, vous pouvez structurez vos fichiers comme vous le souhaitez, nous vous recommandons tout de même pour plus de maintenabilité d'opter pour la structure suivante:
- Un dossier
client
pour les scripts côté client. - Un dossier
server
pour les scripts coté serveur. - Un dossier
assets
pour les fichiers de l'interface GUI (html, js, css et autres).
Quand le serveur charge avec succès le package, nous allons afficher un message dans la console serveur et afficher le nom du serveur Onset.
Onset met à disposition une API complète (voir le wiki officiel en fin d'article) qui permet d'accéder à de nombreuses fonctions natives du jeu, comme le système d'évènements qui rend l'ajout de hook facile.
Pour notre exemple, sur notre serveur Onset, nous allons utiliser l'évènement k OnPackageStart
et utiliser la fonctionGetServerName()
pour récupérer le nom du serveur. Le script va ếtre éxécuté côté serveur.
- Créez un dossier
onset/packages/helloworld/server
. - Dans ce dossier, ajoutez un fichier
server.lua
avec le contenu suivant:function OnPackageStart() print("Hello World by mTxServ.com!") print(("Name of the Onset server: `%s`\n"):format(GetServerName())) end AddEvent("OnPackageStart", OnPackageStart)
Notre premier script Onset est prêt. - Vous devez maintenant ajouter le chemin du script dans le fichier
package.json
, dans la sectionserver_scripts
:{ "author": "mTxServ", "version": "1.0", "server_scripts": [ "server/server.lua" ], "client_scripts": [], "files": [] }
Sauvegardez le fichier. - Pour tester, redémarrez votre serveur. Dans la console serveur, vous devriez vous:
[INFO] Starting package "helloworld" [SCRIPT] Hello World by mTxServ.com! [SCRIPT] Name of the Onset server: `mTxServ.com`
- Créez maintenant un script qui va annoncer les connexions et déconnexions des joueurs. Ajoutez le script suivant dans le fichier
server.lua
:function OnPlayerJoin(player) AddPlayerChatAll(GetPlayerName(player).." connected") end AddEvent("OnPlayerJoin", OnPlayerJoin) function OnPlayerQuit(player) AddPlayerChatAll(GetPlayerName(player).." disconnected") end AddEvent("OnPlayerQuit", OnPlayerQuit)
- Redémarrez votre serveur et testez!
- Nous avons fini notre premier package.
Pour en savoir plus sur les events et functions, consultez le wiki officiel.
Vous pouvez aussi vous inspirer de nos packages: whitelist package, le game mode Battle Royal et translation (i18n) package.
Limitations des packages
- Les extensions suivantes seuleument peuvent être inclusent dans un package:
lua, js, css, html, htm, png, jpg, jpeg, gif, wav, mp3, ogg, oga, flac, woff2, ttf, pak
- Vous pouvez seulement charger 32 packages sur votre serveur.
- Vous pouvez avoir au maximum 255 fichiers par package.
Documentation officielle
L'API exposé par Onset pour développer vos packages est très complète (événements, fonctions, etc), permettant de créer ses propres packages facilement. Pour voir la documentation complète, cliquez ici!