From 9ac40bffafc5a27b6aaf49e49766ce3119f61477 Mon Sep 17 00:00:00 2001 From: O1LER <44237025+O1LER@users.noreply.github.com> Date: Thu, 13 Mar 2025 23:32:15 +0100 Subject: [PATCH] First big chunks --- .../content/ResourcesForExamplePlugin.zip | Bin 0 -> 4054 bytes .../mod-creation/server/getting-started.md | 113 ++++++++++++++++-- 2 files changed, 106 insertions(+), 7 deletions(-) create mode 100644 docs/assets/content/ResourcesForExamplePlugin.zip diff --git a/docs/assets/content/ResourcesForExamplePlugin.zip b/docs/assets/content/ResourcesForExamplePlugin.zip new file mode 100644 index 0000000000000000000000000000000000000000..3006f8aa93578efb3000bdee6a58dfb5fd0746b7 GIT binary patch literal 4054 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 cms#?x{ ip, beammp) +function onPlayerAuth(player_name, role, isGuest, identifiers) + local ip = identifiers.ip + local beammp = identifiers.beammp or "N/A" + print("onPlayerAuth: player_name: " .. player_name .. " | role: " .. role .. " | isGuest: " .. tostring(isGuest) .. " | identifiers: ip: " .. ip .. " - beammp: " .. beammp) +end +``` + +`onPlayerAuth` gets triggered as soon as a player wants to join, also see [onPlayerAuth in the scripting reference](../../../scripting/server/latest-server-reference/#onplayerauth) + +Another example using onPlayerAuth, but this will deny guests from joining the server by sending the client a message back, which will then be shown to the player: + +```lua +function onPlayerAuth(playerName, playerRole, isGuest, identifiers) + if isGuest then + return "No guests allowed, please use a BeamMP account" + end +end +``` + +Further info on serverside functions provided by BeamMP can be found in the [latest server reference](../../../scripting/server/latest-server-reference.md) + +## Clientside lua + +This largely follows the [BeamNG extensions](https://documentation.beamng.com/modding/programming/extensions/) + +```lua +local M = {} + +if extensions.isExtensionLoaded("examplePlugin") then + log("E", "examplePlugin", "examplePlugin loaded on clientt side") + return +end + +return M +``` +**WIP** + +## modScript.lua + +Usually contains only two lines + +```lua +load('examplePlugin') +setExtensionUnloadMode('examplePlugin', 'manual') +``` + +You can add a log print if you want to see in the logs when your modScript gets processed by BeamNG + +```lua +load('examplePlugin') +setExtensionUnloadMode('examplePlugin', 'manual') +log('I', 'modScript', "examplePlugin loaded") +``` + + + - This site is being actively worked on. - - Feel you could help? Please do by clicking on the page with a pencil on the right! - This can be done any page too. -# Getting started -This page is going to take you through creating BeamMP resources for the server. \ No newline at end of file