Skip to content

basdon.net aviation server - A GTA:San Andreas Multiplayer (SA-MP) server

License

Notifications You must be signed in to change notification settings

basdon/basdon-fly

Repository files navigation

basdon-fly
----------

basdon.net aviation server - A GTA:San Andreas Multiplayer (SA-MP) server.

This repository contains almost everything(*) needed to run the complete
basdon-fly server and services package.

Maps and textdraw resource files are not uploaded (yet?).

The first commit was made 17 Jun 2018 in the fly-gm gamemode repository.
The fly-plugin plugin development started 22 Sep 2018.
The fly-plugin plugin has replaced the fly-gm gamemode since 3 Dec 2019.

The server has been live since 25 Dec 2019 at
https://basdon.net and samp://basdon.net:7777

This project is licensed under the GNU AGPLv3 License.
Files in /fly-plugin/vendor/ do NOT fall under this License.
Files in /fly-plugin/vendor/SDK/amx are Copyright (c) ITB CompuPhase, 1997-2005
Files in /fly-plugin/vendor/SDK (excluding the amx/ directory) are Copyright 2004-2009 SA-MP Team
Modifications in these files are marked as such with comments.

Anatomy
-------

This repository is a merge of now-archived repositories:
basdon/fly-db
basdon/fly-plugin
basdon/fly-web
basdon/fly-services (now fly-echo and fly-flighttracker)

Since all those files were moved into subdirectories, their history/blame might
not be representative. Check out the archived repositories to see the correct
history/blame.

fly-db: files with SQL queries that make up and change the database structure
fly-echo: Anna^ module(*) providing chat link between in-game and IRC
fly-flighttracker: Anna^ module(*) keeping track of active flights
fly-plugin: SA:MP plugin being the gamemode logic
fly-web: the website
maps: map files (.map) go in here, these define clusters of objects
server: server configuration files
textdraws: textdraw files (.text) go in here, these define textdraws

Each of those may have another readme.txt file with extra information.

(*) fly-echo and fly-flighttracker are Anna^ modules.
Anna^ is a modular IRC bot and can be found at https://github.com/yugecin/anna.

Building
--------

	Requirements
	============
	all: make, bash
	fly-echo: javac, anna (https://github.com/yugecin/anna)
	fly-flighttracker: javac, anna (https://github.com/yugecin/anna)
	fly-plugin: a Linux system with gcc, nasm, tcc
	fly-web: php with extensions pdo_mysql,gd,mbstring

	For fly-echo and fly-flighttracker to be built, the environment
	variable $ANNA_DIR needs to be set to the location where the
	anna repository (https://github.com/yugecin/anna) is cloned.

	fly-echo and fly-flighttracker are optional and will not be built
	when the $ANNA_DIR environment variable is not set or javac is not
	found. A warning will be printed but the build will not be aborted.

	Building
	========
	Run:

		make

	This will make everything. To only make one target, run for example:

		make plugin

	Available targets are: echo, flighttracker, plugin, web

	When building the plugin, a dev build is made if the $BASDONDEV env
	variable is present.

	Building the website means it will parse and generate all templates,
	datafiles, images, etc. When the $BASDONDEV env variable is present,
	the Makefile will add g+w permissions to the settings file and template
	files so that they can be regenerated by the php scripts on page load
	(the 'inc' and 'templates' folder should be chown'ed to a group that
	contains the webserver user and their SGID bit should be set).

	Cleaning
	========
	Cleaning only applies to fly-echo and fly-flighttracker. Everything else
	is always rebuilt so there's no real need to clean.
	Run:

		make clean

Installation/configuration
--------------------------

	Requirements
	============
	mysql/mariadb: import from sql files in the fly-db folder
	fly-echo,fly-flighttracker: anna (github.com/yugecin/anna)
	fly-web: php with extensions pdo_mysql,sockets
	server: other plugins:
		bcrypt-samp v2.2 (github.com/lassir/bcrypt-samp)
		mysql r39.3 (github.com/pBlueG/SA-MP-MySQL)
		simplesocket (github.com/basdon/simplesocket) (to be embedded)

	Download the SA:MP server package at https://sa-mp.com/download.php

	Configuration
	=============
	general:
		The settings.ini file in the root dir controls various settings
		that are used both in the fly-plugin and fly-web code.
		Changes made in this file will only be applied after rebuilding
		plugin and web (run 'make').

	cron:
		/cron/crontab-example.txt contains an example
		of cron configuration

		At minimum, the jobs to regenerate graphs for the website should
		be enabled.

	anna:
		For chatlogs, enable the packaged mod_log and set the path.
		For example, if the IRC channel is #basdon and the echo channel
		is #basdon.echo, add this to
		$ANNA_DIR/out/config/mod_log.properties:

			channel.basdon.echo=/basdon-fly/fly-web/www/s/chatlogs/basdon.echo
			channel.basdon=/basdon-fly/fly-web/www/s/chatlogs/basdon

		Or set it by sending commands to Anna^:

			&confadd mod_log channel.basdon.echo /basdon-fly/fly-web/www/s/chatlogs/basdon.echo
			&confadd mod_log channel.basdon /basdon-fly/fly-web/www/s/chatlogs/basdon

	fly-echo:
		The mod_bas_echo.jar file is placed in $ANNA_DIR/out by the
		build script. Enable and load it by sending the command:

			&enablemod mod_bas_echo

		Add this to $ANNA_DIR/out/config/mod_bas_echo.properties:

			echo.channel=\#basdon.echo

		Or set it by sending commands to Anna^:

			&confadd mod_bas_echo echo.channel #basdon.echo

		Anna^ will join the channel when the module is loaded. If the
		setting was not set upon load, either reload the module or use
		the &join command to make Anna^ join the channel.

	fly-flighttracker:
		The mod_bas_ft.jar file is placed in $ANNA_DIR/out by the
		build script. Enable and load it by sending the command:

			&enabledmod mod_bas_ft

		Add this to $ANNA_DIR/out/config/mod_bas_ft.properties:

			fdr.path=/basdon-fly/fly-web/www/s/fdr

		Or set it by sending commands to Anna^:

			&confadd mod_bas_ft fdr.path /basdon-fly/fly-web/www/s/fdr

	fly-web:
		An Apache http server configuration file is provided in
		fly-web/apache.conf, it should be straight-forward enough to
		see what it does in case you use a different webserver.

		Copy fly-web/inc/conf.sample.php to fly-web/inc/conf.php and
		edit as needed.

		Read the 'cron' section for the regenerations of the
		player graph image that is used on the homepage.

		In dev, set the SGID sticky bit (g+s) on the fly-web/inc and
		fly-web/gen folders. Otherwise it won't be able to regenerate
		some files (including templates and settings files) on page load
		when the $__REPARSE__ setting is set. Also remember to run make
		with the $BASDONDEV environment variable so it will set g+w
		permissions on the files when (re)generating them from the
		Makefile.

	server:
		Copy server/conf.sample.ini to server/conf.ini and edit as
		needed.

		When running, the server.cfg file is created from combining:

			servercfg-common.cfg
			servercfg-rcon_password.cfg (generated on first run)
			servercfg-dev-*.cfg (when dev)
			servercfg-prod-*.cfg (when prod)

		Additional cfg files can be made, use the numbering (like
		in 00 for the default dev/prov cfg files) to ensure an order.
		Settings can be specified multiple times, SA-MP uses the last
		supplied one.

Running
-------

Run Anna^. It will load the fly-echo and fly-flighttracker modules (when
configured correctly). This is not required to run the server, but it should be
avoided to run without fly-flighttracker as there will be no flightmaps on the
website for any flights done while it was not running.

Run the server by executing:

	. start

If a $BASDONDEV variable is present, the dev configuration will be used.

Running the server without the dev settings will start it using nohup and run
it in the background. When a segfault happens and a core dump file is found,
it will be zipped together with the plugin and moved to the
fly-web/www/s/coredumps folder. A message will be posted to Discord, if
configured, and the server should restart.

Notes
-----

The gamemode script is a stub and is deprecated, and might be removed in
the future.

Thanks & Acknowledgments
------------------------

https://github.com/Brunoo16/samp-packet-list

	for being a great resource about the packets (RPCs) data

https://sampwiki.blast.hk/wiki/Main_Page

	for making available an archive of the SA-MP wiki, which
	contained great resources. mainly the visual things and information
	tables like weapon ids, gametext style images, vehicle colors, ...

About

basdon.net aviation server - A GTA:San Andreas Multiplayer (SA-MP) server

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •