Oh no! Where's the JavaScript?
Your Web browser does not have JavaScript enabled or does not support JavaScript. Please enable JavaScript on your Web browser to properly view this Web site, or upgrade to a Web browser that does support JavaScript.


CS:GO Sm Builder

CS:GO Sm Builder
Author: MiXFiX
Publisher's Official Homepage: No information available
Category: SourceMod Plugins
Publisher's Description

This is still very much a work in progress. Don’t try to use it unless you want to contribute to its development. Currently, this only targets python3 and unix-like systems

smbuilder is a build/package tool for managing SourceMod plugins and servers. It works as a command-line tool that:

  • reads a configuration file

  • compiles any changed plugins

  • creates packages, which are just sets of files ready to be uploaded to a server



Why is it helpful?

  • Helps you have 1 file that defines what goes on a server, by creating a package for it

  • Convenient way to manage configuration files

  • Intelligent templating of config files (using Jinja2), which makes it easy to reuse files with slight changes for different servers



What doesn’t it do?

  • Doesn’t upload files to a server (a script to do this may come in the future though)

  • Doesn’t deal with old files on a server – they won’t get removed easily (maybe in the future I’ll have a way to handle that)

  • Doesn’t manage your install of the sourcemod compiler or 3rd party include files

  • Doesn’t do anything with extensions

The config files are just python files, so you can use any python syntax you want in them.



General philosophy:

  • Convention over configuration

  • Simple configuration syntax

  • User friendly (especially when presenting errors – avoid python stack traces!)

  • Useful to both plugin developers and server administrators




A brief example

Consider a plugin (for example: my PugSetup plugin for CS:GO) that lives in the 


You also might have some files under 

, like 


hostname {{name}}
sv_alltalk 1
mp_autokick 0


Plugin(name='pugsetup', source='scripting/pugsetup.sp')

    'name': '10 man server',

From the directory this all lives in, invoking 


  • compile (if needed) 

  • copy the files from 
     to the output 

  • replace (in 
    hostname 10 man server

This will produce the output package, which will live in 

, which will have both an 
 directory and a 
 directory under it, matching the server file layout.



Installing a development version

For a unix-style system, you should run:

  1. Clone the repository: 
    git clone https://github.com/splewis/sm-builder

  2. Move into the repo: 
    cd sm-builder

  3. Install pip for managing the python dependencies: 
    sudo apt-get install python-pip
     for debian and ubuntu

  4. Install python dependencies if needed: 
    sudo pip install -r requirements.txt

  5. Install smbuiler: 
    sudo python setup.py install

  6. You’re done! You can now invoke 
     on the command line.

You may still need to configure a SourcePawn compiler, so read on below for how to do that.

Windows support may come later. It shouldn’t take much to get it to work, but there may be small issues to work out before I can claim it works on windows.



Command line usage

  • smbuilder
     will run the smbuild file in the current directory.

  • smbuilder target
     will run the smbuild file in the given target directory

Note that the output is always in the 




Flags and settings:

The first time the program is run, it will produce a file in a user-config directory. For linux, this will generally be 


Example first run:

splewis-laptop csgo-retakes $ smbuilder
Settings written to /home/splewis/.config/smbuilder.ini

You can also set things from command line flags (these overrule the config file settings):

  • --compiler (-c)
     specifies a sourcepawn compiler to use (default: 

You may want to add the path of of your sourcemod compiler to the system path, something like:





You may define a 


Registering a 

 have the following named arguments:

  • source
    : source code file for the plugin (cannot be used if 
     is used)

  • binary
    : binary file for the plugin (cannot be used if 
     is used)

  • name
    : unique name that identifies the plugin, if not defined, the filename (minus extension) is used as the name

  • deps
    : names of other plugins that this plugin relies on (i.e. runtime dependencies)

Registering a 

 has the following named arguments:

  • name
    required, unique name that identifies the package

  • plugins
    : list of plugin names the package contains

  • disabled_plugins
    : list of plugin names that should be disabled (not inherited)

  • extends
    : inherited base packages

  • cfg
    : directory name to bring files into the package 

  • configs
    : directory name to bring files from 

  • data
    : directory name to bring files from 

  • gamedata
    : directory name to bring files from 

  • translations
    : directory name to bring files from 

  • sources
    : list of source code files to also compile into the package (this is a shortcut for creating a 
     for each one)

  • args
    : dictionary of arguments to replace in non-binary files

  • filegroups
    : dictionary of output directory name - list of input files to package into the build

You may also include plugins/packages from another directory using 



How to use templates

Jinja2 is used for templating config files. Here is an brief example:

 'name': 'myserver',
 'competitive': True,

some file in the 


hostname {{name}}

{% if competitive %}
sv_alltalk 0
sv_deadtalk 1
{% else %}
sv_alltalk 1
sv_deadtalk 0
{% endif %}

will produce a corresponding output file of:

hostname myserver
sv_alltalk 0
sv_deadtalk 1

With this strategy you can reuse different configuration values and files in different packages, without making dozens of files.

There is a special arguments you can use in config files: 

, which is set to the list of plugin binary filenames in the package.

Download Information
Version: No information available
Total Downloads: 6 downloads
Publication Date: 08/23/2021

Download License: No information available
Operating System: No information available
Copyright: No information available


Leave a Comment

Please Login to Post a Comment.
  • No Comments have been Posted.

Rating is available to Members only.
Please Login or Register to vote.
Awesome! (0)0 %
Very Good (0)0 %
Good (0)0 %
Average (0)0 %
Poor (0)0 %

Downloads Publisher