Commit Graph

970 Commits

Author SHA1 Message Date
Karol Szuster
361a6cc9e0 Introduce a JSON module (#379)
* Add JSON module

* Merge upstream changes

Fix memory leaks

* Add json include to PackageScript

* Merge upstream changes

Fix memory leaks and increase max nesting

* Fix documentation

* Use AutoPtr in managing JSON handles

* Merge upstream changes

Order of items in an array is preserved after removing an item.

* Merge upstream

* Fix crash

* Add VS projects files and fix mixed tab/spaces

* Remove erroring on "json_free"

* Add comments to "json.inc" file

* Remove overloaded operators

* Use of "override" keyword where needed

* Fix parameter's name
2017-09-30 20:23:12 +02:00
Vincent Herbet
ab854ec035 Improve UTF-8 support in some natives (bug 6475) (#407)
* Compile as static library, update AMBuildScript and link to core

* Update VS project files to include the library

* Add UTF-8 Rewind library (v1.5.1) to third_party directory

* Update ACKNOWLEDGEMENTS.txt

* Move AMXX buffer in its own function

* Move constants from string.inc to string_const.inc and update project files

* Move stocks from string.inc to string_stocks.inc and update project files

* Improve UTF-8 support in containi() and update documentation

* Improve UTF-8 support in strcmp() and update documentation

* Improve UTF-8 support in strfind() and update documentation

Worth to be noted that this native with ignorecase set was not working properly. So broken that no one reported the issue.
This adds also a safety check for "pos" parameter to not go < 0.

* Improve UTF-8 support in strncmp() and update documentation

* Improve UTF-8 support in equali() and update documentation

* Add an option to some UTF-8 Rewind functions for avoiding invalid data to be replaced

By default it replaces any invalid byte or sequence of bytes by 0xFFFD (3 bytes). It can be problematic when the input buffer is not changed (from a plugin) and that some natives need to calculate a position from the converted string. With such replacement, the position is displaced due the final string length being larger.

This compiles the library as C++, because I added some silly param with a default default value which is not supported by C.

* Improve UTF-8 support in replace_string/ex() and update documentation

* Add is_string_category() and update documentation

* Update a little testsuite plugin (and fix linux compilation)

* Add mb_strotolower/upper() and update documentation

* Add mb_ucfirst() and update documentation

* Add mb_strtotile() and update documentation

* Improve UTF-8 support in get_players() and find_player() with name/case insenstive flags set

* Fix KliPPy's complain
2017-08-05 10:32:16 +02:00
PartialCloning
24e56d0476 Add elog_message native (#451)
* elog_message

Like "log_message". Logs a message to the current server log file, however the messages sent are also sent to all plugins and can be hooked using "register_logevent".

* Update amxmodx.cpp

* Update Editor.sci

* Update UnitfrmMain.dfm
2017-08-01 15:14:53 +02:00
Vincent Herbet
1dc1f1b9c4 Introduce Trie Iterators (#413)
* TrieIter: Add possibility to obtain a new'd HashTable iterator

* TrieIter: Add CellTrieIter and storage

* TrieIter: Implement TrieIterCreate

* TrieIter: Implement TrieIterEnded

* TrieIter: Implement TrieIterMore

* TrieIter: Implement TrieIterGetKey

* TrieIter: Implement TrieIterGetSize

* TrieIter: Implement TrieIterGetCell

* TrieIter: Implement TrieIterGetString

* TrieIter: Implement TrieIterGetArray

* TrieIter: Implement TrieIterDestroy

* TrieIter: Invalidate any mutating change that is key addition or key removal

* TrieIter: Clean up the handles at map change

* TrieITer; Add iter tests to trietest.sma

* TrieIter: Fix linux compilation

* TrieIter: Rename TrieIterMore to TrieIterNext

* TrieIter: Adjust documentation

* TrieITer; Adjust trietest.sma

* TrieIter: Create a custom StringHashMap class instead

+ used a copy of |iterator| instead of dynamic allocation
+ initialized vars directly in constructor
+ added a nested iteration test
2017-08-01 15:05:27 +02:00
Artem Golubikhin
7794f27dc2 Fixed bug in cmd_access with usage printing (#434) 2017-05-02 12:54:07 +02:00
Vadim
be3ae83c44 Update get_func_id description (#430)
Return id 0 on success too
2017-04-29 21:13:29 +02:00
justgo97
398983fc49 Update amxmodx.inc (#432) 2017-04-29 20:56:20 +02:00
KliPPy
2863455185 Add menu pagination callback (#420)
* Add menu pagination callback

* Update test plugin
2017-04-04 10:29:18 +02:00
IgnacioFDM
ff488dd81f Add new xs stocks (#426)
xs_vec_len_2d returns the length of a 2D vector

xs_vec_distance returns the distance between two vectors
xs_vec_distance_2d returns the distance between two 2D vectors

xs_vec_add_scaled and xs_vec_sub_scaled do two operations
in one for convenience and performance. They add/subtract a vector
scaled by a scalar to another vector. Very useful when working with
unit vectors.
2017-04-03 18:41:46 +02:00
Vincent Herbet
1c3e8de57a Introduce a datapack position tag (#419) 2017-03-06 21:08:16 +01:00
Javivi
6a553122b1 Update sockets module (#301)
* Module rewrite

- WinSock version changed from 1.1 to 2.2.
- Properly check for WinSock initialization on OnAmxxAttach/Detach.
- Now natives will not be added if we can't start up WinSock.
- socket_open() is now IP version agnostic (both IPv4 and IPv6 are
supported).
- Error reporting has been changed on socket_open(), a new parameter
called _libc_errors has been added, and, if enabled, libc errors will be
returned instead of the previous made-up errors.
- socket_close() now returns a value on success/failure.
- Added non-blocking sockets at socket_open_nb().
- Added socket_is_writable() to check if a socket is ready for write.
- Added socket_is_readable() as an alias to socket_change().
- Code rewritten to be more readable, it should be self-explaining now.

* Update docs and fix AMBuild

Updated documentation following the guidelines

* Fixs for the module

- Fixed the backwards compatibility with the return codes
- Merged socket_connect and socket_connect_nb
- Added a 5th parameter to socket_open that takes bit flags to enable
the new features (libc errors & nonblocking sockets)
- Fixed an error on socket_send2 that caused the buffet not to start
from the beginning if multiple calls were made
- Updated docs
- [docs] Prefixed error codes with SOCK_
- [docs] Added the new flags SOCK_NON_BLOCKING and SOCK_LIBC_ERRORS
- [docs] Added a new stock called SOCK_ERROR_EINPROGRESS(error) to be
used when checking if a newly created nonblocking socket is connecting

* Fixes for the docs

Fix some typos, shorten lines, document SOCK_ERROR_EINPROGRESS

* Document magic numbers

No more magic

* Revert "Document magic numbers"

This reverts commit 0f233292063400ea7fdbcd5e5d5cd6e54f8cd71c.

* More docs fixes

* Fix broken socket_send2()

* Add error checking in send2()

* Remove stock

It should not be needed because nb sockets should always be checked or
writability

* Fix some identations

* Fix return codes doc

* Fix socket_recv() regression

strncopy will stop on a null byte, that makes the function unusable to
receive binary data

* More docs typo fixes
2017-03-03 19:56:22 +01:00
Vincent Herbet
3568fb8747 Add client_remove() forward and fix a bug with client not internally disconnected (#414)
* Rename client_disconnected to client_disconnecting

* Add client_disconnected as post forward

* Fix client not properly disconnected internally

Introduced in #264.
Edict is reset once SV_DropClient is called, so that second check would be always false.

* Reflect changes on the concerned plugins

* Revert renaming, let's add only client_remove as post forward
2017-02-25 11:50:52 +01:00
KliPPy
828e74e6c3 Add RequestFrame() native (#412)
* Add RequestFrame() native

* Change underlying container from CQueue to ke::Deque

* CFrameAction: Fix PackageScript and MSVC project, wrap CFrameAction in AutoPtr
2017-02-23 12:55:53 +01:00
Vincent Herbet
9b3839de70 Fix missing CS_NORESET constant (#400) 2017-01-10 18:51:41 +01:00
IgnacioFDM
3e660011b2 Fix typo in TE_STREAK_SPLASH description (#398) 2017-01-06 21:05:36 +01:00
Karol Szuster
e95099817b Allow execute forwards without need to create variable for returned value (#382)
We don't need to create variable to store value returned by forward when we ignore it.
2016-09-01 10:37:14 +02:00
IgnacioFDM
732a05dde0 Back out changes in #366 and introduce read_argv_int/float()
* Revert "Extend "read_argv" native"

This reverts commit aaa2934595.

This broke binary compatibility with either older, already compiled
plugins, or newly compiled plugins if you forgot to update .inc headers.

This happened because read_argv used to receive maxlen by value, and
after
this commit it receives it by reference. This causes read_argv either
to fail, or worse, to buffer overflow, resulting in a security vulnerability.

Newly introduced functionality for read_argv should be added with a new,
separate native.

* Add "read_argv_int" & "read_argv_float" natives
2016-08-31 20:34:02 +02:00
voed
575d215c77 Fixed some natives descriptions 2016-06-14 04:49:46 +03:00
Vincent Herbet
f3c58b7cd6 Merge pull request #369 from Ni3znajomy/forwards/value-by-reference
Values by reference in forwards
2016-06-05 19:50:40 +02:00
Vincent Herbet
2628ce8664 Merge pull request #349 from Arkshine/feature/command-ml
Add a param to register_*cmd() and get_*cmd() to indiquate info is a multilingual key + modify plugin
2016-04-16 13:12:21 +02:00
Arkshine
9054643fe8 Add a param to register_*cmd() and get_*cmd() to indiquate info is a multilingual key + modify plugin 2016-04-16 11:56:49 +02:00
Karol Szuster
53f9144fc3 Values by reference in forwards 2016-04-05 18:51:18 +02:00
Karol Szuster
aaa2934595 Extend "read_argv" native 2016-03-28 20:05:56 +02:00
Karol Szuster
5ad1efd698 Fix description of "set_user_info" native 2016-03-23 17:27:15 +01:00
Karol Szuster
5a3f4be04e message_stocks.inc: Cache messages id 2016-03-20 13:04:48 +01:00
Vincent Herbet
62a7fe0be5 Merge pull request #342 from Arkshine/feature/cs_get_item_alias
Add cs_get_item_alias(), improve cs_get_item_id() & cleanup alias datas
2016-03-16 15:15:00 +01:00
Arkshine
c3a52b366e Add cs_get_item_alias() native & cleanup alias datas 2016-03-16 12:29:33 +01:00
Arkshine
be06e2448b Add fmt() native to format and return inline a string 2016-02-23 19:56:02 +01:00
Karol Szuster
cb87fa12e1 Add extra parameters to cs_get_user_weapon native
Add clip & ammo as optional as get_user_weapon native has
2016-02-17 20:46:42 +01:00
Arkshine
2928c622f9 Add cs_set_ent_class native 2016-02-09 11:27:02 +01:00
Vincent Herbet
209ff4d527 Merge pull request #339 from IgnacioFDM/fix-whitespace
Normalize line endings and whitespace
2016-01-23 22:56:46 +01:00
Vincent Herbet
fa7391e814 Merge pull request #330 from WPMGPRoSToTeMa/csgetuserweapon
Add cs_get_user_weapon_entity() and cs_get_user_weapon() natives
2016-01-23 17:53:54 +01:00
IgnacioDM
e502e12e07 Normalize line endings and whitespace 2016-01-16 21:15:52 -03:00
WPMGPRoSToTeMa
b85b37192e New natives: cs_get_user_weapon_entity and cs_get_user_weapon 2016-01-06 23:10:31 +03:00
Arkshine
17a31b75d7 Add enable/disable_logevent() natives 2015-12-24 19:08:00 +01:00
Vincent Herbet
01d703cdbb Merge pull request #323 from luxxxoor/patch-1
Adding flag parameter to user_silentkill.
2015-12-24 14:45:45 +01:00
Karol Szuster
62a5c54a18 Add client_connectex & extend client_authorized forward 2015-12-22 16:36:51 +01:00
luxxxoor
892f0519ad Adding flag parameter to user_silentkill.
The api says that the user_silentkill() "Kills a user without a message.",  that means it is just user_kill() without sending deathmsg.
But user_silentkill() automatically kills player without affecting the client's score (and that is not mentioned in api), so i'll add a second parameter to user_silnetkill() to let user to decide if he want to kill a player without or not affecting the table.
New parameter has the default value 1, so it won't break the compatibility.
2015-12-20 01:02:39 +02:00
Arkshine
a445e806ea Cstrike: Refactor - Simplify forwards logic, fix and improve few things
- The logic around CS_OnBuy forward has been simplified. Since there is no way to have a consistent way to hook/block for all items, the new logic is to have as less as possible code, especially in blocking mode where we want to avoid to do extra stuffs (e.g blocking sound, event, etc).

  * All guns + shield -> CanBuyThis()
  * Nvgs and Fefuser only -> CanPlayerBuy()
  * The others items -> GiveNamedItem() + AddAccount()
  * Ammos -> -> BuyGunAmmo() + GiveNamedItem() + AddAccount()

- Fixed missing buyzone check when alias from console are used (CS_OnBUy* were incorrectly fired).
- Fixed an infinite loop when buying of ammos are blocked. Sorted by hooking BuyGunAmmo().
- Fixed blocking mode for some items. Some game behaviors were not blocked (e.g. weapon drop).
- Fixed forwards being triggered even though errors were found. Detours are now a destroyed and associated variables resetted when necessary. Toggling forwards state is now based on detours state.
- Moved things in its own functions (game functions to execute, class members retrieval)
- Renamed CommandAliases -> ItemInfos (more generic)
2015-11-21 00:13:06 +01:00
Arkshine
e87976bc09 Cstrike: Remove CS_OnGetItemPrice forward (reverted from commit 33a7d74b6da2ca4dcb621e9b306c386ba040571e)
This is actually not possible to have a proper system to allow this.
This is two majors problems:
  - The item price text can't be changed, whatever old and VGUI menu (it's either harcoded in config file or in client binary)
  - Once you open VGUI menu, to know if user has enough money to select an item, client relies on the current HUD money value, this means, since we can't directly changed price, before opening the menu, money needs to be somehow faked and restored once closed. It's awful.

Overall it can't work properly, and at the end current forward doesn't make sense.

If an author wanted to have its own prices, the only only way would to force players to use old menu, then overwriting the whole buy menu, so you would be able to display what you want exactly.
2015-11-03 10:45:50 +01:00
Arkshine
ffe8b7761e Cstrike: Move CSW_* constants from amxconst.inc to cstrike_const.inc 2015-11-03 10:45:49 +01:00
Arkshine
2c5cc4289e Cstrike: Add cs_is_valid_itemid() stock 2015-11-03 10:45:49 +01:00
Arkshine
75853dae60 Cstrike: Add cs_find_ent_by_owner() native 2015-11-03 10:45:48 +01:00
Arkshine
23b0450938 Cstrike: Add cs_get_weapon_class() stock (weapon id -> class id)
Note: this has been modified a bit later in cs_is_valid_itemid() commit.
2015-11-03 10:45:47 +01:00
Arkshine
600a15a57b Cstrike: Add cs_get_weapon_info() native 2015-11-03 10:45:47 +01:00
Arkshine
60cdbeb219 Cstrike: Add CS_OnGetItemPrice forward to get/alter an item price on purchase 2015-11-03 10:45:46 +01:00
Arkshine
e6a2434887 Cstrike: Add cs_get_item_id() and cs_get_translated_item_alias() natives 2015-11-03 10:45:45 +01:00
Arkshine
c6628f22ee Cstrike: Add more known constants from game 2015-11-03 10:45:44 +01:00
Arkshine
d3e5957215 Cstrike: Add cstrike_const.inc and move existing constants there 2015-11-03 10:45:44 +01:00
Arkshine
dc6f171f20 Refactor 2 - Duplicate get_member_* for each set of natives for consistency 2015-11-02 20:10:38 +01:00
Arkshine
02c1b20ed7 Rename get_ent_data_size/info/basetype to be more generic 2015-11-02 20:10:37 +01:00
Arkshine
68f99bc2d5 Add get/Set_gamerules_* natives 2015-11-02 20:10:37 +01:00
Arkshine
16f65663dc Add new natives to read/write on entity's private data based off class/member name available from gamedata files 2015-09-19 20:07:48 +02:00
Vincent Herbet
57a5004f4e Fix typo
Related to #266. Looks like I've changed the prefix afterward at some point for some reason, but engine is retarded and with `plugin.something.cfg` it will understand extension is `something` instead  of `cfg` ; and will fail to execute as it's an invalid extension (only `cfg` and `rc` are allowed).
2015-09-05 08:42:31 +02:00
Vincent Herbet
224239f5a1 Merge pull request #266 from Arkshine/feature/autoexeccfg
Introduce automatic config file for plugins and two forwards
2015-08-26 10:42:59 +02:00
Arkshine
5b8bbddbc1 AutoExecConfig: Adjust few things 2015-08-26 10:38:31 +02:00
Iván Lo Giudice
f95f2032fc Update cstrike.inc 2015-08-22 17:51:48 -03:00
Arkshine
1f3c7cf272 AutoExecConfig: Update documentation 2015-08-14 16:38:28 +02:00
Arkshine
ed4faf7c11 Fix player not being internally disconnected in some situation + add client_disconnected forward 2015-08-14 00:08:50 +02:00
Arkshine
6d6a1c1ab0 Add a data argument in INI/SMC_ParseFile() to pass through to callbacks (bug 6228) 2015-07-29 22:23:13 +02:00
Arkshine
df5d935194 Add enable/disable_event() native 2015-07-20 23:06:32 +02:00
Arkshine
662fa61fc7 Cstrike: Fix typos and improve things 2015-07-15 16:40:07 +02:00
Arkshine
dcc2d91b14 Cstrike: cs_get_user_driving - Add the associated constants from HLSDK 2015-07-14 19:44:10 +02:00
Arkshine
86e33d0cb1 Cstrike: cs_set_user_model - Add a param to choose whether modelindex should be updated 2015-07-14 19:44:10 +02:00
Arkshine
1ed354890b Cstrike: Add CSI_SHIELD for convenience and fix typos 2015-07-14 19:44:08 +02:00
Arkshine
939aad5cb9 Cstrike: cs_set_user_team - Add a param to choose whether TeamInfo message should be sent 2015-07-14 19:44:08 +02:00
Arkshine
63a0910f5b Cstrike: cs_get/set_armoury_type - Add a param to get/set the number of weapons inside an armoury 2015-07-14 19:44:06 +02:00
Arkshine
81f9a23d16 Cstrike: cs_get_user_armor - Make optional armortype param 2015-07-14 19:44:06 +02:00
Arkshine
7842d0160b Cstrike: cs_set_weapon_silen - Add a new value for draw_animation to follow game behavior
- Player's model sequence will be properly played
- Disallow firing while animation is playing
2015-07-14 19:44:06 +02:00
Arkshine
87d740b92a Cstrike: Add CZ support for some hostage natives 2015-07-14 19:44:05 +02:00
Arkshine
b82588f081 Cstrike: cs_set_user_deaths - Add a param to choose whether scoreboard should be updated 2015-07-14 19:44:04 +02:00
Vincent Herbet
139a2a082c Merge pull request #254 from Arkshine/feature/gameconfig
Implement a game config parser and expose functionnalities to the module/plugin API
2015-07-11 13:19:09 +02:00
Arkshine
f38c726faf Gameconfig: Add game configs natives 2015-07-11 13:16:45 +02:00
Valentin Grünbacher
679714c8be Engine: Add error path for remove_entity() and unsafe entity ids 2015-05-11 16:15:43 +02:00
Valentin Grünbacher
ff0ca9ba67 Engine: Remove inconsistent error path from entity_get_int() 2015-05-11 16:15:42 +02:00
Valentin Grünbacher
ee0bcc39f1 Engine: Clarify difference between the engine module trace handle and the "real" global trace 2015-05-11 16:15:42 +02:00
Valentin Grünbacher
3c1022af99 Engine: Add a destination parameter to trace_hull() to make it more useful 2015-05-11 16:15:42 +02:00
Valentin Grünbacher
add4867d21 Engine: Add safe get_global_edict2() and entity_get_edict2() 2015-05-10 23:56:06 +02:00
Valentin Grünbacher
d69fddf8b4 Engine/Core: Move precache_event() to core 2015-05-10 23:45:01 +02:00
Valentin Grünbacher
218fb9c794 Engine: Add unregister_[touch|think|impulse]() 2015-05-10 23:40:22 +02:00
Vincent Herbet
c5f6e26802 Merge pull request #239 from Nextra/inc-doc3
Update include documentation #3 (mostly engine.inc)
2015-05-10 17:12:50 +02:00
Valentin Grünbacher
fbcbbd8421 hlsdk_const: Add MoveToOrigin move type constants 2015-05-10 14:37:40 +02:00
Valentin Grünbacher
00f9b62ffb cstrike: Add create_entity() note from engine, rewording 2015-05-10 14:37:39 +02:00
Valentin Grünbacher
59d8d2807f engine_const: Add sections and comments 2015-05-10 14:37:36 +02:00
Valentin Grünbacher
d9f792b712 engine: Add documentation, group similar natives 2015-05-10 14:37:16 +02:00
Valentin Grünbacher
fdb180e062 Add NULL_VECTOR 2015-05-06 11:28:54 +02:00
Vincent Herbet
39cc240a4e Merge pull request #240 from Nextra/kvd
Improve handling of KeyValueData
2015-05-05 12:01:29 +02:00
Valentin Grünbacher
79189c86ab Add basic kvd doc to fakemeta.inc and fix ham_const.inc lies 2015-05-05 11:16:26 +02:00
Valentin Grünbacher
8172519389 Improve handling of KeyValueData in FM and make it compatible with Ham
- KVD_Wrapper compatibility with Ham by making |&kvdw == &kvdw.kvd|
- Replaces g_kvd_hook with a generic g_kvd_ext to support raw KVD from Ham
- Adds create_kvd() and free_kvd() so plugins have something to feed Ham with
2015-04-21 00:18:21 +02:00
Vincent Herbet
cc11191e57 Merge pull request #236 from Arkshine/fix/missing-sqlite-charset
Fix missing SQL_SetCharset native in SQLite
2015-04-20 22:47:16 +02:00
Arkshine
871e14178b Fix a tag typo in datapack.inc 2015-04-19 19:58:57 +02:00
Arkshine
b88841c6ef Fix missing SQL_SetCharset native in SQLite 2015-04-12 21:08:03 +02:00
Valentin Grünbacher
a35bc43cab datapack.inc: Fix copy-pasted error description 2015-04-06 13:33:55 +02:00
Vincent Herbet
0b2c33bcd2 Merge pull request #231 from Nextra/datapack-update
Datapack update
2015-03-30 13:43:50 +02:00
Valentin Grünbacher
9abe6cd8f6 Add IsPackEnded native (IsPackReadable replacement) 2015-03-30 04:14:54 +02:00
Vincent Herbet
a59b72f96a Merge pull request #229 from Arkshine/feature/trans-format-and-native
Add %l format specifier and SetTranslationTarget() native (bug 6331)
2015-03-26 22:54:11 +01:00
Arkshine
8831166705 Add %l format specifier and SetTranslationTarget() native 2015-03-26 22:42:55 +01:00
Arkshine
52c73126e1 VFS: Fix various things
- The "ALL" fake pathID is replaced by what does SM, having a public var NULL_STRING which will acts as NULL when needed.
  To make compiler accepting public array, this patch was needed: https://hg.alliedmods.net/sourcemod-central/rev/b12f329def09
- The offset thing in read_dir: considering that's something very specific to this native and that implementation in CDirectory doesn't make sense because of the offset compatibility for windows, all code is now in the native.
2015-03-25 13:50:07 +01:00
Arkshine
ba11085ddc VFS: Add constant in pawn include to define max path 2015-03-22 11:14:13 +01:00
Arkshine
71ab8d560e VFS: Add more sane FileRead/Write* natives to read/write a single value 2015-03-22 11:14:12 +01:00