VulCode

Game server plugins: Minecraft, FiveM and SCP:SL

We write Minecraft plugins, FiveM scripts and SCP: Secret Laboratory plugins for mechanics no ready-made pack has: your own currency, a shop, ranks, mini games and anything you dream up for your players.

Service catalog
Minecraft: a jungle with the player's hotbar
SCP: Secret Laboratory: a Tesla gate in the facility

Three games, three ways of writing

Each game has a different language, a different API and different pitfalls. We write for whatever your server runs and follow its community's conventions.

Minecraft: a taiga

Minecraft

Language
Java
API
Paper, Spigot
Typical plugins
Economy, minigames, GUI menus, stored player data
GTA V: Los Santos at sunset

FiveM

Language
Lua or JavaScript
API
ESX, QBCore
Typical plugins
Jobs, factions, NUI interfaces
SCP: Secret Laboratory: the surface zone at night

SCP: Secret Laboratory

Language
C#
API
EXILED, LabAPI
Typical plugins
New roles, round events, admin tools

An economy and a shop on the server

A Minecraft server runs 20 ticks a second, one every 50 ms, and has to fit all game logic into that time. So the economy and the shop save their data in the background, and only the result comes back to the game.

Sample screen: the server shop in a chest window, a diamond pickaxe for 1,250 coins, the player balance, the balance after purchase and a limit of two a day
  1. The balance in a database, not a file

    The plugin keeps balances in a backed-up database, not a single file, so player progress survives a server crash.

  2. Prices and limits in the config

    You change the price, the daily limit and the shop texts in a config file with every option described, with no developer and no recompiling.

Sample screen: the game chat on a phone with an order received from the store, the pickaxe purchase, the balance after it and a payment from another player
  1. A store order waits for the player

    A paid order goes into the reward queue, and the plugin hands it out the next time the player joins. A repeated notification from the payment operator never hands it out twice.

  2. A purchase without lag

    The purchase is written to the database in the background, off the main thread, so it never holds up server ticks.

FiveM: logic on the server, not the player

A FiveM resource is described by its fxmanifest.lua: client scripts, server scripts and the NUI page. Money and items are decided by the server layer, never by the player.

On the player's machine
  1. NUI
    ui_page in fxmanifest.lua, HTML and JavaScript, job and faction menus

    The player clicks in the interface that the job is done.

  2. Client scripts
    client_scripts, Lua or JavaScript, what the player sees and clicks

    The client script passes the request to the server and settles nothing itself.

On the server
  1. Server scripts
    server_scripts, condition checks, payout

    The server checks that the job was really done and only then pays out.

  2. Framework
    ESX, QBCore

    The framework adds the money to the player's character.

  3. Database
    Player characters and economy, backups

    The new balance goes into a backed-up database.

A forged event

The client script runs on the player's machine, so it can be bypassed, and a server event can be triggered with forged data.

Refused. What the client sends is never taken on trust: the server checks for itself that the job was done.

What you own

You get the whole resource with the rights after acceptance and full payment, and you change payouts, prices and texts in the config files without a developer. The repository keeps its change history, so someone other than us can keep developing the resource too.

SCP:SL: LabAPI or EXILED

LabAPI is the official modding framework from the makers of the game, while EXILED is developed by the community. The first question is not which one is better but what your server runs on.

LabAPI

SCP:SL
Northwood Studios
LabAPI
Northwood Studios
Your plugin
we write it

The game and the framework come from the same team, Northwood Studios, the makers of the game. It is the official SCP: Secret Laboratory modding framework.

When it fits
  • The server is just starting, or you are rewriting its plugins anyway, so nothing ties you to another framework.
  • You want to build on the official framework from Northwood Studios, the makers of the game.
  • The plugins you want to add are written for LabAPI.
  • The game and the framework come from the same team, and you would rather check compatibility after an update against one source of changes.
  • The plugin is meant to run on many servers, not just yours, so you build it on the framework the game makers name as official.
Verdict

A server with no plugins yet, or a set rewritten from scratch, goes on LabAPI. New code then rests on what the game makers provide rather than on one more project.

EXILED

SCP:SL
Northwood Studios
EXILED
ExMod-Team, the community
Your EXILED plugins
already running
The new plugin
we write it

The framework is developed by the community, in the ExMod-Team repository. It is a plugin framework with a game event system.

When it fits
  • The server already runs EXILED and has plugins you do not want to rewrite.
  • The plugins you want to keep or add use EXILED.
  • Your plugins react to game events through the EXILED event system, and the new plugin has to work with them.
  • Your staff already know the config and commands of your EXILED plugins, and a framework switch would mean learning it all again.
  • You want a new mechanic, not a rebuild of the whole server.
Verdict

A server that runs EXILED stays on EXILED: the new plugin works next to the ones you have, with no rewrite of the set. A move to LabAPI is quoted separately, if you decide to make it.

What we connect the plugin to

A game server rarely lives alone. These connections come up most often.

  • Discord

    The player links accounts once, and from then on the in-game rank and the Discord role change together.

  • Item shop and payments

    A paid order waits in the reward queue, and when the bank reverses a payment, the reward goes into the removal queue.

  • Server panel

    The egg's install script fetches the plugin along with the game, and the hosting customer changes its config in the panel or over SFTP.

A plugin or resource
Your game server

A player joining, a rank change, a player report, stats and the server state.

Database queries and web requests run off the main thread, so they never hold up the ticks.

  • Steam

    By SteamID the plugin links the site account to the player in game, so a purchase reaches the right person even after a name change.

  • Server website

    The site reads the leaderboard from the same database the plugin writes stats to, so the numbers on the site and in game match.

  • Database

    Balances, the reward queue and stats in a backed-up database rather than in files on the game server.

How we build a plugin

From a description of the mechanic to a plugin installed on your server.

  1. The mechanic

    You describe what should happen in game and list your plugins, and we agree on the game version, framework, dependencies and possible conflicts.

    You get: A quote and a date

  2. A test build

    The plugin goes onto a test server with the same game version and plugin set, where you try it with your staff before release.

    You get: Fixes after testing

  3. Load testing

    With many players on at once, we measure the plugin's tick impact and check that data writes are complete.

    You get: A plugin ready for production

  4. Installation

    We install the plugin on the live server or hand your staff the instructions.

    You get: Code you own and a guide

  5. Updates

    When a new game version lands, the live server stays on its current one while we fix the plugin on the new one, before the server moves over.

    You get: Compatibility with new versions

Common questions about game plugins

Answers about game versions, source code and the quote.

Describe the mechanic your server is missing

Tell us which game and framework your server runs and what should happen. We will reply within an hour with questions and a quote.