Skip to content
This repository has been archived by the owner on Jan 9, 2023. It is now read-only.

Releases: openmultiplayer/server-beta-old

open.mp Server RC1

05 Jan 22:30
317d973
Compare
Choose a tag to compare

It's here!

It's finally here!

After four years, two rewrites, arguments and drama, and countless other hurdles; it is finally here!

Release Candidate 1 (RC1) of the open.mp server.

This, hopefully, represents the final version of the code for our 1.0 release, and if everything goes smoothly with this version we will be able to finally open the so-called open.mp in just a few days from now.

Before I get in to the meat of the release I want to first sincerely thank every member of the open.mp team for helping the mod get this far. It has not been easy, mostly because of how invested everyone truly was - we all wanted what was best for the mod, for the community, for SA:MP, for our servers, and for our players; we wouldn't have embarked on this journey if that wasn't the case. Unfortunately strong differing opinions on what is best sometimes causes friction. But we're here now. So to all, a huge thank you:

  • Amir
  • Cheaterman
  • Freaksken
  • Graber
  • Hual
  • Josh
  • JustMichael
  • kseny
  • Nexius
  • pkfin
  • Potassium
  • Southclaws
  • TommyB
  • Y_Less
  • Zeex
  • And probably more...

Anyway, now the bit you actually care about...

Now we're out of beta, we're (if all goes well this week) releasing on time. So along with the server itself, which you've seen a dozen times before, we have some new goodies for you:

Pawn

The download has the official includes, no more patching the old SA:MP includes with omp.inc, now we're doing it properly! It also has a new compiler. Ever wonder when 3.10.11 was coming? Well wait no longer (if you built it yourself, you could think of this one as 3.10.12)! With this combination you'll probably get loads of new warnings, but worry not - we have a tool for that as well, to automatically upgrade a load of code, adding well-defined symbol names, const, and more in all the right places. Maybe you already noticed this, you've been using it for months, but the virtual machine (the bit inside the server) has been updated as well! Oh, and all those string natives you know and love, like SendClientMessage and AddMenuItem? They all format now. All of them*.

A full list of what's available:

  • Symbol length limit increased to 64, no more OnPlyrDoTheTing to try and fit your names in. Leading to...
  • Multiple natives decompressed - is Col short for Colour or Collision? Now you know!
  • Tags. Tags everywhere. See the included documentation.
  • The official includes are finally const-correct. No more complaining that some people might not have them.
  • Compiler version updated: __nameof, __addressof, fixes, and too many more things to go in to here.
  • switch is way faster.
  • More warnings for previously undetected issues. The more problems the compiler can find, the fewer you need to.
  • An upgrader tool to add tags and const to user-code and fix several new warnings.
  • More consistent naming. Every native has been closely examined and compared to ensure the maximum level of similarity and intuitiveness in naming.
  • Added {Float, _}:... everywhere. What does this mean? It means no more format()** - think y_va but natively.
  • -O2, the highest pawn optimisation level, works when using the new compiler and VM. Some includes may need to be updated, but some already have. To help with that...
  • The __optimisation macro was added so code can configure itself when compiled with -O2.

Documentation on the updated includes:

https://github.com/openmultiplayer/omp-stdlib

Documentation on the new compiler:

https://github.com/openmultiplayer/compiler/
https://github.com/pawn-lang/compiler/

Documentation on qawno:

https://github.com/openmultiplayer/qawno/

Documentation on the upgrader tool:

https://github.com/openmultiplayer/upgrade

* Almost all of them.
** Almost no more format().

SDK

Pawn is the long-standing, and still official, way to write modes for your server. It isn't going away, but for those of you who want more control we are finally releasing the full SDK (the Software Development Kit). This is a C++ interface to the server, the same one used by all the components that make up the core open.mp code. Anything they can do you can do too (compared to plugins, which were only designed to provide functions to pawn, not write modes).

We have some documentation under way, it takes time unfortunately. But in the meantime have several example components for those of you who want to get straight stuck in. These are all templates you can build upon, and go from basically nothing to a fully working component with most common features:

https://github.com/openmultiplayer/empty-template
https://github.com/openmultiplayer/basic-template
https://github.com/openmultiplayer/pawn-template
https://github.com/openmultiplayer/full-template

A few terms to get you started, so you can start to understand what it is that you're reading:

  • Component - A logical individual piece of the server, like objects or pickups. Ones you don't need don't need to be loaded.
  • Extension - Code that extends another bit of code. You can write component extensions, but the most common ones are player extensions, which define some structure of data to be associated with a player in addition to all their normal data like health and weapons.
  • UID - Unique IDentifier, a number that represents your component, and your component alone. This ia always required and can be got here: http://open.mp/uid
  • Entity - A thing, usually a thing a player can interact with, and which you might have a lot of. Objects are entities, but other players are also entities, even commands in a processor could be called entities.
  • Pool - Something that holds entities. When you have a lot you need to be able to access them by name or ID in some way, this is what a pool does.
  • Interface - Components use an abstract base class as an interface. This declares which methods a component has, but doesn't contain the code for the methods. Interfaces are passed around so that components can communicate with each other, but implementations are kept private.
  • SDK - The collection of all the interfaces defined by the core server.
  • ABI - An Application Binary Interface is the way compiled code talks to other compiled code. The interfaces exported by the SDK are ABI stable, which means that using two components compiled at different times will still work together.
  • pawn-natives - The library on which all native declarations are built. Useing a wrapper called SCRIPT_API around this library: https://github.com/openmultiplayer/pawn-natives
  • Event - Something that happens externally. Things like players connecting and typing commands are events. Any component can define events and tell other components when those events happen.
  • Handler - A component that wants to know when an event happens.

If you have questions, the best place is probably the brand new (revived) forums:

https://forum.open.mp/

Features

Beside all the new features announced for pawn, there are several new (and newly announced) features in the server:

  • Per-player gang zones, as were in YSF.
  • Per-player pickups, also as in YSF.
  • AttachPlayerObjectToPlayer.
  • Better PawnPlus support.
  • :memory:, and other special names support in SQLite.
  • SQLite open flags.
  • exclude config option to not load certain components.
  • Show config parse errors, don't just silently fail.
  • SDK major version check, just in case we ever make major server changes (hopefully we won't).

Fixes

There were a few new bugs introduced in beta 11, and a few minor ones left over from before. The ones fixed include:

  • funcidx already registered warning.
  • GDK plugins (streamer etc) missing natives.
  • Random crash on GMX.
  • GDK callbacks sometimes not called.
  • No logging when requested in SQLite component.
  • Some settings not reset on GMX.
  • NPCs were connecting when there were a lot done at once.
  • .so was still needed in Linux legacy plugin names.

Links

Firstly, the forums are back up. Head there for all your questions:

https://forum.open.mp/

Or if you prefer:

https://vk.com/open_mp

Next, despite it being offered a few times, we have explicitly resisted any money up to this point; because we didn't feel it was right until we had proven ourselves with a release. With this post, that time is now, so if anyone wants to help support us (all donations will go towards infrastructure and future client dev work), it would be most appreciated:

https://www.patreon.com/open_mp
https://opencollective.com/openmultiplayer

And of course everything is still in active development, so please do check all the links above regularly to see what's new that we have.

open.mp server public beta build 11

24 Dec 23:17
8a05075
Compare
Choose a tag to compare
Pre-release

Please wait for plugin maintainers to update their plugins

List of ported libraries to open.mp

Reported issues solved in beta build 11

New Natives:

native bool:IsPlayerUsingOfficialClient(playerid);
native bool:AllowPlayerTeleport(playerid, bool:allow);
native bool:IsPlayerTeleportAllowed(playerid);
native bool:AllowPlayerWeapons(playerid, bool:allow);
native bool:ArePlayerWeaponsAllowed(playerid);
native void:AllowAdminTeleport(bool:allow);
native bool:IsAdminTeleportAllowed();
native void:AllowInteriorWeapons(bool:allow);
native bool:AreInteriorWeaponsAllowed();
native bool:AreAllAnimationsEnabled();
native void:EnableAllAnimations(bool:enable);

Note: the list below only shows some of the notable issues we have fixed, alongside that there's always code and performance improvements

Full changelog including fixes and new changes:

  • Fix gmx issues with clearing player pools
  • Throw a warning when NPC executable is not found by the given path from config
  • Format improvements and better error managements
  • Fix vehicles having trailers being respawned by keeping their positions
  • Fix server crash when invalid model path is provided
  • Fix server loading from path with non ASCII characters
  • Add UTF-8 support in some places internally
  • 1:1 GetNetworkStats output
  • Add missing console commands to command list
  • Pawn VM upgrade
  • Prevent server crashes when invalid file handle is given, now we use internally tracked IDs
  • Report warnings when trying to register an already registered native name
  • Don't load modes when config has default RCON password
  • Fix raknet "full server" exploit
  • Provide a proper and better Pawn component SDK
  • Split player events in SDK for sake of performance and future ABI stability proof
  • Parse --config array options
  • Fix animation preloading for the player animation is applied to
  • Throw an error (to stdout) when config.json is invalid
  • game.group_player_objects, new config to determine whether to mix object IDs in the pool for global&per-player objects or not
  • Enable all game animations (previously BLOWJOBS and SNM were disabled)

open.mp server public beta build 10 (hotfix)

10 Sep 20:51
0c574c8
Compare
Choose a tag to compare

PLEASE WAIT FOR PLUGIN MAINTAINERS TO UPDATE THEIR THIRD PARTY COMPONENTS TO SUPPORT BETA 9/10 OR THE SERVER WILL CRASH AND BURN

Reported issues solved in beta build 10

Full changelog including fixes and new changes:

  • Fixed plugins which use std::filesystem crashing on Linux with static build
  • Dynamic Linux build now statically links libstdc++ and only dynamically links libssl 1.1.1q
  • Lowered Linux GLIBCXX version requirement to 3.4.11 (CentOS 6 and newer)
  • Fixed 0.3dl models being cleared on gmx

open.mp server public beta build 9

06 Sep 19:00
2d2cb51
Compare
Choose a tag to compare
Pre-release

PLEASE WAIT FOR PLUGIN MAINTAINERS TO UPDATE THEIR THIRD PARTY COMPONENTS OR THE SERVER WILL CRASH AND BURN

Reported issues solved in beta build 9

Full changelog including fixes and new changes:

  • Dynamic tick rate. Specify a target tickrate, rather than a fixed sleep time.

    • Use the tickrate console command to set the rate.
    • sleep can now be a float to accomodate precise tick rates.
  • More plugin compatibility - fsutil, Discord connector (only with non static build)

  • SetSpawnInfo return fixed.

  • Fix weather and time not resetting after GMX.

  • Fix various GMX bugs.

  • Fix various console commands.

  • Fix GetPlayerClass.

  • Fix GetVehicleLastDriver.

  • Add GetVehicles native.

  • Add GetPlayers native.

  • Add GetActors native.

  • All lagcomp modes are now available through config.

  • Fix trailer sync.

  • Fix GetVehicleLastDriver.

  • Fix GetPlayerRotationQuat.

  • Fix crash in vehicle component.

  • Implemented all DL natives and callbacks (AddSimpleModel, AddSimpleModelTimed, GetPlayerCustomSkin, OnPlayerFinishedDownloading, OnPlayerRequestDownload):

    • RedirectDownload native and OnPlayerRequestDownload callback are now deprecated in favour of CDN config options.
  • Add artwork.cdn config option to set a remote download address.

  • Add artwork.enable (legacy: useartwork) config option.

  • Add artwork.models_path (legacy: artpath) config option.

    • Server can load custom models from artconfig.txt file like SA:MP does.
  • 0.3.7 compatibility is preserved and can be configured by network.allow_037_clients config option (true by default).

  • open.mp server comes now with a built in webserver used to serve custom models

    • Webserver is using open.mp server bind address and port. Please allow TCP connections on your port in firewall if you plan to use it.
    • If your public IP address is different than bind address (ex: you're behind a router) you'll need to set it in network.public_addr config option.

Notes:

  • Due to few changes old config.json files may not work properly. Please use ./omp-server --default-config to generate a new one

  • server.cfg users are not affected.

  • While allowing 0.3.7 connections only 1000 objects can be created

  • open.mp server now provides two types of Linux builds, standard and static. You are encouraged to use the standard build if possible, it will minimize incompatibilities with various plugins; however, it will require openssl 1.1 installed on your system. If you can't install modern openssl on your system (typically if it's very old), you can use the static build, but some plugins or components might fail to load and crash the server.

open.mp server public beta build 8

13 Aug 13:36
2d2cb51
Compare
Choose a tag to compare
Pre-release

Please wait for plugin maintainers to update their plugins

List of ported libraries to open.mp (Updated)

Reported issues solved in beta build 8

Note: the list below only shows some of the notable issues we have fixed, alongside that there's always code and performance improvements

Full changelog including fixes and new changes:

  • Build for GNU ARMv7 and add binaries
  • Fix TogglePlayerSpectating calling OnPlayerStateChange
  • Fix an infinite loop in RakNet
  • Some spectating sync validations
  • Fix chat_input_filter config issue not being loaded
  • Sync validations for NaN values and infinite values
  • Fix GameTextFor(Player/All)f
  • Fix SpawnPlayer when player is in vehicle
  • Better warning message for AttachPlayerObjectToPlayer
  • Capping hostname, language, and gamemode text in query
  • Add ffind, dfind, ftouch natives for files
  • Add rcon console command failure message
  • Fix some of gmx bugs
  • Fix a crash causing with receiving broken camera mode
  • Validation for class ids
  • Fix menu columns count issue (causing creating wide menus)
  • Fix an issue with components not being found in linux docker
  • Fix GetConsoleVarAsInt/GetServerVarAsInt if variable type is bool
  • Format negative maxlength check
  • Fix SetPlayerPos when skin is applied to player while in vehicle
  • Fix random vehicle color issues
  • Fix chat_input_filter config issue not being loaded
  • Fix detonator crasher
  • Fix player data not being reset after server restart
  • Reset player state when spectating ends
  • Fix SetSpawnInfo used in OnPlayerRequestClass

open.mp server public beta build 7

14 Jul 19:02
2ba3cb1
Compare
Choose a tag to compare
Pre-release

List of ported libraries to open.mp

Reported issues solved in beta build 7

Full changelog including fixes and new changes:

Fix markers sync after SetPlayerMarkerForPlayer use
Fix vehicle unoccupied sync when there are passengers
Fix passenger sync not updating player vehicle for some models
Fix SetPlayerSkin breaking player animation while in vehicle
Fix unnecessary spectating state change calls
Fix OnGameModeExit call order
Fix higher characters becoming negative

open.mp server public beta build 6

10 Jul 18:48
19eb7cf
Compare
Choose a tag to compare
Pre-release

Please wait for plugin maintainers to update their plugins

List of ported libraries to open.mp (Updated)

Reported issues solved in beta build 6

PLEASE NOTE:

Old config.json files don't work any more create a new one using ./omp-server --dump-config (creates a new config.json using your server.cfg) or use ./omp-server --default-config to generate a new one with default values
Don't worry you can still use your server.cfg without any issue

Full changelog including fixes and new changes:

  • New config structure (old config.json files don't work anymore) and new key names
  • Remove --write-config and now introduce --dump-config (generates config.json from your server.cfg) and --default-config
  • Add new Player3DTextLabel natives
  • Fix TextDraws component name (shows while booting server)
  • Fix an issue some people not being able to load GangZones.so component on linux
  • Add tickrate count to GetNetworkStats
  • Fix packetloss percentage showing the wrong number in Network Stats natives
  • Add sleep console command
  • Various sync validation and fixes when receiving data from clients
  • Add YSF format functions (i.e: SendClientMessagef)
  • Fix formatting for packed strings
  • Improvements in GangZones processing
  • Fix gangzone event handler calls ordering
  • Fix GangZoneShowForPlayer creating GangZone more than once when called multiple times
  • Fix NetStats_GetConnectedTime
  • Fix TextDrawSetPreviewRot
  • Fix PutPlayerInVehicle telling server player is inside while they are not due to slow sync
  • Reset player's stored values on gmx
  • Fix spectating state bug showing spectator to player for some moment as AFK
  • Reset player's controllable state on spawn
  • Fix DeletePVar and DeleteSVar
  • Add GetRunningTimers
  • Fix player team setting and getting, also update when needed
  • Fix using SetPlayerTeam in OnPlayerRequestClass
  • Add worldtime console command
  • Fix CreateExplosion for not sending correct type
  • Handle packets sent before player initialization, including ID_RECEIVED_STATIC_DATA & ID_NEW_INCOMING_CONNECTION and custom ones
  • Port many fixes from fixes.inc

New natives:

native SendClientMessagef(playerid, color, const message[], {Float,_}:...);
native SendClientMessageToAllf(color, const message[], {Float,_}:...);
native GameTextForPlayerf(playerid, displaytime, style, const message[], {Float,_}:...);
native GameTextForAllf(displaytime, style, const message[], {Float,_}:...);
native SendPlayerMessageToPlayerf(playerid, senderid, const message[], {Float,_}:...);
native SendPlayerMessageToAllf(senderid, const message[], {Float,_}:...);
native SendRconCommandf(const command[], {Float,_}:...);
native GetRunningTimers();
native RemovePlayerWeapon(playerid, weaponid);

open.mp server public beta build 5

24 May 09:05
93e83fc
Compare
Choose a tag to compare
Pre-release

List of plugins ported to open.mp

Reported issues solved in beta build 5

Other changes which may not be listed above:

  • Add per-player gangzones and new callbacks
  • Fix TextDrawSetStringForPlayer
  • Fix GetVehicleColor and SetVehicleColor
  • Fix player velocity having random values when not initialized
  • Fix GetPlayerAnimationIndex, now returns 0 when player is not on foot
  • Fix version mismatch kick (now mods like SAMP Addon and CodsMP should work)
  • Add missing server rules
  • Fix Kick crash
  • Fix legacy config's filterscripts path
  • Fix samp-npc path for windows (NOTE: if your automatically generated config has it as ./samp-npc.exe remove ./ from the beginning)
  • Many internal changes for improvements and more flexibility for plugin developers

New scripting api (natives and callbacks); available in here

// Gangzone - Global
native UseGangZoneCheck(zoneid, bool:toggle);

forward OnPlayerEnterGangZone(playerid, zoneid);
forward OnPlayerLeaveGangZone(playerid, zoneid);
forward OnPlayerClickGangZone(playerid, zoneid);

// Gangzone - Player
native CreatePlayerGangZone(playerid, Float:minx, Float:miny, Float:maxx, Float:maxy);
native PlayerGangZoneDestroy(playerid, zoneid);
native PlayerGangZoneShow(playerid, zoneid, color);
native PlayerGangZoneHide(playerid, zoneid);
native PlayerGangZoneFlash(playerid, zoneid, color);
native PlayerGangZoneStopFlash(playerid, zoneid);
native IsValidPlayerGangZone(playerid, zoneid);
native IsPlayerInPlayerGangZone(playerid, zoneid);
native IsPlayerGangZoneVisible(playerid, zoneid);
native PlayerGangZoneGetColor(playerid, zoneid);
native PlayerGangZoneGetFlashColor(playerid, zoneid);
native IsPlayerGangZoneFlashing(playerid, zoneid);
native PlayerGangZoneGetPos(playerid, zoneid, &Float:fMinX, &Float:fMinY, &Float:fMaxX, &Float:fMaxY);
native UsePlayerGangZoneCheck(playerid, zoneid, bool:use);

forward OnPlayerEnterPlayerGangZone(playerid, zoneid);
forward OnPlayerLeavePlayerGangZone(playerid, zoneid);
forward OnPlayerClickPlayerGangZone(playerid, zoneid);

open.mp server public beta build 4

09 May 16:56
93e83fc
Compare
Choose a tag to compare
Pre-release

List of plugins ported to open.mp

Reported issues solved in beta build 4

Other fixes that are not listed above:

  • Fix a bug where sending an empty packet freezes the server
  • Some changes in Menu SDK in sake of consistency and better naming
  • Some changes in TextDraw SDK in sake of consistency and better naming
  • Some changes in Class SDK in sake of consistency and better naming
  • Change Pawn component events priority to the lowest
  • Fix GetPlayerTargetActor
  • Don't clear player data before calling OnPlayerDisconnect
  • Add TextDrawSetStringForPlayer
  • Disable rcon completely when rcon_password is empty

open.mp server public beta build 3

25 Apr 12:02
93e83fc
Compare
Choose a tag to compare
Pre-release

List of plugins ported to open.mp

Reported issues solved in beta build 3

Changelog:

  • Make addSiren parameter optional in CreateVehicle to support old scripts with old samp includes
  • Add GetWeaponSlot pawn native.
  • Update host name internally to be used in scoreboard and on connect, when it's changed at runtime
  • Create objects after player is fully connected
  • Change respawn delay 0 behavior in CreateVehicle, now following how samp works
  • Fix spawning samp-npc process on Linux
  • Fix PutPlayerInVehicle seat
  • Add HidePlayerDialog
  • Hide dialog if ShowPlayerDialog is called with INVALID_DIALOG_ID as dialog ID
  • Fix sending death message when killer ID is INVALID_PLAYER_ID
  • Fix setCameraLookAt not working with CAMERA_MOVE
  • Fix OnVehicleSirenStateChange
  • Fix HTTP request type issue
  • Rename GetVehiclePaintJob to GetVehiclePaintjob
  • Fix rcon_password
  • Fix a client crash when an invalid fighting style is set