Similar to the recent work for commands, track and expose the creating
plugin for convars. The first plugin to register a given cvar becomes
the owner until that plugin is unloaded. If a plugin attempts to
register a convar that was already registered and the originally
registering plugin has been unloaded, that plugin becomes the owner.
This isn't quite as nice as the way commands shift "ownership" as
plugins are unloaded, but we don't have a sane data structure currently
to implement that, and it seemed like a lot of unnecessary work as there
shouldn't really be multiple plugins with conflicting cvars.
Closes#1492
The change in behaviour to the OnLevelInit forward params isn't obvious
when compiling a plugin, deprecate it to make it a lot more obvious that
something has changed.
Some plugins rely just on the timing of OnLevelInit rather than doing
anything with the entity lump, for these plugins offer a new OnMapInit
forward that is implemented in core rather than sdkhooks. If / when we
offer a new entity lump manipulation API in the future this'll be the
forward where it can be used to make changes.
Newer Source engine versions now use a dynamically allocated buffer for
the map entity lump, and some maps have over 16MB of entity data - far
larger than our 2MB limit.
There is no sane way we can currently handle this, so just remove the
functionality from the forward until a more comprehensive API can be
designed.
Fixes#1470
* Add support for Maxmind GeoIP2 database files (#913).
* Copy/paste error.
* Mark GeoipCode3 as deprecated.
* Fix build when compiling with AMBuild.
* Replace loose libmaxminddb files with submodule.
* Fix Linux build.
* One more hack for submodule.
* Actually fix Linux build.
* GeoIP2 extension to sourcemod
* Update basevotes
When a player leaves during a voteban, he will be banned anyway. Also added a cvar with a ban time setting.
* Update basevotes.sp
* Update AMBuilder
* ke::AString to std::string
* Update extension.cpp
* Update AMBuilder
* Added coordination natives
Added GeoipLatitude, GeoipLongitude, GeoipDistance natives.
* Create osdefs.h
* Update maxminddb_config.h
* Update extension.cpp
* Update extension.cpp
* Added automatic search for database file
* Fix automatic search for database file
* Update extension.cpp
* Update geoip.inc
* .gitmodules revert
* Update geoip.inc
* Update libmaxminddb to version 1.5.2
* Update extension.cpp
* Check language in the DB
* Removed langCount variable
* Determination of the client's language
* Update geoip.inc
* Update geoip.inc
* Update extension.cpp
* Update geoip.inc
* Update extension.cpp
* space instead of tab in .inc
* Update extension.cpp
* Update geoip.inc
* Optimizing length measurement region code
* Update package script to fetch the new GeoLite2 database
This package is the last CC-BY-SA licensed GeoLite2-City database extracted from https://src.fedoraproject.org/rpms/geolite2 from december 2019.
This doubles the download size for SM packages, but it's what we have to deal with atm :(
* Fix potentially returning uninitialized memory in GeoipRegionCode
If the lookup failed, we'd copy back whatever is on the stack in the ccode buffer.
Co-authored-by: Nick Hastings <nshastings@gmail.com>
Co-authored-by: Headline <michaelwflaherty@me.com>
Co-authored-by: Accelerator74 <dmitry@447751-accele74.tmweb.ru>
Co-authored-by: Peace-Maker <peace-maker@wcfan.de>
* Add new method - Converts a bit string to a string of flag characters
* New syntax
* Set tags
* Fix tags
* Change method name
* Remove for - set null only once
* Execute ConVarQueryFinished if client disconnects
So people passing handles to the extra data can close them, adds a new return value to check if this happened
* Update based on suggestion
Co-authored-by: Asher Baker <asherkin@limetech.io>
* Update based on notes
* Normalize
* Pass along cookie handle instead of invalid
Co-authored-by: Asher Baker <asherkin@limetech.io>
* Update basevotes
When a player leaves during a voteban, he will be banned anyway. Also added a cvar with a ban time setting.
* Update basevotes.sp
* Added VoiceHook functions
* Update extension.h
* Update extension.h
* Code optimization
* Added support for more engines
* Invalidate timers
* Fixes
* Update extension.cpp
* Update voice.cpp
* correct Forward event type to ET_Ignore.
* sdktools_voice: de-implement IsClientSpeaking
* sdktools_voice: Add notice/unbind IsClientSpeaking
Co-authored-by: Kyle Sanderson <kyle.leet@gmail.com>
* Add natives to work with 64 bit Protobuf values
* Fix linux build
* FIX alignment requirements
* FIX alignment requirements V2
* Remove legacy API
* Inattention
This has been another constant source of confusion since the C99 ones were added to the strftime documentation we link.
It'd be nice to have a consistent implementation inside SM in the future.
* More TR natives
* Fix small typo
* Fix another typo
* Fix TR_AllSolid description
* Change Disp to Displacement
* Reorder params in TR_GetSurfaceName
* Fix TR_GetSurfaceName
* Another fix for TR_GetSurfaceName -_-
* Change if block to switch
* Make handle first param in TR_GetSurfaceName
* Reorder TR_GetStartPosition params
* Make TranslatePartitionFlags static
* Change tabs used for formatting to spaces
* Change inline comment style to be consistent with rest of file
The `TopMenu` methodmap natives weren't marked as optional if the extension was optional like the other normal natives.
The `Regex` natives weren't marked as optional at all before if the regex extension was included optionally.
This makes the error message cleaner in case topmenus aren't loaded.
```
adminmenu.smx (Admin Menu): Required extension "TopMenus" file("topmenus.ext") not running
basebans.smx (Basic Ban Commands): Native "TopMenu.Display" was not found
```
* Match old DataPack behavior when overwriting data
* Make RemoveItem more flexible
* Ditch implied RemoveItem behavior & asher fixes
* KyleS nits - but fixed before he says them
* Add back implicit behavior
* Update CDataPack.cpp
Committing to the spec.
* Update CDataPack.h
* fixup removing last item if explicitly requested
* Fix logic for accepting pack pos, rather than index
* Fixup IsReadable
* headache is over now
* Add profiler methodmap
* No tag mismatches here
thanks pm
* Lets fix some documentation while we're here.
* Use proper methodmap documentation style
Across sm we use `//` for methodmap docs, so lets just keep this consistent
Apparently people use the float natives for actual float arithmetic; they're not really intended to be used directly.
* Prevent use of primitive float operation functions
* Deprecate float operation functs
* Alias Float natives to internal names
* Add clarifying note
* Remove use of internal FloatDiv native
* Create FrameIterator type
This commit adds the FrameIterator type to core sm along with a few
methods around getting the information for each frame.
* Fix incorrect documentation
[skip ci]
* Implement KyleS's Changes
* A nit
Be able to push NULL_[VECTOR|STRING] to a forward or direct function call.
The callee can check the parameter using the IsNullVector/IsNullString natives.