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.

  1. 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.
  2. Créer un fichier package.json dans le dossier onset/packages/helloworld.
  3. Le contenu du fichier package.json doit être au format JSON!
    {
        "author": "YourName",
        "version": "1.0",
        "server_scripts": [],
        "client_scripts": [],
        "files": []
    }

  4. Pour l'instant notre package n'est pas actif sur le serveur Onset.
    Pour activer le package, éditez le fichier onset/server_config.json (voir config server onset) et ajoutez le package dans la liste (nom du dossier dans onset/packages) dans la section packages:
    	"packages": [
    		...,
    		"helloworld"
    	],

  5. 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).
Notre premier script LUA va être très simpliste.

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.

  1. Créez un dossier onset/packages/helloworld/server.
  2. 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.
  3. Vous devez maintenant ajouter le chemin du script dans le fichier package.json, dans la section server_scripts:
    {
        "author": "mTxServ",
        "version": "1.0",
        "server_scripts": [
            "server/server.lua"
        ],
        "client_scripts": [],
        "files": []
    }

    Sauvegardez le fichier.
  4. 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`

  5. 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)

  6. Redémarrez votre serveur et testez!
  7. 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!