From d6c95ca69f21ca47b74476c1a8c38494b552e02d Mon Sep 17 00:00:00 2001 From: Playa Date: Sun, 5 Jan 2025 21:51:46 +0100 Subject: [PATCH] Update to SM 1.12 *Updated to SM 1.12, #53 *Updated KAC in-code licenses *Updated readme and code of conduct *The 1.10 scripting folder got renamed to "latest" to better reflect code changes -Removed SMLib --- CODE_OF_CONDUCT.md | 2 +- Compile.bat | 6 +- Licenses/License_SMLIB.txt | 16 - README.md | 21 +- plugins/kigen-ac_redux.smx | Bin 55120 -> 54963 bytes plugins/kigen-ac_redux_legacy.smx | Bin 66350 -> 58641 bytes ...10.txt => #Note - Only Code in latest.txt} | 2 +- scripting/1.10/include/geoip.inc | 102 - scripting/1.10/include/smlib/arrays.inc | 158 - scripting/1.10/include/smlib/clients.inc | 3121 ----------------- scripting/1.10/include/smlib/colors.inc | 528 --- scripting/1.10/include/smlib/concommands.inc | 47 - scripting/1.10/include/smlib/convars.inc | 72 - scripting/1.10/include/smlib/crypt.inc | 629 ---- scripting/1.10/include/smlib/debug.inc | 30 - scripting/1.10/include/smlib/dynarrays.inc | 24 - scripting/1.10/include/smlib/edicts.inc | 127 - scripting/1.10/include/smlib/effects.inc | 742 ---- scripting/1.10/include/smlib/entities.inc | 2152 ------------ scripting/1.10/include/smlib/files.inc | 458 --- scripting/1.10/include/smlib/game.inc | 58 - scripting/1.10/include/smlib/general.inc | 251 -- scripting/1.10/include/smlib/math.inc | 344 -- scripting/1.10/include/smlib/menus.inc | 38 - scripting/1.10/include/smlib/server.inc | 135 - scripting/1.10/include/smlib/sql.inc | 108 - scripting/1.10/include/smlib/strings.inc | 233 -- scripting/1.10/include/smlib/teams.inc | 318 -- scripting/1.10/include/smlib/vehicles.inc | 141 - scripting/1.10/include/smlib/weapons.inc | 398 --- scripting/1.10/include/smlib/world.inc | 17 - scripting/1.10/include/smlib_kacr.inc | 31 - scripting/1.10/spcomp.exe | Bin 428032 -> 0 bytes scripting/1.8/kigen-ac_redux.sp | 32 +- scripting/1.8/kigen-ac_redux/client.sp | 57 +- scripting/1.8/kigen-ac_redux/commands.sp | 3 +- scripting/1.8/kigen-ac_redux/cvars.sp | 5 +- scripting/1.8/kigen-ac_redux/eyetest.sp | 49 +- .../1.8/kigen-ac_redux/network #Unused.sp | 3 +- scripting/1.8/kigen-ac_redux/rcon.sp | 3 +- scripting/1.8/kigen-ac_redux/status.sp | 3 +- scripting/1.8/kigen-ac_redux/stocks.sp | 3 +- scripting/1.8/kigen-ac_redux/translations.sp | 3 +- scripting/{1.10 => latest}/include/admin.inc | 57 + .../{1.10 => latest}/include/adminmenu.inc | 0 scripting/{1.10 => latest}/include/adt.inc | 0 .../{1.10 => latest}/include/adt_array.inc | 44 +- .../{1.10 => latest}/include/adt_stack.inc | 45 +- .../{1.10 => latest}/include/adt_trie.inc | 15 +- .../include/autoexecconfig_kacr.inc | 7 +- .../{1.10 => latest}/include/banning.inc | 0 .../{1.10 => latest}/include/basecomm.inc | 0 .../{1.10 => latest}/include/bitbuffer.inc | 0 .../{1.10 => latest}/include/clientprefs.inc | 80 +- .../{1.10 => latest}/include/clients.inc | 33 +- .../include/commandfilters.inc | 7 + .../{1.10 => latest}/include/commandline.inc | 0 .../{1.10 => latest}/include/console.inc | 103 +- .../{1.10 => latest}/include/convars.inc | 14 +- scripting/{1.10 => latest}/include/core.inc | 2 +- .../{1.10 => latest}/include/cstrike.inc | 19 +- .../{1.10 => latest}/include/datapack.inc | 26 + scripting/{1.10 => latest}/include/dbi.inc | 28 +- scripting/latest/include/dhooks.inc | 1100 ++++++ scripting/{1.10 => latest}/include/entity.inc | 26 +- .../include/entity_prop_stocks.inc | 18 +- scripting/latest/include/entitylump.inc | 157 + scripting/{1.10 => latest}/include/events.inc | 0 scripting/{1.10 => latest}/include/files.inc | 28 +- scripting/{1.10 => latest}/include/float.inc | 63 +- .../{1.10 => latest}/include/functions.inc | 22 +- scripting/latest/include/geoip.inc | 241 ++ .../{1.10 => latest}/include/halflife.inc | 44 +- .../{1.10 => latest}/include/handles.inc | 33 +- .../{1.10 => latest}/include/helpers.inc | 0 .../{1.10 => latest}/include/keyvalues.inc | 30 +- scripting/{1.10 => latest}/include/lang.inc | 9 + .../{1.10 => latest}/include/logging.inc | 0 .../{1.10 => latest}/include/mapchooser.inc | 4 + scripting/{1.10 => latest}/include/menus.inc | 50 +- .../{1.10 => latest}/include/nextmap.inc | 0 .../{1.10 => latest}/include/profiler.inc | 0 .../{1.10 => latest}/include/protobuf.inc | 0 scripting/{1.10 => latest}/include/regex.inc | 3 +- .../{1.10 => latest}/include/sdkhooks.inc | 22 +- .../{1.10 => latest}/include/sdktools.inc | 7 +- .../include/sdktools_client.inc | 2 + .../include/sdktools_engine.inc | 0 .../include/sdktools_entinput.inc | 0 .../include/sdktools_entoutput.inc | 0 .../include/sdktools_functions.inc | 94 +- .../include/sdktools_gamerules.inc | 26 +- .../include/sdktools_hooks.inc | 17 + .../include/sdktools_sound.inc | 33 +- .../include/sdktools_stocks.inc | 0 .../include/sdktools_stringtables.inc | 8 +- .../include/sdktools_tempents.inc | 20 +- .../include/sdktools_tempents_stocks.inc | 0 .../include/sdktools_trace.inc | 77 +- .../include/sdktools_variant_t.inc | 0 .../include/sdktools_voice.inc | 19 + scripting/{1.10 => latest}/include/socket.inc | 0 .../{1.10 => latest}/include/sorting.inc | 0 .../{1.10 => latest}/include/sourcemod.inc | 93 +- scripting/{1.10 => latest}/include/string.inc | 50 +- .../{1.10 => latest}/include/testing.inc | 64 +- .../{1.10 => latest}/include/textparse.inc | 8 + scripting/{1.10 => latest}/include/tf2.inc | 6 +- .../{1.10 => latest}/include/tf2_stocks.inc | 7 +- scripting/{1.10 => latest}/include/timers.inc | 30 +- .../{1.10 => latest}/include/topmenus.inc | 4 +- .../{1.10 => latest}/include/usermessages.inc | 0 scripting/{1.10 => latest}/include/vector.inc | 0 .../{1.10 => latest}/include/version.inc | 4 +- .../{1.10 => latest}/include/version_auto.inc | 8 +- scripting/{1.10 => latest}/kigen-ac_redux.sp | 32 +- .../{1.10 => latest}/kigen-ac_redux/client.sp | 57 +- .../kigen-ac_redux/commands.sp | 3 +- .../{1.10 => latest}/kigen-ac_redux/cvars.sp | 5 +- .../kigen-ac_redux/eyetest.sp | 49 +- .../kigen-ac_redux/network #Unused.sp | 3 +- .../{1.10 => latest}/kigen-ac_redux/rcon.sp | 3 +- .../{1.10 => latest}/kigen-ac_redux/status.sp | 3 +- .../{1.10 => latest}/kigen-ac_redux/stocks.sp | 3 +- .../kigen-ac_redux/translations.sp | 3 +- scripting/latest/spcomp.exe | Bin 0 -> 1081856 bytes 126 files changed, 2866 insertions(+), 10672 deletions(-) delete mode 100644 Licenses/License_SMLIB.txt rename scripting/{#Note - Only Code in 1.10.txt => #Note - Only Code in latest.txt} (58%) delete mode 100644 scripting/1.10/include/geoip.inc delete mode 100644 scripting/1.10/include/smlib/arrays.inc delete mode 100644 scripting/1.10/include/smlib/clients.inc delete mode 100644 scripting/1.10/include/smlib/colors.inc delete mode 100644 scripting/1.10/include/smlib/concommands.inc delete mode 100644 scripting/1.10/include/smlib/convars.inc delete mode 100644 scripting/1.10/include/smlib/crypt.inc delete mode 100644 scripting/1.10/include/smlib/debug.inc delete mode 100644 scripting/1.10/include/smlib/dynarrays.inc delete mode 100644 scripting/1.10/include/smlib/edicts.inc delete mode 100644 scripting/1.10/include/smlib/effects.inc delete mode 100644 scripting/1.10/include/smlib/entities.inc delete mode 100644 scripting/1.10/include/smlib/files.inc delete mode 100644 scripting/1.10/include/smlib/game.inc delete mode 100644 scripting/1.10/include/smlib/general.inc delete mode 100644 scripting/1.10/include/smlib/math.inc delete mode 100644 scripting/1.10/include/smlib/menus.inc delete mode 100644 scripting/1.10/include/smlib/server.inc delete mode 100644 scripting/1.10/include/smlib/sql.inc delete mode 100644 scripting/1.10/include/smlib/strings.inc delete mode 100644 scripting/1.10/include/smlib/teams.inc delete mode 100644 scripting/1.10/include/smlib/vehicles.inc delete mode 100644 scripting/1.10/include/smlib/weapons.inc delete mode 100644 scripting/1.10/include/smlib/world.inc delete mode 100644 scripting/1.10/include/smlib_kacr.inc delete mode 100644 scripting/1.10/spcomp.exe rename scripting/{1.10 => latest}/include/admin.inc (94%) rename scripting/{1.10 => latest}/include/adminmenu.inc (100%) rename scripting/{1.10 => latest}/include/adt.inc (100%) rename scripting/{1.10 => latest}/include/adt_array.inc (90%) rename scripting/{1.10 => latest}/include/adt_stack.inc (83%) rename scripting/{1.10 => latest}/include/adt_trie.inc (95%) rename scripting/{1.10 => latest}/include/autoexecconfig_kacr.inc (98%) rename scripting/{1.10 => latest}/include/banning.inc (100%) rename scripting/{1.10 => latest}/include/basecomm.inc (100%) rename scripting/{1.10 => latest}/include/bitbuffer.inc (100%) rename scripting/{1.10 => latest}/include/clientprefs.inc (84%) rename scripting/{1.10 => latest}/include/clients.inc (95%) rename scripting/{1.10 => latest}/include/commandfilters.inc (94%) rename scripting/{1.10 => latest}/include/commandline.inc (100%) rename scripting/{1.10 => latest}/include/console.inc (90%) rename scripting/{1.10 => latest}/include/convars.inc (98%) rename scripting/{1.10 => latest}/include/core.inc (99%) rename scripting/{1.10 => latest}/include/cstrike.inc (94%) rename scripting/{1.10 => latest}/include/datapack.inc (87%) rename scripting/{1.10 => latest}/include/dbi.inc (97%) create mode 100644 scripting/latest/include/dhooks.inc rename scripting/{1.10 => latest}/include/entity.inc (96%) rename scripting/{1.10 => latest}/include/entity_prop_stocks.inc (98%) create mode 100644 scripting/latest/include/entitylump.inc rename scripting/{1.10 => latest}/include/events.inc (100%) rename scripting/{1.10 => latest}/include/files.inc (95%) rename scripting/{1.10 => latest}/include/float.inc (85%) rename scripting/{1.10 => latest}/include/functions.inc (97%) create mode 100644 scripting/latest/include/geoip.inc rename scripting/{1.10 => latest}/include/halflife.inc (92%) rename scripting/{1.10 => latest}/include/handles.inc (71%) rename scripting/{1.10 => latest}/include/helpers.inc (100%) rename scripting/{1.10 => latest}/include/keyvalues.inc (95%) rename scripting/{1.10 => latest}/include/lang.inc (93%) rename scripting/{1.10 => latest}/include/logging.inc (100%) rename scripting/{1.10 => latest}/include/mapchooser.inc (98%) rename scripting/{1.10 => latest}/include/menus.inc (95%) rename scripting/{1.10 => latest}/include/nextmap.inc (100%) rename scripting/{1.10 => latest}/include/profiler.inc (100%) rename scripting/{1.10 => latest}/include/protobuf.inc (100%) rename scripting/{1.10 => latest}/include/regex.inc (99%) rename scripting/{1.10 => latest}/include/sdkhooks.inc (95%) rename scripting/{1.10 => latest}/include/sdktools.inc (95%) rename scripting/{1.10 => latest}/include/sdktools_client.inc (95%) rename scripting/{1.10 => latest}/include/sdktools_engine.inc (100%) rename scripting/{1.10 => latest}/include/sdktools_entinput.inc (100%) rename scripting/{1.10 => latest}/include/sdktools_entoutput.inc (100%) rename scripting/{1.10 => latest}/include/sdktools_functions.inc (77%) rename scripting/{1.10 => latest}/include/sdktools_gamerules.inc (87%) rename scripting/{1.10 => latest}/include/sdktools_hooks.inc (81%) rename scripting/{1.10 => latest}/include/sdktools_sound.inc (93%) rename scripting/{1.10 => latest}/include/sdktools_stocks.inc (100%) rename scripting/{1.10 => latest}/include/sdktools_stringtables.inc (95%) rename scripting/{1.10 => latest}/include/sdktools_tempents.inc (91%) rename scripting/{1.10 => latest}/include/sdktools_tempents_stocks.inc (100%) rename scripting/{1.10 => latest}/include/sdktools_trace.inc (89%) rename scripting/{1.10 => latest}/include/sdktools_variant_t.inc (100%) rename scripting/{1.10 => latest}/include/sdktools_voice.inc (87%) rename scripting/{1.10 => latest}/include/socket.inc (100%) rename scripting/{1.10 => latest}/include/sorting.inc (100%) rename scripting/{1.10 => latest}/include/sourcemod.inc (89%) rename scripting/{1.10 => latest}/include/string.inc (90%) rename scripting/{1.10 => latest}/include/testing.inc (56%) rename scripting/{1.10 => latest}/include/textparse.inc (95%) rename scripting/{1.10 => latest}/include/tf2.inc (98%) rename scripting/{1.10 => latest}/include/tf2_stocks.inc (99%) rename scripting/{1.10 => latest}/include/timers.inc (89%) rename scripting/{1.10 => latest}/include/topmenus.inc (98%) rename scripting/{1.10 => latest}/include/usermessages.inc (100%) rename scripting/{1.10 => latest}/include/vector.inc (100%) rename scripting/{1.10 => latest}/include/version.inc (94%) rename scripting/{1.10 => latest}/include/version_auto.inc (56%) rename scripting/{1.10 => latest}/kigen-ac_redux.sp (95%) rename scripting/{1.10 => latest}/kigen-ac_redux/client.sp (93%) rename scripting/{1.10 => latest}/kigen-ac_redux/commands.sp (99%) rename scripting/{1.10 => latest}/kigen-ac_redux/cvars.sp (99%) rename scripting/{1.10 => latest}/kigen-ac_redux/eyetest.sp (88%) rename scripting/{1.10 => latest}/kigen-ac_redux/network #Unused.sp (99%) rename scripting/{1.10 => latest}/kigen-ac_redux/rcon.sp (98%) rename scripting/{1.10 => latest}/kigen-ac_redux/status.sp (97%) rename scripting/{1.10 => latest}/kigen-ac_redux/stocks.sp (98%) rename scripting/{1.10 => latest}/kigen-ac_redux/translations.sp (99%) create mode 100644 scripting/latest/spcomp.exe diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index 50f76f0..b9247be 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -55,7 +55,7 @@ further defined and clarified by project maintainers. ## Enforcement Instances of abusive, harassing, or otherwise unacceptable behavior may be -reported by contacting the project team at Robin.Rott1@web.de. All +reported by contacting the project team on GitHub. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. diff --git a/Compile.bat b/Compile.bat index cbf2b59..8ae41a8 100644 --- a/Compile.bat +++ b/Compile.bat @@ -1,9 +1,9 @@ -copy /v /y ".\scripting\1.10\kigen-ac_redux\" ".\scripting\1.8\kigen-ac_redux\" -copy /v /y ".\scripting\1.10\kigen-ac_redux.sp" ".\scripting\1.8\kigen-ac_redux.sp" +copy /v /y ".\scripting\latest\kigen-ac_redux\" ".\scripting\1.8\kigen-ac_redux\" +copy /v /y ".\scripting\latest\kigen-ac_redux.sp" ".\scripting\1.8\kigen-ac_redux.sp" cd ./scripting/1.8 spcomp.exe kigen-ac_redux.sp -o../../plugins/kigen-ac_redux_legacy.smx -cd ../1.10 +cd ../latest spcomp.exe kigen-ac_redux.sp -o../../plugins/kigen-ac_redux.smx pause \ No newline at end of file diff --git a/Licenses/License_SMLIB.txt b/Licenses/License_SMLIB.txt deleted file mode 100644 index 7d99a20..0000000 --- a/Licenses/License_SMLIB.txt +++ /dev/null @@ -1,16 +0,0 @@ - SMLIB - Copyright (C) SMLIB Contributors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . - diff --git a/README.md b/README.md index 9e3fbae..0a353c5 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,16 @@ # Kigen Anti Cheat Redux ### Project Status: Maintained, Rolling Release -SMAC and KAC are outdated, VAC dosent do its Job, NoCheatz-4 is discontinued and Community Projects are often small or unstable. -KACR is aimed to be a failsafe universal Security and Anti Cheat Solution for all common Source based Games. + +KACR is aimed to be a failsafe universal security and anti-cheat Solution for all common Source based games. # Requires: -- SourceMod 1.8 or higher (kigen-ac_redux is for 1.10, kigen-ac_redux_legacy for 1.8/1.9) +- SourceMod 1.8 or higher (kigen-ac_redux is for 1.12, kigen-ac_redux_legacy for previous version) Optional: - Sourcebans++ - Sourcebans 2.X (V1 isent supported) -Official supported Games: +Official supported games: - Counter-Strike: Global Offensive - Team Fortress 2 - Counter-Strike: Source @@ -18,10 +18,13 @@ Official supported Games: - Insurgency - Day of Defeat: Source - Half-Life 2: Deathmatch -#### KACR should work on most Source 2007+ Engine Game +#### KACR should work on most games using the Source 2007 engine or newer +#### Source 2 games like Counter-Strike 2 [wont be supported](https://wiki.alliedmods.net/Introduction_to_SourceMod_Plugins#Will_SourceMod_support_Source_2.3F_Will_plugins_for_existing_games_continue_to_work_if_they_are_ported.3F) # -Since i havent implemented an Updater yet, watch this Project on GitHub so you will be informed about Updates. -![How to watch](https://help.github.com/assets/images/help/repository/repo-actions-watch.png) +Since i havent implemented an updater yet, watch this project on GitHub so you will be informed about updates. # -If you want to help you can Contribute to the Project by submitting Code, Bugs, False-Positives, Wiki Entrys and Translations. -Information on how to submit Code, Wiki Entrys and Translations can be found in CONTRIBUTING.md +If you want to help you can contribute to the project by submitting code, bugs, false-positives, wiki entrys and translations. +Information on how to submit code, wiki entrys and translations can be found in the CONTRIBUTING.md file. + +Credits: +-AutoExecConfig from Impact diff --git a/plugins/kigen-ac_redux.smx b/plugins/kigen-ac_redux.smx index 4981a4d08d03e49194c6452d69111c3c5e706d54..52ed61e630e7a889a8d7357c48ac73f2edbcba02 100644 GIT binary patch literal 54963 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⪚|T(j&x`VSYzjj0SWIlp|DFjYo~S;X2#SLyb~L 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⪻LJbRh*_?k1pJgGM7HqXjn;r6_$ z(dcg)OYUZ9g##s_h~gJ;u|OT*=!hER8?&0`8&VoqiE*fnbt0Z6EVBb3jmibQdqE~+ zZZlF>Yf=;}ur!xTeSNLTJcVD^;%e(_^3-U}8mNP#5U)J8Wu%cxn7&V&0G9GO;iT}l zp>(DlE98M>PG^k9JaJD6KO@GiA0^f6%{0}O+e%m72^#uhgbGyjEttLC?9v{Q_8ttr zWfcTmXqJgq$OFQv(K{7R(P79GPiNSyH}DUO6qeWgY!p_OrkTvvK7nzz3+4fgn|W4= zQuu)S@Uexbo^KeRx=H$XwYx_E)@l1oj25cyI(C>3GGv zM)2j0`X7(rV;l7kjNr=}^$(8VD;e{TjNn@r^N)?-0~Y2JBlu>8`L`qZ9EJI%5qw?3 z{Q3w!88QF85qtz<{)Z#@0L0QWBlzZnd7y;PJea>y!WSIGXbB%@5GP9bzJmFp625?7 z-c!P74b1yW_*Ox+QNjlZs;v?}CLr7rz7SycOR)2=zNrKge)0AatoF@!mtc@@zP|(; zeDlL4nBAL?m0)SV^w|>332Tf<1cmnG&p6%;%26Y~1{{ zQCNzb2S;HOUOhbubMNZ8QJ8LvmyW_(TP%*kK)bp=3Y+Yz7=>}Q@J3-kE#5E+BkAh9 zM`8ag9vX!$v-zP>7$}<`9fj?&_~a2HQyS_!!I{tDhT#Eu(mH3|5Qgzl^~|QT%8O zR*BXB8H2%L_2*+SA*|jq4tv4suaCnf(3}{Dt)F>f9M*f{&T$y*iIGRJ>xJsGanv@d71ghI1I_E zpBabASoQPcFb=DJWgKQ;)$fhN;7dF`4jV6%iIm;+-ZB9bEweNMV=VLJ1njTOa}zMI zGG80+v7KGZV1xF`s`B7Ch$Y zLD=euqX%K0Bc=|*utqcv!eB=19)!({c=#afSH$NI!Zbzv;2?}m#K<9-kBGYu!O}x) z9)dN8c*h}Fa)?I`!HPqC?GOwx#QzdWBfgKL;UO*eAI~YarmeaOUL1(Muf-V(@?zkIDFNJPtx;a>GbiA~Mm&82K5WD|F|{Y?c`rRbP0#ji@Qo#3$kVM({VI{+^y6KM9|Sf|AC&)Dfq+@{4Jp`)AO(B`6T1{6nrd-XHLOqu{d%Xz81wj zr{OzCY@UX%Me&Z)@S!6*^M;8RDu@eF+Gh`*rc zH|hDMGw`h=esTtGTEvM-_+At>da@gpU=qG|#2-z<*N%8>622J4w@Ou<*9_zpdvVt!hNj~+2i&wr=qY8mb?L{!G-3dH-$ z@Rcl{D8pxu_>VGt_J|P@BLB(qU>d%AgqVi!9`W{R_;eJHPQzMCe0>@|e8hiG!-tPJ zK|<%J^sLUnmyc-Az_+q^%M5(_h(Di!&6)VZ41D^Cr)J>ONBrtp_=Xg>)ARoU_HqQ& D8^$A; literal 66350 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�*l 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. - * - * As a special exception, AlliedModders LLC gives you permission to link the - * code of this program (as well as its derivative works) to "Half-Life 2," the - * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software - * by the Valve Corporation. You must obey the GNU General Public License in - * all respects for all other code used. Additionally, AlliedModders LLC grants - * this exception to all derivative works. AlliedModders LLC defines further - * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), - * or . - * - * Version: $Id$ - */ - -#if defined _geoip_included - #endinput -#endif -#define _geoip_included - -#include - -/** - * @section IP addresses can contain ports, the ports will be stripped out. - */ - -/** - * Gets the two character country code from an IP address. (US, CA, etc) - * - * @param ip Ip to determine the country code. - * @param ccode Destination string buffer to store the code. - * @return True on success, false if no country found. - */ -native bool GeoipCode2(const char[] ip, char ccode[3]); - -/** - * Gets the three character country code from an IP address. (USA, CAN, etc) - * - * @param ip Ip to determine the country code. - * @param ccode Destination string buffer to store the code. - * @return True on success, false if no country found. - */ -native bool GeoipCode3(const char[] ip, char ccode[4]); - -/** - * Gets the full country name. (max length of output string is 45) - * - * @param ip Ip to determine the country code. - * @param name Destination string buffer to store the country name. - * @param maxlength Maximum length of output string buffer. - * @return True on success, false if no country found. - */ -native bool GeoipCountry(const char[] ip, char[] name, int maxlength); - -/** - * @endsection - */ - -/** - * Do not edit below this line! - */ -public Extension __ext_geoip = -{ - name = "GeoIP", - file = "geoip.ext", -#if defined AUTOLOAD_EXTENSIONS - autoload = 1, -#else - autoload = 0, -#endif -#if defined REQUIRE_EXTENSIONS - required = 1, -#else - required = 0, -#endif -}; - -#if !defined REQUIRE_EXTENSIONS -public void __ext_geoip_SetNTVOptional() -{ - MarkNativeAsOptional("GeoipCode2"); - MarkNativeAsOptional("GeoipCode3"); - MarkNativeAsOptional("GeoipCountry"); -} -#endif diff --git a/scripting/1.10/include/smlib/arrays.inc b/scripting/1.10/include/smlib/arrays.inc deleted file mode 100644 index 1c9863e..0000000 --- a/scripting/1.10/include/smlib/arrays.inc +++ /dev/null @@ -1,158 +0,0 @@ -#if defined _smlib_array_included - #endinput -#endif -#define _smlib_array_included - -#include - -/** - * Returns the index for the first occurance of the given value. - * If the value cannot be found, -1 will be returned. - * - * @param array Static Array. - * @param size Size of the Array. - * @param value Value to search for. - * @param start Optional: Offset where to start (0 - (size-1)). - * @return Array index, or -1 if the value couldn't be found. - */ -stock Array_FindValue(any:array[], size, any:value, start=0) -{ - if (start < 0) { - start = 0; - } - - for (new i=start; i < size; i++) { - - if (array[i] == value) { - return i; - } - } - - return -1; -} - -/** - * Searchs for the first occurance of a string in the array. - * If the value cannot be located, -1 will be returned. - * - * @param array Static Array. - * @param size Size of the Array. - * @param value String to search for. - * @param start Optional: Offset where to start(0 - (size-1)). - * @return Array index, or -1 if the value couldn't be found. - */ -stock Array_FindString(const String:array[][], size, const String:str[], bool:caseSensitive=true, start=0) -{ - if (start < 0) { - start = 0; - } - - for (new i=start; i < size; i++) { - - if (StrEqual(array[i], str, caseSensitive)) { - return i; - } - } - - return -1; -} - -/** - * Returns the Index of the Lowest value in the array - * - * @param array Static Array. - * @param size Size of the Array. - * @param start Optional: Offset where to start (0 - (size-1)). - * @return Array index. - */ -stock Array_FindLowestValue(any:array[], size, start=0) -{ - if (start < 0) { - start = 0; - } - - new any:value = array[start]; - new any:tempValue; - new x = start; - - for (new i=start; i < size; i++) { - - tempValue = array[i]; - - if (tempValue < value) { - value = tempValue; - x = i; - } - - } - - return x; -} - -/** - * Returns the Index of the Highest value in the array - * - * @param array Static Array. - * @param size Size of the Array. - * @param start Optional: Offset where to start (0 - (size-1)). - * @return Array index. - */ -stock Array_FindHighestValue(any:array[], size, start=0) -{ - if (start < 0) { - start = 0; - } - - new any:value = array[start]; - new any:tempValue; - new x = start; - - for (new i=start; i < size; i++) { - - tempValue = array[i]; - - if (tempValue > value) { - value = tempValue; - x = i; - } - - } - - return x; -} - -/** - * Fills an array with a given value in a 1 dimensional static array. - * You can specify the amount of cells to be written. - * - * @param array Static Array. - * @param size Number of cells to write (eg. the array's size) - * @param value Fill value. - * @param start Optional: Offset where to start (0 - (size-1)). - * @noreturn - */ -stock Array_Fill(any:array[], size, any:value, start=0) -{ - if (start < 0) { - start = 0; - } - - for (new i=start; i < size; i++) { - array[i] = value; - } -} - -/** - * Copies a 1 dimensional static array. - * - * @param array Static Array to copy from. - * @param newArray New Array to copy to. - * @param size Size of the array (or number of cells to copy) - * @noreturn - */ -stock Array_Copy(const any:array[], any:newArray[], size) -{ - for (new i=0; i < size; i++) { - newArray[i] = array[i]; - } -} diff --git a/scripting/1.10/include/smlib/clients.inc b/scripting/1.10/include/smlib/clients.inc deleted file mode 100644 index 0fca2bc..0000000 --- a/scripting/1.10/include/smlib/clients.inc +++ /dev/null @@ -1,3121 +0,0 @@ -#if defined _smlib_client_included - #endinput -#endif -#define _smlib_client_included - -// Defined here beacause needed in teams.inc -#define CLIENTFILTER_ALL 0 // No filtering -#define CLIENTFILTER_BOTS ( 1 << 1 ) // Fake clients -#define CLIENTFILTER_NOBOTS ( 1 << 2 ) // No fake clients -#define CLIENTFILTER_AUTHORIZED ( 1 << 3 ) // SteamID validated -#define CLIENTFILTER_NOTAUTHORIZED ( 1 << 4 ) // SteamID not validated (yet) -#define CLIENTFILTER_ADMINS ( 1 << 5 ) // Generic Admins (or higher) -#define CLIENTFILTER_NOADMINS ( 1 << 6 ) // No generic admins -// All flags below require ingame checking (optimization) -#define CLIENTFILTER_INGAME ( 1 << 7 ) // Ingame -#define CLIENTFILTER_INGAMEAUTH ( 1 << 8 ) // Ingame & Authorized -#define CLIENTFILTER_NOTINGAME ( 1 << 9 ) // Not ingame (currently connecting) -#define CLIENTFILTER_ALIVE ( 1 << 10 ) // Alive -#define CLIENTFILTER_DEAD ( 1 << 11 ) // Dead -#define CLIENTFILTER_SPECTATORS ( 1 << 12 ) // Spectators -#define CLIENTFILTER_NOSPECTATORS ( 1 << 13 ) // No Spectators -#define CLIENTFILTER_OBSERVERS ( 1 << 14 ) // Observers -#define CLIENTFILTER_NOOBSERVERS ( 1 << 15 ) // No Observers -#define CLIENTFILTER_TEAMONE ( 1 << 16 ) // First Team (Terrorists, ...) -#define CLIENTFILTER_TEAMTWO ( 1 << 17 ) // Second Team (Counter-Terrorists, ...) - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/** - * Very useful macro to iterate all clients - * matching the specified flags. - * - * @param 1 Name of the client index variable (will be only valid in the loop). - * @param 2 CLIENTFILTER_ flags to check. - */ -#define LOOP_CLIENTS(%1,%2) for (new %1=Client_GetNext(%2); %1 >= 1 && %1 <= MaxClients; %1=Client_GetNext(%2, ++%1)) - -/** - * Macro for iterating trough all observers of a player. - * - * @param 1 Client Index for who to get the observers. - * @param 2 Name of the observer client index variable (will be only valid in the loop). - * @param 3 CLIENTFILTER_ flags to check. - */ -#define LOOP_OBSERVERS(%1,%2,%3) for (new %2=Client_GetNextObserver(%1, 1, %3); %2 >= 1 && %2 <= MaxClients; %2=Client_GetNextObserver(%1, ++%2, %3)) - -/** - * Very useful macro to iterate all weapons of a client. - * - * @param 1 Client Index - * @param 2 Name of the weapon index variable (will be only valid in the loop). - * @param 3 Name of the client's weapon index variable (will be only valid in the loop). - */ -#define LOOP_CLIENTWEAPONS(%1,%2,%3) for (new %3, %2=Client_GetNextWeapon(%1, %3); %2 != -1; %2=Client_GetNextWeapon(%1, %3)) - -// Hud Element hiding flags (possibly outdated) -#define HIDEHUD_WEAPONSELECTION ( 1<<0 ) // Hide ammo count & weapon selection -#define HIDEHUD_FLASHLIGHT ( 1<<1 ) -#define HIDEHUD_ALL ( 1<<2 ) -#define HIDEHUD_HEALTH ( 1<<3 ) // Hide health & armor / suit battery -#define HIDEHUD_PLAYERDEAD ( 1<<4 ) // Hide when local player's dead -#define HIDEHUD_NEEDSUIT ( 1<<5 ) // Hide when the local player doesn't have the HEV suit -#define HIDEHUD_MISCSTATUS ( 1<<6 ) // Hide miscellaneous status elements (trains, pickup history, death notices, etc) -#define HIDEHUD_CHAT ( 1<<7 ) // Hide all communication elements (saytext, voice icon, etc) -#define HIDEHUD_CROSSHAIR ( 1<<8 ) // Hide crosshairs -#define HIDEHUD_VEHICLE_CROSSHAIR ( 1<<9 ) // Hide vehicle crosshair -#define HIDEHUD_INVEHICLE ( 1<<10 ) -#define HIDEHUD_BONUS_PROGRESS ( 1<<11 ) // Hide bonus progress display (for bonus map challenges) - -/** -* Sets the Hide-Hud flags of a client -* -* @param client Client index. -* @param flags Flag to set, use one of the HIDEHUD_ hiding constants -* @noreturn -*/ -stock Client_SetHideHud(client, flags) -{ - SetEntProp(client, Prop_Send, "m_iHideHUD", flags); -} - -/** -* Checks if the specified index is a player and connected. -* -* @param entity An entity index. -* @param checkConnected Set to false to skip the IsClientConnected check -* @return Returns true if the specified entity index is a player connected, false otherwise. -*/ -stock bool:Client_IsValid(client, bool:checkConnected=true) -{ - if (client > 4096) { - client = EntRefToEntIndex(client); - } - - if (client < 1 || client > MaxClients) { - return false; - } - - if (checkConnected && !IsClientConnected(client)) { - return false; - } - - return true; -} - -/** -* Checks if the specified index is a player and ingame. -* -* @param entity An entity index. -* @return Returns true if the specified index is a player and ingame, false otherwise. -*/ -stock bool:Client_IsIngame(client) -{ - if (!Client_IsValid(client, false)) { - return false; - } - - return IsClientInGame(client); -} - -/** -* Checks if the specified index is a player, ingame and authorized. -* -* @param entity An entity index. -* @return Returns true if the specified index is a player, ingame and authed, false otherwise. -*/ -stock bool:Client_IsIngameAuthorized(client) -{ - if (!Client_IsIngame(client)) { - return false; - } - - return IsClientAuthorized(client); -} - -#define MAX_STEAMAUTH_LENGTH 21 - -/** -* Finds a player by his SteamID -* -* @param auth SteamID to search for -* @return Client Index or -1 -*/ -stock Client_FindBySteamId(const String:auth[]) -{ - new String:clientAuth[MAX_STEAMAUTH_LENGTH]; - for (new client=1; client <= MaxClients; client++) { - if (!IsClientAuthorized(client)) { - continue; - } - - GetClientAuthId(client, AuthId_Steam2, clientAuth, sizeof(clientAuth)); - - if (StrEqual(auth, clientAuth)) { - return client; - } - } - - return -1; -} - -/** -* Finds a player by his name. -* Only returns the first matching player. -* -* @param name Name to search for. -* @param partOfName Whether to search for the part of a name or compare the full name. -* @param caseSensitive If true, comparison is case sensitive. If false (default), comparison is case insensitive. -* @return Client Index or -1 -*/ -stock Client_FindByName(const String:name[], bool:partOfName=true, bool:caseSensitive=false) -{ - new String:clientName[MAX_NAME_LENGTH]; - for (new client=1; client <= MaxClients; client++) { - if (!IsClientAuthorized(client)) { - continue; - } - - GetClientName(client, clientName, sizeof(clientName)); - - if (partOfName) { - if (StrContains(clientName, name, caseSensitive) != -1) { - return client; - } - } - else if (StrEqual(name, clientName, caseSensitive)) { - return client; - } - } - - return -1; -} - -// Spectator Movement modes -enum Obs_Mode -{ - OBS_MODE_NONE = 0, // not in spectator mode - OBS_MODE_DEATHCAM, // special mode for death cam animation - OBS_MODE_FREEZECAM, // zooms to a target, and freeze-frames on them - OBS_MODE_FIXED, // view from a fixed camera position - OBS_MODE_IN_EYE, // follow a player in first person view - OBS_MODE_CHASE, // follow a player in third person view - OBS_MODE_ROAMING, // free roaming - - NUM_OBSERVER_MODES -}; - -// Force Camera Restrictions with mp_forcecamera -enum Obs_Allow -{ - OBS_ALLOW_ALL = 0, // allow all modes, all targets - OBS_ALLOW_TEAM, // allow only own team & first person, no PIP - OBS_ALLOW_NONE, // don't allow any spectating after death (fixed & fade to black) - - OBS_ALLOW_NUM_MODES, -}; - -/** - * Gets the client's observer mode (Obs_Mode). - * - * @param client Client Index. - * @return The current observer mode (ObsMode). - */ -stock Obs_Mode:Client_GetObserverMode(client) -{ - return Obs_Mode:GetEntProp(client, Prop_Send, "m_iObserverMode"); -} - - -/** - * Sets the client's observer mode. - * Use a value of the Obs_Mode enum. - * This is a rewrite of CBasePlayer::SetObserverMode(). - * - * @param client Client Index. - * @param mode New Observer mode value (Obs_Mode). - * @param updateMoveType Set to true (default) to allow this function updating the movetype, false otherwise. - * @noreturn - */ -stock bool:Client_SetObserverMode(client, Obs_Mode:mode, bool:updateMoveType=true) -{ - if (mode < OBS_MODE_NONE || mode >= NUM_OBSERVER_MODES) { - return false; - } - - // check mp_forcecamera settings for dead players - if (mode > OBS_MODE_FIXED && GetClientTeam(client) > TEAM_SPECTATOR) - { - new Handle:mp_forcecamera = FindConVar("mp_forcecamera"); - - if (mp_forcecamera != INVALID_HANDLE) { - switch (GetConVarInt(mp_forcecamera)) - { - case OBS_ALLOW_TEAM: { - mode = OBS_MODE_IN_EYE; - } - case OBS_ALLOW_NONE: { - mode = OBS_MODE_FIXED; // don't allow anything - } - } - } - } - - new Obs_Mode:observerMode = Client_GetObserverMode(client); - if (observerMode > OBS_MODE_DEATHCAM) { - // remember mode if we were really spectating before - Client_SetObserverLastMode(client, observerMode); - } - - SetEntProp(client, Prop_Send, "m_iObserverMode", _:mode); - - switch (mode) { - case OBS_MODE_NONE, OBS_MODE_FIXED, OBS_MODE_DEATHCAM: { - Client_SetFOV(client, 0); // Reset FOV - - if (updateMoveType) { - SetEntityMoveType(client, MOVETYPE_NONE); - } - } - case OBS_MODE_CHASE, OBS_MODE_IN_EYE: { - // udpate FOV and viewmodels - Client_SetViewOffset(client, NULL_VECTOR); - - if (updateMoveType) { - SetEntityMoveType(client, MOVETYPE_OBSERVER); - } - } - case OBS_MODE_ROAMING: { - Client_SetFOV(client, 0); // Reset FOV - Client_SetViewOffset(client, NULL_VECTOR); - - if (updateMoveType) { - SetEntityMoveType(client, MOVETYPE_OBSERVER); - } - } - } - - return true; -} - -/** - * Gets the client's last oberserver mode - * - * @param client Client Index. - * @return Last Observer mode - */ -stock Obs_Mode:Client_GetObserverLastMode(client) -{ - return Obs_Mode:GetEntProp(client, Prop_Data, "m_iObserverLastMode"); -} - -/** - * Sets the client's last oberserver mode - * - * @param client Client Index. - * @param mode Last Observer mode - * @noreturn - */ -stock Client_SetObserverLastMode(client, Obs_Mode:mode) -{ - SetEntProp(client, Prop_Data, "m_iObserverLastMode", _:mode); -} - -/** - * Gets the client's view offset. - * This is the position relative to the client itself. - * - * @param client Client Index. - * @param vec Vector Buffer. - * @noreturn - */ -stock Client_GetViewOffset(client, Float:vec[3]) -{ - GetEntPropVector(client, Prop_Data, "m_vecViewOffset", vec); -} - -/** - * Sets the client's view offset. - * This is the position relative to the client itself. - * - * @param client Client Index. - * @param vec Vector buffer. - * @noreturn - */ -stock Client_SetViewOffset(client, Float:vec[3]) -{ - SetEntPropVector(client, Prop_Data, "m_vecViewOffset", vec); -} - -/** - * Gets the client's current observer target entity. - * - * @param client Client Index. - * @return Observed Entity Index. - */ -stock Client_GetObserverTarget(client) -{ - return GetEntPropEnt(client, Prop_Send, "m_hObserverTarget"); -} - -/** - * Sets the client's current observer target entity. - * - * @param client Client Index. - * @param entity Observed Entity Index. - * @param resetFOV If to reset the client's field of view. - * @noreturn - */ -stock Client_SetObserverTarget(client, entity, bool:resetFOV=true) -{ - SetEntPropEnt(client, Prop_Send, "m_hObserverTarget", entity); - - if (resetFOV) { - Client_SetFOV(client, 0); - } -} - -/** - * Gets the client's Field Of View. - * - * @param client Client Index. - * @return Field Of View - */ -stock Client_GetFOV(client) -{ - return GetEntProp(client, Prop_Send, "m_iFOV"); -} - -/** - * Sets the client's Field Of View. - * - * @param client Client Index. - * @param value Field Of View - * @noreturn - */ -stock Client_SetFOV(client, value) -{ - SetEntProp(client, Prop_Send, "m_iFOV", value); -} - -/** - * Checks if the client's View Model is drawn for the client. - * - * @param client Client Index. - * @return True if the viewmodel is drawn, false otherwise. - */ -stock bool:Client_DrawViewModel(client) -{ - return bool:GetEntProp(client, Prop_Send, "m_bDrawViewmodel"); -} - -/** - * Sets if to draw the client's view model for the client. - * - * @param client Client Index. - * @param drawViewModel Set to true if to draw, false otherwise. - * @noreturn - */ -stock Client_SetDrawViewModel(client, bool:drawViewModel) -{ - SetEntProp(client, Prop_Send, "m_bDrawViewmodel", drawViewModel); -} - -/** - * Puts the specified client into thirdperson or back to firstperson when false - * This doesn't work correctly in all games, it works in CS:S and DOD:S and some other games. - * Todo: Enhance this - * - * @param client Client Index. - * @param enable If set to true, the client will be put into thirdperson mode, - * if false the client will be put in firstperson mode. - * @noreturn - */ -stock Client_SetThirdPersonMode(client, enable=true) -{ - if (enable) { - Client_SetObserverTarget(client, 0); - Client_SetObserverMode(client, OBS_MODE_DEATHCAM, false); - Client_SetDrawViewModel(client, false); - Client_SetFOV(client, 120); - } - else { - Client_SetObserverTarget(client, -1); - Client_SetObserverMode(client, OBS_MODE_NONE, false); - Client_SetDrawViewModel(client, true); - Client_SetFOV(client, 90); - } -} - -/** - * Checks if the client is in thirdperson mode - * - * @param client Cient Undex - * @return true if the client is currently in thirdperson mode, false otherwise - */ -stock Client_IsInThirdPersonMode(client) -{ - return GetEntProp(client, Prop_Data, "m_iObserverMode"); -} - -#define FFADE_IN 0x0001 // Just here so we don't pass 0 into the function -#define FFADE_OUT 0x0002 // Fade out (not in) -#define FFADE_MODULATE 0x0004 // Modulate (don't blend) -#define FFADE_STAYOUT 0x0008 // ignores the duration, stays faded out until new ScreenFade message received -#define FFADE_PURGE 0x0010 // Purges all other fades, replacing them with this one - -/** - * Fades a client's screen to a specified color - * Your adviced to read the FFADE_ Comments - * - * @param client Player for which to fade the screen - * @param duration duration in seconds the effect stays - * @param mode fade mode, see FFADE_ defines - * @param holdtime holdtime in seconds - * @param r red amount - * @param g green amount - * @param b blue amount - * @param a transparency - * @return True on success, false otherwise - */ -stock bool:Client_ScreenFade(client, duration, mode, holdtime=-1, r=0, g=0, b=0, a=255, bool:reliable=true) -{ - new Handle:userMessage = StartMessageOne("Fade", client, (reliable?USERMSG_RELIABLE:0)); - - if (userMessage == INVALID_HANDLE) { - return false; - } - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && - GetUserMessageType() == UM_Protobuf) { - - new color[4]; - color[0] = r; - color[1] = g; - color[2] = b; - color[3] = a; - - PbSetInt(userMessage, "duration", duration); - PbSetInt(userMessage, "hold_time", holdtime); - PbSetInt(userMessage, "flags", mode); - PbSetColor(userMessage, "clr", color); - } - else { - BfWriteShort(userMessage, duration); // Fade duration - BfWriteShort(userMessage, holdtime); // Fade hold time - BfWriteShort(userMessage, mode); // What to do - BfWriteByte(userMessage, r); // Color R - BfWriteByte(userMessage, g); // Color G - BfWriteByte(userMessage, b); // Color B - BfWriteByte(userMessage, a); // Color Alpha - } - EndMessage(); - - return true; -} - -/** - * This function retrieves an array that holds all clones of a client by IP check. - * Size of CloneList has to be MaxClients at least, or MAX_PLAYERS - * - * @param client Client index. - * @param closelist An array that holds all clones of a client. - * @return Returns how many clones a client has. - */ -stock Client_GetClones(client, cloneList[]) -{ - new x=0; - decl String:ip_client[16], String:ip_player[16]; - - GetClientIP(client, ip_client, sizeof(client)); - - for (new player=1; player <= MaxClients; player++) { - - if (IsClientInGame(player)) { - GetClientIP(player, ip_player, sizeof(ip_player)); - - if (StrEqual(ip_client, ip_player, false)) { - cloneList[x++] = player; - } - } - } - - return x; -} - -/* - * This function returns true if the client is at a ladder.. - * - * @param client Client index. - * @return Returns true if the client is on a ladder other wise false. - */ -stock bool:Client_IsOnLadder(client) -{ - new MoveType:movetype = GetEntityMoveType(client); - - if (movetype == MOVETYPE_LADDER) { - return true; - } - else{ - return false; - } -} - -enum Water_Level -{ - WATER_LEVEL_NOT_IN_WATER = 0, - WATER_LEVEL_FEET_IN_WATER, - WATER_LEVEL_WAIST_IN_WATER, - WATER_LEVEL_HEAD_IN_WATER -}; - -/* - * This function returns how deep a client is in water. - * - * @param client Client index. - * @return Returns 0 if not in water. 1 if feets are in water. 2 if waist is in water. 3 if head is in water. - */ -stock Water_Level:Client_GetWaterLevel(client) -{ - return Water_Level:GetEntProp(client, Prop_Send, "m_nWaterLevel"); -} - -/* - * Returns how much suit sprint power a client has left in percent. - * - * @param client Client index. - * @return returns the actual power left in percent. - */ -stock Float:Client_GetSuitSprintPower(client) -{ - return GetEntPropFloat(client, Prop_Send, "m_flSuitPower"); -} - -/* - * Sets a client suit sprint power in percent. - * - * @param client Client index. - * @param power power (0.0 to 100.0) - * @noreturn - */ -stock Client_SetSuitSprintPower(client, Float:power) -{ - SetEntPropFloat(client, Prop_Send, "m_flSuitPower", power); -} - -/* - * Returns the client count put in the server. - * - * @param inGameOnly If false connecting players are also counted. - * @param countBots If true bots will be counted too. - * @return Client count in the server. - */ -stock Client_GetCount(bool:countInGameOnly=true, bool:countFakeClients=true) -{ - new numClients = 0; - - for (new client=1; client <= MaxClients; client++) { - - if (!IsClientConnected(client)) { - continue; - } - - if (countInGameOnly && !IsClientInGame(client)) { - continue; - } - - if (!countFakeClients && IsFakeClient(client)) { - continue; - } - - numClients++; - } - - return numClients; -} - -/* - * Returns the ping of a client like it is displayed in the scoreboard. - * The weird calculation formula is taken from Valve's SDK - * hl2sdk\game\server\util.cpp: UTIL_GetPlayerConnectionInfo() - * The Scoreboard uses the goldSource corrected Ping, the net_graph doesn't - * For Fake Clients 0 is returned. - * - * @param client Client index - * @param goldSource If true, get the ping as displayed in the player's scoreboard, false returns the net_graph variant. - * @return Client's fake ping or 0 for fake clients - */ -stock Client_GetFakePing(client, bool:goldSource=true) -{ - if (IsFakeClient(client)) { - return 0; - } - - new ping; - new Float:latency = GetClientLatency(client, NetFlow_Outgoing); // in seconds - - // that should be the correct latency, we assume that cmdrate is higher - // then updaterate, what is the case for default settings - decl String:cl_cmdrate[4]; - GetClientInfo(client, "cl_cmdrate", cl_cmdrate, sizeof(cl_cmdrate)); - - new Float:tickRate = GetTickInterval(); - latency -= (0.5 / StringToInt(cl_cmdrate)) + TICKS_TO_TIME(1.0); // correct latency - - if (goldSource) { - // in GoldSrc we had a different, not fixed tickrate. so we have to adjust - // Source pings by half a tick to match the old GoldSrc pings. - latency -= tickRate * 0.5; - } - - ping = RoundFloat(latency * 1000.0); // as msecs - ping = Math_Clamp(ping, 5, 1000); // set bounds, dont show pings under 5 msecs - - return ping; -} - -/** - * Searches for the closest client in relation to the given client. - * - * @param client Client index - * @return The closest client or -1 - */ -stock Client_GetClosestToClient(client) -{ - return Edict_GetClosestToEdict(client, true); -} - -/** - * Gets the name of the last place (if set by the game) - * - * @param entity Entity index. - * @param buffer String buffer - * @param size Size of the String buffer - * @noreturn - */ -stock Client_GetLastPlaceName(client, String:buffer[], size) -{ - GetEntPropString(client, Prop_Send, "m_szLastPlaceName", buffer, size); -} - -/** - * Returns the client's Score. - * - * @param client Client's index. - * @return Score. - */ -stock Client_GetScore(client) -{ - return GetClientFrags(client); -} - -/** - * Sets the client's Score. - * - * @param client Client's index. - * @param value Score. - * @noreturn - */ -stock Client_SetScore(client, value) -{ - SetEntProp(client, Prop_Data, "m_iFrags", value); -} - -/** - * Returns the client's Death count - * - * @param client Client's index. - * @return Death count - */ -stock Client_GetDeaths(client) -{ - return GetEntProp(client, Prop_Data, "m_iDeaths"); -} - -/** - * Sets the client's Death count. - * - * @param client Client's index. - * @param value Death count - * @noreturn - */ -stock Client_SetDeaths(client, value) -{ - SetEntProp(client, Prop_Data, "m_iDeaths", value); -} - -/** - * Returns the client's Armor - * - * @param client Client's index. - * @return Armor value - */ -stock Client_GetArmor(client) -{ - return GetEntProp(client, Prop_Data, "m_ArmorValue"); -} - -/** - * Sets the client's Armor. - * - * @param client Client's index. - * @param value Armor value - * @noreturn - */ -stock Client_SetArmor(client, value) -{ - SetEntProp(client, Prop_Data, "m_ArmorValue", value); -} - -/** - * Returns the client's Suitpower - * - * @param client Client's index. - * @return Suitpower - */ -stock Float:Client_GetSuitPower(client) -{ - return Float:GetEntPropFloat(client, Prop_Data, "m_flSuitPower"); -} - -/** - * Sets the client's Suitpower - * - * @param client Client's index. - * @param value Suitpower - * @noreturn - */ -stock Client_SetSuitPower(client, Float:value) -{ - SetEntPropFloat(client, Prop_Data, "m_flSuitPower", value); -} - -// suit usage bits -#define bits_SUIT_DEVICE_SPRINT 0x00000001 -#define bits_SUIT_DEVICE_FLASHLIGHT 0x00000002 -#define bits_SUIT_DEVICE_BREATHER 0x00000004 -#define MAX_SUIT_DEVICES 3 - -/** - * Returns the client's active devices (Max MAX_SUIT_DEVICES) - * The return is a bitwise value with bits_SUIT_DEVICE_SPRINT, - * bits_SUIT_DEVICE_FLASHLIGHT and/or bits_SUIT_DEVICE_BREATHER set. - * - * @param client Client's index. - * @return The active devices (bitwise value) - */ -stock Client_GetActiveDevices(client) -{ - return GetEntProp(client, Prop_Send, "m_bitsActiveDevices"); -} - -/** - * Returns the time when the client is allowed to spray - * a decal again. - * - * @param client Client's index. - * @return Next decal time - */ -stock Float:Client_GetNextDecalTime(client) -{ - return GetEntPropFloat(client, Prop_Data, "m_flNextDecalTime"); -} - -/** - * Returns whether the client is allowed to spray a decal or not. - * - * @param client Client's index. - * @return True if he is allowed to spray a decal, false otherwise - */ -stock bool:Client_CanSprayDecal(client) -{ - return Client_GetNextDecalTime(client) <= GetGameTime(); -} - -/** - * Returns the vehicle the client is in, if the client - * isn't in a vehicle, -1 is returned. - * - * @param client Client's index. - * @return Vehicle index, -1 if the client isn't in a vehicle. - */ -stock Client_GetVehicle(client) -{ - new m_hVehicle = GetEntPropEnt(client, Prop_Send, "m_hVehicle"); - - return m_hVehicle; -} - -/** - * Returns whether the client is in a vehicle or not. - * - * @param client Client's index. - * @return True if he is in a vehicle, false otherwise - */ -stock bool:Client_IsInVehicle(client) -{ - return !(Client_GetVehicle(client) == -1); -} - -/** - * Removes all decals for a client - * - * @param client Client's index. - * @noreturn - */ -stock Client_RemoveAllDecals(client) -{ - ClientCommand(client, "r_cleardecals"); -} - -/** - * Let's the client exit the vehicle - * - * @param vehicle Client index. - * @return True on success, false otherwise. - */ -stock bool:Client_ExitVehicle(client) -{ - new vehicle = Client_GetVehicle(client); - - if (vehicle == -1) { - return false; - } - - return AcceptEntityInput(vehicle, "ExitVehicle"); -} - -/** - * Plays a soundfile as if the player is using voicecomm for a single client. - * The voiceindicator is shown on the right, as if the players is talking. - * Thanks to Peace-Maker for the function. - * - * @param client For whom to play the sound. - * @param emitter Player/Entity the voice stream comes from. - * @param soundfile Path to the soundfile relative to the sound folder. - * @param length Length in seconds how long the hud "voiceindicator" is shown. - * @param pitch The pitch of the audiofile. - * @return True on success, false on failure. - */ -stock bool:Client_RawAudio(client, const emitter, const String:soundfile[], Float:length = 0.0, pitch = 100) -{ - new Handle:message = StartMessageOne("RawAudio", client); - - if (message == INVALID_HANDLE) { - return false; - } - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetInt(message, "pitch", pitch); - PbSetInt(message, "entidx", emitter); - PbSetFloat(message, "duration", length ); - PbSetString(message, "voice_filename", soundfile); - } - else { - BfWriteByte(message, pitch); - BfWriteByte(message, emitter); - BfWriteFloat(message, length); - BfWriteString(message, soundfile); - } - EndMessage(); - - return true; -} - -/** - * Plays a soundfile as if the player is using voicecomm for all players. - * The voiceindicator is shown on the right, as if the players is talking. - * Thanks to Peace-Maker for the function. - * - * @param emitter Player/Entity the voice stream comes from. - * @param soundfile Path to the soundfile relative to the sound folder. - * @param length Length in seconds how long the hud "voiceindicator" is shown. - * @param pitch The pitch of the audiofile. - * @return True on success, false on failure. - */ -stock bool:Client_RawAudioToAll(const emitter, const String:soundfile[], Float:length = 0.0, pitch = 100) -{ - new Handle:message = StartMessageAll("RawAudio"); - - if (message == INVALID_HANDLE) { - return false; - } - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetInt(message, "pitch", pitch); - PbSetInt(message, "entidx", emitter); - PbSetFloat(message, "duration", length); - PbSetString(message, "voice_filename", soundfile); - } - else { - BfWriteByte(message, pitch); - BfWriteByte(message, emitter); - BfWriteFloat(message, length); - BfWriteString(message, soundfile); - } - EndMessage(); - - return true; -} - -/** - * Sets an Impulse value for a client (eg: "impulse 100" for flashlight, value would be 100). - * See: http://developer.valvesoftware.com/wiki/Impulse - * - * @param client Client Index - * @param value The impulse command value. - * @return True on success, false on failure. - */ -stock Client_Impulse(client, value) -{ - SetEntProp(client, Prop_Data, "m_nImpulse", value); -} - -/** - * Gets the offset for a client's weapon list (m_hMyWeapons). - * The offset will saved globally for optimization. - * - * @param client Client Index. - * @return Weapon list offset or -1 on failure. - */ -stock Client_GetWeaponsOffset(client) -{ - static offset = -1; - - if (offset == -1) { - offset = FindDataMapInfo(client, "m_hMyWeapons"); - } - - return offset; -} - -/** - * Gets the current/active weapon of a client - * - * @param client Client Index. - * @return Weapon Index or INVALID_ENT_REFERENCE if the client has no active weapon. - */ -stock Client_GetActiveWeapon(client) -{ - new weapon = GetEntPropEnt(client, Prop_Data, "m_hActiveWeapon"); - - if (!Entity_IsValid(weapon)) { - return INVALID_ENT_REFERENCE; - } - - return weapon; -} - -/** - * Gets the classname and entity index of the current/active weapon of a client. - * - * @param client Client Index. - * @param buffer String Buffer to store the weapon's classname. - * @param size Max size of String: buffer. - * @return Weapon Entity Index on success or INVALID_ENT_REFERENCE otherwise - */ -stock Client_GetActiveWeaponName(client, String:buffer[], size) -{ - new weapon = Client_GetActiveWeapon(client); - - if (weapon == INVALID_ENT_REFERENCE) { - buffer[0] = '\0'; - return INVALID_ENT_REFERENCE; - } - - Entity_GetClassName(weapon, buffer, size); - - return weapon; -} - -/** - * Changes the active/current weapon of a player by Index. - * Note: No changing animation will be played ! - * - * @param client Client Index. - * @param weapon Index of a valid weapon. - * @noreturn - */ -stock Client_SetActiveWeapon(client, weapon) -{ - SetEntPropEnt(client, Prop_Data, "m_hActiveWeapon", weapon); - ChangeEdictState(client, FindDataMapInfo(client, "m_hActiveWeapon")); -} - -/** - * Changes the active weapon the client is holding. - * Note: No changing animation will be played ! - * - * @param client Client Index. - * @param className Weapon Classname. - * @return True on success, false on failure. - */ -stock bool:Client_ChangeWeapon(client, const String:className[]) -{ - new weapon = Client_GetWeapon(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - return false; - } - - Client_SetActiveWeapon(client,weapon); - - return true; -} - -/** - * Changes the active weapon to the last. - * If the last active weapon can't be found, the default weapon is taken. - * If the default weapon can't be found, the first weapon in the list is taken. - * If the first weapon can't be found, INVALID_ENT_REFERENCEE is returned. - * - * @param client Client Index. - * @return Entity Index or, INVALID_ENT_REFERENCE. - */ -stock Client_ChangeToLastWeapon(client) -{ - new weapon = Client_GetLastActiveWeapon(client); - - if (weapon == INVALID_ENT_REFERENCE) { - weapon = Client_GetDefaultWeapon(client); - - if (weapon == INVALID_ENT_REFERENCE) { - weapon = Client_GetFirstWeapon(client); - - if (weapon == INVALID_ENT_REFERENCE) { - return INVALID_ENT_REFERENCE; - } - } - } - - Client_SetActiveWeapon(client, weapon); - - return weapon; -} - -/** - * Gets the last active weapon of a client. - * - * @param client Client Index. - * @return Entity Index of the weapon on success, INVALID_ENT_REFERENCE on failure. - */ -stock Client_GetLastActiveWeapon(client) -{ - new weapon = GetEntPropEnt(client, Prop_Data, "m_hLastWeapon"); - - if (!Entity_IsValid(weapon)) { - return INVALID_ENT_REFERENCE; - } - - return weapon; -} - -/** - * Gets the classname of the last active weapon of a client. - * - * @param client Client Index. - * @param buffer Buffer to store the weapon classname. - * @param size Max size of String: buffer. - * @return True on success, false on failure. - */ -stock bool:Client_GetLastActiveWeaponName(client, String:buffer[], size) -{ - new weapon = Client_GetLastActiveWeapon(client); - - if (weapon == INVALID_ENT_REFERENCE) { - buffer[0] = '\0'; - return false; - } - - Entity_GetClassName(weapon, buffer, size); - - return true; -} - -/** - * Sets the last active weapon of a client. - * - * @param client Client Index. - * @param weapon Entity Index of a weapon. - * @noreturn - */ -stock Client_SetLastActiveWeapon(client, weapon) -{ - SetEntPropEnt(client, Prop_Data, "m_hLastWeapon", weapon); - ChangeEdictState(client, FindDataMapInfo(client, "m_hLastWeapon")); -} - -/** - * Equips (attaches) a weapon to a client. - * - * @param client Client Index. - * @param weapon Entity Index of the weapon. - * @param switchTo If true, the client will switch to that weapon (make it active). - * @noreturn - */ -stock Client_EquipWeapon(client, weapon, bool:switchTo=false) -{ - EquipPlayerWeapon(client, weapon); - - if (switchTo) { - Client_SetActiveWeapon(client, weapon); - } -} - -/** - * Savly detaches a clients weapon, to remove it as example. - * The client will select his last weapon when detached. - * - * @param client Client Index. - * @param weapon Entity Index of the weapon, you'd like to detach. - * @return True on success, false otherwise. - */ -stock bool:Client_DetachWeapon(client, weapon) -{ - if (!RemovePlayerItem(client, weapon)) { - return false; - } - - if (Client_GetActiveWeapon(client) == INVALID_ENT_REFERENCE) { - Client_ChangeToLastWeapon(client); - } - - return true; -} - -/** - * Gives a client a weapon. - * - * @param client Client Index. - * @param className Weapon Classname String. - * @param switchTo If set to true, the client will switch the active weapon to the new weapon. - * @return Entity Index of the given weapon on success, INVALID_ENT_REFERENCE on failure. - */ -stock Client_GiveWeapon(client, const String:className[], bool:switchTo=true) -{ - new weapon = Client_GetWeapon(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - weapon = Weapon_CreateForOwner(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - return INVALID_ENT_REFERENCE; - } - } - - Client_EquipWeapon(client, weapon, switchTo); - - return weapon; -} - -/** - * Gives a client a weapon and ammo for that weapon. - * - * @param client Client Index. - * @param className Weapon Classname String. - * @param switchTo If set to true, the client will switch the active weapon to the new weapon. - * @param primaryAmmo Primary ammo stock value from the client, if -1 the value is untouched. - * @param secondaryAmmo Secondary ammo stock value from the client, if -1 the value is untouched. - * @param primaryClip Primary ammo value in the weapon clip, if -1 the value is untouched. - * @param secondaryClip Secondary ammo value in the weapon clip, if -1 the value is untouched. - * @return Entity Index of the given weapon on success, INVALID_ENT_REFERENCE on failure. - */ -stock Client_GiveWeaponAndAmmo(client, const String:className[], bool:switchTo=true, primaryAmmo=-1, secondaryAmmo=-1, primaryClip=-1, secondaryClip=-1) -{ - new weapon = Client_GiveWeapon(client, className, switchTo); - - if (weapon == INVALID_ENT_REFERENCE) { - return INVALID_ENT_REFERENCE; - } - - if (primaryClip != -1) { - Weapon_SetPrimaryClip(weapon, primaryClip); - } - - if (secondaryClip != -1) { - Weapon_SetSecondaryClip(weapon, secondaryClip); - } - - Client_SetWeaponPlayerAmmoEx(client, weapon, primaryAmmo, secondaryAmmo); - - return weapon; -} - -/** - * Removes a weapon from a client. - * - * @param client Client Index. - * @param className Weapon Classname String. - * @param firstOnly If false it loops trough the whole weapon list and deletes all weapons that match the specified classname. - * @param clearAmmo If true, the ammo the client carries for that weapon will be set to 0 (primary and secondary). - * @return True on success, false otherwise. - */ -stock bool:Client_RemoveWeapon(client, const String:className[], bool:firstOnly=true, bool:clearAmmo=false) -{ - new offset = Client_GetWeaponsOffset(client) - 4; - - for (new i=0; i < MAX_WEAPONS; i++) { - offset += 4; - - new weapon = GetEntDataEnt2(client, offset); - - if (!Weapon_IsValid(weapon)) { - continue; - } - - if (!Entity_ClassNameMatches(weapon, className)) { - continue; - } - - if (clearAmmo) { - Client_SetWeaponPlayerAmmoEx(client, weapon, 0, 0); - } - - if (Client_GetActiveWeapon(client) == weapon) { - Client_ChangeToLastWeapon(client); - } - - if (RemovePlayerItem(client, weapon)) { - Entity_Kill(weapon); - } - - if (firstOnly) { - return true; - } - } - - return false; -} - -/** - * Removes all weapons of a client. - * You can specify a weapon it shouldn't remove and if to - * clear the player's ammo for a weapon when it gets removed. - * - * @param client Client Index. - * @param exclude If not empty, this weapon won't be removed from the client. - * @param clearAmmo If true, the ammo the player carries for all removed weapons are set to 0 (primary and secondary). - * @return Number of removed weapons. - */ -stock Client_RemoveAllWeapons(client, const String:exclude[]="", bool:clearAmmo=false) -{ - new offset = Client_GetWeaponsOffset(client) - 4; - - new numWeaponsRemoved = 0; - for (new i=0; i < MAX_WEAPONS; i++) { - offset += 4; - - new weapon = GetEntDataEnt2(client, offset); - - if (!Weapon_IsValid(weapon)) { - continue; - } - - if (exclude[0] != '\0' && Entity_ClassNameMatches(weapon, exclude)) { - Client_SetActiveWeapon(client, weapon); - continue; - } - - if (clearAmmo) { - Client_SetWeaponPlayerAmmoEx(client, weapon, 0, 0); - } - - if (RemovePlayerItem(client, weapon)) { - Entity_Kill(weapon); - } - - numWeaponsRemoved++; - } - - return numWeaponsRemoved; -} - -/** - * Checks if a client has a specific weapon. - * - * @param client Client Index. - * @param className Weapon Classname. - * @return True if client has the weapon, otherwise false. - */ -stock bool:Client_HasWeapon(client, const String:className[]) -{ - new weapon = Client_GetWeapon(client, className); - - return (weapon != INVALID_ENT_REFERENCE); -} - -/** - * Gets the weapon of a client by the weapon's classname. - * - * @param client Client Index. - * @param className Classname of the weapon. - * @return Entity index on success or INVALID_ENT_REFERENCE. - */ -stock Client_GetWeapon(client, const String:className[]) -{ - new offset = Client_GetWeaponsOffset(client) - 4; - new weapon = INVALID_ENT_REFERENCE; - for (new i=0; i < MAX_WEAPONS; i++) { - offset += 4; - - weapon = GetEntDataEnt2(client, offset); - - if (!Weapon_IsValid(weapon)) { - continue; - } - - if (Entity_ClassNameMatches(weapon, className)) { - return weapon; - } - } - - return INVALID_ENT_REFERENCE; -} - -/** - * Gets the weapon of a client by slot number. - * Note: This is incompatible to games that have multiple - * weapons in one slot (eg.: hl2dm). - * - * @param client Client Index. - * @param slot Slot Index. - * @return Entity index on success or INVALID_ENT_REFERENCE. - */ -stock Client_GetWeaponBySlot(client, slot) -{ - return GetPlayerWeaponSlot(client, slot); -} - -/** - * Gets the clients default weapon (Entity Index). - * - * @param client Client Index. - * @return Entity Index on success, INVALID_ENT_REFERENCE on failure. - */ -stock Client_GetDefaultWeapon(client) -{ - decl String:weaponName[MAX_WEAPON_STRING]; - if (Client_GetDefaultWeaponName(client, weaponName, sizeof(weaponName))) { - return INVALID_ENT_REFERENCE; - } - - return Client_GetWeapon(client, weaponName); -} - -/** - * Gets the clients default weapon (classname). - * This function doesn't work in all games (maybe only works in hl2dm). - * It will return an empty string if cl_defaultweapon doesn't exist. - * - * @param client Client Index. - * @param buffer Buffer to store the default weapon's classname. - * @param size Max size of string: buffer. - * @return True on success, false otherwise. - */ -stock bool:Client_GetDefaultWeaponName(client, String:buffer[], size) -{ - if (!GetClientInfo(client, "cl_defaultweapon", buffer, size)) { - buffer[0] = '\0'; - return false; - } - - return true; -} - -/** - * Gets the first weapon of the client's weapon list (m_hMyWeapons). - * Note: This has nothing to do with weapon slots. - * - * @param client Client Index. - * @return Entity Index of the weapon or INVALID_ENT_REFERENCE. - */ -stock Client_GetFirstWeapon(client) -{ - new offset = Client_GetWeaponsOffset(client) - 4; - - for (new i=0; i < MAX_WEAPONS; i++) { - offset += 4; - - new weapon = GetEntDataEnt2(client, offset); - - if (!Weapon_IsValid(weapon)) { - continue; - } - - return weapon; - } - - return INVALID_ENT_REFERENCE; -} - -/** - * Gets the number of weapons a client has. - * - * @param client Client Index. - * @return Number of weapons. - */ -stock Client_GetWeaponCount(client) -{ - new numWeapons = 0; - - new offset = Client_GetWeaponsOffset(client) - 4; - - for (new i=0; i < MAX_WEAPONS; i++) { - offset += 4; - - new weapon = GetEntDataEnt2(client, offset); - - if (!Weapon_IsValid(weapon)) { - continue; - } - - numWeapons++; - } - - return numWeapons; -} - -/** - * Checks whether the client is currently reloading his active weapon. - * - * @param client Client Index. - * @return True if client is reloading, false otherwise. - */ -stock bool:Client_IsReloading(client) -{ - new weapon = Client_GetActiveWeapon(client); - - if (weapon == INVALID_ENT_REFERENCE) { - return false; - } - - return Weapon_IsReloading(weapon); -} - -/** - * Sets the primary and secondary clip value of a weapon. - * - * @param client Client Index. - * @param classname Classname of a weapon. - * @param primaryClip Primary ammo value in the weapon clip, if -1 the value is untouched. - * @param secondaryClip Secondary ammo value in the weapon clip, if -1 the value is untouched. - * @return True on success, false on failure. - */ -stock bool:Client_SetWeaponClipAmmo(client, const String:className[], primaryClip=-1, secondoaryClip=-1) -{ - new weapon = Client_GetWeapon(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - return false; - } - - if (primaryClip != -1) { - Weapon_SetPrimaryClip(weapon, primaryClip); - } - - if (secondoaryClip != -1) { - Weapon_SetSecondaryClip(weapon, primaryClip); - } - - return true; -} - -/** - * Gets the primary and secondary ammo the player carries for a specific weapon classname. - * - * @param client Client Index. - * @param classname Classname of a weapon. - * @param primaryAmmo Primary ammo stock from the client, if -1 the value is untouched. - * @param secondaryAmmo Secondary ammo stock from the client, if -1 the value is untouched. - * @return True on success, false on failure. - */ -stock bool:Client_GetWeaponPlayerAmmo(client, const String:className[], &primaryAmmo=-1, &secondaryAmmo=-1) -{ - new weapon = Client_GetWeapon(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - return false; - } - - new offset_ammo = FindDataMapInfo(client, "m_iAmmo"); - - if (primaryAmmo != -1) { - new offset = offset_ammo + (Weapon_GetPrimaryAmmoType(weapon) * 4); - primaryAmmo = GetEntData(client, offset); - } - - if (secondaryAmmo != -1) { - new offset = offset_ammo + (Weapon_GetSecondaryAmmoType(weapon) * 4); - secondaryAmmo = GetEntData(client, offset); - } - - return true; -} - -/** - * Gets the primary and secondary ammo the player carries for a specific weapon index. - * - * @param client Client Index. - * @param weapon Weapon Entity Index. - * @param primaryAmmo Primary ammo stock value from the client, if -1 the value is untouched. - * @param secondaryAmmo Secondary ammo stock value from the client, if -1 the value is untouched. - * @noreturn - */ -stock Client_GetWeaponPlayerAmmoEx(client, weapon, &primaryAmmo=-1, &secondaryAmmo=-1) -{ - new offset_ammo = FindDataMapInfo(client, "m_iAmmo"); - - if (primaryAmmo != -1) { - new offset = offset_ammo + (Weapon_GetPrimaryAmmoType(weapon) * 4); - primaryAmmo = GetEntData(client, offset); - } - - if (secondaryAmmo != -1) { - new offset = offset_ammo + (Weapon_GetSecondaryAmmoType(weapon) * 4); - secondaryAmmo = GetEntData(client, offset); - } -} - -/** - * Sets the primary and secondary ammo the player carries for a specific weapon classname. - * - * @param client Client Index. - * @param classname Weapon Classname String. - * @param primaryAmmo Primary ammo stock from the client, if -1 the value is untouched. - * @param secondaryAmmo Secondary ammo stock from the client, if -1 the value is untouched. - * @return True on success, false on failure. - */ -stock bool:Client_SetWeaponPlayerAmmo(client, const String:className[], primaryAmmo=-1, secondaryAmmo=-1) -{ - new weapon = Client_GetWeapon(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - return false; - } - - Client_SetWeaponPlayerAmmoEx(client, weapon, primaryAmmo, secondaryAmmo); - - return true; -} - -/** - * Sets the primary and secondary ammo the player carries for a specific weapon index. - * - * @param client Client Index. - * @param weapon Weapon Entity Index. - * @param primaryAmmo Primary ammo stock value from the client, if -1 the value is untouched. - * @param secondaryAmmo Secondary ammo stock value from the client, if -1 the value is untouched. - * @noreturn - */ -stock Client_SetWeaponPlayerAmmoEx(client, weapon, primaryAmmo=-1, secondaryAmmo=-1) -{ - new offset_ammo = FindDataMapInfo(client, "m_iAmmo"); - - if (primaryAmmo != -1) { - new offset = offset_ammo + (Weapon_GetPrimaryAmmoType(weapon) * 4); - SetEntData(client, offset, primaryAmmo, 4, true); - } - - if (secondaryAmmo != -1) { - new offset = offset_ammo + (Weapon_GetSecondaryAmmoType(weapon) * 4); - SetEntData(client, offset, secondaryAmmo, 4, true); - } -} - -/** - * Sets the value from primary and secondary ammo stock, of a client. - * - * @param client Client Index. - * @param className Classname of a weapon. - * @param primaryAmmo Primary ammo stock value from the client, if -1 the value is untouched. - * @param secondaryAmmo Secondary ammo stock value from the client, if -1 the value is untouched. - * @param primaryClip Primary ammo value in the weapon clip, if -1 the value is untouched. - * @param secondaryClip Secondary ammo value in the weapon clip, if -1 the value is untouched. - * @return Entity Index of the given weapon on success, INVALID_ENT_REFERENCE on failure. - */ -stock Client_SetWeaponAmmo(client, const String:className[], primaryAmmo=-1, secondaryAmmo=-1, primaryClip=-1, secondaryClip=-1) -{ - new weapon = Client_GetWeapon(client, className); - - if (weapon == INVALID_ENT_REFERENCE) { - return false; - } - - if (primaryClip != -1) { - Weapon_SetPrimaryClip(weapon, primaryClip); - } - if (secondaryClip != -1) { - Weapon_SetSecondaryClip(weapon, secondaryClip); - } - Client_SetWeaponPlayerAmmoEx(client, weapon, primaryAmmo, secondaryAmmo); - - return true; -} - -/** - * Gets the next weapon of a client, starting at start. - * - * @param client Client Index (must be a valid client ingame). - * @param index Reference to an index variable, will contain the index of the next weapon to check. - * @return Weapon Index or -1 if no more weapons are found. - */ -stock Client_GetNextWeapon(client, &index = 0) -{ - new offset = Client_GetWeaponsOffset(client) + (index * 4); - - new weapon; - while (index < MAX_WEAPONS) { - index++; - - weapon = GetEntDataEnt2(client, offset); - - if (Weapon_IsValid(weapon)) { - return weapon; - } - - offset += 4; - } - - return -1; -} - -/** - * Prints white text to the bottom center of the screen - * for one client. Does not work in all games. - * Line Breaks can be done with "\n". - * - * @param client Client Index. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @return True on success, false if this usermessage doesn't exist. - */ -stock bool:Client_PrintHintText(client, const String:format[], any:...) -{ - new Handle:userMessage = StartMessageOne("HintText", client); - - if (userMessage == INVALID_HANDLE) { - return false; - } - - decl String:buffer[254]; - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 3); - - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetString(userMessage, "text", buffer); - } - else { - BfWriteByte(userMessage, 1); - BfWriteString(userMessage, buffer); - } - - EndMessage(); - - return true; -} - -/** - * Prints white text to the bottom center of the screen - * for all clients. Does not work in all games. - * Line Breaks can be done with "\n". - * - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintHintTextToAll(const String:format[], any:...) -{ - decl String:buffer[254]; - - for (new client=1; client <= MaxClients; client++) { - - if (!IsClientInGame(client)) { - continue; - } - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 2); - Client_PrintHintText(client, buffer); - } -} - -/** - * Prints white text to the right-center side of the screen - * for one client. Does not work in all games. - * Line Breaks can be done with "\n". - * - * @param client Client Index. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @return True on success, false if this usermessage doesn't exist. - */ -stock bool:Client_PrintKeyHintText(client, const String:format[], any:...) -{ - new Handle:userMessage = StartMessageOne("KeyHintText", client); - - if (userMessage == INVALID_HANDLE) { - return false; - } - - decl String:buffer[254]; - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 3); - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbAddString(userMessage, "hints", buffer); - } - else { - BfWriteByte(userMessage, 1); - BfWriteString(userMessage, buffer); - } - - EndMessage(); - - return true; -} - -/** - * Prints white text to the right-center side of the screen - * for all clients. Does not work in all games. - * Line Breaks can be done with "\n". - * - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintKeyHintTextToAll(const String:format[], any:...) -{ - decl String:buffer[254]; - - for (new client=1; client <= MaxClients; client++) { - - if (!IsClientInGame(client)) { - continue; - } - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 2); - Client_PrintKeyHintText(client, buffer); - } -} - -/** - * Prints a reliable raw chat message to a client in the chat area. - * If the client == 0, the message will printed to server console. - * - * @param client Client Index. - * @param message String Message. - * @param subject Client Index/Subject (normally used for teamcolors) - * @param isChat Tells the game to handle the chat as normal (false) or chat message (true, plays a sound), only works if SayText2 is supported. - * @noreturn - */ -stock Client_PrintToChatRaw(client, const String:message[], subject=0, bool:isChat=false) -{ - if (client == 0) { - decl String:buffer[253]; - Color_StripFromChatText(message, buffer, sizeof(buffer)); - PrintToServer(buffer); - return; - } - - static sayText2_supported = true; - static sayText2_checked = false; - - if (!sayText2_checked) { - - if (GetUserMessageId("SayText2") == INVALID_MESSAGE_ID) { - sayText2_supported = false; - } - - sayText2_checked = true; - } - - new Handle:userMessage = INVALID_HANDLE; - - if (sayText2_supported) { - userMessage = StartMessageOne("SayText2", client, USERMSG_RELIABLE); - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetInt(userMessage, "ent_idx", subject); - PbSetBool(userMessage, "chat", isChat); - PbSetString(userMessage, "msg_name", message); - - // psychonic: Furthermore, some usermessages with repeated field, - // such as the commonly-used SayText2, expected an undocumented - // specific number of values added, else the client will crash when receiving. - PbAddString(userMessage, "params", ""); - PbAddString(userMessage, "params", ""); - PbAddString(userMessage, "params", ""); - PbAddString(userMessage, "params", ""); - } - else { - BfWriteByte(userMessage , subject); - BfWriteByte(userMessage , isChat); - BfWriteString(userMessage , message); - } - } - else { - userMessage = StartMessageOne("SayText", client, USERMSG_RELIABLE); - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetInt(userMessage, "ent_idx", subject); - PbSetString(userMessage, "text", message); - PbSetBool(userMessage, "chat", isChat); - } - else { - BfWriteByte(userMessage , subject); - BfWriteString(userMessage , message); - // For DoD:S nickname coloring - BfWriteByte(userMessage , -1); - } - } - - EndMessage(); -} - -/** - * Prints a reliable chat message to one client in the chat area. - * Allows up to 253 Characters (including \0) to be printed. - * Supports chat color tags (see: colors.inc). - * - * @param client Client Index. - * @param isChat Tells the game to handle the chat as normal (false) or chat message (true, plays a sound), only works if SayText2 is supported. - * @param format Formatting rules String. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintToChat(client, bool:isChat, const String:format[], any:...) -{ - decl - String:buffer[512], - String:buffer2[253]; - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 4); - new subject = Color_ParseChatText(buffer, buffer2, sizeof(buffer2)); - - Client_PrintToChatRaw(client, buffer2, subject, isChat); - - Color_ChatClearSubject(); -} - -static printToChat_excludeclient = -1; - -/** - * Exclude a client from the next call to a Client_PrintToChat function. - * - * @param client Client Index. - * @noreturn - */ -stock Client_PrintToChatExclude(client) -{ - printToChat_excludeclient = client; -} - -/** - * Prints a reliable chat message to all clients in the chat area. - * Allows up to 253 Characters (including \0) to be printed. - * Supports chat color tags (see: colors.inc). - * - * @param isChat Tells the game to handle the chat as normal (false) or chat message (true, plays a sound), only works if SayText2 is supported. - * @param format Formatting rules String. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintToChatAll(bool:isChat, const String:format[], any:...) -{ - decl - String:buffer[512], - String:buffer2[253]; - new - subject, - language, - lastLanguage = -1; - - for (new client=1; client <= MaxClients; client++) { - - if (!IsClientInGame(client)) { - continue; - } - - if (client == printToChat_excludeclient) { - printToChat_excludeclient = -1; - continue; - } - - language = GetClientLanguage(client); - - if (language != lastLanguage) { - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 3); - subject = Color_ParseChatText(buffer, buffer2, sizeof(buffer2)); - - lastLanguage = language; - } - - Client_PrintToChatRaw(client, buffer2, subject, isChat); - } - - Color_ChatClearSubject(); -} - -/** - * Prints a reliable chat message to the specified clients in the chat area. - * Allows up to 253 Characters (including \0) to be print. - * Supports chat color tags (see: colors.inc). - * - * @param clients Client Array. - * @param numClients Number of clients in the client array. - * @param isChat Tells the game to handle the chat as normal (false) or chat message (true, plays a sound), only works if SayText2 is supported. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintToChatEx(clients[], numClients, bool:isChat, const String:format[], any:...) -{ - decl - String:buffer[512], - String:buffer2[253]; - new - client, - subject, - language, - lastLanguage = -1; - - for (new i=0; i < numClients; i++) { - - client = clients[i]; - - if (!IsClientInGame(client)) { - continue; - } - - if (client == printToChat_excludeclient) { - printToChat_excludeclient = -1; - continue; - } - - language = GetClientLanguage(client); - - if (language != lastLanguage) { - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 5); - subject = Color_ParseChatText(buffer, buffer2, sizeof(buffer2)); - - lastLanguage = language; - } - - Client_PrintToChatRaw(client, buffer2, subject, isChat); - } - - Color_ChatClearSubject(); -} - -enum ClientHudPrint { - ClientHudPrint_Notify = 1, - ClientHudPrint_Console, - ClientHudPrint_Talk, - Client_HudPrint_Center -}; - -/** - * Prints a relieable message to the client's console. - * Allows up to 254 Characters (including \0) to be print (253 for talk). - * Supports chat color tags (see: colors.inc, only available in Left 4 Dead (2) or higher). - * Chat colors are stripped automatically if not supported. - * - * @param clients Client Array. - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintToConsole(client, const String:format[], any:...) -{ - decl String:buffer[512]; - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 3); - - Client_Print(client, ClientHudPrint_Console, buffer); -} - -/** - * Prints a relieable message to the client's console. - * Allows up to 254 Characters (including \0) to be print. - * Supports chat color tags in chat & console (see: colors.inc). - * Chat colors are stripped automatically if not supported in the destination. - * - * @param clients Client Array. - * @param destination Destination place (use onf of the ClientHudPrint_) - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_Print(client, ClientHudPrint:destination, const String:format[], any:...) -{ - decl String:buffer[512], String:buffer2[254]; - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 4); - - new subject = Color_ParseChatText(buffer, buffer2, sizeof(buffer2)); - - if (destination == ClientHudPrint_Talk) { - Client_PrintToChatRaw(client, buffer2, subject, false); - return; - } - - new EngineVersion:engineVersion = GetEngineVersion(); - if (client == 0 || - destination != ClientHudPrint_Console || - (destination == ClientHudPrint_Console - && engineVersion != Engine_Left4Dead && engineVersion != Engine_Left4Dead2)) - { - Color_StripFromChatText(buffer2, buffer2, sizeof(buffer2)); - - if (client == 0) { - PrintToServer(buffer2); - return; - } - } - - new Handle:userMessage = INVALID_HANDLE; - userMessage = StartMessageOne("TextMsg", client, USERMSG_RELIABLE); - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetInt(userMessage, "msg_dst", _:destination); - PbAddString(userMessage, "params", buffer2); - PbAddString(userMessage, "params", ""); - PbAddString(userMessage, "params", ""); - PbAddString(userMessage, "params", ""); - PbAddString(userMessage, "params", ""); - } - else { - BfWriteByte(userMessage , _:destination); - BfWriteString(userMessage , buffer2); - } - - EndMessage(); -} - -/** - * Replies to a message in a command. - * A client index of 0 will use PrintToServer(). - * If the command was from the console, Client_PrintToConsole() is used. - * If the command was from chat, Client_PrintToChat() is used. - * - * @param client Client Index. - * @param format Formatting rules String. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_Reply(client, const String:format[], any:...) -{ - decl String:buffer[255]; - - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 3); - - if (GetCmdReplySource() == SM_REPLY_TO_CONSOLE) { - Client_PrintToConsole(client, buffer); - } - else { - Client_PrintToChat(client, false, buffer); - } -} - -#define SHAKE_START 0 // Starts the screen shake for all players within the radius. -#define SHAKE_STOP 1 // Stops the screen shake for all players within the radius. -#define SHAKE_AMPLITUDE 2 // Modifies the amplitude of an active screen shake for all players within the radius. -#define SHAKE_FREQUENCY 3 // Modifies the frequency of an active screen shake for all players within the radius. -#define SHAKE_START_RUMBLEONLY 4 // Starts a shake effect that only rumbles the controller, no screen effect. -#define SHAKE_START_NORUMBLE 5 // Starts a shake that does NOT rumble the controller. - -/** - * Shakes a client's screen with the specified amptitude, - * frequency & duration. - * - * @param client Client Index. - * @param command Shake Mode, use one of the SHAKE_ definitions. - * @param amplitude Shake magnitude/amplitude. - * @param frequency Shake noise frequency. - * @param duration Shake lasts this long. - * @return True on success, false otherwise. - */ -stock bool:Client_Shake(client, command=SHAKE_START, Float:amplitude=50.0, Float:frequency=150.0, Float:duration=3.0) -{ - if (command == SHAKE_STOP) { - amplitude = 0.0; - } - else if (amplitude <= 0.0) { - return false; - } - - new Handle:userMessage = StartMessageOne("Shake", client); - - if (userMessage == INVALID_HANDLE) { - return false; - } - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available - && GetUserMessageType() == UM_Protobuf) { - - PbSetInt(userMessage, "command", command); - PbSetFloat(userMessage, "local_amplitude", amplitude); - PbSetFloat(userMessage, "frequency", frequency); - PbSetFloat(userMessage, "duration", duration); - } - else { - BfWriteByte(userMessage, command); // Shake Command - BfWriteFloat(userMessage, amplitude); // shake magnitude/amplitude - BfWriteFloat(userMessage, frequency); // shake noise frequency - BfWriteFloat(userMessage, duration); // shake lasts this long - } - - EndMessage(); - - return true; -} - -/** - * Checks whether the client is a generic admin. - * - * @param Client Index. - * @return True if the client is a generic admin, false otheriwse. - */ -stock bool:Client_IsAdmin(client) -{ - new AdminId:adminId = GetUserAdmin(client); - - if (adminId == INVALID_ADMIN_ID) { - return false; - } - - return GetAdminFlag(adminId, Admin_Generic); -} - -/** - * Checks whether a client has certain admin flags - * - * @param Client Index. - * @return True if the client has the admin flags, false otherwise. - */ -stock bool:Client_HasAdminFlags(client, flags=ADMFLAG_GENERIC) -{ - new AdminId:adminId = GetUserAdmin(client); - - if (adminId == INVALID_ADMIN_ID) { - return false; - } - - return bool:(GetAdminFlags(adminId, Access_Effective) & flags); -} - -/** - * Returns whether a player is in a specific admin group. - * - * @param client Client Index. - * @param groupName Admin group name to check. - * @param caseSensitive True if the group check has to be case sensitive, false otherwise. - * @return True if the client is in the admin group, false otherwise. - */ -stock bool:Client_IsInAdminGroup(client, const String:groupName[], bool:caseSensitive=true) -{ - new AdminId:adminId = GetUserAdmin(client); - - // Validate id. - if (adminId == INVALID_ADMIN_ID) { - return false; - } - - // Get number of groups. - new count = GetAdminGroupCount(adminId); - - // Validate number of groups. - if (count == 0) { - return false; - } - - decl String:groupname[64]; - - // Loop through each group. - for (new i = 0; i < count; i++) { - // Get group name. - GetAdminGroup(adminId, i, groupname, sizeof(groupname)); - - // Compare names. - if (StrEqual(groupName, groupname, caseSensitive)) { - return true; - } - } - - // No match. - return false; -} - -/** - * Checks if the client is currently looking at the wall in front - * of him with the given distance as max value. - * - * @param client Client Index. - * @param distance Max Distance as Float value. - * @return True if he is looking at a wall, false otherwise. - */ -stock bool:Client_IsLookingAtWall(client, Float:distance=40.0) { - - decl Float:posEye[3], Float:posEyeAngles[3]; - new bool:isClientLookingAtWall = false; - - GetClientEyePosition(client, posEye); - GetClientEyeAngles(client, posEyeAngles); - - posEyeAngles[0] = 0.0; - - new Handle:trace = TR_TraceRayFilterEx(posEye, posEyeAngles, CONTENTS_SOLID, RayType_Infinite, _smlib_TraceEntityFilter); - - if (TR_DidHit(trace)) { - - if (TR_GetEntityIndex(trace) > 0) { - CloseHandle(trace); - return false; - } - - decl Float:posEnd[3]; - - TR_GetEndPosition(posEnd, trace); - - if (GetVectorDistance(posEye, posEnd, true) <= (distance * distance)) { - isClientLookingAtWall = true; - } - } - - CloseHandle(trace); - - return isClientLookingAtWall; -} - -public bool:_smlib_TraceEntityFilter(entity, contentsMask) -{ - return entity == 0; -} - -/** - * Gets a client's class. - * Currently supported games are: TF2, Dark Messiah. - * Other games maybe work too, but are not tested. - * - * @param client Client Index. - * @return Class Index. - */ -stock Client_GetClass(client) -{ - if (GetEngineVersion() == Engine_DarkMessiah) { - return GetEntProp(client, Prop_Send, "m_iPlayerClass"); - } - - return GetEntProp(client, Prop_Send, "m_iClass"); -} - -/** - * Sets a client's class. - * Currently supported games are: TF2, Dark Messiah. - * Other games maybe work too, but are not tested. - * - * @param client Client Index. - * @param playerClass The class number to set the player to. Depends on game. - * @param persistant If true changes the players desired class so the change stays after death (probably TF2 only). - * @return Class Index. - */ -stock Client_SetClass(client, playerClass, bool:persistant=false) -{ - if (GetEngineVersion() == Engine_DarkMessiah) { - SetEntProp(client, Prop_Send, "m_iPlayerClass", playerClass); - } else { - SetEntProp(client, Prop_Send, "m_iClass", playerClass); - - if (persistant) { - SetEntProp(client, Prop_Send, "m_iDesiredPlayerClass", playerClass); - } - } -} - -/** - * Returns what buttons are currently pressed by the client. - * - * @param client Client Index. - * @return Buttons as bitflag. - */ -stock Client_GetButtons(client) -{ - return GetClientButtons(client); -} - -/** - * Sets the client buttons. - * Note: This will only work OnPreThink (sdkhooks) or OnPlayerRunCmd. - * - * @param client Client Index. - * @param buttons Buttons as bitflag. - * @noreturn - */ -stock Client_SetButtons(client, buttons) -{ - SetEntProp(client, Prop_Data, "m_nButtons", buttons); -} - -/** - * Adds buttons to the already pressed buttons. - * Note: This will likely only work OnPreThink (sdkhooks) or OnPlayerRunCmd. - * - * @param client Client Index. - * @param buttons Buttons as bitflag. - * @noreturn - */ -stock Client_AddButtons(client, buttons) -{ - new newButtons = Client_GetButtons(client); - newButtons |= buttons; - Client_SetButtons(client, newButtons); -} - -/** - * Removes buttons from the already pressed buttons. - * Note: This will only work OnPreThink (sdkhooks) or OnPlayerRunCmd. - * - * @param client Client Index. - * @param buttons Buttons as bitflag. - * @noreturn - */ -stock Client_RemoveButtons(client, buttons) -{ - new newButtons = Client_GetButtons(client); - newButtons &= ~buttons; - Client_SetButtons(client, newButtons); -} - -/** - * Clears all buttons. - * Note: This will likely only work OnPreThink (sdkhooks) or OnPlayerRunCmd. - * - * @param client Client Index. - * @noreturn - */ -stock Client_ClearButtons(client) -{ - Client_SetButtons(client,0); -} - -/** - * Returns if the given buttons are pressed by the client or not. - * - * @param client Client Index. - * @param buttons Buttons as bitflag. - * @return True if the buttons are pressed otherwise false. - */ -stock bool:Client_HasButtons(client, buttons) -{ - return bool:(Client_GetButtons(client) & buttons); -} - -/** - * Returns only the buttons that have changed since the last call of this. - * Example usage: Within OnPlayerRunCmd use this function to call another function only once when a player pressed or released a button. - * - * @param client Client Index. - * @param buttons Buttons as bitflag. - * @return - */ -stock Client_GetChangedButtons(client) -{ - static oldButtons[MAXPLAYERS+1] = {0,...}; - - new buttons = Client_GetButtons(client); - new changedButtons = buttons ^ oldButtons[client]; - - oldButtons[client] = buttons; - - return changedButtons; -} - -/** - * Sets the client's maxspeed to the given value (in units per second) - * - * @param Client Client Index - * @param maxspeed the maximum speed the client can move - * @noreturn - */ -stock Client_SetMaxSpeed(client, Float:value) -{ - Entity_SetMaxSpeed(client, value); -} - -/** - * Shows a screen overlay tp a client. - * There can only be one overlay at a time. - * If you want to clear the overlay, pass - * an empty string to this function. - * - * @param Client Client Index. - * @param path Overlay path (based on the game/materials/ folder) or empty String to not show any overlay. - * @noreturn - */ -stock Client_SetScreenOverlay(client, const String:path[]) -{ - ClientCommand(client, "r_screenoverlay \"%s\"", path); -} - -/** - * Shows a screen overlay to all clients. - * There can only be one overlay at a time. - * If you want to clear the overlay, pass - * an empty string to this function. - * - * @param Client Client Index. - * @param path Overlay path (based on the game/materials/ folder) or empty String to not show any overlay. - * @noreturn - */ -stock Client_SetScreenOverlayForAll(const String:path[]) -{ - LOOP_CLIENTS(client, CLIENTFILTER_INGAME | CLIENTFILTER_NOBOTS) { - Client_SetScreenOverlay(client, path); - } -} - -/** - * Mutes a client's voice - * - * @param Client Client Index. - * @noreturn - */ -stock Client_Mute(client) -{ - SetClientListeningFlags(client, VOICE_MUTED); -} - -/** - * UnMutes a client's voice - * Code copied from basecomm.sp - * - * @param Client Client Index. - * @noreturn - */ -stock Client_UnMute(client) -{ - static Handle:cvDeadTalk = INVALID_HANDLE; - - if (cvDeadTalk == INVALID_HANDLE) { - cvDeadTalk = FindConVar("sm_deadtalk"); - } - - if (cvDeadTalk == INVALID_HANDLE) { - SetClientListeningFlags(client, VOICE_NORMAL); - } - else { - if (GetConVarInt(cvDeadTalk) == 1 && !IsPlayerAlive(client)) { - SetClientListeningFlags(client, VOICE_LISTENALL); - } - else if (GetConVarInt(cvDeadTalk) == 2 && !IsPlayerAlive(client)) { - SetClientListeningFlags(client, VOICE_TEAM); - } - else { - SetClientListeningFlags(client, VOICE_NORMAL); - } - } -} - -/** - * Checks if a client's voice is muted - * - * @param Client Client Index. - * @return True if the client is muted, false otherwise. - */ -stock bool:Client_IsMuted(client) -{ - return bool:(GetClientListeningFlags(client) & VOICE_MUTED); -} - -/** - * Checks if a client matches the specified flag filter. - * Use one of the CLIENTFILTER_ constants. - * Note that this already checks if the client is ingame or connected - * so you don't have to do that yourself. - * This function is optimized to make as less native calls as possible :) - * - * @param Client Client Index. - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @return True if the client if the client matches, false otherwise. - */ -stock bool:Client_MatchesFilter(client, flags) -{ - new bool:isIngame = false; - - if (flags >= CLIENTFILTER_INGAME) { - isIngame = IsClientInGame(client); - - if (isIngame) { - if (flags & CLIENTFILTER_NOTINGAME) { - return false; - } - } - else { - return false; - } - } - else if (!IsClientConnected(client)) { - return false; - } - - if (!flags) { - return true; - } - - if (flags & CLIENTFILTER_INGAMEAUTH) { - flags |= CLIENTFILTER_INGAME | CLIENTFILTER_AUTHORIZED; - } - - if (flags & CLIENTFILTER_BOTS && !IsFakeClient(client)) { - return false; - } - - if (flags & CLIENTFILTER_NOBOTS && IsFakeClient(client)) { - return false; - } - - if (flags & CLIENTFILTER_ADMINS && !Client_IsAdmin(client)) { - return false; - } - - if (flags & CLIENTFILTER_NOADMINS && Client_IsAdmin(client)) { - return false; - } - - if (flags & CLIENTFILTER_AUTHORIZED && !IsClientAuthorized(client)) { - return false; - } - - if (flags & CLIENTFILTER_NOTAUTHORIZED && IsClientAuthorized(client)) { - return false; - } - - if (isIngame) { - - if (flags & CLIENTFILTER_ALIVE && !IsPlayerAlive(client)) { - return false; - } - - if (flags & CLIENTFILTER_DEAD && IsPlayerAlive(client)) { - return false; - } - - if (flags & CLIENTFILTER_SPECTATORS && GetClientTeam(client) != TEAM_SPECTATOR) { - return false; - } - - if (flags & CLIENTFILTER_NOSPECTATORS && GetClientTeam(client) == TEAM_SPECTATOR) { - return false; - } - - if (flags & CLIENTFILTER_OBSERVERS && !IsClientObserver(client)) { - return false; - } - - if (flags & CLIENTFILTER_NOOBSERVERS && IsClientObserver(client)) { - return false; - } - - if (flags & CLIENTFILTER_TEAMONE && GetClientTeam(client) != TEAM_ONE) { - return false; - } - - if (flags & CLIENTFILTER_TEAMTWO && GetClientTeam(client) != TEAM_TWO) { - return false; - } - } - - return true; -} - -/** - * Gets all clients matching the specified flags filter. - * - * @param client Client Array, size should be MaxClients or MAXPLAYERS - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @return The number of clients stored in the array - */ -stock Client_Get(clients[], flags=CLIENTFILTER_ALL) -{ - new x=0; - for (new client = 1; client <= MaxClients; client++) { - - if (!Client_MatchesFilter(client, flags)) { - continue; - } - - clients[x++] = client; - } - - return x; -} - -/** - * Gets a random client matching the specified flags filter. - * - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @return Client Index or -1 if no client was found - */ -stock Client_GetRandom(flags=CLIENTFILTER_ALL) -{ - decl clients[MaxClients]; - new num = Client_Get(clients, flags); - - if (num == 0) { - return -1; - } - else if (num == 1) { - return clients[0]; - } - - new random = Math_GetRandomInt(0, num-1); - - return clients[random]; -} - -/** - * Gets a client matching certain flags starting at start. - * - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @param start Start Index. - * @return Client Index or -1 if no client was found - */ -stock Client_GetNext(flags, start=1) -{ - for (new client=start; client <= MaxClients; client++) { - - if (Client_MatchesFilter(client, flags)) { - return client; - } - } - - return -1; -} - -/** - * Retrieves the time duration a client played on the current map. - * - * @param client Client Index. - * @return Time in seconds as Float - */ -stock Float:Client_GetMapTime(client) -{ - new Float:fClientTime = GetClientTime(client); - new Float:fGameTime = GetGameTime(); - - return (fClientTime < fGameTime) ? fClientTime : fGameTime; -} - -/** - * Gets client money value (for games like Counter-Strike:Source). - * - * @param client Client Index. - * @return Money value from the client. - */ -stock Client_GetMoney(client) -{ - return GetEntProp(client, Prop_Send, "m_iAccount"); -} - -/** - * Sets client money value (for games like Counter-Strike:Source). - * - * @param client Client Index. - * @param value Money value to set. - * @noreturn - */ -stock Client_SetMoney(client, value) -{ - SetEntProp(client, Prop_Send, "m_iAccount", value); -} - -/** - * Gets a client's observers. - * - * @param client Client Index. - * @param observers Array with size of MaxClients or MAXPLAYERS. - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @return Number of observers found. - */ -stock Client_GetObservers(client, observers[], flags=CLIENTFILTER_ALL) -{ - new count = 0; - - LOOP_CLIENTS(player, CLIENTFILTER_OBSERVERS | flags) { - - if (Client_GetObserverTarget(player) == client) { - observers[count++] = player; - } - } - - return count; -} - -static Float:getPlayersInRadius_distances[MAXPLAYERS+1]; - -/** - * Gets all players near a player in a certain radius and - * orders the players by distance (optional). - * - * @param client Client Index. - * @param clients Array with size of MaxClients or MAXPLAYERS. - * @param radius radius Float (max distance) - * @param orderByDistance Set to true to order the clients by distance, false otherwise. - * @return Number of clients found. - */ -stock Client_GetPlayersInRadius(client, clients[], Float:radius, bool:orderByDistance=true) -{ - decl Float:origin_client[3]; - new - Float:distance, - count=0; - - Entity_GetAbsOrigin(client, origin_client); - - LOOP_CLIENTS(player, CLIENTFILTER_INGAME) { - - if (player == client) { - continue; - } - - distance = Entity_GetDistanceOrigin(player, origin_client); - - if (distance <= radius) { - clients[count++] = player; - - if (orderByDistance) { - getPlayersInRadius_distances[player] = distance; - } - } - } - - if (orderByDistance) { - SortCustom1D(clients, count, __smlib_GetPlayersInRadius_Sort); - } - - return count; -} - -public __smlib_GetPlayersInRadius_Sort(player1, player2, const clients[], Handle:hndl) -{ - return FloatCompare(getPlayersInRadius_distances[player1], getPlayersInRadius_distances[player2]); -} - -/** - * Gets the next player observing client starting at start. - * - * @param client Client Index (Observer Target) - * @param start Start Index. - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @return Client Index or -1 if no client was found - */ -stock Client_GetNextObserver(client, start=1, flags=CLIENTFILTER_ALL) -{ - for (new player=start; player <= MaxClients; player++) { - - if (Client_MatchesFilter(player, CLIENTFILTER_OBSERVERS | flags)) { - - if (Client_GetObserverTarget(player) == client) { - return player; - } - } - } - - return -1; -} - -/** - * Searchs and returns the game's player_manager entity. - * This should be called on every map start. - * - * @return player_manager entity or INVALID_ENT_REFERENCE if not found. - */ -stock Client_GetPlayerManager() -{ - static player_manager = INVALID_ENT_REFERENCE; - - if (player_manager != INVALID_ENT_REFERENCE) { - - if (Entity_IsValid(player_manager)) { - return player_manager; - } - else { - player_manager = INVALID_ENT_REFERENCE; - } - } - - new maxEntities = GetMaxEntities(); - - for (new entity=0; entity < maxEntities; entity++) { - - if (!Entity_IsValid(entity)) { - continue; - } - - if (Entity_ClassNameMatches(entity, "player_manager", true)) { - player_manager = EntIndexToEntRef(entity); - - return player_manager; - } - } - - return INVALID_ENT_REFERENCE; -} - -/** - * Sets the client's ping as displayed in the scoreboards. - * Should be called OnGameFrame. - * - * @param client Client Index - * @param start New ping value. - * @return True on sucess, false otherwise. - */ -stock Client_SetPing(client, value) -{ - new player_manager = Client_GetPlayerManager(); - - static offset = -1; - - if (offset== -1) { - offset = GetEntSendPropOffs(player_manager, "m_iPing", true); - - if (offset == -1) { - return false; - } - } - - SetEntData(player_manager, offset + (client * 4), value, 4, true); - - return true; -} - -static printToTop_excludeclient = -1; - -/** - * Exclude a client from the next call to a Client_PrintToTop function. - * - * @param client Client Index. - * @noreturn - */ -stock Client_PrintToTopExclude(client) -{ - printToTop_excludeclient = client; -} - -/** - * Prints colored text to the top left of the screen - * for one client. Does not work in all games. - * Line Breaks can't be done. - * - * @param client Client Index. - * @param r Red amount. - * @param g Green amount. - * @param b Blue amount. - * @param a Transparency. - * @param duration Duration in seconds the text stays (min 10 - max 200 seconds). - * @param text Text to print to. - * @return True on success, false if the key value for the dialog couldn't be created or closed. - */ -stock bool:Client_PrintToTopRaw(client, r=255, g=255, b=255, a=255, Float:duration=10.0, const String:text[]) -{ - //message line max 50 - //overline: 39*_ - //underline: 44*T - new Handle:keyValue = CreateKeyValues("Stuff", "title", text); - - if (keyValue == INVALID_HANDLE) { - return false; - } - - KvSetColor(keyValue, "color", r, g, b, a); - KvSetNum(keyValue, "level", 1); - KvSetNum(keyValue, "time", RoundToFloor(duration)); - - CreateDialog(client, keyValue, DialogType_Msg); - - if (!CloseHandle(keyValue)) { - return false; - } - return true; -} - -/** - * Prints colored text to the top left of the screen - * for one client. Does not work in all games. - * Line Breaks can't be done. - * - * @param client Client Index. - * @param r Red amount. - * @param g Green amount. - * @param b Blue amount. - * @param a Transparency. - * @param duration Duration in seconds the text stays (min 10 - max 200 seconds). - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @return True on success, false if the key value for the dialog couldn't be created or closed. - */ -stock bool:Client_PrintToTop(client, r=255, g=255, b=255, a=255, Float:duration=10.0, const String:format[], any:...) -{ - new String:buffer[150]; - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 8); - - return Client_PrintToTopRaw(client, r, g, b, a, duration, buffer); -} - -/** - * Prints colored text to the top left of the screen - * to all clients. Does not work in all games. - * Line Breaks can't be done. - * - * @param r Red amount. - * @param g Green amount. - * @param b Blue amount. - * @param a Transparency. - * @param duration Duration in seconds the text stays (min 10 - max 200 seconds). - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintToTopAll(r=255, g=255, b=255, a=255, Float:duration=10.0, const String:format[], any:...) -{ - decl - String:buffer[150]; - new - language, - lastLanguage = -1; - - for (new client=1; client <= MaxClients; client++) { - - if (!IsClientInGame(client)) { - continue; - } - - if (client == printToTop_excludeclient) { - printToTop_excludeclient = -1; - continue; - } - - language = GetClientLanguage(client); - - if (language != lastLanguage) { - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 7); - - lastLanguage = language; - } - - Client_PrintToTopRaw(client, r, g, b, a, duration, buffer); - } -} - -/** - * Prints colored text to the top left of the screen - * to specified clients. Does not work in all games. - * Line Breaks can't be done. - * - * @param clients Client Array. - * @param numClients Number of clients in the clients array. - * @param r Red amount. - * @param g Green amount. - * @param b Blue amount. - * @param a Transparency. - * @param duration Duration in seconds the text stays (min 10 - max 200 seconds). - * @param format Formatting rules. - * @param ... Variable number of format parameters. - * @noreturn - */ -stock Client_PrintToTopEx(clients[], numClients, r=255, g=255, b=255, a=255, Float:duration=10.0, const String:format[], any:...) -{ - decl - String:buffer[150]; - new - client, - language, - lastLanguage = -1; - - for (new i=0; i < numClients; i++) { - - client = clients[i]; - - if (!IsClientInGame(client)) { - continue; - } - - if (client == printToTop_excludeclient) { - printToTop_excludeclient = -1; - continue; - } - - language = GetClientLanguage(client); - - if (language != lastLanguage) { - SetGlobalTransTarget(client); - VFormat(buffer, sizeof(buffer), format, 9); - - lastLanguage = language; - } - - Client_PrintToTopRaw(client, r, g, b, a, duration, buffer); - } -} - -/** - * Opens the scoreboard for a specific client - * - * @tested csgo - * @param client Client index - * @noreturn - */ -stock Client_ShowScoreboard(client, flags=USERMSG_RELIABLE | USERMSG_BLOCKHOOKS) -{ - new Handle:handle = StartMessageOne("VGUIMenu", client, flags); - - if (GetFeatureStatus(FeatureType_Native, "GetUserMessageType") == FeatureStatus_Available && - GetUserMessageType() == UM_Protobuf) { - - PbSetString(handle, "name", "scores"); - PbSetBool(handle, "show", true); - } - else { - BfWriteString(handle, "scores"); - BfWriteByte(handle, 1); // Show - BfWriteByte(handle, 0); // subkeys count - } - - EndMessage(); -} diff --git a/scripting/1.10/include/smlib/colors.inc b/scripting/1.10/include/smlib/colors.inc deleted file mode 100644 index ffcdb9e..0000000 --- a/scripting/1.10/include/smlib/colors.inc +++ /dev/null @@ -1,528 +0,0 @@ -#if defined _smlib_colors_included - #endinput -#endif -#define _smlib_colors_included - -#include -#include -#include - -#define CHATCOLOR_NOSUBJECT -2 -#define SMLIB_COLORS_GAMEDATAFILE "smlib_colors.games" - -enum ChatColorSubjectType -{ - ChatColorSubjectType_none = -3, - - // Subject/Team colors - ChatColorSubjectType_player = -2, - ChatColorSubjectType_undefined = -1, - ChatColorSubjectType_world = 0 - // Anything higher is a specific team -} - -enum ChatColorInfo -{ - ChatColorInfo_Code, - ChatColorInfo_Alternative, - bool:ChatColorInfo_Supported, - ChatColorSubjectType:ChatColorInfo_SubjectType -}; - -enum ChatColor -{ - ChatColor_Normal, - ChatColor_Orange, - ChatColor_Red, - ChatColor_RedBlue, - ChatColor_Blue, - ChatColor_BlueRed, - ChatColor_Team, - ChatColor_Lightgreen, - ChatColor_Gray, - ChatColor_Green, - ChatColor_Olivegreen, - ChatColor_Black -} - -static String:chatColorTags[][] = { - "N", // Normal - "O", // Orange - "R", // Red - "RB", // Red, Blue - "B", // Blue - "BR", // Blue, Red - "T", // Team - "L", // Light green - "GRA", // GRAy - "G", // Green - "OG", // Olive green - "BLA" // BLAck -}; - -static String:chatColorNames[][] = { - "normal", // Normal - "orange", // Orange - "red", // Red - "redblue", // Red, Blue - "blue", // Blue - "bluered", // Blue, Red - "team", // Team - "lightgreen", // Light green - "gray", // GRAy - "green", // Green - "olivegreen", // Olive green - "black" // BLAck -}; - -static chatColorInfo[][ChatColorInfo] = -{ - // Code , alternative , Is Supported? Chat color subject type Color name - { '\x01', -1/* None */ , true, ChatColorSubjectType_none, }, // Normal - { '\x01', 0 /* None */ , true, ChatColorSubjectType_none, }, // Orange - { '\x03', 9 /* Green */ , true, ChatColorSubjectType:2 }, // Red - { '\x03', 4 /* Blue */ , true, ChatColorSubjectType:2 }, // Red, Blue - { '\x03', 9 /* Green */ , true, ChatColorSubjectType:3 }, // Blue - { '\x03', 2 /* Red */ , true, ChatColorSubjectType:3 }, // Blue, Red - { '\x03', 9 /* Green */ , true, ChatColorSubjectType_player }, // Team - { '\x03', 9 /* Green */ , true, ChatColorSubjectType_world }, // Light green - { '\x03', 9 /* Green */ , true, ChatColorSubjectType_undefined},// GRAy - { '\x04', 0 /* Normal*/ , true, ChatColorSubjectType_none }, // Green - { '\x05', 9 /* Green */ , true, ChatColorSubjectType_none }, // Olive green - { '\x06', 9 /* Green */ , true, ChatColorSubjectType_none } // BLAck -}; - -static bool:checkTeamPlay = false; -static Handle:mp_teamplay = INVALID_HANDLE; -static bool:isSayText2_supported = true; -static chatSubject = CHATCOLOR_NOSUBJECT; - -/** - * Sets the subject (a client) for the chat color parser. - * Call this before Color_ParseChatText() or Client_PrintToChat(). - * - * @param client Client Index/Subject - * @noreturn - */ -stock Color_ChatSetSubject(client) -{ - chatSubject = client; -} - -/** - * Gets the subject used for the chat color parser. - * - * @return Client Index/Subject, or CHATCOLOR_NOSUBJECT if none - */ -stock Color_ChatGetSubject() -{ - return chatSubject; -} - -/** - * Clears the subject used for the chat color parser. - * Call this after Color_ParseChatText(). - * - * @noreturn - */ -stock Color_ChatClearSubject() -{ - chatSubject = CHATCOLOR_NOSUBJECT; -} - -/** - * Parses a chat string and converts all color tags to color codes. - * This is a very powerful function that works recursively over the color information - * table. The support colors are hardcoded, but can be overriden for each game by - * creating the file gamedata/smlib_colors.games.txt. - * - * @param str Chat String - * @param subject Output Buffer - * @param size Output Buffer size - * @return Returns a value for the subject - */ -stock Color_ParseChatText(const String:str[], String:buffer[], size) -{ - new - bool:inBracket = false, - x = 0, x_buf = 0, x_tag = 0, - subject = CHATCOLOR_NOSUBJECT; - - decl - String:sTag[10] = "", // This should be able to hold "\x08RRGGBBAA"\0 - String:colorCode[10] = "", // This should be able to hold "\x08RRGGBBAA"\0 - String:currentColor[10] = "\x01"; // Initialize with normal color - - size--; - - // Every chat message has to start with a - // color code, otherwise it will ignore all colors. - buffer[x_buf++] = '\x01'; - - while (str[x] != '\0') { - - if (size == x_buf) { - break; - } - - new character = str[x++]; - - if (inBracket) { - // We allow up to 9 characters in the tag (#RRGGBBAA) - if (character == '}' || x_tag > 9) { - inBracket = false; - sTag[x_tag] = '\0'; - x_tag = 0; - - if (character == '}') { - Color_TagToCode(sTag, subject, colorCode); - - if (colorCode[0] == '\0') { - // We got an unknown tag, ignore this - // and forward it to the buffer. - - // Terminate buffer with \0 so Format can handle it. - buffer[x_buf] = '\0'; - x_buf = Format(buffer, size, "%s{%s}", buffer, sTag); - - // We 'r done here - continue; - } - else if (!StrEqual(colorCode, currentColor)) { - // If we are already using this color, - // we don't need to set it again. - - // Write the color code to our buffer. - // x_buf will be increased by the number of cells written. - x_buf += strcopy(buffer[x_buf], size - x_buf, colorCode); - - // Remember the current color. - strcopy(currentColor, sizeof(currentColor), colorCode); - } - } - else { - // If the tag character limit exceeds 9, - // we have to do something. - - // Terminate buffer with \0 so Format can handle it. - buffer[x_buf] = '\0'; - x_buf = Format(buffer, size, "%s{%s%c", buffer, sTag, character); - } - } - else if (character == '{' && !x_tag) { - buffer[x_buf++] = '{'; - inBracket = false; - } - else { - sTag[x_tag++] = character; - } - } - else if (character == '{') { - inBracket = true; - } - else { - buffer[x_buf++] = character; - } - } - - // Write remaining text to the buffer, - // if we have been inside brackets. - if (inBracket) { - buffer[x_buf] = '\0'; - x_buf = Format(buffer, size, "%s{%s", buffer, sTag); - } - - buffer[x_buf] = '\0'; - - return subject; -} - -/** - * Converts a chat color tag to its code character. - * - * @param tag Color Tag String. - * @param subject Subject variable to pass - * @param result The result as character sequence (string). This will be \0 if the tag is unkown. - * @noreturn - */ -stock Color_TagToCode(const String:tag[], &subject=-1, String:result[10]) -{ - // Check if the tag starts with a '#'. - // We will handle it has RGB(A)-color code then. - if (tag[0] == '#') { - new length_tag = strlen(tag); - switch (length_tag - 1) { - // #RGB -> \07RRGGBB - case 3: { - FormatEx( - result, sizeof(result), "\x07%c%c%c%c%c%c", - tag[1], tag[1], tag[2], tag[2], tag[3], tag[3] - ); - } - // #RGBA -> \08RRGGBBAA - case 4: { - FormatEx( - result, sizeof(result), "\x08%c%c%c%c%c%c%c%c", - tag[1], tag[1], tag[2], tag[2], tag[3], tag[3], tag[4], tag[4] - ); - } - // #RRGGBB -> \07RRGGBB - case 6: { - FormatEx(result, sizeof(result), "\x07%s", tag[1]); - } - // #RRGGBBAA -> \08RRGGBBAA - case 8: { - FormatEx(result, sizeof(result), "\x08%s", tag[1]); - } - default: { - result[0] = '\0'; - } - } - - return; - } - else { - // Try to handle this string as color name - new n = Array_FindString(chatColorTags, sizeof(chatColorTags), tag); - - // Check if this tag is invalid - if (n == -1) { - result[0] = '\0'; - return; - } - - // Check if the color is actually supported 'n stuff. - Color_GetChatColorInfo(n, subject); - - result[0] = chatColorInfo[n][ChatColorInfo_Code]; - result[1] = '\0'; - } - - return; -} - -/** - * Strips all color control characters in a string. - * The Output buffer can be the same as the input buffer. - * Original code by Psychonic, thanks. - * - * @param input Input String. - * @param output Output String. - * @param size Max Size of the Output string - * @noreturn - */ -stock Color_StripFromChatText(const String:input[], String:output[], size) -{ - new x = 0; - for (new i=0; input[i] != '\0'; i++) { - - if (x+1 == size) { - break; - } - - new character = input[i]; - - if (character > 0x08) { - output[x++] = character; - } - } - - output[x] = '\0'; -} - -/** - * Checks the gamename and sets default values. - * For example if some colors are supported, or - * if a game uses another color code for a specific color. - * All those hardcoded default values can be overriden in - * smlib's color gamedata file. - * - * @noreturn - */ -static stock Color_ChatInitialize() -{ - static initialized = false; - - if (initialized) { - return; - } - - initialized = true; - - decl String:gameFolderName[32]; - GetGameFolderName(gameFolderName, sizeof(gameFolderName)); - - chatColorInfo[ChatColor_Black][ChatColorInfo_Supported] = false; - - if (strncmp(gameFolderName, "left4dead", 9, false) != 0 && - !StrEqual(gameFolderName, "cstrike", false) && - !StrEqual(gameFolderName, "tf", false)) - { - chatColorInfo[ChatColor_Lightgreen][ChatColorInfo_Supported]= false; - chatColorInfo[ChatColor_Gray][ChatColorInfo_Supported] = false; - } - - if (StrEqual(gameFolderName, "tf", false)) { - chatColorInfo[ChatColor_Black][ChatColorInfo_Supported] = true; - - chatColorInfo[ChatColor_Gray][ChatColorInfo_Code] = '\x01'; - chatColorInfo[ChatColor_Gray][ChatColorInfo_SubjectType] = ChatColorSubjectType_none; - } - else if (strncmp(gameFolderName, "left4dead", 9, false) == 0) { - chatColorInfo[ChatColor_Red][ChatColorInfo_SubjectType] = ChatColorSubjectType:3; - chatColorInfo[ChatColor_RedBlue][ChatColorInfo_SubjectType] = ChatColorSubjectType:3; - chatColorInfo[ChatColor_Blue][ChatColorInfo_SubjectType] = ChatColorSubjectType:2; - chatColorInfo[ChatColor_BlueRed][ChatColorInfo_SubjectType] = ChatColorSubjectType:2; - - chatColorInfo[ChatColor_Orange][ChatColorInfo_Code] = '\x04'; - chatColorInfo[ChatColor_Green][ChatColorInfo_Code] = '\x05'; - } - else if (StrEqual(gameFolderName, "hl2mp", false)) { - chatColorInfo[ChatColor_Red][ChatColorInfo_SubjectType] = ChatColorSubjectType:3; - chatColorInfo[ChatColor_RedBlue][ChatColorInfo_SubjectType] = ChatColorSubjectType:3; - chatColorInfo[ChatColor_Blue][ChatColorInfo_SubjectType] = ChatColorSubjectType:2; - chatColorInfo[ChatColor_BlueRed][ChatColorInfo_SubjectType] = ChatColorSubjectType:2; - chatColorInfo[ChatColor_Black][ChatColorInfo_Supported] = true; - - checkTeamPlay = true; - } - else if (StrEqual(gameFolderName, "dod", false)) { - chatColorInfo[ChatColor_Gray][ChatColorInfo_Code] = '\x01'; - chatColorInfo[ChatColor_Gray][ChatColorInfo_SubjectType] = ChatColorSubjectType_none; - - chatColorInfo[ChatColor_Black][ChatColorInfo_Supported] = true; - chatColorInfo[ChatColor_Orange][ChatColorInfo_Supported] = false; - } - - if (GetUserMessageId("SayText2") == INVALID_MESSAGE_ID) { - isSayText2_supported = false; - } - - decl String:path_gamedata[PLATFORM_MAX_PATH]; - BuildPath(Path_SM, path_gamedata, sizeof(path_gamedata), "gamedata/%s.txt", SMLIB_COLORS_GAMEDATAFILE); - - if (FileExists(path_gamedata)) { - new Handle:gamedata = INVALID_HANDLE; - - if ((gamedata = LoadGameConfigFile(SMLIB_COLORS_GAMEDATAFILE)) != INVALID_HANDLE) { - - decl String:keyName[32], String:buffer[6]; - - for (new i=0; i < sizeof(chatColorNames); i++) { - - Format(keyName, sizeof(keyName), "%s_code", chatColorNames[i]); - if (GameConfGetKeyValue(gamedata, keyName, buffer, sizeof(buffer))) { - chatColorInfo[i][ChatColorInfo_Code] = StringToInt(buffer); - } - - Format(keyName, sizeof(keyName), "%s_alternative", chatColorNames[i]); - if (GameConfGetKeyValue(gamedata, keyName, buffer, sizeof(buffer))) { - chatColorInfo[i][ChatColorInfo_Alternative] = buffer[0]; - } - - Format(keyName, sizeof(keyName), "%s_supported", chatColorNames[i]); - if (GameConfGetKeyValue(gamedata, keyName, buffer, sizeof(buffer))) { - chatColorInfo[i][ChatColorInfo_Supported] = StrEqual(buffer, "true"); - } - - Format(keyName, sizeof(keyName), "%s_subjecttype", chatColorNames[i]); - if (GameConfGetKeyValue(gamedata, keyName, buffer, sizeof(buffer))) { - chatColorInfo[i][ChatColorInfo_SubjectType] = ChatColorSubjectType:StringToInt(buffer); - } - } - - if (GameConfGetKeyValue(gamedata, "checkteamplay", buffer, sizeof(buffer))) { - checkTeamPlay = StrEqual(buffer, "true"); - } - - CloseHandle(gamedata); - } - } - - mp_teamplay = FindConVar("mp_teamplay"); -} - -/** - * Checks if the passed color index is actually supported - * for the current game. If not, the index will be overwritten - * The color resolving works recursively until a valid color is found. - * - * @param index - * @param subject A client index or CHATCOLOR_NOSUBJECT - * @noreturn - */ -static stock Color_GetChatColorInfo(&index, &subject=CHATCOLOR_NOSUBJECT) -{ - Color_ChatInitialize(); - - if (index == -1) { - index = 0; - } - - while (!chatColorInfo[index][ChatColorInfo_Supported]) { - - new alternative = chatColorInfo[index][ChatColorInfo_Alternative]; - - if (alternative == -1) { - index = 0; - break; - } - - index = alternative; - } - - if (index == -1) { - index = 0; - } - - new newSubject = CHATCOLOR_NOSUBJECT; - new ChatColorSubjectType:type = chatColorInfo[index][ChatColorInfo_SubjectType]; - - switch (type) { - - case ChatColorSubjectType_none: { - } - case ChatColorSubjectType_player: { - newSubject = chatSubject; - } - case ChatColorSubjectType_undefined: { - newSubject = -1; - } - case ChatColorSubjectType_world: { - newSubject = 0; - } - default: { - - if (!checkTeamPlay || GetConVarBool(mp_teamplay)) { - - if (subject > 0 && subject <= MaxClients) { - - if (GetClientTeam(subject) == _:type) { - newSubject = subject; - } - } - else if (subject == CHATCOLOR_NOSUBJECT) { - new client = Team_GetAnyClient(_:type); - - if (client != -1) { - newSubject = client; - } - } - } - } - } - - if (type > ChatColorSubjectType_none && - ((subject != CHATCOLOR_NOSUBJECT && subject != newSubject) || newSubject == CHATCOLOR_NOSUBJECT || !isSayText2_supported)) - { - index = chatColorInfo[index][ChatColorInfo_Alternative]; - newSubject = Color_GetChatColorInfo(index, subject); - } - - // Only set the subject if there is no subject set already. - if (subject == CHATCOLOR_NOSUBJECT) { - subject = newSubject; - } - - return newSubject; -} diff --git a/scripting/1.10/include/smlib/concommands.inc b/scripting/1.10/include/smlib/concommands.inc deleted file mode 100644 index a90fd1c..0000000 --- a/scripting/1.10/include/smlib/concommands.inc +++ /dev/null @@ -1,47 +0,0 @@ -#if defined _smlib_concommands_included - #endinput -#endif -#define _smlib_concommands_included - -#include -#include - -/** - * Checks if a ConCommand has one or more flags set. - * - * @param command ConCommand name. - * @param flags Flags to check. - * @return True if flags are set, false otherwise. - */ -stock bool:ConCommand_HasFlags(const String:command[], const flags) -{ - return bool:(GetCommandFlags(command) & flags); -} - -/** - * Adds one or more flags to a ConCommand. - * - * @param command ConCommand name. - * @param flags Flags to add. - * @noreturn - */ -stock ConCommand_AddFlags(const String:command[], const flags) -{ - new newFlags = GetCommandFlags(command); - newFlags |= flags; - SetCommandFlags(command, newFlags); -} - -/** - * Removes one ore more flags from a ConCommand. - * - * @param command ConCommand name. - * @param flags Flags to remove - * @noreturn - */ -stock ConCommand_RemoveFlags(const String:command[], const flags) -{ - new newFlags = GetCommandFlags(command); - newFlags &= ~flags; - SetCommandFlags(command, newFlags); -} diff --git a/scripting/1.10/include/smlib/convars.inc b/scripting/1.10/include/smlib/convars.inc deleted file mode 100644 index 9b9ba4a..0000000 --- a/scripting/1.10/include/smlib/convars.inc +++ /dev/null @@ -1,72 +0,0 @@ -#if defined _smlib_convars_included - #endinput -#endif -#define _smlib_convars_included - -#include - -/** - * Checks if a ConVar has one or more flags set. - * - * @param convar ConVar Handle. - * @param flags Flags to check. - * @return True if flags are set, false otherwise. - */ -stock bool:Convar_HasFlags(Handle:convar, flags) -{ - return bool:(GetConVarFlags(convar) & flags); -} - -/** - * Adds one or more flags to a ConVar. - * - * @param convar ConVar Handle. - * @param flags Flags to add. - * @noreturn - */ -stock Convar_AddFlags(Handle:convar, flags) -{ - new newFlags = GetConVarFlags(convar); - newFlags |= flags; - SetConVarFlags(convar, newFlags); -} - -/** - * Removes one ore more flags from a ConVar. - * - * @param convar ConVar Handle. - * @param flags Flags to remove - * @noreturn - */ -stock Convar_RemoveFlags(Handle:convar, flags) -{ - new newFlags = GetConVarFlags(convar); - newFlags &= ~flags; - SetConVarFlags(convar, newFlags); -} - -/** - * Checks if a String is a valid ConVar or - * Console Command name. - * - * @param name String Name. - * @return True if the name specified is a valid ConVar or console command name, false otherwise. - */ -stock bool:Convar_IsValidName(const String:name[]) -{ - if (name[0] == '\0') { - return false; - } - - new n=0; - while (name[n] != '\0') { - - if (!IsValidConVarChar(name[n])) { - return false; - } - - n++; - } - - return true; -} diff --git a/scripting/1.10/include/smlib/crypt.inc b/scripting/1.10/include/smlib/crypt.inc deleted file mode 100644 index 6e5f380..0000000 --- a/scripting/1.10/include/smlib/crypt.inc +++ /dev/null @@ -1,629 +0,0 @@ -#if defined _smlib_crypt_included - #endinput -#endif -#define _smlib_crypt_included - -#include - -/********************************************************************************** - * - * Base64 Encoding/Decoding Functions - * All Credits to to SirLamer & ScriptCoderPro - * Taken from http://forums.alliedmods.net/showthread.php?t=101764 - * - ***********************************************************************************/ - -// The Base64 encoding table -static const String:base64_sTable[] = - // 0000000000111111111122222222223333333333444444444455555555556666 - // 0123456789012345678901234567890123456789012345678901234567890123 - "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - -// The Base64 decoding table -static const base64_decodeTable[] = { -// 0 1 2 3 4 5 6 7 8 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 10 - 19 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20 - 29 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 30 - 39 - 0, 0, 0, 62, 0, 0, 0, 63, 52, 53, // 40 - 49 - 54, 55, 56, 57, 58, 59, 60, 61, 0, 0, // 50 - 59 - 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, // 60 - 69 - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, // 70 - 79 - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, // 80 - 89 - 25, 0, 0, 0, 0, 0, 0, 26, 27, 28, // 90 - 99 - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, // 100 - 109 - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, // 110 - 119 - 49, 50, 51, 0, 0, 0, 0, 0, 0, 0, // 120 - 129 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 130 - 139 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 140 - 149 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 150 - 159 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 160 - 169 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 170 - 179 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 180 - 189 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 190 - 199 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 200 - 209 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 210 - 219 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 220 - 229 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 230 - 239 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 240 - 249 - 0, 0, 0, 0, 0, 0 // 250 - 256 -}; - -/* - * For some reason the standard demands a string in 24-bit (3 character) intervals. - * This fill character is used to identify unused bytes at the end of the string. - */ -static const base64_cFillChar = '='; - -// The conversion characters between the standard and URL-compliance Base64 protocols -static const String:base64_mime_chars[] = "+/="; -static const String:base64_url_chars[] = "-_."; - -/* - * Encodes a string or binary data into Base64 - * - * @param sString The input string or binary data to be encoded. - * @param sResult The storage buffer for the Base64-encoded result. - * @param len The maximum length of the storage buffer, in characters/bytes. - * @param sourcelen (optional): The number of characters or length in bytes to be read from the input source. - * This is not needed for a text string, but is important for binary data since there is no end-of-line character. - * @return The length of the written Base64 string, in bytes. - */ -stock Crypt_Base64Encode(const String:sString[], String:sResult[], len, sourcelen=0) -{ - new nLength; // The string length to be read from the input - new resPos; // The string position in the result buffer - - // If the read length was specified, use it; otherwise, pull the string length from the input. - if (sourcelen > 0) { - nLength = sourcelen; - } - else { - nLength = strlen(sString); - } - - // Loop through and generate the Base64 encoded string - // NOTE: This performs the standard encoding process. Do not manipulate the logic within this loop. - for (new nPos = 0; nPos < nLength; nPos++) { - new cCode; - - cCode = (sString[nPos] >> 2) & 0x3f; - - resPos += FormatEx(sResult[resPos], len - resPos, "%c", base64_sTable[cCode]); - - cCode = (sString[nPos] << 4) & 0x3f; - if (++nPos < nLength) { - cCode |= (sString[nPos] >> 4) & 0x0f; - } - resPos += FormatEx(sResult[resPos], len - resPos, "%c", base64_sTable[cCode]); - - if ( nPos < nLength ) { - cCode = (sString[nPos] << 2) & 0x3f; - if (++nPos < nLength) { - cCode |= (sString[nPos] >> 6) & 0x03; - } - - resPos += FormatEx(sResult[resPos], len - resPos, "%c", base64_sTable[cCode]); - } - else { - nPos++; - resPos += FormatEx(sResult[resPos], len - resPos, "%c", base64_cFillChar); - } - - if (nPos < nLength) { - cCode = sString[nPos] & 0x3f; - resPos += FormatEx(sResult[resPos], len - resPos, "%c", base64_sTable[cCode]); - } - else { - resPos += FormatEx(sResult[resPos], len - resPos, "%c", base64_cFillChar); - } - } - - return resPos; -} - - -/* - * Decodes a Base64 string. - * - * @param sString The input string in compliant Base64 format to be decoded. - * @param sResult The storage buffer for the decoded text strihg or binary data. - * @param len The maximum length of the storage buffer, in characters/bytes. - * @return The length of the decoded data, in bytes. - */ -stock Crypt_Base64Decode(const String:sString[], String:sResult[], len) -{ - new nLength = strlen(sString); // The string length to be read from the input - new resPos; // The string position in the result buffer - - // Loop through and generate the Base64 encoded string - // NOTE: This performs the standard encoding process. Do not manipulate the logic within this loop. - for (new nPos = 0; nPos < nLength; nPos++) { - - new c, c1; - - c = base64_decodeTable[sString[nPos++]]; - c1 = base64_decodeTable[sString[nPos]]; - - c = (c << 2) | ((c1 >> 4) & 0x3); - - resPos += FormatEx(sResult[resPos], len - resPos, "%c", c); - - if (++nPos < nLength) { - - c = sString[nPos]; - - if (c == base64_cFillChar) - break; - - c = base64_decodeTable[sString[nPos]]; - c1 = ((c1 << 4) & 0xf0) | ((c >> 2) & 0xf); - - resPos += FormatEx(sResult[resPos], len - resPos, "%c", c1); - } - - if (++nPos < nLength) { - - c1 = sString[nPos]; - - if (c1 == base64_cFillChar) - break; - - c1 = base64_decodeTable[sString[nPos]]; - c = ((c << 6) & 0xc0) | c1; - - resPos += FormatEx(sResult[resPos], len - resPos, "%c", c); - } - } - - return resPos; -} - - -/* - * Converts a standards-compliant Base64 string to the commonly accepted URL-compliant alternative. - * Note: The result will be the same length as the input string as long as the output buffer is large enough. - * - * @param sString The standards-compliant Base64 input string to converted. - * @param sResult The storage buffer for the URL-compliant result. - * @param len The maximum length of the storage buffer in characters/bytes. - * @return Number of cells written. - */ -stock Crypt_Base64MimeToUrl(const String:sString[], String:sResult[], len) -{ - new chars_len = sizeof(base64_mime_chars); // Length of the two standards vs. URL character lists - new nLength; // The string length to be read from the input - new temp_char; // Buffer character - - nLength = strlen(sString); - - new String:sTemp[nLength+1]; // Buffer string - - // Loop through string - for (new i = 0; i < nLength; i++) { - temp_char = sString[i]; - - for (new j = 0; j < chars_len; j++) { - - if(temp_char == base64_mime_chars[j]) { - temp_char = base64_url_chars[j]; - break; - } - } - - sTemp[i] = temp_char; - } - - sTemp[nLength] = '\0'; - - return strcopy(sResult, len, sTemp); -} - -/* - * Base64UrlToMime(String:sResult[], len, const String:sString[], sourcelen) - * Converts a URL-compliant Base64 string to the standards-compliant version. - * Note: The result will be the same length as the input string as long as the output buffer is large enough. - * - * @param sString The URL-compliant Base64 input string to converted. - * @param sResult The storage buffer for the standards-compliant result. - * @param len The maximum length of the storage buffer in characters/bytes. - * @return Number of cells written. - */ -stock Crypt_Base64UrlToMime(const String:sString[], String:sResult[], len) -{ - new chars_len = sizeof(base64_mime_chars); // Length of the two standards vs. URL character lists - new nLength; // The string length to be read from the input - new temp_char; // Buffer character - - nLength = strlen(sString); - - new String:sTemp[nLength+1]; // Buffer string - - // Loop through string - for (new i = 0; i < nLength; i++) { - temp_char = sString[i]; - for (new j = 0; j < chars_len; j++) { - if (temp_char == base64_url_chars[j]) { - temp_char = base64_mime_chars[j]; - break; - } - } - - sTemp[i] = temp_char; - } - - sTemp[nLength] = '\0'; - - return strcopy(sResult, len, sTemp); -} - -/********************************************************************************** - * - * MD5 Encoding Functions - * All Credits go to sslice - * RSA Data Security, Inc. MD5 Message Digest Algorithm - * Taken from http://forums.alliedmods.net/showthread.php?t=67683 - * - ***********************************************************************************/ - -/* - * Calculate the md5 hash of a string. - * - * @param str Input String - * @param output Output String Buffer - * @param maxlen Size of the Output String Buffer - * @noreturn - */ -stock Crypt_MD5(const String:str[], String:output[], maxlen) -{ - decl x[2]; - decl buf[4]; - decl input[64]; - new i, ii; - - new len = strlen(str); - - // MD5Init - x[0] = x[1] = 0; - buf[0] = 0x67452301; - buf[1] = 0xefcdab89; - buf[2] = 0x98badcfe; - buf[3] = 0x10325476; - - // MD5Update - new update[16]; - - update[14] = x[0]; - update[15] = x[1]; - - new mdi = (x[0] >>> 3) & 0x3F; - - if ((x[0] + (len << 3)) < x[0]) { - x[1] += 1; - } - - x[0] += len << 3; - x[1] += len >>> 29; - - new c = 0; - while (len--) { - input[mdi] = str[c]; - mdi += 1; - c += 1; - - if (mdi == 0x40) { - - for (i = 0, ii = 0; i < 16; ++i, ii += 4) - { - update[i] = (input[ii + 3] << 24) | (input[ii + 2] << 16) | (input[ii + 1] << 8) | input[ii]; - } - - // Transform - MD5Transform(buf, update); - - mdi = 0; - } - } - - // MD5Final - new padding[64] = { - 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }; - - new inx[16]; - inx[14] = x[0]; - inx[15] = x[1]; - - mdi = (x[0] >>> 3) & 0x3F; - - len = (mdi < 56) ? (56 - mdi) : (120 - mdi); - update[14] = x[0]; - update[15] = x[1]; - - mdi = (x[0] >>> 3) & 0x3F; - - if ((x[0] + (len << 3)) < x[0]) { - x[1] += 1; - } - - x[0] += len << 3; - x[1] += len >>> 29; - - c = 0; - while (len--) { - input[mdi] = padding[c]; - mdi += 1; - c += 1; - - if (mdi == 0x40) { - - for (i = 0, ii = 0; i < 16; ++i, ii += 4) { - update[i] = (input[ii + 3] << 24) | (input[ii + 2] << 16) | (input[ii + 1] << 8) | input[ii]; - } - - // Transform - MD5Transform(buf, update); - - mdi = 0; - } - } - - for (i = 0, ii = 0; i < 14; ++i, ii += 4) { - inx[i] = (input[ii + 3] << 24) | (input[ii + 2] << 16) | (input[ii + 1] << 8) | input[ii]; - } - - MD5Transform(buf, inx); - - new digest[16]; - for (i = 0, ii = 0; i < 4; ++i, ii += 4) { - digest[ii] = (buf[i]) & 0xFF; - digest[ii + 1] = (buf[i] >>> 8) & 0xFF; - digest[ii + 2] = (buf[i] >>> 16) & 0xFF; - digest[ii + 3] = (buf[i] >>> 24) & 0xFF; - } - - FormatEx(output, maxlen, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x", - digest[0], digest[1], digest[2], digest[3], digest[4], digest[5], digest[6], digest[7], - digest[8], digest[9], digest[10], digest[11], digest[12], digest[13], digest[14], digest[15]); -} - -static stock MD5Transform_FF(&a, &b, &c, &d, x, s, ac) - { - a += (((b) & (c)) | ((~b) & (d))) + x + ac; - a = (((a) << (s)) | ((a) >>> (32-(s)))); - a += b; -} - -static stock MD5Transform_GG(&a, &b, &c, &d, x, s, ac) - { - a += (((b) & (d)) | ((c) & (~d))) + x + ac; - a = (((a) << (s)) | ((a) >>> (32-(s)))); - a += b; -} - -static stock MD5Transform_HH(&a, &b, &c, &d, x, s, ac) - { - a += ((b) ^ (c) ^ (d)) + x + ac; - a = (((a) << (s)) | ((a) >>> (32-(s)))); - a += b; -} - -static stock MD5Transform_II(&a, &b, &c, &d, x, s, ac) -{ - a += ((c) ^ ((b) | (~d))) + x + ac; - a = (((a) << (s)) | ((a) >>> (32-(s)))); - a += b; -} - -static stock MD5Transform(buf[], input[]){ - new a = buf[0]; - new b = buf[1]; - new c = buf[2]; - new d = buf[3]; - - MD5Transform_FF(a, b, c, d, input[0], 7, 0xd76aa478); - MD5Transform_FF(d, a, b, c, input[1], 12, 0xe8c7b756); - MD5Transform_FF(c, d, a, b, input[2], 17, 0x242070db); - MD5Transform_FF(b, c, d, a, input[3], 22, 0xc1bdceee); - MD5Transform_FF(a, b, c, d, input[4], 7, 0xf57c0faf); - MD5Transform_FF(d, a, b, c, input[5], 12, 0x4787c62a); - MD5Transform_FF(c, d, a, b, input[6], 17, 0xa8304613); - MD5Transform_FF(b, c, d, a, input[7], 22, 0xfd469501); - MD5Transform_FF(a, b, c, d, input[8], 7, 0x698098d8); - MD5Transform_FF(d, a, b, c, input[9], 12, 0x8b44f7af); - MD5Transform_FF(c, d, a, b, input[10], 17, 0xffff5bb1); - MD5Transform_FF(b, c, d, a, input[11], 22, 0x895cd7be); - MD5Transform_FF(a, b, c, d, input[12], 7, 0x6b901122); - MD5Transform_FF(d, a, b, c, input[13], 12, 0xfd987193); - MD5Transform_FF(c, d, a, b, input[14], 17, 0xa679438e); - MD5Transform_FF(b, c, d, a, input[15], 22, 0x49b40821); - - MD5Transform_GG(a, b, c, d, input[1], 5, 0xf61e2562); - MD5Transform_GG(d, a, b, c, input[6], 9, 0xc040b340); - MD5Transform_GG(c, d, a, b, input[11], 14, 0x265e5a51); - MD5Transform_GG(b, c, d, a, input[0], 20, 0xe9b6c7aa); - MD5Transform_GG(a, b, c, d, input[5], 5, 0xd62f105d); - MD5Transform_GG(d, a, b, c, input[10], 9, 0x02441453); - MD5Transform_GG(c, d, a, b, input[15], 14, 0xd8a1e681); - MD5Transform_GG(b, c, d, a, input[4], 20, 0xe7d3fbc8); - MD5Transform_GG(a, b, c, d, input[9], 5, 0x21e1cde6); - MD5Transform_GG(d, a, b, c, input[14], 9, 0xc33707d6); - MD5Transform_GG(c, d, a, b, input[3], 14, 0xf4d50d87); - MD5Transform_GG(b, c, d, a, input[8], 20, 0x455a14ed); - MD5Transform_GG(a, b, c, d, input[13], 5, 0xa9e3e905); - MD5Transform_GG(d, a, b, c, input[2], 9, 0xfcefa3f8); - MD5Transform_GG(c, d, a, b, input[7], 14, 0x676f02d9); - MD5Transform_GG(b, c, d, a, input[12], 20, 0x8d2a4c8a); - - MD5Transform_HH(a, b, c, d, input[5], 4, 0xfffa3942); - MD5Transform_HH(d, a, b, c, input[8], 11, 0x8771f681); - MD5Transform_HH(c, d, a, b, input[11], 16, 0x6d9d6122); - MD5Transform_HH(b, c, d, a, input[14], 23, 0xfde5380c); - MD5Transform_HH(a, b, c, d, input[1], 4, 0xa4beea44); - MD5Transform_HH(d, a, b, c, input[4], 11, 0x4bdecfa9); - MD5Transform_HH(c, d, a, b, input[7], 16, 0xf6bb4b60); - MD5Transform_HH(b, c, d, a, input[10], 23, 0xbebfbc70); - MD5Transform_HH(a, b, c, d, input[13], 4, 0x289b7ec6); - MD5Transform_HH(d, a, b, c, input[0], 11, 0xeaa127fa); - MD5Transform_HH(c, d, a, b, input[3], 16, 0xd4ef3085); - MD5Transform_HH(b, c, d, a, input[6], 23, 0x04881d05); - MD5Transform_HH(a, b, c, d, input[9], 4, 0xd9d4d039); - MD5Transform_HH(d, a, b, c, input[12], 11, 0xe6db99e5); - MD5Transform_HH(c, d, a, b, input[15], 16, 0x1fa27cf8); - MD5Transform_HH(b, c, d, a, input[2], 23, 0xc4ac5665); - - MD5Transform_II(a, b, c, d, input[0], 6, 0xf4292244); - MD5Transform_II(d, a, b, c, input[7], 10, 0x432aff97); - MD5Transform_II(c, d, a, b, input[14], 15, 0xab9423a7); - MD5Transform_II(b, c, d, a, input[5], 21, 0xfc93a039); - MD5Transform_II(a, b, c, d, input[12], 6, 0x655b59c3); - MD5Transform_II(d, a, b, c, input[3], 10, 0x8f0ccc92); - MD5Transform_II(c, d, a, b, input[10], 15, 0xffeff47d); - MD5Transform_II(b, c, d, a, input[1], 21, 0x85845dd1); - MD5Transform_II(a, b, c, d, input[8], 6, 0x6fa87e4f); - MD5Transform_II(d, a, b, c, input[15], 10, 0xfe2ce6e0); - MD5Transform_II(c, d, a, b, input[6], 15, 0xa3014314); - MD5Transform_II(b, c, d, a, input[13], 21, 0x4e0811a1); - MD5Transform_II(a, b, c, d, input[4], 6, 0xf7537e82); - MD5Transform_II(d, a, b, c, input[11], 10, 0xbd3af235); - MD5Transform_II(c, d, a, b, input[2], 15, 0x2ad7d2bb); - MD5Transform_II(b, c, d, a, input[9], 21, 0xeb86d391); - - buf[0] += a; - buf[1] += b; - buf[2] += c; - buf[3] += d; -} - -/********************************************************************************** - * - * RC4 Encoding Functions - * All Credits go to SirLamer and Raydan - * Taken from http://forums.alliedmods.net/showthread.php?t=101834 - * - ***********************************************************************************/ - -/* - * Encrypts a text string using RC4. - * Note: This function is NOT binary safe. - * Use EncodeRC4Binary to encode binary data. - * - * @param input The source data to be encrypted. - * @param pwd The password/key used to encode and decode the data. - * @param output The encoded result. - * @param maxlen The maximum length of the output buffer. - * - * @noreturn - */ -stock Crypt_RC4Encode(const String:input[], const String:pwd[], String:output[], maxlen) -{ - decl pwd_len,str_len,i,j,a,k; - decl key[256]; - decl box[256]; - decl tmp; - - pwd_len = strlen(pwd); - str_len = strlen(input); - - if (pwd_len > 0 && str_len > 0) { - - for (i=0; i < 256; i++) { - key[i] = pwd[i%pwd_len]; - box[i]=i; - } - - i=0; j=0; - - for (; i < 256; i++) { - j = (j + box[i] + key[i]) % 256; - tmp = box[i]; - box[i] = box[j]; - box[j] = tmp; - } - - i=0; j=0; a=0; - - for (; i < str_len; i++) { - a = (a + 1) % 256; - j = (j + box[a]) % 256; - tmp = box[a]; - box[a] = box[j]; - box[j] = tmp; - k = box[((box[a] + box[j]) % 256)]; - FormatEx(output[2*i], maxlen-2*i, "%02x", input[i] ^ k); - } - } -} - -/* - * Encrypts binary data using RC4. - * - * @param input The source data to be encrypted. - * @param str_len The length of the source data. - * @param pwd The password/key used to encode and decode the data. - * @param output The encoded result. - * @param maxlen The maximum length of the output buffer. - * @noreturn - */ -stock Crypt_RC4EncodeBinary(const String:input[], str_len, const String:pwd[], String:output[], maxlen) -{ - decl pwd_len,i,j,a,k; - decl key[256]; - decl box[256]; - decl tmp; - - pwd_len = strlen(pwd); - - if (pwd_len > 0 && str_len > 0) { - - for(i=0;i<256;i++) { - key[i] = pwd[i%pwd_len]; - box[i]=i; - } - - i=0; j=0; - - for (; i < 256; i++) { - j = (j + box[i] + key[i]) % 256; - tmp = box[i]; - box[i] = box[j]; - box[j] = tmp; - } - - i=0; j=0; a=0; - - if (str_len+1 > maxlen) { - str_len = maxlen - 1; - } - - for(; i < str_len; i++) { - a = (a + 1) % 256; - j = (j + box[a]) % 256; - tmp = box[a]; - box[a] = box[j]; - box[j] = tmp; - k = box[((box[a] + box[j]) % 256)]; - FormatEx(output[i], maxlen-i, "%c", input[i] ^ k); - } - - /* - * i = number of written bits (remember increment occurs at end of for loop, and THEN it fails the loop condition) - * Since we're working with binary data, the calling function should not depend on the escape - * character, but putting it here prevents crashes in case someone tries to read the data like a string - */ - output[i] = '\0'; - - return i; - } - else { - return -1; - } -} diff --git a/scripting/1.10/include/smlib/debug.inc b/scripting/1.10/include/smlib/debug.inc deleted file mode 100644 index 46275ba..0000000 --- a/scripting/1.10/include/smlib/debug.inc +++ /dev/null @@ -1,30 +0,0 @@ -#if defined _smlib_debug_included - #endinput -#endif -#define _smlib_debug_included - -#include - -/** - * Prints the values of a static Float-Array to the server console. - * - * @param array Static Float-Array. - * @param size Size of the Array. - * @noreturn - */ -stock Debug_FloatArray(const Float:array[], size=3) -{ - new String:output[64] = ""; - - for (new i=0; i < size; ++i) { - - if (i > 0 && i < size) { - StrCat(output, sizeof(output), ", "); - - } - - Format(output, sizeof(output), "%s%f", output, array[i]); - } - - PrintToServer("[DEBUG] Vector[%d] = { %s }", size, output); -} diff --git a/scripting/1.10/include/smlib/dynarrays.inc b/scripting/1.10/include/smlib/dynarrays.inc deleted file mode 100644 index 8a16011..0000000 --- a/scripting/1.10/include/smlib/dynarrays.inc +++ /dev/null @@ -1,24 +0,0 @@ -#if defined _smlib_dynarray_included - #endinput -#endif -#define _smlib_dynarray_included - -#include - -/** - * Retrieves a cell value from an array. - * This is a wrapper around the Sourcemod Function GetArrayCell, - * but it casts the result as bool - * - * @param array Array Handle. - * @param index Index in the array. - * @param block Optionally specify which block to read from - * (useful if the blocksize > 0). - * @param asChar Optionally read as a byte instead of a cell. - * @return Value read. - * @error Invalid Handle, invalid index, or invalid block. - */ -stock bool:DynArray_GetBool(Handle:array, index, block=0, bool:asChar=false) -{ - return bool:GetArrayCell(array, index, block, asChar); -} diff --git a/scripting/1.10/include/smlib/edicts.inc b/scripting/1.10/include/smlib/edicts.inc deleted file mode 100644 index 376f975..0000000 --- a/scripting/1.10/include/smlib/edicts.inc +++ /dev/null @@ -1,127 +0,0 @@ -#if defined _smlib_edicts_included - #endinput -#endif -#define _smlib_edicts_included - -#include -#include - -/* - * Finds an edict by it's name - * It only finds the first occurence. - * - * @param name Name of the entity you want so search. - * @return Edict Index or INVALID_ENT_REFERENCE if no entity was found. - */ -stock Edict_FindByName(const String:name[]) -{ - new maxEntities = GetMaxEntities(); - for (new edict=0; edict < maxEntities; edict++) { - - if (!IsValidEdict(edict)) { - continue; - } - - if (Entity_NameMatches(edict, name)) { - return edict; - } - } - - return INVALID_ENT_REFERENCE; -} - -/* - * Finds an edict by its HammerID. - * The newer version of Valve's Hammer editor - * sets a unique ID for each entity in a map. - * It only finds the first occurence. - * - * @param hammerId Hammer editor ID - * @return Edict Index or INVALID_ENT_REFERENCE if no entity was found. - */ -stock Edict_FindByHammerId(hammerId) -{ - new maxEntities = GetMaxEntities(); - for (new edict=0; edict < maxEntities; edict++) { - - if (!IsValidEdict(edict)) { - continue; - } - - if (Entity_GetHammerId(edict) == hammerId) { - return edict; - } - } - - return INVALID_ENT_REFERENCE; -} - -/** - * Searches for the closest edict in relation to the given origin - * - * @param vecOrigin_center 3 dimensional origin array - * @param clientsOnly True if you only want to search for clients - * @param ignoreEntity Ignore this entity - * @return Edict Index or INVALID_ENT_REFERENCE if no entity was found. - */ -stock Edict_GetClosest(Float:vecOrigin_center[3], bool:clientsOnly=false, ignoreEntity=-1) -{ - decl Float:vecOrigin_edict[3]; - new Float:smallestDistance = 0.0; - new closestEdict = INVALID_ENT_REFERENCE; - - new maxEntities; - - if (clientsOnly) { - maxEntities = MaxClients; - } - else { - maxEntities = GetMaxEntities(); - } - - for (new edict=1; edict <= maxEntities; edict++) { - - if (!IsValidEdict(edict)) { - continue; - } - - if (ignoreEntity >= 0 && edict == ignoreEntity) { - continue; - } - - if (GetEntSendPropOffs(edict, "m_vecOrigin") == -1) { - continue; - } - - Entity_GetAbsOrigin(edict, vecOrigin_edict); - - new Float:edict_distance = GetVectorDistance(vecOrigin_center, vecOrigin_edict, true); - - if (edict_distance < smallestDistance || smallestDistance == 0.0) { - smallestDistance = edict_distance; - closestEdict = edict; - } - } - - return closestEdict; -} - -/** - * Searches for the closest edict in relation to the given edict. - * - * @param edict Edict index - * @param clientsOnly True if you only want to search for clients - * @return The closest edict or INVALID_ENT_REFERENCE - */ -stock Edict_GetClosestToEdict(edict, bool:clientsOnly=false) -{ - decl Float:vecOrigin[3]; - - if (GetEntSendPropOffs(edict, "m_vecOrigin") == -1) { - return INVALID_ENT_REFERENCE; - } - - Entity_GetAbsOrigin(edict, vecOrigin); - - return Edict_GetClosest(vecOrigin, clientsOnly, edict); -} diff --git a/scripting/1.10/include/smlib/effects.inc b/scripting/1.10/include/smlib/effects.inc deleted file mode 100644 index ed87e58..0000000 --- a/scripting/1.10/include/smlib/effects.inc +++ /dev/null @@ -1,742 +0,0 @@ -#if defined _smlib_effects_included - #endinput -#endif -#define _smlib_effects_included - -#include -#include -#include -#include -#include -#include -#include -#include - - - -// Entity Dissolve types -enum DissolveType -{ - DISSOLVE_NORMAL = 0, - DISSOLVE_ELECTRICAL, - DISSOLVE_ELECTRICAL_LIGHT, - DISSOLVE_CORE -}; - -/** - * Dissolves a player - * - * @param client Client Index. - * @param dissolveType Dissolve Type, use the DissolveType enum. - * @param magnitude How strongly to push away from the center. - * @return True on success, otherwise false. - */ -stock bool:Effect_DissolveEntity(entity, DissolveType:dissolveType=DISSOLVE_NORMAL, magnitude=1) -{ - new env_entity_dissolver = CreateEntityByName("env_entity_dissolver"); - - if (env_entity_dissolver == -1) { - return false; - } - - Entity_PointAtTarget(env_entity_dissolver, entity); - SetEntProp(env_entity_dissolver, Prop_Send, "m_nDissolveType", _:dissolveType); - SetEntProp(env_entity_dissolver, Prop_Send, "m_nMagnitude", magnitude); - AcceptEntityInput(env_entity_dissolver, "Dissolve"); - Entity_Kill(env_entity_dissolver); - - return true; -} - -/** - * Dissolves a player's Ragdoll - * - * @param client Client Index. - * @param dissolveType Dissolve Type, use the DissolveType enum. - * @return True on success, otherwise false. - */ -stock bool:Effect_DissolvePlayerRagDoll(client, DissolveType:dissolveType=DISSOLVE_NORMAL) -{ - new m_hRagdoll = GetEntPropEnt(client, Prop_Send, "m_hRagdoll"); - - if (m_hRagdoll == -1) { - return false; - } - - return Effect_DissolveEntity(m_hRagdoll, dissolveType); -} - -typedef EffectCallback = function Action (int entity, any data); //function EffectCallback public(entity, any:data); - -/** - * Fades an entity in our out. - * You can specifiy a callback function which will get called - * when the fade is finished. - * Important: The callback will be called if it is passed, - * no matter if the entity is still valid or not. That means you - * have to check if the entity is valid yourself. - * - * @param entity Entity Index. - * @param fadeOut Optional: Fade the entity out (true) or in (false). - * @param kill Optional: If to kill the entity when the fade is finished. - * @param fast Optional: Fade the entity fast (~0.7 secs) or slow (~3 secs) - * @param callback Optional: You can specify a callback Function that will get called when the fade is finished. - * @param data Optional: You can pass any data to the callback. - * @return True on success, otherwise false. - */ -stock Effect_Fade(entity, fadeOut=true, kill=false, fast=true, EffectCallback:callback=INVALID_FUNCTION, any:data=0) -{ - new Float:timerTime = 0.0; - - if (fast) { - timerTime = 0.6; - - if (fadeOut) { - SetEntityRenderFx(entity, RENDERFX_FADE_FAST); - } - else { - SetEntityRenderFx(entity, RENDERFX_SOLID_FAST); - } - } - else { - timerTime = 3.0; - - if (fadeOut) { - SetEntityRenderFx(entity, RENDERFX_FADE_SLOW); - } - else { - SetEntityRenderFx(entity, RENDERFX_SOLID_SLOW); - } - } - - ChangeEdictState(entity, GetEntSendPropOffs(entity, "m_nRenderFX", true)); - - if (kill || callback != INVALID_FUNCTION) { - new Handle:dataPack = INVALID_HANDLE; - CreateDataTimer(timerTime, _smlib_Timer_Effect_Fade, dataPack, TIMER_FLAG_NO_MAPCHANGE | TIMER_DATA_HNDL_CLOSE); - - WritePackCell(dataPack, EntIndexToEntRef(entity)); - WritePackCell(dataPack, kill); -#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 7 - WritePackFunction(dataPack, callback); -#else - WritePackCell(dataPack, _:callback); -#endif - WritePackCell(dataPack, data); - ResetPack(dataPack); - } -} - -/** - * Fades the entity in. - * A wrapper function around Effect_Fade(). - * - * @param entity Entity Index. - * @param fast Optional: Fade the entity fast (~0.7 secs) or slow (~3 secs) - * @param callback Optional: You can specify a callback Function that will get called when the fade is finished. - * @param data Optional: You can pass any data to the callback. - * @return True on success, otherwise false. - */ -stock Effect_FadeIn(entity, fast=true, EffectCallback:callback=INVALID_FUNCTION, any:data=0) -{ - Effect_Fade(entity, false, false, fast, callback, data); -} - -/** - * Fades the entity out. - * A wrapper function around Effect_Fade(). - * - * @param entity Entity Index. - * @param fadeOut Optional: Fade the entity out (true) or in (false). - * @param kill Optional: If to kill the entity when the fade is finished. - * @param fast Optional: Fade the entity fast (~0.7 secs) or slow (~3 secs) - * @param callback Optional: You can specify a callback Function that will get called when the fade is finished. - * @param data Optional: You can pass any data to the callback. - * @return True on success, otherwise false. - */ -stock Effect_FadeOut(entity, kill=false, fast=true, EffectCallback:callback=INVALID_FUNCTION, any:data=0) -{ - Effect_Fade(entity, true, kill, fast, callback, data); -} - -public Action:_smlib_Timer_Effect_Fade(Handle:Timer, Handle:dataPack) -{ - new entity = ReadPackCell(dataPack); - new kill = ReadPackCell(dataPack); -#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 7 - new Function:callback = ReadPackFunction(dataPack); -#else - new Function:callback = Function:ReadPackCell(dataPack); -#endif - new any:data = any:ReadPackCell(dataPack); - - if (callback != INVALID_FUNCTION) { - Call_StartFunction(INVALID_HANDLE, callback); - Call_PushCell(entity); - Call_PushCell(data); - Call_Finish(); - } - - if (kill && IsValidEntity(entity)) { - Entity_Kill(entity); - } - - return Plugin_Stop; -} - -/** - * Sends a boxed beam effect to one player. - * - * Ported from eventscripts vecmath library. - * - * @param client The client to show the box to. - * @param bottomCorner One bottom corner of the box. - * @param upperCorner One upper corner of the box. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawBeamBoxToClient( - client, - const Float:bottomCorner[3], - const Float:upperCorner[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - const color[4]={ 255, 0, 0, 255 }, - speed=0 -) { - new clients[1]; - clients[0] = client; - Effect_DrawBeamBox(clients, 1, bottomCorner, upperCorner, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); -} - -/** - * Sends a boxed beam effect to all players. - * - * Ported from eventscripts vecmath library. - * - * @param bottomCorner One bottom corner of the box. - * @param upperCorner One upper corner of the box. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawBeamBoxToAll( - const Float:bottomCorner[3], - const Float:upperCorner[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - const color[4]={ 255, 0, 0, 255 }, - speed=0 -) -{ - new clients[MaxClients]; - new numClients = Client_Get(clients, CLIENTFILTER_INGAME); - - Effect_DrawBeamBox(clients, numClients, bottomCorner, upperCorner, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); -} - -/** - * Sends a boxed beam effect to a list of players. - * - * Ported from eventscripts vecmath library. - * - * @param clients An array of clients to show the box to. - * @param numClients Number of players in the array. - * @param bottomCorner One bottom corner of the box. - * @param upperCorner One upper corner of the box. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawBeamBox( - clients[], - numClients, - const Float:bottomCorner[3], - const Float:upperCorner[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - const color[4]={ 255, 0, 0, 255 }, - speed=0 -) { - // Create the additional corners of the box - decl Float:corners[8][3]; - - for (new i=0; i < 4; i++) { - Array_Copy(bottomCorner, corners[i], 3); - Array_Copy(upperCorner, corners[i+4], 3); - } - - corners[1][0] = upperCorner[0]; - corners[2][0] = upperCorner[0]; - corners[2][1] = upperCorner[1]; - corners[3][1] = upperCorner[1]; - corners[4][0] = bottomCorner[0]; - corners[4][1] = bottomCorner[1]; - corners[5][1] = bottomCorner[1]; - corners[7][0] = bottomCorner[0]; - - // Draw all the edges - - // Horizontal Lines - // Bottom - for (new i=0; i < 4; i++) { - new j = ( i == 3 ? 0 : i+1 ); - TE_SetupBeamPoints(corners[i], corners[j], modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); - TE_Send(clients, numClients); - } - - // Top - for (new i=4; i < 8; i++) { - new j = ( i == 7 ? 4 : i+1 ); - TE_SetupBeamPoints(corners[i], corners[j], modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); - TE_Send(clients, numClients); - } - - // All Vertical Lines - for (new i=0; i < 4; i++) { - TE_SetupBeamPoints(corners[i], corners[i+4], modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); - TE_Send(clients, numClients); - } -} - - -/** - * Sends a boxed beam effect to one player. - * - * Ported from eventscripts vecmath library. - * - * @param client The client to show the box to. - * @param origin Origin/center of the box. - * @param mins Min size Vector - * @param maxs Max size Vector - * @param angles Angles used to rotate the box. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawBeamBoxRotatableToClient( - client, - const Float:origin[3], - const Float:mins[3], - const Float:maxs[3], - const Float:angles[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - const color[4]={ 255, 0, 0, 255 }, - speed=0 -) { - new clients[1]; - clients[0] = client; - Effect_DrawBeamBoxRotatable(clients, 1, origin, mins, maxs, angles, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); -} - - - -/** - * Sends a boxed beam effect to all players. - * - * Ported from eventscripts vecmath library. - * - * @param origin Origin/center of the box. - * @param mins Min size Vector - * @param maxs Max size Vector - * @param angles Angles used to rotate the box. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawBeamBoxRotatableToAll( - const Float:origin[3], - const Float:mins[3], - const Float:maxs[3], - const Float:angles[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - const color[4]={ 255, 0, 0, 255 }, - speed=0 -) -{ - new clients[MaxClients]; - new numClients = Client_Get(clients, CLIENTFILTER_INGAME); - - Effect_DrawBeamBoxRotatable(clients, numClients, origin, mins, maxs, angles, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); -} - -/** - * Sends a boxed beam effect to a list of players. - * - * Ported from eventscripts vecmath library. - * - * @param clients An array of clients to show the box to. - * @param numClients Number of players in the array. - * @param origin Origin/center of the box. - * @param mins Min size Vector - * @param maxs Max size Vector - * @param angles Angles used to rotate the box. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawBeamBoxRotatable( - clients[], - numClients, - const Float:origin[3], - const Float:mins[3], - const Float:maxs[3], - const Float:angles[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - const color[4]={ 255, 0, 0, 255 }, - speed=0 -) { - // Create the additional corners of the box - decl Float:corners[8][3]; - Array_Copy(mins, corners[0], 3); - Math_MakeVector(maxs[0], mins[1], mins[2], corners[1]); - Math_MakeVector(maxs[0], maxs[1], mins[2], corners[2]); - Math_MakeVector(mins[0], maxs[1], mins[2], corners[3]); - Math_MakeVector(mins[0], mins[1], maxs[2], corners[4]); - Math_MakeVector(maxs[0], mins[1], maxs[2], corners[5]); - Array_Copy(maxs, corners[6], 3); - Math_MakeVector(mins[0], maxs[1], maxs[2], corners[7]); - - // Rotate all edges - for (new i=0; i < sizeof(corners); i++) { - Math_RotateVector(corners[i], angles, corners[i]); - } - - // Apply world offset (after rotation) - for (new i=0; i < sizeof(corners); i++) { - AddVectors(origin, corners[i], corners[i]); - } - - // Draw all the edges - // Horizontal Lines - // Bottom - for (new i=0; i < 4; i++) { - new j = ( i == 3 ? 0 : i+1 ); - TE_SetupBeamPoints(corners[i], corners[j], modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); - TE_Send(clients, numClients); - } - - // Top - for (new i=4; i < 8; i++) { - new j = ( i == 7 ? 4 : i+1 ); - TE_SetupBeamPoints(corners[i], corners[j], modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); - TE_Send(clients, numClients); - } - - // All Vertical Lines - for (new i=0; i < 4; i++) { - TE_SetupBeamPoints(corners[i], corners[i+4], modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, color, speed); - TE_Send(clients, numClients); - } -} - -/** - * Displays the given axis of rotation as beam effect to one player. - * - * @param client The client to show the box to. - * @param origin Origin/center of the box. - * @param angles Angles used to rotate the box. - * @param length The length in each direction. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawAxisOfRotationToClient( - client, - const Float:origin[3], - const Float:angles[3], - const Float:length[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - speed=0 -) { - new clients[1]; - clients[0] = client; - Effect_DrawAxisOfRotation(clients, 1, origin, angles, length, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, speed); -} - -/** - * Displays the given axis of rotation as beam effect to all players. - * - * @param origin Origin/center of the box. - * @param angles Angles used to rotate the box. - * @param length The length in each direction. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawAxisOfRotationToAll( - const Float:origin[3], - const Float:angles[3], - const Float:length[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - speed=0 -) -{ - new clients[MaxClients]; - new numClients = Client_Get(clients, CLIENTFILTER_INGAME); - - Effect_DrawAxisOfRotation(clients, numClients, origin, angles, length, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, speed); -} - -/** - * Displays the given axis of rotation as beam effect to a list of players. - * - * @param clients An array of clients to show the box to. - * @param numClients Number of players in the array. - * @param origin Origin/center of the box. - * @param angles Angles used to rotate the box. - * @param length The length in each direction. - * @param modelIndex Precached model index. - * @param haloIndex Precached model index. - * @param startFrame Initital frame to render. - * @param frameRate Beam frame rate. - * @param life Time duration of the beam. - * @param width Initial beam width. - * @param endWidth Final beam width. - * @param fadeLength Beam fade time duration. - * @param amplitude Beam amplitude. - * @param color Color array (r, g, b, a). - * @param speed Speed of the beam. - * @noreturn - */ -stock Effect_DrawAxisOfRotation( - clients[], - numClients, - const Float:origin[3], - const Float:angles[3], - const Float:length[3], - modelIndex, - haloIndex, - startFrame=0, - frameRate=30, - Float:life=5.0, - Float:width=5.0, - Float:endWidth=5.0, - fadeLength=2, - Float:amplitude=1.0, - speed=0 -) { - // Create the additional corners of the box - new Float:xAxis[3], Float:yAxis[3], Float:zAxis[3]; - xAxis[0] = length[0]; - yAxis[1] = length[1]; - zAxis[2] = length[2]; - - // Rotate all edges - Math_RotateVector(xAxis, angles, xAxis); - Math_RotateVector(yAxis, angles, yAxis); - Math_RotateVector(zAxis, angles, zAxis); - - // Apply world offset (after rotation) - AddVectors(origin, xAxis, xAxis); - AddVectors(origin, yAxis, yAxis); - AddVectors(origin, zAxis, zAxis); - - // Draw all - TE_SetupBeamPoints(origin, xAxis, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, {255, 0, 0, 255}, speed); - TE_Send(clients, numClients); - - TE_SetupBeamPoints(origin, yAxis, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, {0, 255, 0, 255}, speed); - TE_Send(clients, numClients); - - TE_SetupBeamPoints(origin, zAxis, modelIndex, haloIndex, startFrame, frameRate, life, width, endWidth, fadeLength, amplitude, {0, 0, 255, 255}, speed); - TE_Send(clients, numClients); -} - - -/** - * Creates an env_sprite. - * - * @param origin Origin of the Sprite. - * @param modelIndex Precached model index. - * @param color Color array (r, g, b, a). - * @param scale Scale (Note: many materials ignore a lower value than 0.25). - * @param targetName Targetname of the sprite. - * @param parent Entity Index of this sprite's parent in the movement hierarchy. - * @param renderMode Render mode (use the enum). - * @param renderFx Render fx (use the enum). - * @param glowProxySize Radius size of the glow when to be rendered, if inside a geometry. Ex: a block 2x2x2 units big, if the glowProxySize is between 0.0 and 2.0 the sprite will not be rendered, even if the actual size of the sprite is bigger, everything above 2.0 will render the sprite. Using an abnormal high value will render Sprites trough walls. - * @param frameRate Sprite frame rate. - * @param hdrColorScale Float value to multiply sprite color by when running with HDR. - * @param receiveShadows When false then this prevents the sprite from receiving shadows. - * @return Entity Index of the created Sprite. - */ -stock Effect_EnvSprite( - const Float:origin[3], - modelIndex, - const color[4]={255, 255, 255, 255}, - Float:scale=0.25, - const String:targetName[MAX_NAME_LENGTH]="", - parent=-1, - RenderMode:renderMode=RENDER_WORLDGLOW, - RenderFx:renderFx=RENDERFX_NONE, - Float:glowProxySize=2.0, - Float:framerate=10.0, - Float:hdrColorScale=1.0, - bool:receiveShadows = true -) { - new entity = Entity_Create("env_sprite"); - - if (entity == INVALID_ENT_REFERENCE) { - return INVALID_ENT_REFERENCE; - } - - DispatchKeyValue (entity, "disablereceiveshadows", (receiveShadows) ? "0" : "1"); - DispatchKeyValueFloat (entity, "framerate", framerate); - DispatchKeyValueFloat (entity, "GlowProxySize", glowProxySize); - DispatchKeyValue (entity, "spawnflags", "1"); - DispatchKeyValueFloat (entity, "HDRColorScale", hdrColorScale); - DispatchKeyValue (entity, "maxdxlevel", "0"); - DispatchKeyValue (entity, "mindxlevel", "0"); - DispatchKeyValueFloat (entity, "scale", scale); - - DispatchSpawn(entity); - - SetEntityRenderMode(entity, renderMode); - SetEntityRenderColor(entity, color[0], color[1], color[2], color[3]); - SetEntityRenderFx(entity, renderFx); - - Entity_SetName(entity, targetName); - Entity_SetModelIndex(entity, modelIndex); - Entity_SetAbsOrigin(entity, origin); - - if (parent != -1) { - Entity_SetParent(entity, parent); - } - - return entity; -} diff --git a/scripting/1.10/include/smlib/entities.inc b/scripting/1.10/include/smlib/entities.inc deleted file mode 100644 index d90f7a4..0000000 --- a/scripting/1.10/include/smlib/entities.inc +++ /dev/null @@ -1,2152 +0,0 @@ -#if defined _smlib_entities_included - #endinput -#endif -#define _smlib_entities_included - -#include -#include -#include - -/** - * Macro for iterating trough all children (entities it is parent of) of an entity. - * - * @param 1 Entity Index of the parent. - * @param 2 Name of the children entity index variable (will be only valid in the loop). - */ -#define LOOP_CHILDREN(%1,%2) for (new %2=Entity_GetNextChild(%1); %2 != INVALID_ENT_REFERENCE; %2=Entity_GetNextChild(%1, ++%2)) - -/* - * Checks if an entity is valid and exists. - * - * @param entity Entity Index. - * @return True if the entity is valid, false otherwise. - */ -stock Entity_IsValid(entity) -{ - return IsValidEntity(entity); -} - -/** - * Finds an entity by its name. - * You can optionally specify the classname to search for. - * Note: If the classname is specified it uses The Sourcemod native - * function FindEntityByClassname() which uses the engine's - * linked entity list for finding entities. This might be - * cheaper, use this if you call this function very often. - * - * @param name Name of the entity you want so search. - * @param className Optional: Classname of the entity - * @return Entity index or INVALID_ENT_REFERENCE if not matching entity was found. - */ -stock Entity_FindByName(const String:name[], const String:className[]="") -{ - if (className[0] == '\0') { - // Hack: Double the limit to gets none-networked entities too. - new realMaxEntities = GetMaxEntities() * 2; - for (new entity=0; entity < realMaxEntities; entity++) { - - if (!IsValidEntity(entity)) { - continue; - } - - if (Entity_NameMatches(entity, name)) { - return entity; - } - } - } - else { - new entity = INVALID_ENT_REFERENCE; - while ((entity = FindEntityByClassname(entity, className)) != INVALID_ENT_REFERENCE) { - - if (Entity_NameMatches(entity, name)) { - return entity; - } - } - } - - return INVALID_ENT_REFERENCE; -} - -/** - * Finds an entity by its HammerID. - * The newer version of Valve's Hammer editor - * sets a unique ID for each entity in a map. - * It only finds the first occurence. - * Note: If the classname is specified it uses The Sourcemod native - * function FindEntityByClassname() which uses the engine's - * linked entity list for finding entities. This might be - * cheaper, use this if you call this function very often. - * - * @param hammerId Hammer editor ID - * @param className Optional: Classname of the entity - * @return Edict Index or INVALID_ENT_REFERENCE if no entity was found. - */ -stock Entity_FindByHammerId(hammerId, const String:className[]="") -{ - if (className[0] == '\0') { - // Hack: Double the limit to gets none-networked entities too. - new realMaxEntities = GetMaxEntities() * 2; - for (new entity=0; entity < realMaxEntities; entity++) { - - if (!IsValidEntity(entity)) { - continue; - } - - if (Entity_GetHammerId(entity) == hammerId) { - return entity; - } - } - } - else { - new entity = INVALID_ENT_REFERENCE; - while ((entity = FindEntityByClassname(entity, className)) != INVALID_ENT_REFERENCE) { - - if (Entity_GetHammerId(entity) == hammerId) { - return entity; - } - } - } - - return INVALID_ENT_REFERENCE; -} - -/** - * Searches for an entity by classname. - * This is a wrapper around FindEntityByClassname - * and has been added for completion. - * - * @param startEnt The entity index after which to begin searching from. Use -1 to start from the first entity. - * @param classname Classname of the entity to find. - * @return Entity index >= 0 if found, -1 otherwise. - */ - -stock Entity_FindByClassName(startEntity, const String:className[]) -{ - return FindEntityByClassname(startEntity, className); -} - -/** - * Checks if an entity (partially) matches a specific entity class. - * - * @param entity Entity Index. - * @param className Classname String. - * @partialMatch If to do a partial classname check. - * @return True if the classname matches, false otherwise. - */ -stock bool:Entity_ClassNameMatches(entity, const String:className[], partialMatch=false) -{ - decl String:entity_className[64]; - Entity_GetClassName(entity, entity_className, sizeof(entity_className)); - - if (partialMatch) { - return (StrContains(entity_className, className) != -1); - } - - return StrEqual(entity_className, className); -} - -/** - * Checks if an entity matches a name - * - * @param entity Entity Index. - * @param class Name String. - * @return True if the name matches, false otherwise. - */ -stock bool:Entity_NameMatches(entity, const String:name[]) -{ - decl String:entity_name[128]; - Entity_GetName(entity, entity_name, sizeof(entity_name)); - - return StrEqual(name, entity_name); -} - -/** - * Gets the Name of an entity. - * - * @param entity Entity index. - * @param buffer Return/Output buffer. - * @param size Max size of buffer. - * @return Number of non-null bytes written. - */ -stock Entity_GetName(entity, String:buffer[], size) -{ - return GetEntPropString(entity, Prop_Data, "m_iName", buffer, size); -} - -/** - * Sets the Name of an entity. - * - * @param entity Entity index. - * @param name The name you want to give. - * @return True on success, false otherwise. - */ -stock Entity_SetName(entity, const String:name[], any:...) -{ - decl String:format[128]; - VFormat(format, sizeof(format), name, 3); - - return DispatchKeyValue(entity, "targetname", format); -} - -/** - * Gets the Classname of an entity. - * This is like GetEdictClassname(), except it works for ALL - * entities, not just edicts. - * - * @param entity Entity index. - * @param buffer Return/Output buffer. - * @param size Max size of buffer. - * @return Number of non-null bytes written. - */ -stock Entity_GetClassName(entity, String:buffer[], size) -{ - return GetEntPropString(entity, Prop_Data, "m_iClassname", buffer, size); -} - -/** - * Sets the Classname of an entity. - * - * @param entity Entity index. - * @param name The name you want to give. - * @return True on success, false otherwise. - */ -stock Entity_SetClassName(entity, const String:className[]) -{ - return DispatchKeyValue(entity, "classname", className); -} - -/** - * Gets the Target name of an other entity - * - * @param entity Entity index. - * @param buffer Return/Output buffer. - * @param size Max size of buffer. - * @return Number of non-null bytes written. - */ -stock Entity_GetTargetName(entity, String:buffer[], size) -{ - return GetEntPropString(entity, Prop_Data, "m_target", buffer, size); -} - -/** - * Sets the Target name of an other Entity - * - * @param entity Entity index. - * @param name The target name you want to set - * @return True on success, false otherwise. - */ -stock Entity_SetTargetName(entity, const String:name[], any:...) -{ - decl String:format[128]; - VFormat(format, sizeof(format), name, 3); - - return DispatchKeyValue(entity, "target", format); -} - -/** - * Gets the Global Name of an entity. - * - * @param entity Entity index. - * @param buffer Return/Output buffer. - * @param size Max size of buffer. - * @return Number of non-null bytes written. - */ -stock Entity_GetGlobalName(entity, String:buffer[], size) -{ - return GetEntPropString(entity, Prop_Data, "m_iGlobalname", buffer, size); -} - -/** - * Sets the Global Name of an entity. - * - * @param entity Entity index. - * @param name The global name you want to set. - * @return True on success, false otherwise. - */ -stock Entity_SetGlobalName(entity, const String:name[], any:...) -{ - decl String:format[128]; - VFormat(format, sizeof(format), name, 3); - - return DispatchKeyValue(entity, "globalname", format); -} - -/** - * Gets the Parent name of an entity. - * - * @param entity Entity index. - * @param buffer Return/Output buffer. - * @param size Max size of buffer. - * @return Number of non-null bytes written. - */ -stock Entity_GetParentName(entity, String:buffer[], size) -{ - return GetEntPropString(entity, Prop_Data, "m_iParent", buffer, size); -} - -/** - * Sets the Parent name of an entity. - * - * @param entity Entity index. - * @param name The parent name you want to set. - * @return True on success, false otherwise. - */ -stock Entity_SetParentName(entity, const String:name[], any:...) -{ - decl String:format[128]; - VFormat(format, sizeof(format), name, 3); - - return DispatchKeyValue(entity, "parentname", format); -} - -/** - * Gets the Hammer-ID of an entity. - * The Hammer Editor gives every entity a unique ID. - * Note: Old maps don't have Hammer-ID's set for entities - * - * @param entity Entity index. - * @return Hammer ID. - */ -stock Entity_GetHammerId(entity) -{ - return GetEntProp(entity, Prop_Data, "m_iHammerID"); -} - -/** - * Gets the radius (m_flRadius) of an entity. - * - * @param entity Entity index. - * @return Radius - */ -stock Float:Entity_GetRadius(entity) -{ - return GetEntPropFloat(entity, Prop_Data, "m_flRadius"); -} - -/** - * Sets the radius (m_flRadius) of an entity. - * - * @param entity Entity index. - * @param radius Radius value - * @noreturn - */ -stock Entity_SetRadius(entity, Float:radius) -{ - SetEntPropFloat(entity, Prop_Data, "m_flRadius", radius); -} - -/** - * Gets the Mins of an entity. - * - * @param entity Entity index. - * @param vec Vector. - * @noreturn - */ -stock Entity_GetMinSize(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Send, "m_vecMins", vec); -} - -/** - * Sets the Mins of an entity. - * - * @param entity Entity index. - * @param vec Vector. - * @noreturn - */ -stock Entity_SetMinSize(entity, const Float:vecMins[3]) -{ - SetEntPropVector(entity, Prop_Send, "m_vecMins", vecMins); -} - -/** - * Gets the Mins of an entity. - * This functions isn't safe to use, use Entity_SetMinMaxSize() instead. - * - * @param entity Entity index - * @param vec return vector. - * @noreturn - */ -stock Entity_GetMaxSize(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Send, "m_vecMaxs", vec); -} - -/** - * Sets the Maxs of an entity. - * This functions isn't safe to use, use Entity_SetMinMaxSize() instead. - * - * @param entity Entity index. - * @param vec Vector. - * @noreturn - */ -stock Entity_SetMaxSize(entity, const Float:vecMaxs[3]) -{ - SetEntPropVector(entity, Prop_Send, "m_vecMaxs", vecMaxs); -} - -/** - * Sets the Min and Max Size of an entity. - * Code is taken from HL2SDK and rewritten for Sourcemod. - * - * @param entity Entity index. - * @param vecMins Min size Vector - * @param vecMaxs Max size Vector - * @noreturn - */ -stock Entity_SetMinMaxSize(entity, Float:vecMins[3], Float:vecMaxs[3]) -{ - // Taken from hl2sdk-ob-valve\game\server\util.cpp SetMinMaxSize() - // Todo: Replace this by a SDK call - for (new i=0; i<3; i++) { - - if (vecMins[i] > vecMaxs[i]) { - ThrowError("Error: mins[%d] > maxs[%d] of entity %d", i, i, EntRefToEntIndex(entity)); - } - } - - decl Float:m_vecMins[3], Float:m_vecMaxs[3]; - Entity_GetMinSize(entity, m_vecMins); - Entity_GetMaxSize(entity, m_vecMaxs); - - if (Math_VectorsEqual(m_vecMins, vecMins) && Math_VectorsEqual(m_vecMaxs, vecMaxs)) { - return; - } - - Entity_SetMinSize(entity, vecMins); - Entity_SetMaxSize(entity, vecMaxs); - - decl Float:vecSize[3]; - SubtractVectors(vecMaxs, vecMins, vecSize); - Entity_SetRadius(entity, GetVectorLength(vecSize) * 0.5); - - Entity_MarkSurrBoundsDirty(entity); -} - -/* - * Spawn Flags - * Many entities define their specific spawnflags, check the HL2SDK. - */ - -/* - * Phys prop spawnflags - * Taken from hl2sdk-ob-valve\game\shared\props_shared.h - */ -#define SF_PHYSPROP_START_ASLEEP 0x000001 -#define SF_PHYSPROP_DONT_TAKE_PHYSICS_DAMAGE 0x000002 // this prop can't be damaged by physics collisions -#define SF_PHYSPROP_DEBRIS 0x000004 -#define SF_PHYSPROP_MOTIONDISABLED 0x000008 // motion disabled at startup (flag only valid in spawn - motion can be enabled via input) -#define SF_PHYSPROP_TOUCH 0x000010 // can be 'crashed through' by running player (plate glass) -#define SF_PHYSPROP_PRESSURE 0x000020 // can be broken by a player standing on it -#define SF_PHYSPROP_ENABLE_ON_PHYSCANNON 0x000040 // enable motion only if the player grabs it with the physcannon -#define SF_PHYSPROP_NO_ROTORWASH_PUSH 0x000080 // The rotorwash doesn't push these -#define SF_PHYSPROP_ENABLE_PICKUP_OUTPUT 0x000100 // If set, allow the player to +USE this for the purposes of generating an output -#define SF_PHYSPROP_PREVENT_PICKUP 0x000200 // If set, prevent +USE/Physcannon pickup of this prop -#define SF_PHYSPROP_PREVENT_PLAYER_TOUCH_ENABLE 0x000400 // If set, the player will not cause the object to enable its motion when bumped into -#define SF_PHYSPROP_HAS_ATTACHED_RAGDOLLS 0x000800 // Need to remove attached ragdolls on enable motion/etc -#define SF_PHYSPROP_FORCE_TOUCH_TRIGGERS 0x001000 // Override normal debris behavior and respond to triggers anyway -#define SF_PHYSPROP_FORCE_SERVER_SIDE 0x002000 // Force multiplayer physics object to be serverside -#define SF_PHYSPROP_RADIUS_PICKUP 0x004000 // For Xbox, makes small objects easier to pick up by allowing them to be found -#define SF_PHYSPROP_ALWAYS_PICK_UP 0x100000 // Physcannon can always pick this up, no matter what mass or constraints may apply. -#define SF_PHYSPROP_NO_COLLISIONS 0x200000 // Don't enable collisions on spawn -#define SF_PHYSPROP_IS_GIB 0x400000 // Limit # of active gibs - -/* - * Physbox Spawnflags. Start at 0x01000 to avoid collision with CBreakable's - * Taken from hl2sdk-ob-valve\game\server\physobj.h - */ -#define SF_PHYSBOX_ASLEEP 0x01000 -#define SF_PHYSBOX_IGNOREUSE 0x02000 -#define SF_PHYSBOX_DEBRIS 0x04000 -#define SF_PHYSBOX_MOTIONDISABLED 0x08000 -#define SF_PHYSBOX_USEPREFERRED 0x10000 -#define SF_PHYSBOX_ENABLE_ON_PHYSCANNON 0x20000 -#define SF_PHYSBOX_NO_ROTORWASH_PUSH 0x40000 // The rotorwash doesn't push these -#define SF_PHYSBOX_ENABLE_PICKUP_OUTPUT 0x80000 -#define SF_PHYSBOX_ALWAYS_PICK_UP 0x100000 // Physcannon can always pick this up, no matter what mass or constraints may apply. -#define SF_PHYSBOX_NEVER_PICK_UP 0x200000 // Physcannon will never be able to pick this up. -#define SF_PHYSBOX_NEVER_PUNT 0x400000 // Physcannon will never be able to punt this object. -#define SF_PHYSBOX_PREVENT_PLAYER_TOUCH_ENABLE 0x800000 // If set, the player will not cause the object to enable its motion when bumped into - -/* - * Spawnflags for func breakable - * Taken from hl2sdk-ob-valve\game\server\func_break.h - */ -#define SF_BREAK_TRIGGER_ONLY 0x0001 // may only be broken by trigger -#define SF_BREAK_TOUCH 0x0002 // can be 'crashed through' by running player (plate glass) -#define SF_BREAK_PRESSURE 0x0004 // can be broken by a player standing on it -#define SF_BREAK_PHYSICS_BREAK_IMMEDIATELY 0x0200 // the first physics collision this breakable has will immediately break it -#define SF_BREAK_DONT_TAKE_PHYSICS_DAMAGE 0x0400 // this breakable doesn't take damage from physics collisions -#define SF_BREAK_NO_BULLET_PENETRATION 0x0800 // don't allow bullets to penetrate - -/* - * Spawnflags for func_pushable (it's also func_breakable, so don't collide with those flags) - * Taken from hl2sdk-ob-valve\game\server\func_break.h - */ -#define SF_PUSH_BREAKABLE 0x0080 -#define SF_PUSH_NO_USE 0x0100 // player cannot +use pickup this ent - -/** - * Gets the Spawnflags of an entity. - * - * @param entity Entity index. - * @return Spawnflags value - */ -stock Entity_GetSpawnFlags(entity) -{ - return GetEntProp(entity, Prop_Data, "m_spawnflags"); -} - -/** - * Sets the Spawnflags of an entity. - * - * @param entity Entity index. - * @param flags Flags value - * @noreturn - */ -stock Entity_SetSpawnFlags(entity, flags) -{ - SetEntProp(entity, Prop_Data, "m_spawnflags", flags); -} - -/** - * Adds Spawnflags to an entity. - * - * @param entity Entity index. - * @param flags Flags value - * @noreturn - */ -stock Entity_AddSpawnFlags(entity, flags) -{ - new spawnFlags = Entity_GetSpawnFlags(entity); - spawnFlags |= flags; - Entity_SetSpawnFlags(entity, spawnFlags); -} - -/** - * Removes Spawnflags from an entity. - * - * @param entity Entity index. - * @param flags Flags value - * @noreturn - */ -stock Entity_RemoveSpawnFlags(entity, flags) -{ - new spawnFlags = Entity_GetSpawnFlags(entity); - spawnFlags &= ~flags; - Entity_SetSpawnFlags(entity, spawnFlags); -} - -/** - * Clears all Spawnflags of an entity. - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_ClearSpawnFlags(entity) -{ - Entity_SetSpawnFlags(entity, 0); -} - -/** - * Returns whether the entity has specific Spawnflags. - * - * @param entity Entity index. - * @param flags Flags value. - * @return True if the entity has the spawnflags set, false otherwise. - */ -stock bool:Entity_HasSpawnFlags(entity, flags) -{ - return bool:(Entity_GetSpawnFlags(entity) & flags); -} - -/* - * Entity flags, CBaseEntity::m_iEFlags - * Taken from: hl2sdk-ob-valve\game\shared\shareddefs.h - */ -enum Entity_Flags -{ - EFL_KILLME = (1<<0), // This entity is marked for death -- This allows the game to actually delete ents at a safe time - EFL_DORMANT = (1<<1), // Entity is dormant, no updates to client - EFL_NOCLIP_ACTIVE = (1<<2), // Lets us know when the noclip command is active. - EFL_SETTING_UP_BONES = (1<<3), // Set while a model is setting up its bones. - EFL_KEEP_ON_RECREATE_ENTITIES = (1<<4), // This is a special entity that should not be deleted when we restart entities only - - EFL_HAS_PLAYER_CHILD= (1<<4), // One of the child entities is a player. - - EFL_DIRTY_SHADOWUPDATE = (1<<5), // Client only- need shadow manager to update the shadow... - EFL_NOTIFY = (1<<6), // Another entity is watching events on this entity (used by teleport) - - // The default behavior in ShouldTransmit is to not send an entity if it doesn't - // have a model. Certain entities want to be sent anyway because all the drawing logic - // is in the client DLL. They can set this flag and the engine will transmit them even - // if they don't have a model. - EFL_FORCE_CHECK_TRANSMIT = (1<<7), - - EFL_BOT_FROZEN = (1<<8), // This is set on bots that are frozen. - EFL_SERVER_ONLY = (1<<9), // Non-networked entity. - EFL_NO_AUTO_EDICT_ATTACH = (1<<10), // Don't attach the edict; we're doing it explicitly - - // Some dirty bits with respect to abs computations - EFL_DIRTY_ABSTRANSFORM = (1<<11), - EFL_DIRTY_ABSVELOCITY = (1<<12), - EFL_DIRTY_ABSANGVELOCITY = (1<<13), - EFL_DIRTY_SURR_COLLISION_BOUNDS = (1<<14), - EFL_DIRTY_SPATIAL_PARTITION = (1<<15), -// UNUSED = (1<<16), - - EFL_IN_SKYBOX = (1<<17), // This is set if the entity detects that it's in the skybox. - // This forces it to pass the "in PVS" for transmission. - EFL_USE_PARTITION_WHEN_NOT_SOL = (1<<18), // Entities with this flag set show up in the partition even when not solid - EFL_TOUCHING_FLUID = (1<<19), // Used to determine if an entity is floating - - // FIXME: Not really sure where I should add this... - EFL_IS_BEING_LIFTED_BY_BARNACLE = (1<<20), - EFL_NO_ROTORWASH_PUSH = (1<<21), // I shouldn't be pushed by the rotorwash - EFL_NO_THINK_FUNCTION = (1<<22), - EFL_NO_GAME_PHYSICS_SIMULATION = (1<<23), - - EFL_CHECK_UNTOUCH = (1<<24), - EFL_DONTBLOCKLOS = (1<<25), // I shouldn't block NPC line-of-sight - EFL_DONTWALKON = (1<<26), // NPC;s should not walk on this entity - EFL_NO_DISSOLVE = (1<<27), // These guys shouldn't dissolve - EFL_NO_MEGAPHYSCANNON_RAGDOLL = (1<<28), // Mega physcannon can't ragdoll these guys. - EFL_NO_WATER_VELOCITY_CHANGE = (1<<29), // Don't adjust this entity's velocity when transitioning into water - EFL_NO_PHYSCANNON_INTERACTION = (1<<30), // Physcannon can't pick these up or punt them - EFL_NO_DAMAGE_FORCES = (1<<31), // Doesn't accept forces from physics damage -}; - -/** - * Gets the Entity flags (m_iEFlags) of an entity. - * - * @param entity Entity index. - * @return Entity flags value - */ -stock Entity_Flags:Entity_GetEFlags(entity) -{ - return Entity_Flags:GetEntProp(entity, Prop_Data, "m_iEFlags"); -} - -/** - * Sets the entity's Entity flags (m_iEFlags). - * - * @param entity Entity index. - * @param flags Flags value - * @noreturn - */ -stock Entity_SetEFlags(entity, Entity_Flags:flags) -{ - SetEntProp(entity, Prop_Data, "m_iEFlags", flags); -} - -/** - * Adds Entity flags (m_iEFlags) to an entity. - * - * @param entity Entity index. - * @param flags Flags value - * @noreturn - */ -stock Entity_AddEFlags(entity, Entity_Flags:flags) -{ - new Entity_Flags:setFlags = Entity_GetEFlags(entity); - setFlags |= flags; - Entity_SetEFlags(entity, setFlags); -} - -/** - * Removes Entity flags (m_iEFlags) from an entity. - * - * @param entity Entity index. - * @param flags Flags value - * @noreturn - */ -stock Entity_RemoveEFlags(entity, Entity_Flags:flags) -{ - new Entity_Flags:setFlags = Entity_GetEFlags(entity); - setFlags &= ~flags; - Entity_SetEFlags(entity, setFlags); -} - -/** - * Checks if the entity has specific Entity flags (m_iEFlags) set. - * - * @param entity Entity index. - * @param flags Flags value - * @return True if the flags are set, false otherwise. - */ -stock bool:Entity_HasEFlags(entity, Entity_Flags:flags) -{ - new Entity_Flags:currentEFlags = Entity_GetEFlags(entity); - - return bool:(currentEFlags & flags); -} - -/** - * Marks the surrounding bounds of an entity as outdated. - * You normally call this when a collision setting has changed. - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_MarkSurrBoundsDirty(entity) -{ - Entity_AddEFlags(entity, EFL_DIRTY_SURR_COLLISION_BOUNDS); -} - -/* - * CBaseEntity::m_fFlags Functions - * Use the FL_ Defines (FL_ONGROUND, ...) or - * special entity specific flags. - * Note: The flag FL_AIMTARGET probably doesn't work as - * we have current no way of adding/removing it to the AimTarget List. - */ - -/** - * Gets the Flags of an entity. - * - * @param entity Entity Index. - * @return Entity Flags. - */ -stock Entity_GetFlags(entity) -{ - return GetEntProp(entity, Prop_Data, "m_fFlags"); -} - -/** - * Sets the Flags of an entity. - * - * @param entity Entity index. - * @param flags New Flags value - * @noreturn - */ -stock Entity_SetFlags(entity, flags) -{ - SetEntProp(entity, Prop_Data, "m_fFlags", flags); -} - -/** - * Adds Flags to the entity - * - * @param entity Entity index. - * @param flags Flags to add - * @noreturn - */ -stock Entity_AddFlags(entity, flags) -{ - new setFlags = Entity_GetFlags(entity); - setFlags |= flags; - Entity_SetFlags(entity, flags); -} - -/** - * Removes flags from the entity - * - * @param entity Entity index. - * @param flags Flags to remove - * @noreturn - */ -stock Entity_RemoveFlags(entity, flags) -{ - new setFlags = Entity_GetFlags(entity); - setFlags &= ~flags; - Entity_SetFlags(entity, setFlags); -} - -/** - * Toggles the specified flag on the entity. - * Adds the flag to the entity if it doesn't exists - * or removes it otherwise. - * - * @param entity Entity index. - * @param flags Flag to Toggle - * @noreturn - */ -stock Entity_ToggleFlag(entity, flag) -{ - new setFlag = Entity_GetFlags(entity); - setFlag ^= flag; - Entity_SetFlags(entity, setFlag); -} - -/** - * Removes all flags from the entity - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_ClearFlags(entity) -{ - Entity_SetFlags(entity, 0); -} - -/* edict->solid values - * NOTE: Some movetypes will cause collisions independent of SOLID_NOT/SOLID_TRIGGER when the entity moves - * SOLID only effects OTHER entities colliding with this one when they move - UGH! - * - * Solid type basically describes how the bounding volume of the object is represented - * NOTE: These numerical values are used in the FGD by the prop code (see prop_dynamic) - * Taken from: hl2sdk-ob-valve\public\const.h - */ - -enum SolidFlags_t -{ - FSOLID_CUSTOMRAYTEST = 0x0001, // Ignore solid type + always call into the entity for ray tests - FSOLID_CUSTOMBOXTEST = 0x0002, // Ignore solid type + always call into the entity for swept box tests - FSOLID_NOT_SOLID = 0x0004, // Are we currently not solid? - FSOLID_TRIGGER = 0x0008, // This is something may be collideable but fires touch functions - // even when it's not collideable (when the FSOLID_NOT_SOLID flag is set) - FSOLID_NOT_STANDABLE = 0x0010, // You can't stand on this - FSOLID_VOLUME_CONTENTS = 0x0020, // Contains volumetric contents (like water) - FSOLID_FORCE_WORLD_ALIGNED = 0x0040, // Forces the collision rep to be world-aligned even if it's SOLID_BSP or SOLID_VPHYSICS - FSOLID_USE_TRIGGER_BOUNDS = 0x0080, // Uses a special trigger bounds separate from the normal OBB - FSOLID_ROOT_PARENT_ALIGNED = 0x0100, // Collisions are defined in root parent's local coordinate space - FSOLID_TRIGGER_TOUCH_DEBRIS = 0x0200, // This trigger will touch debris objects - - FSOLID_MAX_BITS = 10 -}; - -/** - * Gets the solid flags of the entity - * - * @param entity Entity index. - * @return Solid Flags. - */ -stock SolidFlags_t:Entity_GetSolidFlags(entity) -{ - return SolidFlags_t:GetEntProp(entity, Prop_Data, "m_usSolidFlags", 2); -} - -/** - * Sets the solid flags of the entity - * - * @param entity Entity index. - * @param flags Solid Flags. - * @noreturn - */ -stock Entity_SetSolidFlags(entity, SolidFlags_t:flags) -{ - new SolidFlags_t:oldFlags = Entity_GetSolidFlags(entity); - flags = flags & SolidFlags_t:0xFFFF; - - if (oldFlags == flags) { - return; - } - - SetEntProp(entity, Prop_Data, "m_usSolidFlags", flags, 2); - - // These two flags, if changed, can produce different surrounding bounds - if ((oldFlags & (FSOLID_FORCE_WORLD_ALIGNED | FSOLID_USE_TRIGGER_BOUNDS)) != - (flags & (FSOLID_FORCE_WORLD_ALIGNED | FSOLID_USE_TRIGGER_BOUNDS))) - { - Entity_MarkSurrBoundsDirty(entity); - } -} - -/** - * Adds solid flags to the entity - * - * @param entity Entity index. - * @param flags Solid Flags. - * @noreturn - */ -stock Entity_AddSolidFlags(entity, SolidFlags_t:flags) -{ - new SolidFlags_t:newFlags = Entity_GetSolidFlags(entity); - newFlags |= flags; - Entity_SetSolidFlags(entity, newFlags); -} - -/** - * Removes solid flags from the entity. - * - * @param entity Entity index. - * @param flags Solid Flags. - * @noreturn - */ -stock Entity_RemoveSolidFlags(entity, SolidFlags_t:flags) -{ - new SolidFlags_t:newFlags = Entity_GetSolidFlags(entity); - newFlags &= ~flags; - Entity_SetSolidFlags(entity, newFlags); -} - -/** - * Removes all solid flags from the entity. - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_ClearSolidFlags(entity) -{ - Entity_SetSolidFlags(entity, SolidFlags_t:0); -} - -/** - * Checks whether certain solid flags are set on the entity. - * - * @param entity Entity index. - * @param flags Solid Flags. - * @return True if the specified flags are set, false otherwise. - */ -stock bool:Entity_SolidFlagsSet(entity, SolidFlags_t:flagMask) -{ - return bool:(Entity_GetSolidFlags(entity) & flagMask); -} - -enum SolidType_t -{ - SOLID_NONE = 0, // no solid model - SOLID_BSP = 1, // a BSP tree - SOLID_BBOX = 2, // an AABB - SOLID_OBB = 3, // an OBB (not implemented yet) - SOLID_OBB_YAW = 4, // an OBB, constrained so that it can only yaw - SOLID_CUSTOM = 5, // Always call into the entity for tests - SOLID_VPHYSICS = 6, // solid vphysics object, get vcollide from the model and collide with that - SOLID_LAST, -}; - -/** - * Gets the solidity type of the entity - * - * @param entity Entity index. - * @return Solid Type - */ -stock SolidType_t:Entity_GetSolidType(entity) -{ - return SolidType_t:GetEntProp(entity, Prop_Data, "m_nSolidType", 1); -} - -/** - * Sets the solidity type of the entity - * - * @param entity Entity index. - * @param Solid Type value. - * @noreturn - */ -stock Entity_SetSolidType(entity, SolidType_t:value) -{ - SetEntProp(entity, Prop_Send, "m_nSolidType", value, 1); - Entity_MarkSurrBoundsDirty(entity); -} - -/** - * Checks whether the entity is solid or not. - * - * @param entity Entity index. - * @return True if the entity is solid, false otherwise. - */ -stock bool:Entity_IsSolid(entity) -{ - return (Entity_GetSolidType(entity) != SOLID_NONE && - !Entity_SolidFlagsSet(entity, FSOLID_NOT_SOLID)); -} - -/** - * Retrieves the model path of a given entity. - * Returns "*num" for Brush entities. - * - * @param entity entity reference or index - * @param model buffer String for the model - * @param size max size of buffer string - * @return Number of non-null bytes written. - */ -stock Entity_GetModel(entity, String:buffer[], size) -{ - return GetEntPropString(entity, Prop_Data, "m_ModelName", buffer, size); -} - -/** - * Sets the model to a given entity. - * Be sure it has been precached. - * This is an alias for SetEntityModel() - * - * @param entity Entity index - * @param model Model name - * @noreturn - */ -stock Entity_SetModel(entity, const String:model[]) -{ - SetEntityModel(entity, model); -} - -/** - * Gets the entity's model index, if it has one set. - * - * @param entity Entity index. - * @return The Entity's model index - */ -stock Entity_GetModelIndex(entity) -{ - return GetEntProp(entity, Prop_Data, "m_nModelIndex", 2); -} - -/** - * Sets the entity's model index (must be precached) - * - * @param entity Entity index. - * @param index Model Index. - * @noreturn - */ -stock Entity_SetModelIndex(entity, index) -{ - SetEntProp(entity, Prop_Data, "m_nModelIndex", index, 2); -} - -/** -* Sets the entity's maxspeed to the given value (in units per second) -* -* @param entity Entity index -* @param maxspeed the maximum speed the entity can move -* @noreturn -*/ -stock Entity_SetMaxSpeed(entity, Float:value) -{ - SetEntPropFloat(entity, Prop_Data, "m_flMaxspeed", value); -} - -/* - * Collision groups - * Taken from hl2sdk-ob-valve/public/const.h - */ -enum Collision_Group_t -{ - COLLISION_GROUP_NONE = 0, - COLLISION_GROUP_DEBRIS, // Collides with nothing but world and static stuff - COLLISION_GROUP_DEBRIS_TRIGGER, // Same as debris, but hits triggers - COLLISION_GROUP_INTERACTIVE_DEB, // Collides with everything except other interactive debris or debris - COLLISION_GROUP_INTERACTIVE, // Collides with everything except interactive debris or debris - COLLISION_GROUP_PLAYER, - COLLISION_GROUP_BREAKABLE_GLASS, - COLLISION_GROUP_VEHICLE, - COLLISION_GROUP_PLAYER_MOVEMENT, // For HL2, same as Collision_Group_Player, for - // TF2, this filters out other players and CBaseObjects - COLLISION_GROUP_NPC, // Generic NPC group - COLLISION_GROUP_IN_VEHICLE, // for any entity inside a vehicle - COLLISION_GROUP_WEAPON, // for any weapons that need collision detection - COLLISION_GROUP_VEHICLE_CLIP, // vehicle clip brush to restrict vehicle movement - COLLISION_GROUP_PROJECTILE, // Projectiles! - COLLISION_GROUP_DOOR_BLOCKER, // Blocks entities not permitted to get near moving doors - COLLISION_GROUP_PASSABLE_DOOR, // Doors that the player shouldn't collide with - COLLISION_GROUP_DISSOLVING, // Things that are dissolving are in this group - COLLISION_GROUP_PUSHAWAY, // Nonsolid on client and server, pushaway in player code - - COLLISION_GROUP_NPC_ACTOR, // Used so NPCs in scripts ignore the player. - COLLISION_GROUP_NPC_SCRIPTED // USed for NPCs in scripts that should not collide with each other -}; - -/** - * Gets the collision group of an entity. - * - * @param entity entity index - * @return Entity collision group. - */ -stock Collision_Group_t:Entity_GetCollisionGroup(entity) -{ - return Collision_Group_t:GetEntProp(entity, Prop_Data, "m_CollisionGroup"); -} - -/** - * Sets the collision group of an entity. - * - * @param entity entity index - * @param value the new collision group. - * @noreturn - */ -stock Entity_SetCollisionGroup(entity, Collision_Group_t:value) -{ - SetEntProp(entity, Prop_Data, "m_CollisionGroup", value); -} - -/** - * Functions for getting / setting the origin (position) of an entity. - * Go to http://developer.valvesoftware.com/wiki/Origin - * if you want to learn more about origins - */ - -/** - * Gets the Absolute Origin (position) of an entity. - * - * @param entity Entity index. - * @param vec 3 dimensional vector array. - * @noreturn - */ -stock Entity_GetAbsOrigin(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Send, "m_vecOrigin", vec); -} - -/** - * Sets the Absolute Origin (position) of an entity. - * - * @param entity Entity index. - * @param vec 3 dimensional vector array. - * @noreturn - */ -stock Entity_SetAbsOrigin(entity, const Float:vec[3]) -{ - // We use TeleportEntity to set the origin more safely - // Todo: Replace this with a call to UTIL_SetOrigin() or CBaseEntity::SetLocalOrigin() - TeleportEntity(entity, vec, NULL_VECTOR, NULL_VECTOR); -} - -/** - * Functions for getting / setting the angles (rotation) of an entity. - * http://developer.valvesoftware.com/wiki/Angles - * if you want to learn more about angles - */ - -/** - * Gets the Angles of an entity - * - * @param entity Entity index. - * @param vec 3 dimensional vector array. - * @noreturn - */ -stock Entity_GetAbsAngles(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Data, "m_angAbsRotation", vec); -} - -/** - * Sets the Angles of an entity - * - * @param entity Entity index. - * @param vec 3 dimensional vector array. - * @noreturn - */ -stock Entity_SetAbsAngles(entity, const Float:vec[3]) -{ - // We use TeleportEntity to set the angles more safely - // Todo: Replace this with a call to CBaseEntity::SetLocalAngles() - TeleportEntity(entity, NULL_VECTOR, vec, NULL_VECTOR); -} - -/** - * Functions for getting / setting the velocity of an entity. - * Go to http://developer.valvesoftware.com/wiki/Velocity - * if you want to learn more about the different kind of velocities. - */ - -/** - * Gets the Local velocity of an entity. - * The local velocity is the velocity generated by the entity. - * - * @param entity Entity index. - * @param vel An 3 dim array - * @noreturn - */ -stock Entity_GetLocalVelocity(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Data, "m_vecVelocity", vec); -} - -/** - * Sets the Local velocity of an entity. - * The local velocity is the velocity generated by the entity. - * Only use this if you know what you are doing, - * the entity can overwrite this value on next frame. - * - * @param entity Entity index. - * @param vel An 3 dim array - * @noreturn - */ -stock Entity_SetLocalVelocity(entity, const Float:vec[3]) -{ - SetEntPropVector(entity, Prop_Data, "m_vecVelocity", vec); -} - -/** - * Gets the Base velocity of an entity. - * The base velocity is the velocity applied - * to the entity from other sources . - * - * @param entity Entity index. - * @param vel An 3 dim array - * @noreturn - */ -stock Entity_GetBaseVelocity(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Data, "m_vecBaseVelocity", vec); -} - -/** - * Sets the Base velocity of an entity. - * The base velocity is the velocity applied - * to the entity from other sources . - * - * @param entity Entity index. - * @param vel An 3 dim array - * @noreturn - */ -stock Entity_SetBaseVelocity(entity, const Float:vec[3]) -{ - SetEntPropVector(entity, Prop_Data, "m_vecBaseVelocity", vec); -} - -/** - * Gets the Absolute velocity of an entity. - * The absolute velocity is the sum of the local - * and base velocities. It's the actual value used to move. - * - * @param entity Entity index. - * @param vel An 3 dim array - * @noreturn - */ -stock Entity_GetAbsVelocity(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Data, "m_vecAbsVelocity", vec); -} - -/** - * Sets the Absolute velocity of an entity. - * The absolute velocity is the sum of the local - * and base velocities. It's the actual value used to move. - * - * @param entity Entity index. - * @param vel An 3 dim array - * @noreturn - */ -stock Entity_SetAbsVelocity(entity, const Float:vec[3]) -{ - // We use TeleportEntity to set the velocity more safely - // Todo: Replace this with a call to CBaseEntity::SetAbsVelocity() - TeleportEntity(entity, NULL_VECTOR, NULL_VECTOR, vec); -} - -/** - * Returns true if the entity is locked. - * - * @param entity Entity index. - * @return True if locked otherwise false. - */ -stock bool:Entity_IsLocked(entity) -{ - return bool:GetEntProp(entity, Prop_Data, "m_bLocked", 1); -} - -/** - * Locks an entity. - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_Lock(entity) -{ - SetEntProp(entity, Prop_Data, "m_bLocked", 1, 1); -} -/** - * Unlocks an entity. - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_UnLock(entity) -{ - SetEntProp(entity, Prop_Data, "m_bLocked", 0, 1); -} - -/** - * Gets the health of an entity. - * - * @param entity entity index. - * @return current health points - */ -stock Entity_GetHealth(entity) -{ - return GetEntProp(entity, Prop_Data, "m_iHealth"); -} - -/** - * Sets the health of an entity. - * - * @param entity entity index. - * @param value health to set (anything above 511 will overload) - * @noreturn - */ -stock Entity_SetHealth(entity, value, ignoreMax=false, kill=true) -{ - new health = value; - - if (!ignoreMax) { - new maxHealth = Entity_GetMaxHealth(entity); - - if (health > maxHealth) { - health = maxHealth; - } - } - - if (health < 0) { - health = 0; - } - - SetEntProp(entity, Prop_Data, "m_iHealth", health); - - if (health <= 0) { - Entity_Kill(entity); - } - - return health; -} - -/** - * Add health to an entity - * - * @param entity entity index - * @param value health to add - * @return returns the new health value set - */ -stock Entity_AddHealth(entity, value, ignoreMax=false, kill=true) -{ - new health = Entity_GetHealth(entity); - - health += value; - - return Entity_SetHealth(entity, health, ignoreMax, kill); -} - -/** - * Takes health from an entity - * - * @param entity entity index - * @param value health to add - * @return returns the new health value set - */ -stock Entity_TakeHealth(entity, value, ignoreMax=false, kill=true) -{ - new health = Entity_GetHealth(entity); - - health -= value; - - return Entity_SetHealth(entity, health, ignoreMax, kill); -} - -/** - * Get the max health of an entity - * - * @param entity Entity Index - * @return Max health points - */ -stock Entity_GetMaxHealth(entity) -{ - return GetEntProp(entity, Prop_Data, "m_iMaxHealth"); -} - - -/** - * Set the max health of an entity. - * - * @param entity Entity index - * @param value Max health to set (anything above 511 will overload) - * @noreturn - */ -stock Entity_SetMaxHealth(entity, value) -{ - SetEntProp(entity, Prop_Data, "m_iMaxHealth", value); - return value; -} - -/** - * Returns the Float distance between an entity - * and a vector origin. - * - * @param entity Entity Index. - * @param target Vector Origin. - * @return Distance Float value. - */ -stock Float:Entity_GetDistanceOrigin(entity, const Float:vec[3]) -{ - new Float:entityVec[3]; - Entity_GetAbsOrigin(entity, entityVec); - - return GetVectorDistance(entityVec, vec); -} - -/** - * Returns the Float distance between two entities. - * Both entities must be valid. - * - * @param entity Entity Index. - * @param target Target Entity Index. - * @return Distance Float value. - */ -stock Float:Entity_GetDistance(entity, target) -{ - new Float:targetVec[3]; - Entity_GetAbsOrigin(target, targetVec); - - return Entity_GetDistanceOrigin(entity, targetVec); -} - -/** - * Checks if the given 2 entitys are within a given range. - * - * @param entity Entity Index. - * @param target Target Entity Index. - * @param distance Max Float distance. - * @return True if the given entities are closer than the given distance value, false otherwise. - */ -stock bool:Entity_InRange(entity, target, Float:distance) -{ - if (Entity_GetDistance(entity, target) > distance) { - return false; - } - - return true; -} - -/** - * Enables the motion of an entity. - * - * @param entity Entity index. - * @return True on success, false otherwise - */ -stock bool:Entity_EnableMotion(entity) -{ - return AcceptEntityInput(entity, "enablemotion"); -} - -/** - * Disables the motion of an entity. - * - * @param entity Entity index. - * @return True on success, false otherwise - */ -stock bool:Entity_DisableMotion(entity) -{ - return AcceptEntityInput(entity, "disablemotion"); -} - -/** - * Freezes an entity by setting the FL_FROZEN flag. - * - * @param entity Entity index. - * @return True on success, false otherwise - */ -stock Entity_Freeze(entity) -{ - Entity_AddFlags(entity, FL_FROZEN); -} - -/** - * Unfreezes an entity by removing the FL_FROZEN flag. - * - * @param entity Entity index. - * @return True on success, false otherwise - */ -stock Entity_UnFreeze(entity) -{ - Entity_RemoveFlags(entity, FL_FROZEN); -} - - -/** - * This function points an entity to another with the targetname - * and name. Useful for allot of entities like trigger_teleport. - * If the name is not specified it will be generated automatically. - * - * @param entity Entity index. - * @param target Target entity index. - * @param Optional: target name - * @noreturn - */ -stock Entity_PointAtTarget(entity, target, const String:name[]="") -{ - decl String:targetName[128]; - Entity_GetTargetName(entity, targetName, sizeof(targetName)); - - if (name[0] == '\0') { - - if (targetName[0] == '\0') { - // Let's generate our own name - Format( - targetName, - sizeof(targetName), - "_smlib_Entity_PointAtTarget:%d", - target - ); - } - } - else { - strcopy(targetName, sizeof(targetName), name); - } - - Entity_SetTargetName(entity, targetName); - Entity_SetName(target, targetName); -} - -/** - * This function points a point_hurt entity to another damage target entity.. - * and name. Useful for allot of entities like trigger_teleport. - * If the name is not specified it will be generated automatically. - * - * @param entity Entity index. - * @param target Target entity index. - * @param Optional: target name - * @noreturn - */ -stock Entity_PointHurtAtTarget(entity, target, const String:name[]="") -{ - decl String:targetName[128]; - Entity_GetTargetName(entity, targetName, sizeof(targetName)); - - if (name[0] == '\0') { - - if (targetName[0] == '\0') { - // Let's generate our own name - Format( - targetName, - sizeof(targetName), - "_smlib_Entity_PointHurtAtTarget:%d", - target - ); - } - } - else { - strcopy(targetName, sizeof(targetName), name); - } - - DispatchKeyValue(entity, "DamageTarget", targetName); - Entity_SetName(target, targetName); -} - -/** - * Checks if an entity is a player or not. - * No checks are done if the entity is actually valid, - * the player is connected or ingame. - * - * @param entity Entity index. - * @return True if the entity is a player, false otherwise. - */ -stock bool:Entity_IsPlayer(entity) -{ - if (entity < 1 || entity > MaxClients) { - return false; - } - - return true; -} - -/** - * Creates an entity by classname. - * - * @param className Classname String. - * @param ForceEdictIndex Edict Index to use. - * @return Entity Index or INVALID_ENT_REFERENCE if the slot is already in use. - */ -stock Entity_Create(const String:className[], ForceEdictIndex=-1) -{ - if (ForceEdictIndex != -1 && Entity_IsValid(ForceEdictIndex)) { - return INVALID_ENT_REFERENCE; - } - - return CreateEntityByName(className, ForceEdictIndex); -} - -/** - * Kills an entity on the next frame (delayed). - * It is safe to use with entity loops. - * If the entity is is player ForcePlayerSuicide() is called. - * - * @param kenny Entity index. - * @param killChildren When true, kennys children are killed too. - * @return True on success, false otherwise. - */ -stock bool:Entity_Kill(kenny, killChildren=false) -{ - if (Entity_IsPlayer(kenny)) { - // Oh My God! They Killed Kenny!! - ForcePlayerSuicide(kenny); - return true; - } - - if(killChildren){ - return AcceptEntityInput(kenny, "KillHierarchy"); - } - else { - return AcceptEntityInput(kenny, "Kill"); - } -} - -/** - * Kills all entities with the given networked classname. - * It is safe to use with entity loops. - * If the entity is is player ForcePlayerSuicide() is called. - * - * @param className Entity Network Class to search for. - * @return Number of entities killed. - */ -stock Entity_KillAllByClassName(const String:className[]) -{ - new x = 0; - - new entity = INVALID_ENT_REFERENCE; - while ((entity = FindEntityByClassname(entity, className)) != INVALID_ENT_REFERENCE) { - AcceptEntityInput(entity, "kill"); - x++; - } - - return x; -} - -/** - * Gets the owner of an entity. - * For example the owner of a weapon entity. - * - * @param entity Entity index. - * @return Ground Entity or -1 - */ -stock Entity_GetOwner(entity) -{ - return GetEntPropEnt(entity, Prop_Data, "m_hOwnerEntity"); -} - -/** - * Sets the owner of an entity. - * For example the owner of a weapon entity. - * - * @param entity Entity index. - * @noreturn - */ -stock Entity_SetOwner(entity, newOwner) -{ - SetEntPropEnt(entity, Prop_Send, "m_hOwnerEntity", newOwner); -} - -/** - * Get's the ground entity this entity stands on. - * - * @param entity Entity index. - * @return Ground Entity or -1 - */ -stock Entity_GetGroundEntity(entity) -{ - return GetEntPropEnt(entity, Prop_Data, "m_hGroundEntity"); -} - -/* - * Damage definitions - */ - -#if !defined DMG_GENERIC - -#define DMG_GENERIC 0 // generic damage was done -#define DMG_CRUSH (1 << 0) // crushed by falling or moving object. - // NOTE: It's assumed crush damage is occurring as a result of physics collision, so no extra physics force is generated by crush damage. - // DON'T use DMG_CRUSH when damaging entities unless it's the result of a physics collision. You probably want DMG_CLUB instead. -#define DMG_BULLET (1 << 1) // shot -#define DMG_SLASH (1 << 2) // cut, clawed, stabbed -#define DMG_BURN (1 << 3) // heat burned -#define DMG_VEHICLE (1 << 4) // hit by a vehicle -#define DMG_FALL (1 << 5) // fell too far -#define DMG_BLAST (1 << 6) // explosive blast damage -#define DMG_CLUB (1 << 7) // crowbar, punch, headbutt -#define DMG_SHOCK (1 << 8) // electric shock -#define DMG_SONIC (1 << 9) // sound pulse shockwave -#define DMG_ENERGYBEAM (1 << 10) // laser or other high energy beam -#define DMG_PREVENT_PHYSICS_FORCE (1 << 11) // Prevent a physics force -#define DMG_NEVERGIB (1 << 12) // with this bit OR'd in, no damage type will be able to gib victims upon death -#define DMG_ALWAYSGIB (1 << 13) // with this bit OR'd in, any damage type can be made to gib victims upon death. -#define DMG_DROWN (1 << 14) // Drowning - - -#define DMG_PARALYZE (1 << 15) // slows affected creature down -#define DMG_NERVEGAS (1 << 16) // nerve toxins, very bad -#define DMG_POISON (1 << 17) // blood poisoning - heals over time like drowning damage -#define DMG_RADIATION (1 << 18) // radiation exposure -#define DMG_DROWNRECOVER (1 << 19) // drowning recovery -#define DMG_ACID (1 << 20) // toxic chemicals or acid burns -#define DMG_SLOWBURN (1 << 21) // in an oven - -#define DMG_REMOVENORAGDOLL (1<<22) // with this bit OR'd in, no ragdoll will be created, and the target will be quietly removed. - // use this to kill an entity that you've already got a server-side ragdoll for - -#define DMG_PHYSGUN (1<<23) // Hit by manipulator. Usually doesn't do any damage. -#define DMG_PLASMA (1<<24) // Shot by Cremator -#define DMG_AIRBOAT (1<<25) // Hit by the airboat's gun - -#define DMG_DISSOLVE (1<<26) // Dissolving! -#define DMG_BLAST_SURFACE (1<<27) // A blast on the surface of water that cannot harm things underwater -#define DMG_DIRECT (1<<28) -#define DMG_BUCKSHOT (1<<29) // not quite a bullet. Little, rounder, different. - -#endif - -/** - * Does damage to an entity. - * This is a powerful function that allows you to specify - * who the attacker is, the damage type and also what weapon - * should be displayed in the hud kill message. - * Note that for entities that fire another entity (RPG's, Crossbow's, - * you have to pass the bullet's class, not the weapon's class ! - * It hasn't been tested how expensive this function is, as it - * uses the entity point_hurt. - * If you need a cheaper function use Entity_RemoveHealth(). - * - * @param entity Entity index. - * @param damage Amount of damage. - * @param attacker Entity Index of the attacker. - * @param damageType Use the DMG_ definations. - * @param fakeClassName Classname to fake, you can set this if you - * want a specific weapon to be shown in the HUD kill message. - * @return True on success, false otherwise. - */ -stock bool:Entity_Hurt(entity, damage, attacker=0, damageType=DMG_GENERIC, const String:fakeClassName[]="") -{ - static point_hurt = INVALID_ENT_REFERENCE; - - if (point_hurt == INVALID_ENT_REFERENCE || !IsValidEntity(point_hurt)) { - point_hurt = EntIndexToEntRef(Entity_Create("point_hurt")); - - if (point_hurt == INVALID_ENT_REFERENCE) { - return false; - } - - DispatchSpawn(point_hurt); - } - - AcceptEntityInput(point_hurt, "TurnOn"); - SetEntProp(point_hurt, Prop_Data, "m_nDamage", damage); - SetEntProp(point_hurt, Prop_Data, "m_bitsDamageType", damageType); - Entity_PointHurtAtTarget(point_hurt, entity); - - if (fakeClassName[0] != '\0') { - Entity_SetClassName(point_hurt, fakeClassName); - } - - AcceptEntityInput(point_hurt, "Hurt", attacker); - AcceptEntityInput(point_hurt, "TurnOff"); - - if (fakeClassName[0] != '\0') { - Entity_SetClassName(point_hurt, "point_hurt"); - } - - return true; -} - -/* - * Gets the parent entity of an entity. - * - * @param entity Entity Index. - * @return Entity Index of the parent. - */ -stock Entity_GetParent(entity) -{ - return GetEntPropEnt(entity, Prop_Data, "m_pParent"); -} - -/* - * Clears the parent of an entity. - * - * @param entity Entity Index. - * @noreturn - */ -stock Entity_ClearParent(entity) -{ - SetVariantString(""); - AcceptEntityInput(entity, "ClearParent"); -} - -/* - * Sets the parent entity of an entity. - * - * @param entity Entity Index. - * @param parentEntity Entity Index of the new parent. - * @noreturn - */ -stock Entity_SetParent(entity, parent) -{ - SetVariantString("!activator"); - AcceptEntityInput(entity, "SetParent", parent); -} - - -/* - * Callback for Change_OverTime. - * Note that every parameter is a reference and can be changed during this callback. - * You can get the elapsed time since start by multiply tick with currentCall. - * - * @param entity Entity Index. - * @param interval The current interval from the current game time to execute the next call of this function. - * @param currentCall The current call number (0 is the 1st call at 0.0 seconds, 1 the 2nd call at tick*1 seconds, ...). - * @return When true this callback will be called again at the next defined tick, otherwise it won't. - */ -typedef Entity_ChangeOverTimeCallback = function Action (int entity, float interval, int currentCall); //functag Entity_ChangeOverTimeCallback bool:public(&entity, &Float:interval, ¤tCall); - -/* - * Creates a timer and provides a callback to change various things about an entity over time. - * - * @param entity Entity Index. - * @param interval Interval from the current game time to execute the given function. - * @noreturn - */ -stock Entity_ChangeOverTime(entity, Float:interval=0.1, Entity_ChangeOverTimeCallback:valueCallback) -{ - new Handle:dataPack = CreateDataPack(); - WritePackCell(dataPack, EntIndexToEntRef(entity)); - WritePackFloat(dataPack, interval); - WritePackCell(dataPack, 0); -#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 7 - WritePackFunction(dataPack, valueCallback); -#else - WritePackCell(dataPack, _:valueCallback); -#endif - ResetPack(dataPack); - __smlib_Timer_ChangeOverTime(INVALID_HANDLE,dataPack); -} - -public Action:__smlib_Timer_ChangeOverTime(Handle:Timer, Handle:dataPack) -{ - new entity = EntRefToEntIndex(ReadPackCell(dataPack)); - if(!Entity_IsValid(entity)){ - return Plugin_Stop; - } - - new Float:interval = ReadPackFloat(dataPack); - new currentCall = ReadPackCell(dataPack); -#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 7 - new Function:callback = ReadPackFunction(dataPack); -#else - new Function:callback = Function:ReadPackCell(dataPack); -#endif - - new any:result; - Call_StartFunction(INVALID_HANDLE, callback); - Call_PushCellRef(entity); - Call_PushFloatRef(interval); - Call_PushCellRef(currentCall); - Call_Finish(result); - - if(result == false){ - return Plugin_Stop; - } - - ResetPack(dataPack,true); - WritePackCell(dataPack, EntIndexToEntRef(entity)); - WritePackFloat(dataPack, interval); - WritePackCell(dataPack, currentCall+1); -#if SOURCEMOD_V_MAJOR >= 1 && SOURCEMOD_V_MINOR >= 7 - WritePackFunction(dataPack, callback); -#else - WritePackCell(dataPack, _:callback); -#endif - ResetPack(dataPack); - CreateTimer(interval,__smlib_Timer_ChangeOverTime,dataPack); - return Plugin_Stop; -} - - -/** - * Gets the next child, entity is parent of. - * - * @param client Entity Index (of Parent) - * @param start Start Index. - * @return Entity Index or -1 if no entity was found. - */ -stock Entity_GetNextChild(parent, start=0) -{ - for (new entity=start; entity <= 2048; entity++) { - - if (!Entity_IsValid(entity)) { - continue; - } - - if (entity > 0 && entity <= MaxClients && !IsClientConnected(entity)) { - continue; - } - - if (Entity_GetParent(entity) == parent) { - return entity; - } - } - - return INVALID_ENT_REFERENCE; -} -/** - * Gets the move/open direction of an entity (only available for func_door*, prop_door* and func_movelinear). - * Ex: if vec[2] is 1.0 a func_door moves straight up. - * - * @param entity Entity index. - * @param vec Vector. - * @noreturn - */ -stock Entity_GetMoveDirection(entity, Float:vec[3]) -{ - GetEntPropVector(entity, Prop_Data, "m_vecMoveDir", vec); -} -/** - * Sets the move/open direction of an entity (only available for func_door*, prop_door* and func_movelinear). - * Ex: if vec[2] is 1.0 a func_door moves straight up. - * - * @param entity Entity index. - * @param vec Vector. - * @noreturn - */ -stock Entity_SetMoveDirection(entity, const Float:vec[3]) -{ - SetEntPropVector(entity, Prop_Data, "m_vecMoveDir", vec); -} - -/** - * Returns if the entity will force close (won't be blockable by players and/or objects) or not when triggered to move. - * - * @param entity Entity index. - * @return True if the door will force close, otherwise false. - */ -stock bool:Entity_GetForceClose(entity) -{ - return bool:GetEntProp(entity, Prop_Data, "m_bForceClosed"); -} - -/** - * Sets if the door should force close (souldn't be blockable by players and/or objects) or not when triggered to move. - * - * @param entity Entity index. - * @param forceClose If true the door will force close, otherwise it won't. - * @noreturn - */ -stock Entity_SetForceClose(entity, bool:forceClose) -{ - SetEntProp(entity, Prop_Data, "m_bForceClosed", forceClose); -} - -/** - * Gets the speed of a moving entity (like doors: open close speed). - * - * @param entity Entity index. - * @return Speed of the entity. - */ -stock Float:Entity_GetSpeed(entity) -{ - return GetEntPropFloat(entity, Prop_Data, "m_flSpeed"); -} - -/** - * Sets how fast an entity moves (like doors: open close speed). - * - * @param entity Entity index. - * @param speed The new speed of the entity. - * @noreturn - */ -stock Entity_SetSpeed(entity, Float:speed) -{ - SetEntPropFloat(entity, Prop_Data, "m_flSpeed", speed); -} - -/** - * Gets the damage of a moving entity when blocked (like doors when open or close and players and/or objects are between the entity and something else). - * Note: Negative values add health to the blocking entity. - * - * @param entity Entity index. - * @return Damage. - */ -stock Float:Entity_GetBlockDamage(entity) -{ - return GetEntPropFloat(entity, Prop_Data, "m_flBlockDamage"); -} - -/** - * Sets the damage of a moving entity when blocked (like doors when open or close and players and/or objects are between the entity and something else). - * Note: Negative values add health to the blocking entity. - * - * @param entity Entity index. - * @param damage Damage. - * @noreturn - */ -stock Entity_SetBlockDamage(entity, Float:damage) -{ - SetEntPropFloat(entity, Prop_Data, "m_flBlockDamage", damage); -} - -/** - * Returns if the given entity is disabled or not. - * - * @param entity Entity index. - * @return True if entity is disabled, otherwise false. - */ -stock bool:Entity_IsDisabled(entity) -{ - return bool:GetEntProp(entity, Prop_Data, "m_bDisabled", 1); -} - -/** - * Disables the given entity. - * - * @param entity Entity index. - * @return True if successful otherwise false. - */ -stock Entity_Disable(entity) -{ - return AcceptEntityInput(entity, "Disable"); -} - -/** - * Enables the given entity. - * - * @param entity Entity index. - * @return True if successful otherwise false. - */ -stock Entity_Enable(entity) -{ - return AcceptEntityInput(entity, "Enable"); -} - - -// settings for m_takedamage taken from hl2sdk-ob-valve\game\shared\shareddefs.h -#define DAMAGE_NO 0 -#define DAMAGE_EVENTS_ONLY 1 // Call damage functions, but don't modify health -#define DAMAGE_YES 2 -#define DAMAGE_AIM 3 - -/** - * Sets the mode for an entity to take damage. - * Note: This is used to give a client god mode (DAMAGE_NO). - * - * @param entity Entity index. - * @param value Mode, use DAMAGE_* defines. - * @noreturn - */ -stock Entity_SetTakeDamage(entity, value) -{ - SetEntProp(entity, Prop_Data, "m_takedamage", value, 1); -} - -/** - * Gets the mode for an entity to take damage. - * Note: When the return value is DAMAGE_NO then the client is using godmode. - * - * @param entity Entity index. - * @return Take damage mode (DAMAGE_*). - */ -stock Entity_GetTakeDamage(entity) -{ - return GetEntProp(entity, Prop_Data, "m_takedamage", 1); -} - -/** - * Sets the minimum of damage required to hurt this entity. - * Example: This is used to block any damage done by projectile weapons against a gun ship in Half-Life 2. - * - * @param entity Entity index. - * @param minDamage Minimum required damage. - * @noreturn - */ -stock Entity_SetMinHealthDamage(entity, minDamage) -{ - SetEntProp(entity, Prop_Data, "m_iMinHealthDmg", minDamage); -} - -/** - * Gets the minimum of damage required to hurt this entity. - * Example: This is used to block any damage done by projectile weapons against a gun ship in Half-Life 2. - * - * @param entity Entity index. - * @return Minimum required damage. - */ -stock Entity_GetMinHealthDamage(entity) -{ - return GetEntProp(entity, Prop_Data, "m_iMinHealthDmg"); -} - -/** - * Gets an entity's color. - * - * @param entity Entity index - * @param color 4 dimensional array where [r,g,b,a] values are stored - * @noreturn - * @error Invalid entity index, or lack of mod compliance. - */ -stock Entity_GetRenderColor(entity, color[4]) -{ - static bool:gotconfig = false; - static String:prop[32]; - - if (!gotconfig) { - new Handle:gc = LoadGameConfigFile("core.games"); - new bool:exists = GameConfGetKeyValue(gc, "m_clrRender", prop, sizeof(prop)); - CloseHandle(gc); - - if (!exists) { - strcopy(prop, sizeof(prop), "m_clrRender"); - } - - gotconfig = true; - } - - new offset = GetEntSendPropOffs(entity, prop); - - if (offset <= 0) { - ThrowError("SetEntityRenderColor not supported by this mod"); - } - - for (new i=0; i < 4; i++) { - color[i] = GetEntData(entity, offset + i + 1, 1); - } -} - -/** - * Sets an entity's color. - * Doesn't change the value, if set to -1. - * - * @param entity Entity index - * @param r Amount of red (0-255) - * @param g Amount of green (0-255) - * @param b Amount of blue (0-255) - * @param a Amount of alpha (0-255) - * @noreturn - * @error Invalid entity index, or lack of mod compliance. - */ -stock Entity_SetRenderColor(entity, r=-1, g=-1, b=-1, a=-1) -{ - static bool:gotconfig = false; - static String:prop[32]; - - if (!gotconfig) { - new Handle:gc = LoadGameConfigFile("core.games"); - new bool:exists = GameConfGetKeyValue(gc, "m_clrRender", prop, sizeof(prop)); - CloseHandle(gc); - - if (!exists) { - strcopy(prop, sizeof(prop), "m_clrRender"); - } - - gotconfig = true; - } - - new offset = GetEntSendPropOffs(entity, prop); - - if (offset <= 0) { - ThrowError("SetEntityRenderColor not supported by this mod"); - } - - if(r != -1) { - SetEntData(entity, offset, r, 1, true); - } - - if(g != -1) { - SetEntData(entity, offset + 1, g, 1, true); - } - - if(b != -1) { - SetEntData(entity, offset + 2, b, 1, true); - } - - if(a != -1) { - SetEntData(entity, offset + 3, a, 1, true); - } -} - -/** - * Sends the 'addouput' command to an entity. - * - * @param entity Entity Index. - * @param input Input command. - * @param activator Entity index which initiated the sequence of actions (-1 for a NULL entity). - * @param caller Entity index from which this event is sent (-1 for a NULL entity). - * @param outputid Unknown. - * @return True if successful, otherwise false. - */ -stock bool:Entity_AddOutput(entity, const String:input[], activator=-1, caller=-1, outputid=0) -{ - SetVariantString(input); - return AcceptEntityInput(entity, "addoutput", activator, caller, outputid); -} diff --git a/scripting/1.10/include/smlib/files.inc b/scripting/1.10/include/smlib/files.inc deleted file mode 100644 index 2f56ca0..0000000 --- a/scripting/1.10/include/smlib/files.inc +++ /dev/null @@ -1,458 +0,0 @@ -#if defined _smlib_files_included - #endinput -#endif -#define _smlib_files_included - -#include -#include -#include - -/** - * Gets the Base name of a path. - * Examples: - * blub.txt -> "blub.txt" - * /sourcemod/extensions/example.ext.so -> "example.ext.so" - * - * @param path File path - * @param buffer String buffer array - * @param size Size of string buffer - * @noreturn - */ -stock bool:File_GetBaseName(const String:path[], String:buffer[], size) -{ - if (path[0] == '\0') { - buffer[0] = '\0'; - return; - } - - new pos_start = FindCharInString(path, '/', true); - - if (pos_start == -1) { - pos_start = FindCharInString(path, '\\', true); - } - - pos_start++; - - strcopy(buffer, size, path[pos_start]); -} - -/** - * Gets the Directory of a path (without the file name). - * Does not work with "." as the path. - * Examples: - * blub.txt -> "blub.txt" - * /sourcemod/extensions/example.ext.so -> "example.ext.so" - * - * @param path File path - * @param buffer String buffer array - * @param size Size of string buffer - * @noreturn - */ -stock bool:File_GetDirName(const String:path[], String:buffer[], size) -{ - if (path[0] == '\0') { - buffer[0] = '\0'; - return; - } - - new pos_start = FindCharInString(path, '/', true); - - if (pos_start == -1) { - pos_start = FindCharInString(path, '\\', true); - - if (pos_start == -1) { - buffer[0] = '\0'; - return; - } - } - - strcopy(buffer, size, path); - buffer[pos_start] = '\0'; -} - -/** - * Gets the File name of a path. - * blub.txt -> "blub" - * /sourcemod/extensions/example.ext.so -> "example.ext" - * - * @param path File path - * @param buffer String buffer array - * @param size Size of string buffer - * @noreturn - */ -stock bool:File_GetFileName(const String:path[], String:buffer[], size) -{ - if (path[0] == '\0') { - buffer[0] = '\0'; - return; - } - - File_GetBaseName(path, buffer, size); - - new pos_ext = FindCharInString(buffer, '.', true); - - if (pos_ext != -1) { - buffer[pos_ext] = '\0'; - } -} - -/** - * Gets the Extension of a file. - * Examples: - * blub.inc.txt -> "txt" - * /sourcemod/extensions/example.ext.so -> "so" - * - * @param path Path String - * @param buffer String buffer array - * @param size Max length of string buffer - * @noreturn - */ -stock File_GetExtension(const String:path[], String:buffer[], size) -{ - new extpos = FindCharInString(path, '.', true); - - if (extpos == -1) { - buffer[0] = '\0'; - return; - } - - strcopy(buffer, size, path[++extpos]); -} - -/** - * Adds a path to the downloadables network string table. - * This can be a file or directory and also works recursed. - * You can optionally specify file extensions that should be ignored. - * Bz2 and ztmp are automatically ignored. - * It only adds files that actually exist. - * You can also specify a wildcard * after the ., very useful for models. - * This forces a client to download the file if they do not already have it. - * - * @param path Path String - * @param recursive Whether to do recursion or not. - * @param ignoreExts Optional: 2 dimensional String array.You can define it like this: new String:ignore[][] = { ".ext1", ".ext2" }; - * @param size This should be set to the number of file extensions in the ignoreExts array (sizeof(ignore) for the example above) - * @noreturn - */ - -// Damn you SourcePawn :( I didn't want to -new String:_smlib_empty_twodimstring_array[][] = { { '\0' } }; -stock File_AddToDownloadsTable(const String:path[], bool:recursive=true, const String:ignoreExts[][]=_smlib_empty_twodimstring_array, size=0) -{ - if (path[0] == '\0') { - return; - } - - if (FileExists(path)) { - - new String:fileExtension[5]; - File_GetExtension(path, fileExtension, sizeof(fileExtension)); - - if (StrEqual(fileExtension, "bz2", false) || StrEqual(fileExtension, "ztmp", false)) { - return; - } - - if (Array_FindString(ignoreExts, size, fileExtension) != -1) { - return; - } - - decl String:path_new[PLATFORM_MAX_PATH]; - strcopy(path_new, sizeof(path_new), path); - ReplaceString(path_new, sizeof(path_new), "//", "/"); - - AddFileToDownloadsTable(path_new); - } - else if (recursive && DirExists(path)) { - - decl String:dirEntry[PLATFORM_MAX_PATH]; - new Handle:__dir = OpenDirectory(path); - - while (ReadDirEntry(__dir, dirEntry, sizeof(dirEntry))) { - - if (StrEqual(dirEntry, ".") || StrEqual(dirEntry, "..")) { - continue; - } - - Format(dirEntry, sizeof(dirEntry), "%s/%s", path, dirEntry); - File_AddToDownloadsTable(dirEntry, recursive, ignoreExts, size); - } - - CloseHandle(__dir); - } - else if (FindCharInString(path, '*', true)) { - - new String:fileExtension[4]; - File_GetExtension(path, fileExtension, sizeof(fileExtension)); - - if (StrEqual(fileExtension, "*")) { - - decl - String:dirName[PLATFORM_MAX_PATH], - String:fileName[PLATFORM_MAX_PATH], - String:dirEntry[PLATFORM_MAX_PATH]; - - File_GetDirName(path, dirName, sizeof(dirName)); - File_GetFileName(path, fileName, sizeof(fileName)); - StrCat(fileName, sizeof(fileName), "."); - - new Handle:__dir = OpenDirectory(dirName); - while (ReadDirEntry(__dir, dirEntry, sizeof(dirEntry))) { - - if (StrEqual(dirEntry, ".") || StrEqual(dirEntry, "..")) { - continue; - } - - if (strncmp(dirEntry, fileName, strlen(fileName)) == 0) { - Format(dirEntry, sizeof(dirEntry), "%s/%s", dirName, dirEntry); - File_AddToDownloadsTable(dirEntry, recursive, ignoreExts, size); - } - } - - CloseHandle(__dir); - } - } - - return; -} - - -/* - * Adds all files/paths in the given text file to the download table. - * Recursive mode enabled, see File_AddToDownloadsTable() - * Comments are allowed ! Supported comment types are ; // # - * - * @param path Path to the .txt file. - * @noreturn - */ -stock File_ReadDownloadList(const String:path[]) -{ - new Handle:file = OpenFile(path, "r"); - - if (file == INVALID_HANDLE) { - return; - } - - new String:buffer[PLATFORM_MAX_PATH]; - while (!IsEndOfFile(file)) { - ReadFileLine(file, buffer, sizeof(buffer)); - - new pos; - pos = StrContains(buffer, "//"); - if (pos != -1) { - buffer[pos] = '\0'; - } - - pos = StrContains(buffer, "#"); - if (pos != -1) { - buffer[pos] = '\0'; - } - - pos = StrContains(buffer, ";"); - if (pos != -1) { - buffer[pos] = '\0'; - } - - TrimString(buffer); - - if (buffer[0] == '\0') { - continue; - } - - File_AddToDownloadsTable(buffer); - } - - CloseHandle(file); -} - -/* - * Attempts to load a translation file and optionally unloads the plugin if the file - * doesn't exist (also prints an error message). - * - * @param file Filename of the translations file (eg. .phrases). - * @param setFailState If true, it sets the failstate if the translations file doesn't exist - * @return True on success, false otherwise (only if setFailState is set to false) - */ -stock File_LoadTranslations(const String:file[], setFailState=true) -{ - decl String:path[PLATFORM_MAX_PATH]; - - BuildPath(Path_SM, path, sizeof(path), "translations/%s", file); - - if (FileExists(path)) { - LoadTranslations(file); - return true; - } - - Format(path,sizeof(path), "%s.txt", path); - - if (!FileExists(path)) { - - if (setFailState) { - SetFailState("Unable to locate translation file (%s).", path); - } - - return false; - } - - LoadTranslations(file); - - return true; -} - -/* - * Reads the contents of a given file into a string buffer in binary mode. - * - * @param path Path to the file - * @param buffer String buffer - * @param size If -1, reads until a null terminator is encountered in the file. Otherwise, read_count bytes are read into the buffer provided. In this case the buffer is not explicitly null terminated, and the buffer will contain any null terminators read from the file. - * @return Number of characters written to the buffer, or -1 if an error was encountered. - */ -stock File_ToString(const String:path[], String:buffer[], size) -{ - new Handle:file = OpenFile(path, "rb"); - - if (file == INVALID_HANDLE) { - buffer[0] = '\0'; - return -1; - } - - new num_bytes_written = ReadFileString(file, buffer, size); - CloseHandle(file); - - return num_bytes_written; -} - -/* - * Writes a string into a file in binary mode. - * - * @param file Path to the file - * @param str String to write - * @return True on success, false otherwise - */ -stock bool:File_StringToFile(const String:path[], String:str[]) -{ - new Handle:file = OpenFile(path, "wb"); - - if (file == INVALID_HANDLE) { - return false; - } - - new bool:success = WriteFileString(file, str, false); - CloseHandle(file); - - return success; -} - -/* - * Copies file source to destination - * Based on code of javalia: - * http://forums.alliedmods.net/showthread.php?t=159895 - * - * @param source Input file - * @param destination Output file - */ -stock bool:File_Copy(const String:source[], const String:destination[]) -{ - new Handle:file_source = OpenFile(source, "rb"); - - if (file_source == INVALID_HANDLE) { - return false; - } - - new Handle:file_destination = OpenFile(destination, "wb"); - - if (file_destination == INVALID_HANDLE) { - CloseHandle(file_source); - return false; - } - - new buffer[32]; - new cache; - - while (!IsEndOfFile(file_source)) { - cache = ReadFile(file_source, buffer, 32, 1); - WriteFile(file_destination, buffer, cache, 1); - } - - CloseHandle(file_source); - CloseHandle(file_destination); - - return true; -} - -/* - * Recursively copies (the content) of a directory or file specified - * by "path" to "destination". - * Note that because of Sourcemod API limitations this currently does not - * takeover the file permissions (it leaves them default). - * Links will be resolved. - * - * @param path Source path - * @param destination Destination directory (This can only be a directory) - * @param stop_on_error Optional: Set to true to stop on error (ie can't read a file) - * @param dirMode Optional: File mode for directories that will be created (Default = 0755), don't forget to convert FROM octal - */ -stock bool:File_CopyRecursive(const String:path[], const String:destination[], bool:stop_on_error=false, dirMode=493) -{ - if (FileExists(path)) { - return File_Copy(path, destination); - } - else if (DirExists(path)) { - return Sub_File_CopyRecursive(path, destination, stop_on_error, FileType_Directory, dirMode); - } - else { - return false; - } -} - -static stock bool:Sub_File_CopyRecursive(const String:path[], const String:destination[], bool:stop_on_error=false, FileType:fileType, dirMode) -{ - if (fileType == FileType_File) { - return File_Copy(path, destination); - } - else if (fileType == FileType_Directory) { - - if (!CreateDirectory(destination, dirMode) && stop_on_error) { - return false; - } - - new Handle:directory = OpenDirectory(path); - - if (directory == INVALID_HANDLE) { - return false; - } - - decl - String:source_buffer[PLATFORM_MAX_PATH], - String:destination_buffer[PLATFORM_MAX_PATH]; - new FileType:type; - - while (ReadDirEntry(directory, source_buffer, sizeof(source_buffer), type)) { - - if (StrEqual(source_buffer, "..") || StrEqual(source_buffer, ".")) { - continue; - } - - Format(destination_buffer, sizeof(destination_buffer), "%s/%s", destination, source_buffer); - Format(source_buffer, sizeof(source_buffer), "%s/%s", path, source_buffer); - - if (type == FileType_File) { - File_Copy(source_buffer, destination_buffer); - } - else if (type == FileType_Directory) { - - if (!File_CopyRecursive(source_buffer, destination_buffer, stop_on_error, dirMode) && stop_on_error) { - CloseHandle(directory); - return false; - } - } - } - - CloseHandle(directory); - } - else if (fileType == FileType_Unknown) { - return false; - } - - return true; -} diff --git a/scripting/1.10/include/smlib/game.inc b/scripting/1.10/include/smlib/game.inc deleted file mode 100644 index 771f780..0000000 --- a/scripting/1.10/include/smlib/game.inc +++ /dev/null @@ -1,58 +0,0 @@ -#if defined _smlib_game_included - #endinput -#endif -#define _smlib_game_included - -#include -#include -#include - -/* - * End's the game and displays the scoreboard with intermission time. - * - * @noparam - * @return True on success, false otherwise - */ -stock bool:Game_End() -{ - new game_end = FindEntityByClassname(-1, "game_end"); - - if (game_end == -1) { - game_end = CreateEntityByName("game_end"); - - if (game_end == -1) { - ThrowError("Unable to find or create entity \"game_end\""); - } - } - - return AcceptEntityInput(game_end, "EndGame"); -} - -/* - * End's the current round, allows specifying the winning - * team and more. - * This function currently works in TF2 only (it uses the game_round_win entity). - * - * @param team The winning Team, pass 0 for Sudden Death mode (no winning team) - * @param forceMapReset If to force the map to reset during the force respawn after the round is over. - * @param switchTeams If to switch the teams when the game is going to be reset. - * @return True on success, false otherwise - */ -stock bool:Game_EndRound(team=0, bool:forceMapReset=false, bool:switchTeams=false) -{ - new game_round_win = FindEntityByClassname(-1, "game_round_win"); - - if (game_round_win == -1) { - game_round_win = CreateEntityByName("game_round_win"); - - if (game_round_win == -1) { - ThrowError("Unable to find or create entity \"game_round_win\""); - } - } - - DispatchKeyValue(game_round_win, "TeamNum" , (team ? "true" : "false")); - DispatchKeyValue(game_round_win, "force_map_reset" , (forceMapReset? "true" : "false")); - DispatchKeyValue(game_round_win, "switch_teams" , (switchTeams ? "true" : "false")); - - return AcceptEntityInput(game_round_win, "RoundWin"); -} diff --git a/scripting/1.10/include/smlib/general.inc b/scripting/1.10/include/smlib/general.inc deleted file mode 100644 index ef061b6..0000000 --- a/scripting/1.10/include/smlib/general.inc +++ /dev/null @@ -1,251 +0,0 @@ -#if defined _smlib_general_included - #endinput -#endif -#define _smlib_general_included - -#include -#include -#include - -#define TIME_TO_TICKS(%1) ( (int)( 0.5 + (float)(%1) / GetTickInterval() ) ) -#define TICKS_TO_TIME(%1) ( GetTickInterval() * %1 ) -#define ROUND_TO_TICKS(%1) ( TICK_INTERVAL * TIME_TO_TICKS( %1 ) ) - -/* - * Precaches the given model. - * It's best to call this OnMapStart(). - * - * @param material Path of the material to precache. - * @return Returns the material index, INVALID_STRING_INDEX on error. - */ -stock PrecacheMaterial(const String:material[]) -{ - static materialNames = INVALID_STRING_TABLE; - - if (materialNames == INVALID_STRING_TABLE) { - if ((materialNames = FindStringTable("Materials")) == INVALID_STRING_TABLE) { - return INVALID_STRING_INDEX; - } - } - - new index = FindStringIndex2(materialNames, material); - if (index == INVALID_STRING_INDEX) { - new numStrings = GetStringTableNumStrings(materialNames); - if (numStrings >= GetStringTableMaxStrings(materialNames)) { - return INVALID_STRING_INDEX; - } - - AddToStringTable(materialNames, material); - index = numStrings; - } - - return index; -} - -/* - * Checks if the material is precached. - * - * @param material Path of the material. - * @return True if it is precached, false otherwise. - */ -stock bool:IsMaterialPrecached(const String:material[]) -{ - static materialNames = INVALID_STRING_TABLE; - - if (materialNames == INVALID_STRING_TABLE) { - if ((materialNames = FindStringTable("Materials")) == INVALID_STRING_TABLE) { - return false; - } - } - - return (FindStringIndex2(materialNames, material) != INVALID_STRING_INDEX); -} - -/* - * Precaches the given particle system. - * It's best to call this OnMapStart(). - * Code based on Rochellecrab's, thanks. - * - * @param particleSystem Name of the particle system to precache. - * @return Returns the particle system index, INVALID_STRING_INDEX on error. - */ -stock PrecacheParticleSystem(const String:particleSystem[]) -{ - static particleEffectNames = INVALID_STRING_TABLE; - - if (particleEffectNames == INVALID_STRING_TABLE) { - if ((particleEffectNames = FindStringTable("ParticleEffectNames")) == INVALID_STRING_TABLE) { - return INVALID_STRING_INDEX; - } - } - - new index = FindStringIndex2(particleEffectNames, particleSystem); - if (index == INVALID_STRING_INDEX) { - new numStrings = GetStringTableNumStrings(particleEffectNames); - if (numStrings >= GetStringTableMaxStrings(particleEffectNames)) { - return INVALID_STRING_INDEX; - } - - AddToStringTable(particleEffectNames, particleSystem); - index = numStrings; - } - - return index; -} - -/* - * Checks if the particle system is precached. - * - * @param material Name of the particle system - * @return True if it is precached, false otherwise. - */ -stock bool:IsParticleSystemPrecached(const String:particleSystem[]) -{ - static particleEffectNames = INVALID_STRING_TABLE; - - if (particleEffectNames == INVALID_STRING_TABLE) { - if ((particleEffectNames = FindStringTable("ParticleEffectNames")) == INVALID_STRING_TABLE) { - return false; - } - } - - return (FindStringIndex2(particleEffectNames, particleSystem) != INVALID_STRING_INDEX); -} - -/* - * Searches for the index of a given string in a string table. - * - * @param table String table name. - * @param str String to find. - * @return String index if found, INVALID_STRING_INDEX otherwise. - */ -stock FindStringIndexByTableName(const String:table[], const String:str[]) -{ - new tableIndex = INVALID_STRING_TABLE; - if ((tableIndex = FindStringTable("ParticleEffectNames")) == INVALID_STRING_TABLE) { - return INVALID_STRING_INDEX; - } - - return FindStringIndex2(tableIndex, str); -} - -/* - * Rewrite of FindStringIndex, because in my tests - * FindStringIndex failed to work correctly. - * Searches for the index of a given string in a string table. - * - * @param tableidx A string table index. - * @param str String to find. - * @return String index if found, INVALID_STRING_INDEX otherwise. - */ -stock FindStringIndex2(tableidx, const String:str[]) -{ - decl String:buf[1024]; - - new numStrings = GetStringTableNumStrings(tableidx); - for (new i=0; i < numStrings; i++) { - ReadStringTable(tableidx, i, buf, sizeof(buf)); - - if (StrEqual(buf, str)) { - return i; - } - } - - return INVALID_STRING_INDEX; -} - -/* - * Converts a long IP to a dotted format String. - * - * @param ip IP Long - * @param buffer String Buffer (size = 16) - * @param size String Buffer size - * @noreturn - */ -stock LongToIP(ip, String:buffer[], size) -{ - Format( - buffer, size, - "%d.%d.%d.%d", - (ip >> 24) & 0xFF, - (ip >> 16) & 0xFF, - (ip >> 8 ) & 0xFF, - ip & 0xFF - ); -} - -/* - * Converts a dotted format String IP to a long. - * - * @param ip IP String - * @return Long IP - */ -stock IPToLong(const String:ip[]) -{ - decl String:pieces[4][4]; - - if (ExplodeString(ip, ".", pieces, sizeof(pieces), sizeof(pieces[])) != 4) { - return 0; - } - - return ( - StringToInt(pieces[0]) << 24 | - StringToInt(pieces[1]) << 16 | - StringToInt(pieces[2]) << 8 | - StringToInt(pieces[3]) - ); -} - -static localIPRanges[] = -{ - 10 << 24, // 10. - 127 << 24 | 1 , // 127.0.0.1 - 127 << 24 | 16 << 16, // 127.16. - 192 << 24 | 168 << 16, // 192.168. -}; - -/* - * Checks whether an IP is a private/internal IP - * - * @param ip IP Long - * @return True if the IP is local, false otherwise. - */ -stock bool:IsIPLocal(ip) -{ - new range, bits, move, bool:matches; - - for (new i=0; i < sizeof(localIPRanges); i++) { - - range = localIPRanges[i]; - matches = true; - - for (new j=0; j < 4; j++) { - move = j * 8; - bits = (range >> move) & 0xFF; - - if (bits && bits != ((ip >> move) & 0xFF)) { - matches = false; - } - } - - if (matches) { - return true; - } - } - - return false; -} - -/* - * Closes the given hindle and sets it to INVALID_HANDLE. - * - * @param handle handle - * @noreturn - */ -stock ClearHandle(&Handle:handle) -{ - if (handle != INVALID_HANDLE) { - CloseHandle(handle); - handle = INVALID_HANDLE; - } -} diff --git a/scripting/1.10/include/smlib/math.inc b/scripting/1.10/include/smlib/math.inc deleted file mode 100644 index 8acca98..0000000 --- a/scripting/1.10/include/smlib/math.inc +++ /dev/null @@ -1,344 +0,0 @@ -#if defined _smlib_math_included - #endinput -#endif -#define _smlib_math_included - -#include - -#define SIZE_OF_INT 2147483647 // without 0 -#define INT_MAX_DIGITS 10 - -#define GAMEUNITS_TO_METERS 0.01905 -#define METERS_TO_GAMEUNITS 52.49343832020997 -#define METERS_TO_FEET 3.2808399 -#define FEET_TO_METERS 0.3048 -#define KILOMETERS_TO_MILES 0.62137 - -enum VecAngle -{ - ANG_ALPHA, - ANG_BETA, - ANG_GAMMA -} - -/** - * Makes a negative integer number to a positive integer number. - * This is faster than Sourcemod's native FloatAbs() for integers. - * Use FloatAbs() for Float numbers. - * - * @param number A number that can be positive or negative. - * @return Positive number. - */ -stock Math_Abs(value) -{ - return (value ^ (value >> 31)) - (value >> 31); -} - -/** - * Checks if 2 vectors are equal. - * You can specfiy a tolerance, which is the maximum distance at which vectors are considered equals - * - * @param vec1 First vector (3 dim array) - * @param vec2 Second vector (3 dim array) - * @param tolerance If you want to check that those vectors are somewhat even. 0.0 means they are 100% even if this function returns true. - * @return True if vectors are equal, false otherwise. - */ -stock bool:Math_VectorsEqual(Float:vec1[3], Float:vec2[3], Float:tolerance=0.0) -{ - new Float:distance = GetVectorDistance(vec1, vec2, true); - - return distance <= (tolerance * tolerance); -} - -/** - * Sets the given value to min - * if the value is smaller than the given. - * - * @param value Value - * @param min Min Value used as lower border - * @return Correct value not lower than min - */ -stock any:Math_Min(any:value, any:min) -{ - if (value < min) { - value = min; - } - - return value; -} - -/** - * Sets the given value to max - * if the value is greater than the given. - * - * @param value Value - * @param max Max Value used as upper border - * @return Correct value not upper than max - */ -stock any:Math_Max(any:value, any:max) -{ - if (value > max) { - value = max; - } - - return value; -} - -/** - * Makes sure a value is within a certain range and - * returns the value. - * If the value is outside the range it is set to either - * min or max, if it is inside the range it will just return - * the specified value. - * - * @param value Value - * @param min Min value used as lower border - * @param max Max value used as upper border - * @return Correct value not lower than min and not greater than max. - */ -stock any:Math_Clamp(any:value, any:min, any:max) -{ - value = Math_Min(value, min); - value = Math_Max(value, max); - - return value; -} - -/* - * Checks if the value is within the given bounds (min & max). - * - * @param value The value you want to check. - * @param min The lower border. - * @param max The upper border. - * @return True if the value is within bounds (bigger or equal min / smaller or equal max), false otherwise. - */ -stock bool:Math_IsInBounds(any:value, any:min, any:max) -{ - if (value < min || value > max) { - return false; - } - - return true; -} - -/** - * Let's the specified value "overflow" if it is outside the given limit. - * This is like with integers when it reaches a value above the max possible - * integer size. - * - * @param value Value - * @param min Min value used as lower border - * @param max Max value used as upper border - * @return Overflowed number - */ -stock any:Math_Overflow(any:value, any:min, any:max) -{ - return (value % max) + min; -} - -/** - * Returns a random, uniform Integer number in the specified (inclusive) range. - * This is safe to use multiple times in a function. - * The seed is set automatically for each plugin. - * Rewritten by MatthiasVance, thanks. - * - * @param min Min value used as lower border - * @param max Max value used as upper border - * @return Random Integer number between min and max - */ -stock Math_GetRandomInt(min, max) -{ - new random = GetURandomInt(); - - if (random == 0) { - random++; - } - - return RoundToCeil(float(random) / (float(SIZE_OF_INT) / float(max - min + 1))) + min - 1; -} - -/** - * Returns a random, uniform Float number in the specified (inclusive) range. - * This is safe to use multiple times in a function. - * The seed is set automatically for each plugin. - * - * @param min Min value used as lower border - * @param max Max value used as upper border - * @return Random Float number between min and max - */ -stock Float:Math_GetRandomFloat(Float:min, Float:max) -{ - return (GetURandomFloat() * (max - min)) + min; -} - -/** - * Gets the percentage of amount in all as Integer where - * amount and all are numbers and amount usually - * is a subset of all. - * - * @param value Integer value - * @param all Integer value - * @return An Integer value between 0 and 100 (inclusive). - */ -stock Math_GetPercentage(value, all) { - return RoundToNearest((float(value) / float(all)) * 100.0); -} - -/** - * Gets the percentage of amount in all as Float where - * amount and all are numbers and amount usually - * is a subset of all. - * - * @param value Float value - * @param all Float value - * @return A Float value between 0.0 and 100.0 (inclusive). - */ -stock Float:Math_GetPercentageFloat(Float:value, Float:all) { - return (value / all) * 100.0; -} - -/* - * Moves the start vector on a direct line to the end vector by the given scale. - * Note: If scale is 0.0 the output will be the same as the start vector and if scale is 1.0 the output vector will be the same as the end vector. - * Exmaple usage: Move an entity to another entity but only 12 units: Vector_MoveVector(entity1Origin,entity2Origin,(12.0 / GetVectorDistance(entity1Origin,entity2Origin)),newEntity1Origin); now only teleport your entity to newEntity1Origin. - * - * @param start The start vector where the imagined line starts. - * @param end The end vector where the imagined line ends. - * @param scale The position on the line 0.0 is the start 1.0 is the end. - * @param output Output vector - * @noreturn - */ -stock Math_MoveVector(const Float:start[3], const Float:end[3], Float:scale, Float:output[3]) -{ - SubtractVectors(end,start,output); - ScaleVector(output,scale); - AddVectors(start,output,output); -} - -/** - * Puts x, y and z into a vector. - * - * @param x Float value. - * @param y Float value. - * @param z Float value. - * @param result Output vector. - * @noreturn - */ -stock Math_MakeVector(const Float:x, const Float:y, const Float:z, Float:result[3]) -{ - result[0] = x; - result[1] = y; - result[2] = z; -} - -/** - * Rotates a vector around its zero-point. - * Note: As example you can rotate mins and maxs of an entity and then add its origin to mins and maxs to get its bounding box in relation to the world and its rotation. - * When used with players use the following angle input: - * angles[0] = 0.0; - * angles[1] = 0.0; - * angles[2] = playerEyeAngles[1]; - * - * @param vec Vector to rotate. - * @param angles How to rotate the vector. - * @param result Output vector. - * @noreturn - */ -stock Math_RotateVector(const Float:vec[3], const Float:angles[3], Float:result[3]) -{ - // First the angle/radiant calculations - decl Float:rad[3]; - // I don't really know why, but the alpha, beta, gamma order of the angles are messed up... - // 2 = xAxis - // 0 = yAxis - // 1 = zAxis - rad[0] = DegToRad(angles[2]); - rad[1] = DegToRad(angles[0]); - rad[2] = DegToRad(angles[1]); - - // Pre-calc function calls - new Float:cosAlpha = Cosine(rad[0]); - new Float:sinAlpha = Sine(rad[0]); - new Float:cosBeta = Cosine(rad[1]); - new Float:sinBeta = Sine(rad[1]); - new Float:cosGamma = Cosine(rad[2]); - new Float:sinGamma = Sine(rad[2]); - - // 3D rotation matrix for more information: http://en.wikipedia.org/wiki/Rotation_matrix#In_three_dimensions - new Float:x = vec[0], Float:y = vec[1], Float:z = vec[2]; - new Float:newX, Float:newY, Float:newZ; - newY = cosAlpha*y - sinAlpha*z; - newZ = cosAlpha*z + sinAlpha*y; - y = newY; - z = newZ; - - newX = cosBeta*x + sinBeta*z; - newZ = cosBeta*z - sinBeta*x; - x = newX; - z = newZ; - - newX = cosGamma*x - sinGamma*y; - newY = cosGamma*y + sinGamma*x; - x = newX; - y = newY; - - // Store everything... - result[0] = x; - result[1] = y; - result[2] = z; -} - -/** - * Converts Source Game Units to metric Meters - * - * @param units Float value - * @return Meters as Float value. - */ -stock Float:Math_UnitsToMeters(Float:units) -{ - return (units * GAMEUNITS_TO_METERS); -} - -/** - * Converts Source Game Units to Meters - * - * @param units Float value - * @return Feet as Float value. - */ -stock Float:Math_UnitsToFeet(Float:units) -{ - return (Math_UnitsToMeters(units) * METERS_TO_FEET); -} - -/** - * Converts Source Game Units to Centimeters - * - * @param units Float value - * @return Centimeters as Float value. - */ -stock Float:Math_UnitsToCentimeters(Float:units) -{ - return (Math_UnitsToMeters(units) * 100.0); -} - -/** - * Converts Source Game Units to Kilometers - * - * @param units Float value - * @return Kilometers as Float value. - */ -stock Float:Math_UnitsToKilometers(Float:units) -{ - return (Math_UnitsToMeters(units) / 1000.0); -} - -/** - * Converts Source Game Units to Miles - * - * @param units Float value - * @return Miles as Float value. - */ -stock Float:Math_UnitsToMiles(Float:units) -{ - return (Math_UnitsToKilometers(units) * KILOMETERS_TO_MILES); -} diff --git a/scripting/1.10/include/smlib/menus.inc b/scripting/1.10/include/smlib/menus.inc deleted file mode 100644 index c0c825d..0000000 --- a/scripting/1.10/include/smlib/menus.inc +++ /dev/null @@ -1,38 +0,0 @@ -#if defined _smlib_menus_included - #endinput -#endif -#define _smlib_menus_included - -#include -#include - -/** - * Adds an option to a menu with a String display but an integer - * identifying the option. - * - * @param menu Handle to the menu - * @param value Integer value for the option - * @param display Display text for the menu - * @noreturn - */ -stock Menu_AddIntItem(Handle:menu, any:value, String:display[]) -{ - decl String:buffer[INT_MAX_DIGITS + 1]; - IntToString(value, buffer, sizeof(buffer)); - AddMenuItem(menu, buffer, display); -} - -/** - * Retrieves an integer-value choice from a menu, where the - * menu's information strings were created as integers. - * - * @param menu Handle to the menu - * @param param2 The item position selected from the menu. - * @return Integer choice from the menu, or 0 if the integer could not be parsed. - */ -stock any:Menu_GetIntItem(Handle:menu, any:param2) -{ - decl String:buffer[INT_MAX_DIGITS + 1]; - GetMenuItem(menu, param2, buffer, sizeof(buffer)); - return StringToInt(buffer); -} diff --git a/scripting/1.10/include/smlib/server.inc b/scripting/1.10/include/smlib/server.inc deleted file mode 100644 index cb439e2..0000000 --- a/scripting/1.10/include/smlib/server.inc +++ /dev/null @@ -1,135 +0,0 @@ -#if defined _smlib_server_included - #endinput -#endif -#define _smlib_server_included - -#include -#include - -/* - * Gets the server's public/external (default) or - * private/local (usually server's behind a NAT) IP. - * If your server is behind a NAT Router, you need the SteamTools - * extension available at http://forums.alliedmods.net/showthread.php?t=129763 - * to get the public IP. has to be included BEFORE . - * If the server is not behind NAT, the public IP is the same as the private IP. - * - * @param public Set to true to retrieve the server's public/external IP, false otherwise. - * @return Long IP or 0 if the IP couldn't be retrieved. - */ -stock Server_GetIP(bool:public_=true) -{ - new ip = 0; - - static Handle:cvHostip = INVALID_HANDLE; - - if (cvHostip == INVALID_HANDLE) { - cvHostip = FindConVar("hostip"); - MarkNativeAsOptional("Steam_GetPublicIP"); - } - - if (cvHostip != INVALID_HANDLE) { - ip = GetConVarInt(cvHostip); - } - - if (ip != 0 && IsIPLocal(ip) == public_) { - ip = 0; - } - -#if defined _steamtools_included - if (ip == 0) { - if (CanTestFeatures() && GetFeatureStatus(FeatureType_Native, "Steam_GetPublicIP") == FeatureStatus_Available) { - decl octets[4]; - Steam_GetPublicIP(octets); - - ip = - octets[0] << 24 | - octets[1] << 16 | - octets[2] << 8 | - octets[3]; - - if (IsIPLocal(ip) == public_) { - ip = 0; - } - } - } -#endif - - return ip; -} - -/* - * Gets the server's public/external (default) or - * private/local (usually server's behind a NAT) as IP String in dotted format. - * If your server is behind a NAT Router, you need the SteamTools - * extension available at http://forums.alliedmods.net/showthread.php?t=129763 - * to get the public IP. has to be included BEFORE . - * If the public IP couldn't be found, an empty String is returned. - * If the server is not behind NAT, the public IP is the same as the private IP. - * - * @param buffer String buffer (size=16) - * @param size String buffer size. - * @param public Set to true to retrieve the server's public/external IP, false otherwise. - * @return True on success, false otherwise. - */ -stock bool:Server_GetIPString(String:buffer[], size, bool:public_=true) -{ - new ip; - - if ((ip = Server_GetIP(public_)) == 0) { - buffer[0] = '\0'; - return false; - } - - LongToIP(ip, buffer, size); - - return true; -} - -/* - * Gets the server's local port. - * - * @noparam - * @return The server's port, 0 if there is no port. - */ -stock Server_GetPort() -{ - static Handle:cvHostport = INVALID_HANDLE; - - if (cvHostport == INVALID_HANDLE) { - cvHostport = FindConVar("hostport"); - } - - if (cvHostport == INVALID_HANDLE) { - return 0; - } - - new port = GetConVarInt(cvHostport); - - return port; -} - -/* - * Gets the server's hostname - * - * @param hostname String buffer - * @param size String buffer size - * @return True on success, false otherwise. - */ -stock bool:Server_GetHostName(String:buffer[], size) -{ - static Handle:cvHostname = INVALID_HANDLE; - - if (cvHostname == INVALID_HANDLE) { - cvHostname = FindConVar("hostname"); - } - - if (cvHostname == INVALID_HANDLE) { - buffer[0] = '\0'; - return false; - } - - GetConVarString(cvHostname, buffer, size); - - return true; -} diff --git a/scripting/1.10/include/smlib/sql.inc b/scripting/1.10/include/smlib/sql.inc deleted file mode 100644 index 1a4f1f1..0000000 --- a/scripting/1.10/include/smlib/sql.inc +++ /dev/null @@ -1,108 +0,0 @@ -#if defined _smlib_sql_included - #endinput -#endif -#define _smlib_sql_included - -#include -#include - -/** - * Executes a threaded SQL Query (See: SQL_TQuery) - * This function supports the printf Syntax. - * - * - * @param database A database Handle. - * @param callback Callback; database is in "owner" and the query Handle is passed in "hndl". - * @param data Extra data value to pass to the callback. - * @param format Query string, printf syntax supported - * @param priority Priority queue to use - * @param ... Variable number of format parameters. - * @noreturn - */ -stock SQL_TQueryF(Handle:database, SQLTCallback:callback, any:data, DBPriority:priority=DBPrio_Normal, const String:format[], any:...) { - - if (database == INVALID_HANDLE) { - ThrowError("[SMLIB] Error: Invalid database handle."); - return; - } - - decl String:query[16384]; - VFormat(query, sizeof(query), format, 6); - - SQL_TQuery(database, callback, query, data, priority); -} - -/** - * Fetches an integer from a field in the current row of a result set (See: SQL_FetchInt) - * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param result Optional variable to store the status of the return value. - * @return An integer value. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. - */ -stock SQL_FetchIntByName(Handle:query, String:fieldName[], &DBResult:result=DBVal_Error) { - - new fieldNum; - SQL_FieldNameToNum(query, fieldName, fieldNum); - - return SQL_FetchInt(query, fieldNum, result); -} - -/** - * Fetches a bool from a field in the current row of a result set (See: SQL_FetchInt) - * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param result Optional variable to store the status of the return value. - * @return A bool value. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. - */ -stock bool:SQL_FetchBoolByName(Handle:query, String:fieldName[], &DBResult:result=DBVal_Error) { - - return bool:SQL_FetchIntByName(query, fieldName, result); -} - -/** - * Fetches a float from a field in the current row of a result set. (See: SQL_FetchFloat) - * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param result Optional variable to store the status of the return value. - * @return A float value. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. - */ -stock Float:SQL_FetchFloatByName(Handle:query, String:fieldName[], &DBResult:result=DBVal_Error) { - - new fieldNum; - SQL_FieldNameToNum(query, fieldName, fieldNum); - - return SQL_FetchFloat(query, fieldNum, result); -} - -/** - * Fetches a string from a field in the current row of a result set. (See: SQL_FetchString) - * - * @param query A query (or statement) Handle. - * @param field The field index (starting from 0). - * @param buffer String buffer. - * @param maxlength Maximum size of the string buffer. - * @param result Optional variable to store the status of the return value. - * @return Number of bytes written. - * @error Invalid query Handle or field index, invalid - * type conversion requested from the database, - * or no current result set. - */ -stock SQL_FetchStringByName(Handle:query, String:fieldName[], String:buffer[], maxlength, &DBResult:result=DBVal_Error) { - - new fieldNum; - SQL_FieldNameToNum(query, fieldName, fieldNum); - - return SQL_FetchString(query, fieldNum, buffer, maxlength, result); -} diff --git a/scripting/1.10/include/smlib/strings.inc b/scripting/1.10/include/smlib/strings.inc deleted file mode 100644 index 96657f9..0000000 --- a/scripting/1.10/include/smlib/strings.inc +++ /dev/null @@ -1,233 +0,0 @@ -#if defined _smlib_strings_included - #endinput -#endif -#define _smlib_strings_included - -#include -#include - -/** - * Checks if the string is numeric. - * This correctly handles + - . in the String. - * - * @param str String to check. - * @return True if the String is numeric, false otherwise.. - */ -stock bool:String_IsNumeric(const String:str[]) -{ - new x=0; - new dotsFound=0; - new numbersFound=0; - - if (str[x] == '+' || str[x] == '-') { - x++; - } - - while (str[x] != '\0') { - - if (IsCharNumeric(str[x])) { - numbersFound++; - } - else if (str[x] == '.') { - dotsFound++; - - if (dotsFound > 1) { - return false; - } - } - else { - return false; - } - - x++; - } - - if (!numbersFound) { - return false; - } - - return true; -} - -/** - * Trims a string by removing the specified chars from beginning and ending. - * Removes all ' ', '\t', '\r', '\n' characters by default. - * The Output String can be the same as the Input String. - * - * @param str Input String. - * @param output Output String (Can be the as the input). - * @param size Size of the output String. - * @param chars Characters to remove. - * @noreturn - */ -stock String_Trim(const String:str[], String:output[], size, const String:chrs[]=" \t\r\n") -{ - new x=0; - while (str[x] != '\0' && FindCharInString(chrs, str[x]) != -1) { - x++; - } - - x = strcopy(output, size, str[x]); - x--; - - while (x >= 0 && FindCharInString(chrs, output[x]) != -1) { - x--; - } - - output[++x] = '\0'; -} - -/** - * Removes a list of strings from a string. - * - * @param buffer Input/Ourput buffer. - * @param removeList A list of strings which should be removed from buffer. - * @param size Number of Strings in the List. - * @param caseSensitive If true, comparison is case sensitive. If false (default), comparison is case insensitive. - * @noreturn - */ -stock String_RemoveList(String:buffer[], String:removeList[][], size, bool:caseSensitive=false) -{ - for (new i=0; i < size; i++) { - ReplaceString(buffer, SIZE_OF_INT, removeList[i], "", caseSensitive); - } -} - -/** - * Converts the whole String to lower case. - * Only works with alphabetical characters (not ÖÄÜ) because Sourcemod suxx ! - * The Output String can be the same as the Input String. - * - * @param input Input String. - * @param output Output String. - * @param size Max Size of the Output string - * @noreturn - */ -stock String_ToLower(const String:input[], String:output[], size) -{ - size--; - - new x=0; - while (input[x] != '\0' && x < size) { - - output[x] = CharToLower(input[x]); - - x++; - } - - output[x] = '\0'; -} - -/** - * Converts the whole String to upper case. - * Only works with alphabetical characters (not öäü) because Sourcemod suxx ! - * The Output String can be the same as the Input String. - * - * @param input Input String. - * @param output Output String. - * @param size Max Size of the Output string - * @noreturn - */ -stock String_ToUpper(const String:input[], String:output[], size) -{ - size--; - - new x=0; - while (input[x] != '\0' && x < size) { - - output[x] = CharToUpper(input[x]); - - x++; - } - - output[x] = '\0'; -} - -/** - * Generates a random string. - * - * - * @param buffer String Buffer. - * @param size String Buffer size (must be length+1) - * @param length Number of characters being generated. - * @param chrs String for specifying the characters used for random character generation. - * By default it will use all letters of the alphabet (upper and lower) and all numbers. - * If you pass an empty String, it will use all readable ASCII characters (33 - 126) - * @noreturn - */ -stock String_GetRandom(String:buffer[], size, length=32, const String:chrs[]="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234556789") -{ - new random, len; - size--; - - if (chrs[0] != '\0') { - len = strlen(chrs) - 1; - } - - new n = 0; - while (n < length && n < size) { - - if (chrs[0] == '\0') { - random = Math_GetRandomInt(33, 126); - buffer[n] = random; - } - else { - random = Math_GetRandomInt(0, len); - buffer[n] = chrs[random]; - } - - n++; - } - - buffer[length] = '\0'; -} - -/** - * Checks if string str starts with subString. - * - * - * @param str String to check - * @param subString Sub-String to check in str - * @return True if str starts with subString, false otherwise. - */ -stock bool:String_StartsWith(const String:str[], const String:subString[]) -{ - new n = 0; - while (subString[n] != '\0') { - - if (str[n] == '\0' || str[n] != subString[n]) { - return false; - } - - n++; - } - - return true; -} - -/** - * Checks if string str ends with subString. - * - * - * @param str String to check - * @param subString Sub-String to check in str - * @return True if str ends with subString, false otherwise. - */ -stock bool:String_EndsWith(const String:str[], const String:subString[]) -{ - new n_str = strlen(str) - 1; - new n_subString = strlen(subString) - 1; - - if(n_str < n_subString) { - return false; - } - - while (n_str != 0 && n_subString != 0) { - - if (str[n_str--] != subString[n_subString--]) { - return false; - } - } - - return true; -} diff --git a/scripting/1.10/include/smlib/teams.inc b/scripting/1.10/include/smlib/teams.inc deleted file mode 100644 index 2fd18c8..0000000 --- a/scripting/1.10/include/smlib/teams.inc +++ /dev/null @@ -1,318 +0,0 @@ -#if defined _smlib_teams_included - #endinput -#endif -#define _smlib_teams_included - -#include -#include -#include - -#define MAX_TEAMS 32 // Max number of teams in a game -#define MAX_TEAM_NAME_LENGTH 32 // Max length of a team's name - -// Team Defines -#define TEAM_INVALID -1 -#define TEAM_UNASSIGNED 0 -#define TEAM_SPECTATOR 1 -#define TEAM_ONE 2 -#define TEAM_TWO 3 -#define TEAM_THREE 4 -#define TEAM_FOUR 5 - -/* - * If one team is empty its assumed single team mode is enabled and the game won't start. - * - * @noparam - * @return True if one team is empty, false otherwise. - */ -stock bool:Team_HaveAllPlayers(bool:countFakeClients=true) { - - new teamCount = GetTeamCount(); - for (new i=2; i < teamCount; i++) { - - if (Team_GetClientCount(i, ((countFakeClients) ? CLIENTFILTER_ALL : CLIENTFILTER_NOBOTS)) == 0) { - return false; - } - } - - return true; -} - -/* - * Returns the client count of the players in a team. - * - * @param team Team Index. - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @return Client count in the server. - */ -stock Team_GetClientCount(team, flags=0) -{ - flags |= CLIENTFILTER_INGAME; - - new numClients = 0; - for (new client=1; client <= MaxClients; client++) { - - if (!Client_MatchesFilter(client, flags)) { - continue; - } - - if (GetClientTeam(client) == team) { - numClients++; - } - } - - return numClients; -} - -/* - * Returns the client counts of the first two teams (eg.: Terrorists - Counter). - * Use this function for optimization if you have to get the counts of both teams, - * otherwise use Team_GetClientCount(). - * - * @param team1 Pass an integer variable by reference - * @param team2 Pass an integer variable by reference - * @param flags Client Filter Flags (Use the CLIENTFILTER_ constants). - * @noreturn - */ -stock Team_GetClientCounts(&team1=0, &team2=0, flags=0) -{ - flags |= CLIENTFILTER_INGAME; - - for (new client=1; client <= MaxClients; client++) { - - if (!Client_MatchesFilter(client, flags)) { - continue; - } - - if (GetClientTeam(client) == TEAM_ONE) { - team1++; - } - else if (GetClientTeam(client) == TEAM_TWO) { - team2++; - } - } -} - -/* - * Gets the name of a team. - * Don't call this before OnMapStart() - * - * @param index Team Index. - * @param str String buffer - * @param size String Buffer Size - * @return True on success, false otherwise - */ -stock bool:Team_GetName(index, String:str[], size) -{ - new edict = Team_GetEdict(index); - - if (edict == -1) { - str[0] = '\0'; - return false; - } - - GetEntPropString(edict, Prop_Send, "m_szTeamname", str, size); - - return true; -} - -/* - * Changes a team's name. - * Use this carefully ! - * Only set the teamname OnMapStart() or OnEntityCreated() - * when no players are ingame, otherwise it can crash the server. - * - * @param index Team Index. - * @param name New Name String - * @return True on success, false otherwise - */ -stock bool:Team_SetName(index, const String:name[]) -{ - new edict = Team_GetEdict(index); - - if (edict == -1) { - return false; - } - - SetEntPropString(edict, Prop_Send, "m_szTeamname", name); - ChangeEdictState(edict, GetEntSendPropOffs(edict, "m_szTeamname", true)); - - return true; -} - -/* - * Changes a team's score. - * Don't use this before OnMapStart(). - * - * @param index Team Index. - * @return Team Score or -1 if the team is not valid. - */ -stock Team_GetScore(index) -{ - new edict = Team_GetEdict(index); - - if (edict == -1) { - return -1; - } - - return GetEntProp(edict, Prop_Send, "m_iScore"); -} - -/* - * Changes a team's score. - * Don't use this before OnMapStart(). - * - * @param index Team Index. - * @param score Score value. - * @return True on success, false otherwise - */ -stock bool:Team_SetScore(index, score) -{ - new edict = Team_GetEdict(index); - - if (edict == -1) { - return false; - } - - SetEntProp(edict, Prop_Send, "m_iScore", score); - - ChangeEdictState(edict, GetEntSendPropOffs(edict, "m_iScore", true)); - - return true; -} - -/* - * Gets a team's edict (*team_manager) Team Index. - * Don't call this before OnMapStart() - * - * @param edict Edict - * @return Team Index - */ -stock Team_EdictGetNum(edict) -{ - return GetEntProp(edict, Prop_Send, "m_iTeamNum"); -} - -/* - * Check's whether the index is a valid team index or not. - * Don't call this before OnMapStart() - * - * @param index Index. - * @return True if the Index is a valid team, false otherwise. - */ -stock bool:Team_IsValid(index) -{ - return (Team_GetEdict(index) != -1); -} - -/* - * Gets a team's edict (team_manager) Team Index. - * Don't call this before OnMapStart() - * - * @param index Edict - * @return Team Index - */ -stock Team_EdictIsValid(edict) -{ - return GetEntProp(edict, Prop_Send, "m_iTeamNum"); -} - -/* - * Gets a team's edict (team_manager). - * This function caches found team edicts. - * Don't call this before OnMapStart() - * - * @param index Team Index. - * @return Team edict or -1 if not found - */ -stock Team_GetEdict(index) -{ - static teams[MAX_TEAMS] = { INVALID_ENT_REFERENCE, ... }; - - if (index < 0 || index > MAX_TEAMS) { - return -1; - } - - new edict = teams[index]; - if (Entity_IsValid(edict)) { - return edict; - } - - new bool:foundTeamManager = false; - - new maxEntities = GetMaxEntities(); - for (new entity=MaxClients+1; entity < maxEntities; entity++) { - - if (!IsValidEntity(entity)) { - continue; - } - - if (Entity_ClassNameMatches(entity, "team_manager", true)) { - foundTeamManager = true; - } - // Do not continue when no team managers are found anymore (for optimization) - else if (foundTeamManager) { - return -1; - } - else { - continue; - } - - new num = Team_EdictGetNum(entity); - - if (num >= 0 && num <= MAX_TEAMS) { - teams[num] = EntIndexToEntRef(entity); - } - - if (num == index) { - return entity; - } - } - - return -1; -} - -/* - * Trys to find a client in the specified team. - * This function is NOT random, it returns the first - * or the cached player (Use Client_GetRandom() instead). - * - * @param index Team Index. - * @return Client Index or -1 if no client was found in the specified team. - */ -stock Team_GetAnyClient(index) -{ - static client_cache[MAX_TEAMS] = -1; - new client; - - if (index > 0) { - client = client_cache[index]; - - if (client > 0 && client <= MaxClients) { - - if (IsClientInGame(client) && GetClientTeam(client) == index) { - return client; - } - } - else { - client = -1; - } - } - - for (client=1; client <= MaxClients; client++) { - - if (!IsClientInGame(client)) { - continue; - } - - if (GetClientTeam(client) != index) { - continue; - } - - client_cache[index] = client; - - return client; - } - - return -1; -} diff --git a/scripting/1.10/include/smlib/vehicles.inc b/scripting/1.10/include/smlib/vehicles.inc deleted file mode 100644 index d9fdebd..0000000 --- a/scripting/1.10/include/smlib/vehicles.inc +++ /dev/null @@ -1,141 +0,0 @@ -#if defined _smlib_vehicles_included - #endinput -#endif -#define _smlib_vehicles_included - -#include -#include -#include -#include - -/** - * Returns the vehicle's driver. - * If there is no driver in the vehicle, -1 is returned. - * - * @param vehicle Entity index. - * @return Client index, or -1 if there is no driver. - */ -stock Vehicle_GetDriver(vehicle) -{ - new m_hVehicle = GetEntPropEnt(vehicle, Prop_Send, "m_hPlayer"); - - return m_hVehicle; -} - -/** - * Returns whether there is a driver in the vehicle or not. - * - * @param vehicle Entity index. - * @return True if the vehicle has a driver, false otherwise - */ -stock bool:Vehicle_HasDriver(vehicle) -{ - return !(Vehicle_GetDriver(vehicle) == -1); -} - -/** - * Kicks the driver ouf of the vehicle - * - * @param vehicle Entity index. - * @return True on success, false otherwise. - */ -stock bool:Vehicle_ExitDriver(vehicle) -{ - if (!Vehicle_HasDriver(vehicle)) { - return false; - } - - return AcceptEntityInput(vehicle, "ExitVehicle"); -} - -/** - * Start's the vehicle's engine - * - * @param vehicle Entity index. - * @return True on success, false otherwise. - */ -stock bool:Vehicle_TurnOn(vehicle) -{ - - return AcceptEntityInput(vehicle, "TurnOn"); -} - -/** - * Shuts down the vehicle's engine - * - * @param vehicle Entity index. - * @return True on success, false otherwise. - */ -stock bool:Vehicle_TurnOff(vehicle) -{ - - return AcceptEntityInput(vehicle, "TurnOff"); -} - -/** - * Locks the vehicle. - * - * @param vehicle Entity index. - * @return True on success, false otherwise. - */ -stock bool:Vehicle_Lock(vehicle) -{ - - return AcceptEntityInput(vehicle, "Lock"); -} - -/** - * Unlocks the vehicle. - * - * @param vehicle Entity index. - * @return True on success, false otherwise. - */ -stock bool:Vehicle_Unlock(vehicle) -{ - - return AcceptEntityInput(vehicle, "Unlock"); -} - -/** - * Returns wether the entity is a valid vehicle or not. - * - * @param vehicle Entity index. - * @return True if it is a valid vehicle, false otherwise. - */ -stock bool:Vehicle_IsValid(vehicle) -{ - if (!Entity_IsValid(vehicle)) { - return false; - } - - return Entity_ClassNameMatches(vehicle, "prop_vehicle", true); -} - -/** - * Reads the vehicle script from a vehicle. - * This script contains all the vehicle settings like its speed - * and that stuff. - * - * @param vehicle Entity index. - * @param buffer String Buffer. - * @param size String Buffer size. - * @noreturn - */ -stock bool:Vehicle_GetScript(vehicle, String:buffer[], size) -{ - GetEntPropString(vehicle, Prop_Data, "m_vehicleScript", buffer, size); -} - -/** - * Sets the script of a vehicle. - * This script contains all the vehicle settings like its speed - * and that stuff. - * - * @param vehicle Entity index. - * @param buffer Vehicle Script path. - * @noreturn - */ -stock bool:Vehicle_SetScript(vehicle, String:script[]) -{ - DispatchKeyValue(vehicle, "vehiclescript", script); -} diff --git a/scripting/1.10/include/smlib/weapons.inc b/scripting/1.10/include/smlib/weapons.inc deleted file mode 100644 index 757119d..0000000 --- a/scripting/1.10/include/smlib/weapons.inc +++ /dev/null @@ -1,398 +0,0 @@ -#if defined _smlib_weapons_included - #endinput -#endif -#define _smlib_weapons_included - -#include -#include -#include - -#define MAX_WEAPON_OFFSET 64 -#define MAX_WEAPON_SLOTS 6 // hud item selection slots -#define MAX_WEAPON_POSITIONS 20 // max number of items within a slot -#define MAX_WEAPONS 48 // Max number of weapons availabl -#define WEAPON_NOCLIP -1 // clip sizes set to this tell the weapon it doesn't use a clip -#define MAX_AMMO_TYPES 32 -#define MAX_AMMO_SLOTS 32 // not really slots - -#define MAX_WEAPON_STRING 80 -#define MAX_WEAPON_PREFIX 16 -#define MAX_WEAPON_AMMO_NAME 32 - -/* - * Gets the owner (usually a client) of the weapon - * - * @param weapon Weapon Entity. - * @return Owner of the weapon or INVALID_ENT_REFERENCE if the weapon has no owner. - */ -stock Weapon_GetOwner(weapon) -{ - return GetEntPropEnt(weapon, Prop_Data, "m_hOwner"); -} - -/* - * Sets the owner (usually a client) of the weapon - * - * @param weapon Weapon Entity. - * @param entity Entity Index. - * @noreturn - */ -stock Weapon_SetOwner(weapon, entity) -{ - SetEntPropEnt(weapon, Prop_Data, "m_hOwner", entity); -} - -/* - * Checks whether the entity is a valid weapon or not. - * - * @param weapon Weapon Entity. - * @return True if the entity is a valid weapon, false otherwise. - */ -stock Weapon_IsValid(weapon) -{ - if (!IsValidEdict(weapon)) { - return false; - } - - return Entity_ClassNameMatches(weapon, "weapon_", true); -} - -/* - * Create's a weapon and spawns it in the world at the specified location. - * - * @param className Classname String of the weapon to spawn - * @param absOrigin Absolute Origin Vector where to spawn the weapon. - * @param absAngles Absolute Angles Vector. - * @return Weapon Index of the created weapon or INVALID_ENT_REFERENCE on error. - */ -stock Weapon_Create(const String:className[], Float:absOrigin[3], Float:absAngles[3]) -{ - new weapon = Entity_Create(className); - - if (weapon == INVALID_ENT_REFERENCE) { - return INVALID_ENT_REFERENCE; - } - - Entity_SetAbsOrigin(weapon, absOrigin); - Entity_SetAbsAngles(weapon, absAngles); - - DispatchSpawn(weapon); - - return weapon; -} - -/* - * Create's a weapon and spawns it in the world at the specified location. - * - * @param className Classname String of the weapon to spawn - * @param absOrigin Absolute Origin Vector where to spawn the weapon. - * @param absAngles Absolute Angles Vector. - * @return Weapon Index of the created weapon or INVALID_ENT_REFERENCE on error. - */ -stock Weapon_CreateForOwner(client, const String:className[]) -{ - decl Float:absOrigin[3], Float:absAngles[3]; - Entity_GetAbsOrigin(client, absOrigin); - Entity_GetAbsAngles(client, absAngles); - - new weapon = Weapon_Create(className, absOrigin, absAngles); - - if (weapon == INVALID_ENT_REFERENCE) { - return INVALID_ENT_REFERENCE; - } - - Entity_SetOwner(weapon, client); - - return weapon; -} - -/* - * Gets the weapon's subtype. - * The subtype is only used when a player has multiple weapons of the same type. - * - * @param weapon Weapon Entity. - * @return Subtype of the weapon. - */ -stock Weapon_GetSubType(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iSubType"); -} - -/* - * Is the weapon currently reloading ? - * - * @param weapon Weapon Entity. - * @return True if weapon is currently reloading, false if not. - */ -stock bool:Weapon_IsReloading(weapon) -{ - return bool:GetEntProp(weapon, Prop_Data, "m_bInReload"); -} - -/* - * Weapon m_iState - */ -#define WEAPON_IS_ONTARGET 0x40 -#define WEAPON_NOT_CARRIED 0 // Weapon is on the ground -#define WEAPON_IS_CARRIED_BY_PLAYER 1 // This client is carrying this weapon. -#define WEAPON_IS_ACTIVE 2 // This client is carrying this weapon and it's the currently held weapon - -/* - * Get's the state of the weapon. - * This returns whether the weapon is currently carried by a client, - * if it is active and if it is on a target. - * - * @param weapon Weapon Entity. - * @return Weapon State. - */ -stock Weapon_GetState(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iState"); -} - -/* - * Returns whether the weapon can fire primary ammo under water. - * - * @param weapon Weapon Entity. - * @return True or False. - */ -stock bool:Weapon_FiresUnderWater(weapon) -{ - return bool:GetEntProp(weapon, Prop_Data, "m_bFiresUnderwater"); -} - -/* - * Sets if the weapon can fire primary ammo under water. - * - * @param weapon Weapon Entity. - * @param can True or False. - * @noreturn - */ -stock Weapon_SetFiresUnderWater(weapon, bool:can=true) -{ - SetEntProp(weapon, Prop_Data, "m_bFiresUnderwater", _:can); -} - -/* - * Returns whether the weapon can fire secondary ammo under water. - * - * @param weapon Weapon Entity. - * @return True or False. - */ -stock bool:Weapon_FiresUnderWaterAlt(weapon) -{ - return bool:GetEntProp(weapon, Prop_Data, "m_bAltFiresUnderwater"); -} - -/* - * Sets if the weapon can fire secondary ammo under water. - * - * @param weapon Weapon Entity. - * @param can True or False. - * @noreturn - */ -stock Weapon_SetFiresUnderWaterAlt(weapon, bool:can=true) -{ - SetEntProp(weapon, Prop_Data, "m_bAltFiresUnderwater", _:can); -} - -/* - * Gets the primary ammo Type (int offset) - * - * @param weapon Weapon Entity. - * @return Primary ammo type value. - */ -stock Weapon_GetPrimaryAmmoType(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iPrimaryAmmoType"); -} - -/* - * Sets the primary ammo Type (int offset) - * - * @param weapon Weapon Entity. - * @param type Primary ammo type value. - */ -stock Weapon_SetPrimaryAmmoType(weapon,type) -{ - SetEntProp(weapon, Prop_Data, "m_iPrimaryAmmoType", type); -} - -/* - * Gets the secondary ammo Type (int offset) - * - * @param weapon Weapon Entity. - * @return Secondary ammo type value. - */ -stock Weapon_GetSecondaryAmmoType(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iSecondaryAmmoType"); -} - -/* - * Sets the secondary ammo Type (int offset) - * - * @param weapon Weapon Entity. - * @param type Secondary ammo type value. - */ -stock Weapon_SetSecondaryAmmoType(weapon,type) -{ - SetEntProp(weapon, Prop_Data, "m_iSecondaryAmmoType", type); -} - -/* - * Gets the primary clip count of a weapon. - * - * @param weapon Weapon Entity. - * @return Primary Clip count. - */ -stock Weapon_GetPrimaryClip(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iClip1"); -} - -/* - * Sets the primary clip count of a weapon. - * - * @param weapon Weapon Entity. - * @param value Clip Count value. - */ -stock Weapon_SetPrimaryClip(weapon, value) -{ - SetEntProp(weapon, Prop_Data, "m_iClip1", value); -} - -/* - * Gets the secondary clip count of a weapon. - * - * @param weapon Weapon Entity. - * @return Secondy Clip count. - */ -stock Weapon_GetSecondaryClip(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iClip2"); -} - -/* - * Sets the secondary clip count of a weapon. - * - * @param weapon Weapon Entity. - * @param value Clip Count value. - */ -stock Weapon_SetSecondaryClip(weapon, value) -{ - SetEntProp(weapon, Prop_Data, "m_iClip2", value); -} - -/* - * Sets the primary & secondary clip count of a weapon. - * - * @param weapon Weapon Entity. - * @param primary Primary Clip Count value. - * @param secondary Primary Clip Count value. - */ -stock Weapon_SetClips(weapon, primary, secondary) -{ - Weapon_SetPrimaryClip(weapon, primary); - Weapon_SetSecondaryClip(weapon, secondary); -} - -/* - * Gets the primary ammo count of a weapon. - * This is only used when the weapon is not carried - * by a player to give a player ammo when he picks up - * the weapon. - * - * @param weapon Weapon Entity. - * @return Primary Ammo Count. - */ -stock Weapon_GetPrimaryAmmoCount(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iPrimaryAmmoCount"); -} - -/* - * Sets the primary ammo count of a weapon. - * This is only used when the weapon is not carried - * by a player to give a player ammo when he picks up - * the weapon. - * - * @param weapon Weapon Entity. - * @param value Primary Ammo Count. - * @noreturn - */ -stock Weapon_SetPrimaryAmmoCount(weapon, value) -{ - SetEntProp(weapon, Prop_Data, "m_iPrimaryAmmoCount", value); -} - -/* - * Gets the secondary ammo count of a weapon. - * This is only used when the weapon is not carried - * by a player to give a player ammo when he picks up - * the weapon. - * - * @param weapon Weapon Entity. - * @return Secondary Ammo Count. - */ -stock Weapon_GetSecondaryAmmoCount(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_iSecondaryAmmoCount"); -} - -/* - * Sets the secodary ammo count of a weapon. - * This is only used when the weapon is not carried - * by a player to give a player ammo when he picks up - * the weapon. - * - * @param weapon Weapon Entity. - * @param value Secondary Ammo Count. - * @noreturn - */ -stock Weapon_SetSecondaryAmmoCount(weapon, value) -{ - SetEntProp(weapon, Prop_Data, "m_iSecondaryAmmoCount", value); -} - -/* - * Sets both, the primary & the secondary ammo count of a weapon. - * This is only used when the weapon is not carried - * by a player to give a player ammo when he picks up - * the weapon. - * - * @param weapon Weapon Entity. - * @value primary Primary Ammo Count. - * @value secondary Secondary Ammo Count. - * @noreturn - */ -stock Weapon_SetAmmoCounts(weapon, primary, secondary) -{ - Weapon_SetPrimaryAmmoCount(weapon, primary); - Weapon_SetSecondaryAmmoCount(weapon, secondary); -} - -/* - * Gets the Model Index of the weapon's view model. - * - * @param weapon Weapon Entity. - * @return View Model Index. - */ -stock Weapon_GetViewModelIndex(weapon) -{ - return GetEntProp(weapon, Prop_Data, "m_nViewModelIndex"); -} - -/* - * Sets the Model Index of the weapon's view model. - * You can get the Model Index by precaching a model with PrecacheModel(). - * - * @param weapon Weapon Entity. - * @param index Model Index. - * @noreturn - */ -stock Weapon_SetViewModelIndex(weapon, index) -{ - SetEntProp(weapon, Prop_Data, "m_nViewModelIndex", index); - ChangeEdictState(weapon, FindDataMapInfo(weapon, "m_nViewModelIndex")); -} diff --git a/scripting/1.10/include/smlib/world.inc b/scripting/1.10/include/smlib/world.inc deleted file mode 100644 index cd14b95..0000000 --- a/scripting/1.10/include/smlib/world.inc +++ /dev/null @@ -1,17 +0,0 @@ -#if defined _smlib_world_included - #endinput -#endif -#define _smlib_world_included - -#include - -/* - * Gets the world's max size - * - * @param vec Vector buffer - * @noreturn - */ -stock World_GetMaxs(Float:vec[3]) { - - GetEntPropVector(0, Prop_Data, "m_WorldMaxs", vec); -} diff --git a/scripting/1.10/include/smlib_kacr.inc b/scripting/1.10/include/smlib_kacr.inc deleted file mode 100644 index 1d72d22..0000000 --- a/scripting/1.10/include/smlib_kacr.inc +++ /dev/null @@ -1,31 +0,0 @@ -#if defined _smlib_included - #endinput -#endif -#define _smlib_included - -#define SMLIB_VERSION "0.9.7-B" // A slightly customized Version to compile againest SM 1.10 - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include diff --git a/scripting/1.10/spcomp.exe b/scripting/1.10/spcomp.exe deleted file mode 100644 index a270ebd6ff18bdc6d1ffff9477f8ce58f8cfb89c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428032 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

6d(~2hnD;$`D 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�%_WX8xWry1#{R`T#$LjTwvI1Jzp?>Wh@fQi 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 diff --git a/scripting/1.8/kigen-ac_redux.sp b/scripting/1.8/kigen-ac_redux.sp index 2fd2f6c..b4127fe 100644 --- a/scripting/1.8/kigen-ac_redux.sp +++ b/scripting/1.8/kigen-ac_redux.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +29,6 @@ #include #define REQUIRE_EXTENSIONS // #include // Required for the networking Module // Outdated TODO -#include #include @@ -64,7 +62,7 @@ bool g_bSourceBans, g_bSourceBansPP, g_bMapStarted; //- KACR Modules -// Note: The that ordering of these Includes is imporant -#include "kigen-ac_redux/translations.sp" // Translations Module - NEEDED FIRST +#include "kigen-ac_redux/translations.sp" // Translations Module - Needs to be first #include "kigen-ac_redux/client.sp" // Client Module #include "kigen-ac_redux/commands.sp" // Commands Module #include "kigen-ac_redux/cvars.sp" // CVar Module @@ -128,7 +126,7 @@ public void OnPluginStart() f_hTemp = FindConVar("sv_max_usercmd_future_ticks"); if (f_hTemp != INVALID_HANDLE) SetConVarInt(f_hTemp, 1); - + AutoExecConfig_ExecuteFile(); // Execute the Config AutoExecConfig_CleanFile(); // Cleanup the Config (slow process) @@ -210,7 +208,7 @@ public void OnPluginEnd() CloseHandle(g_hClearTimer); } -//- Map Functions -// +//- Map Hooks -// public void OnMapStart() { @@ -227,7 +225,7 @@ public void OnMapEnd() // RCON_OnMap(); // Currently unused } -//- Client Functions -// +//- Client Hooks -// public bool OnClientConnect(client, char[] rejectmsg, size) { @@ -340,10 +338,22 @@ public Action KACR_ValidateTimer(Handle timer, any client) return Plugin_Stop; } -public Action KACR_ClearTimer(Handle timer, any nothing) -{ - g_hDenyArray.Clear(); -} +// Version Checker for Handle Type TODO 1.8 +#if SOURCEMOD_V_MAJOR == 1 + #if SOURCEMOD_V_MINOR >= 10 // 1.10+ + public void KACR_ClearTimer(Handle timer, any nothing) + { + g_hDenyArray.Clear(); + } + + #else // 1.9 and older + public Action KACR_ClearTimer(Handle timer, any nothing) + { + g_hDenyArray.Clear(); + } + + #endif +#endif //- ConVar Hook -// diff --git a/scripting/1.8/kigen-ac_redux/client.sp b/scripting/1.8/kigen-ac_redux/client.sp index 397b9f0..ccac45c 100644 --- a/scripting/1.8/kigen-ac_redux/client.sp +++ b/scripting/1.8/kigen-ac_redux/client.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,7 +50,7 @@ Client_OnPluginStart() HookEvent("player_spawn", Client_PlayerSpawn); HookEvent("player_death", Client_PlayerDeath); HookEvent("round_start", Client_RoundStart); - HookEvent("round_end", Client_CleanEvent); + HookEvent("round_end", Client_RoundEnd); RegConsoleCmd("joinclass", Client_JoinClass); } @@ -159,7 +158,7 @@ public Action Client_Autobuy(client, args) } -//- Map -// +//- Map Hooks -// /*Client_OnMapStart() // Currently unused { @@ -173,27 +172,27 @@ Client_OnMapEnd() strcopy(g_sClientConnections[i], 64, ""); if (hGame == Engine_CSS || hGame == Engine_CSGO) - Client_CleanEvent(INVALID_HANDLE, "", false); + Client_CleanEvent(); } //- Timers -// -public Action Client_AntiSpamConnectTimer(Handle timer, any i) +public Action Client_AntiSpamConnectTimer(Handle hTimer, any iClient) { - strcopy(g_sClientConnections[i], 64, ""); + strcopy(g_sClientConnections[iClient], 64, ""); return Plugin_Stop; } //- Hooks -// -public Action Client_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast) +public Action Client_PlayerSpawn(Event hEvent, const char[] cName, bool bDontBroadcast) { if (!g_bClientEnable || !g_bClientAntiRespawn) return Plugin_Continue; - int client = GetClientOfUserId(GetEventInt(event, "userid")); + int client = GetClientOfUserId(hEvent.GetInt("userid")); char f_sAuthID[64]; if (client <= 0 || GetClientTeam(client) < 2 || !GetClientAuthId(client, AuthId_Steam2, f_sAuthID, sizeof(f_sAuthID))) return Plugin_Continue; @@ -203,12 +202,12 @@ public Action Client_PlayerSpawn(Handle event, const char[] name, bool dontBroad return Plugin_Continue } -public Action Client_PlayerDeath(Handle event, const char[] name, bool dontBroadcast) +public Action Client_PlayerDeath(Event hEvent, const char[] cName, bool bDontBroadcast) { if (!g_bClientEnable || !g_bClientAntiRespawn) return Plugin_Continue; - int client = GetClientOfUserId(GetEventInt(event, "userid")); + int client = GetClientOfUserId(hEvent.GetInt("userid")); char f_sAuthID[64]; if (client <= 0 || !GetClientAuthId(client, AuthId_Steam2, f_sAuthID, sizeof(f_sAuthID))) return Plugin_Continue; @@ -218,24 +217,14 @@ public Action Client_PlayerDeath(Handle event, const char[] name, bool dontBroad return Plugin_Continue } -public Action Client_RoundStart(Handle event, const char[] name, bool dontBroadcast) +public void Client_RoundStart(Event hEvent, const char[] cName, bool bDontBroadcast) { g_bClientMapStarted = true; } -public Action Client_CleanEvent(Handle event, const char[] name, bool dontBroadcast) +public void Client_RoundEnd(Handle hEvent, const char[] cName, bool bDontBroadcast) { - CloseHandle(g_hClientSpawned); // Really needed? We could just clear it? - g_hClientSpawned = new StringMap(); - - for (int i = 1; i <= MaxClients; i++) - { - if (g_bInGame[i] && g_iClientClass[i] != -1) - { - FakeClientCommandEx(i, "joinclass %d", g_iClientClass[i]); - g_iClientClass[i] = -1; - } - } + Client_CleanEvent(); } bool Client_OnClientConnect(iClient, char[] rejectmsg, size) @@ -440,4 +429,22 @@ public void Client_NameProtectChange(Handle convar, const char[] oldValue, const public void Client_AntiSpamConnectChange(Handle convar, const char[] oldValue, const char[] newValue) { g_fClientAntiSpamConnect = GetConVarFloat(convar); -} \ No newline at end of file +} + + +//- Functions -// + +public void Client_CleanEvent() +{ + CloseHandle(g_hClientSpawned); // Really needed? We could just clear it? + g_hClientSpawned = new StringMap(); + + for (int i = 1; i <= MaxClients; i++) + { + if (g_bInGame[i] && g_iClientClass[i] != -1) + { + FakeClientCommandEx(i, "joinclass %d", g_iClientClass[i]); + g_iClientClass[i] = -1; + } + } +} \ No newline at end of file diff --git a/scripting/1.8/kigen-ac_redux/commands.sp b/scripting/1.8/kigen-ac_redux/commands.sp index dbf207b..450bfec 100644 --- a/scripting/1.8/kigen-ac_redux/commands.sp +++ b/scripting/1.8/kigen-ac_redux/commands.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.8/kigen-ac_redux/cvars.sp b/scripting/1.8/kigen-ac_redux/cvars.sp index a083a2a..dcca3e3 100644 --- a/scripting/1.8/kigen-ac_redux/cvars.sp +++ b/scripting/1.8/kigen-ac_redux/cvars.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -956,7 +955,7 @@ public void CVars_EnableChange(Handle convar, const char[] oldValue, const char[ * @param iImportance Priority (PRIORITY_...) * @param cAlternative URL to show to the Player */ -bool CVars_AddCVar(char[] cConVar, f_iComparisonType, f_iAction, const char[] f_sValue, float f_fValue2, f_iImportance, const char f_sAlternative[] = "") +bool CVars_AddCVar(char[] cConVar, f_iComparisonType, f_iAction, const char[] f_sValue, float f_fValue2, f_iImportance, const char[] f_sAlternative = "") { Handle f_hConVar = INVALID_HANDLE, f_hArray; diff --git a/scripting/1.8/kigen-ac_redux/eyetest.sp b/scripting/1.8/kigen-ac_redux/eyetest.sp index 2689629..f3a2560 100644 --- a/scripting/1.8/kigen-ac_redux/eyetest.sp +++ b/scripting/1.8/kigen-ac_redux/eyetest.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -194,8 +193,8 @@ public void Eyetest_AntiWallChange(Handle convar, const char[] oldValue, const c } for (int i = 1; i <= MaxClients; i++) - if (Client_IsValid(i, true)) - if (IsPlayerAlive(i) && !g_bHooked[i]) // We do not use the Arrays here since its OnPluginStart and the Players may havent been checked TODO: is that correct? + if (IsClientInGame(i) && !IsFakeClient(i)) // g_bInGame[i] && !g_bIsFake[i]) - We do not use the Arrays here since its OnPluginStart and the Players may havent been checked. This can be fixed by populating the arrays OnPluginLoad TODO + if (IsPlayerAlive(i) && !g_bHooked[i]) Eyetest_Hook(i); Status_Report(g_iAntiWHStatus, KACR_ON); @@ -213,27 +212,27 @@ public void Eyetest_AntiWallChange(Handle convar, const char[] oldValue, const c g_bAntiWall = f_bEnabled; } -public Action Eyetest_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast) +public void Eyetest_PlayerSpawn(Event hEvent, const char[] cName, bool bDontBroadcast) { - int client = GetClientOfUserId(GetEventInt(event, "userid")); - if (client && GetClientTeam(client) > 1) + int iClient = GetClientOfUserId(hEvent.GetInt("userid")); + if (iClient && GetClientTeam(iClient) > 1) { - if (!IsFakeClient(client)) - g_bShouldProcess[client] = true; + if (!IsFakeClient(iClient)) + g_bShouldProcess[iClient] = true; - if (g_bAntiWall && !g_bHooked[client]) - Eyetest_Hook(client); + if (g_bAntiWall && !g_bHooked[iClient]) + Eyetest_Hook(iClient); } } -public Action Eyetest_PlayerDeath(Handle event, const char[] name, bool dontBroadcast) +public void Eyetest_PlayerDeath(Event hEvent, const char[] cName, bool bDontBroadcast) { - int client = GetClientOfUserId(GetEventInt(event, "userid")); - if (client) + int iClient = GetClientOfUserId(hEvent.GetInt("userid")); + if (iClient) { - g_bShouldProcess[client] = false; - if (g_bAntiWall && g_bHooked[client]) - Eyetest_Unhook(client); + g_bShouldProcess[iClient] = false; + if (g_bAntiWall && g_bHooked[iClient]) + Eyetest_Unhook(iClient); } } @@ -259,21 +258,21 @@ public Action Eyetest_WeaponTransmit(entity, client) return Plugin_Stop; } -public Action Eyetest_Equip(client, weapon) // The Player Picked up a Weapon? Lets bind the Entity ID to the Player ID +public void Eyetest_Equip(iClient, iWeapon) // The Player Picked up a Weapon? Lets bind the Entity ID to the Player ID { - if (g_iWeaponOwner[weapon] == 0) // The Weapon has no owner yet? + if (g_iWeaponOwner[iWeapon] == 0) // The Weapon has no owner yet? { - g_iWeaponOwner[weapon] = client; - SDKHook(weapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); + g_iWeaponOwner[iWeapon] = iClient; + SDKHook(iWeapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); } } -public Action Eyetest_Drop(client, weapon) +public void Eyetest_Drop(iClient, iWeapon) { - if (weapon > 0 && g_iWeaponOwner[weapon] > 0) // Is a Player linked to the Entity? Else we do not Care // Check if the Weapon exists first, it may got deleted in the same Frame, Bugfix for #37 + if (iWeapon > 0 && g_iWeaponOwner[iWeapon] > 0) // Is a Player linked to the Entity? Else we do not Care // Check if the Weapon exists first, it may got deleted in the same Frame, Bugfix for #37 { - g_iWeaponOwner[weapon] = 0; - SDKUnhook(weapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); + g_iWeaponOwner[iWeapon] = 0; + SDKUnhook(iWeapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); } } diff --git a/scripting/1.8/kigen-ac_redux/network #Unused.sp b/scripting/1.8/kigen-ac_redux/network #Unused.sp index cd826a6..4fe8ae2 100644 --- a/scripting/1.8/kigen-ac_redux/network #Unused.sp +++ b/scripting/1.8/kigen-ac_redux/network #Unused.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.8/kigen-ac_redux/rcon.sp b/scripting/1.8/kigen-ac_redux/rcon.sp index 342443b..d1a4ed6 100644 --- a/scripting/1.8/kigen-ac_redux/rcon.sp +++ b/scripting/1.8/kigen-ac_redux/rcon.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.8/kigen-ac_redux/status.sp b/scripting/1.8/kigen-ac_redux/status.sp index 58186cd..257aa74 100644 --- a/scripting/1.8/kigen-ac_redux/status.sp +++ b/scripting/1.8/kigen-ac_redux/status.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.8/kigen-ac_redux/stocks.sp b/scripting/1.8/kigen-ac_redux/stocks.sp index 6fdf2de..28bdb22 100644 --- a/scripting/1.8/kigen-ac_redux/stocks.sp +++ b/scripting/1.8/kigen-ac_redux/stocks.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.8/kigen-ac_redux/translations.sp b/scripting/1.8/kigen-ac_redux/translations.sp index da15f7c..a185920 100644 --- a/scripting/1.8/kigen-ac_redux/translations.sp +++ b/scripting/1.8/kigen-ac_redux/translations.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.10/include/admin.inc b/scripting/latest/include/admin.inc similarity index 94% rename from scripting/1.10/include/admin.inc rename to scripting/latest/include/admin.inc index d365dd2..3fbf886 100644 --- a/scripting/1.10/include/admin.inc +++ b/scripting/latest/include/admin.inc @@ -191,6 +191,20 @@ methodmap AdminId { // @param enabled True to enable, false to disable. public native void SetFlag(AdminFlag flag, bool enabled); + // Sets multiple bitwise flags to be enabled/disabled on an admin. + // + // @param flags Bitwise admin flags (ADMFLAG_*). + // @param enabled True to set the flag, false to unset/disable. + public void SetBitFlags(int flags, bool enabled) + { + AdminFlag flagArray[AdminFlags_TOTAL]; + int num = FlagBitsToArray(flags, flagArray, sizeof(flagArray)); + for (int i = 0; i < num; i++) + { + this.SetFlag(flagArray[i], enabled); + } + } + // Returns whether or not a flag is enabled on an admin. // // @param flag Admin flag to use. @@ -278,6 +292,20 @@ methodmap GroupId { // @param enabled True to set the flag, false to unset/disable. public native void SetFlag(AdminFlag flag, bool enabled); + // Adds or removes multiple bitwise flags from a group's flag set. + // + // @param flags Bitwise admin flags (ADMFLAG_*). + // @param enabled True to set the flag, false to unset/disable. + public void SetBitFlags(int flags, bool enabled) + { + AdminFlag flagArray[AdminFlags_TOTAL]; + int num = FlagBitsToArray(flags, flagArray, sizeof(flagArray)); + for (int i = 0; i < num; i++) + { + this.SetFlag(flagArray[i], enabled); + } + } + // Returns the flag set that is added to users from this group. // // @return Bitstring containing the flags enabled. @@ -773,3 +801,32 @@ stock bool BitToFlag(int bit, AdminFlag &flag) return false; } + +/** + * Converts a bit string to a string of flag characters. + * + * @param bits Bit string containing the flags. + * @param flags Output array to write a string of flag characters. + * @param maxSize Maximum size of the string array. + * @return Number of flag characters written. + */ +stock int FlagBitsToString(const int bits, char[] flags, const int maxSize) +{ + AdminFlag array[AdminFlags_TOTAL]; + int numFlags = FlagBitsToArray(bits, array, AdminFlags_TOTAL); + if (numFlags > maxSize) + { + numFlags = maxSize; + } + int i, c, numId = 0; + for (i = 0; i < numFlags; ++i) + { + if(FindFlagChar(array[i], c)) + { + flags[numId++] = c; + } + } + flags[numId] = '\0'; + + return numId; +} diff --git a/scripting/1.10/include/adminmenu.inc b/scripting/latest/include/adminmenu.inc similarity index 100% rename from scripting/1.10/include/adminmenu.inc rename to scripting/latest/include/adminmenu.inc diff --git a/scripting/1.10/include/adt.inc b/scripting/latest/include/adt.inc similarity index 100% rename from scripting/1.10/include/adt.inc rename to scripting/latest/include/adt.inc diff --git a/scripting/1.10/include/adt_array.inc b/scripting/latest/include/adt_array.inc similarity index 90% rename from scripting/1.10/include/adt_array.inc rename to scripting/latest/include/adt_array.inc index c8fd919..ad9e252 100644 --- a/scripting/1.10/include/adt_array.inc +++ b/scripting/latest/include/adt_array.inc @@ -74,7 +74,7 @@ methodmap ArrayList < Handle { // Clones an array, returning a new handle with the same size and data. // This should NOT be confused with CloneHandle. This is a completely new - // handle with the same data but no relation to the original. It should + // handle with the same data but no relation to the original. It should be // closed when no longer needed. // // @return New handle to the cloned array object @@ -129,9 +129,11 @@ methodmap ArrayList < Handle { // @param index Index in the array. // @param buffer Buffer to copy to. // @param maxlength Maximum size of the buffer. + // @param block Optionally specify which block to read from + // (useful if the blocksize > 0). // @return Number of characters copied. // @error Invalid index. - public native int GetString(int index, char[] buffer, int maxlength); + public native int GetString(int index, char[] buffer, int maxlength, int block=0); // Retrieves an array of cells from an array. // @@ -139,9 +141,11 @@ methodmap ArrayList < Handle { // @param buffer Buffer to store the array in. // @param size If not set, assumes the buffer size is equal to the // blocksize. Otherwise, the size passed is used. + // @param block Optionally specify which block to read from + // (useful if the blocksize > 0). // @return Number of cells copied. // @error Invalid index. - public native int GetArray(int index, any[] buffer, int size=-1); + public native int GetArray(int index, any[] buffer, int size=-1, int block=0); // Sets a cell value in an array. // @@ -157,9 +161,13 @@ methodmap ArrayList < Handle { // // @param index Index in the array. // @param value String value to set. + // @param size If not set, assumes the buffer size is equal to the + // blocksize. Otherwise, the size passed is used. + // @param block Optionally specify which block to write to + // (useful if the blocksize > 0). // @return Number of characters copied. // @error Invalid index. - public native void SetString(int index, const char[] value); + public native int SetString(int index, const char[] value, int size=-1, int block=0); // Sets an array of cells in an array. // @@ -167,9 +175,11 @@ methodmap ArrayList < Handle { // @param values Array to copy. // @param size If not set, assumes the buffer size is equal to the // blocksize. Otherwise, the size passed is used. + // @param block Optionally specify which block to write to + // (useful if the blocksize > 0). // @return Number of cells copied. // @error Invalid index. - public native void SetArray(int index, const any[] values, int size=-1); + public native int SetArray(int index, const any[] values, int size=-1, int block=0); // Shifts an array up. All array contents after and including the given // index are shifted up by one, and the given index is then "free." @@ -198,8 +208,9 @@ methodmap ArrayList < Handle { // the string cannot be located, -1 will be returned. // // @param item String to search for + // @param block Optionally which block to search in // @return Array index, or -1 on failure - public native int FindString(const char[] item); + public native int FindString(const char[] item, int block=0); // Returns the index for the first occurrence of the provided value. If the // value cannot be located, -1 will be returned. @@ -349,10 +360,12 @@ native any GetArrayCell(Handle array, int index, int block=0, bool asChar=false) * @param index Index in the array. * @param buffer Buffer to copy to. * @param maxlength Maximum size of the buffer. + * @param block Optionally specify which block to read from + * (useful if the blocksize > 0). * @return Number of characters copied. * @error Invalid Handle or invalid index. */ -native int GetArrayString(Handle array, int index, char[] buffer, int maxlength); +native int GetArrayString(Handle array, int index, char[] buffer, int maxlength, int block=0); /** * Retrieves an array of cells from an array. @@ -362,10 +375,12 @@ native int GetArrayString(Handle array, int index, char[] buffer, int maxlength) * @param buffer Buffer to store the array in. * @param size If not set, assumes the buffer size is equal to the * blocksize. Otherwise, the size passed is used. + * @param block Optionally specify which block to read from + * (useful if the blocksize > 0). * @return Number of cells copied. * @error Invalid Handle or invalid index. */ -native int GetArrayArray(Handle array, int index, any[] buffer, int size=-1); +native int GetArrayArray(Handle array, int index, any[] buffer, int size=-1, int block=0); /** * Sets a cell value in an array. @@ -386,10 +401,14 @@ native void SetArrayCell(Handle array, int index, any value, int block=0, bool a * @param array Array Handle. * @param index Index in the array. * @param value String value to set. + * @param size If not set, assumes the buffer size is equal to the + * blocksize. Otherwise, the size passed is used. + * @param block Optionally specify which block to write to + * (useful if the blocksize > 0). * @return Number of characters copied. * @error Invalid Handle or invalid index. */ -native int SetArrayString(Handle array, int index, const char[] value); +native int SetArrayString(Handle array, int index, const char[] value, int size=-1, int block=0); /** * Sets an array of cells in an array. @@ -399,10 +418,12 @@ native int SetArrayString(Handle array, int index, const char[] value); * @param values Array to copy. * @param size If not set, assumes the buffer size is equal to the * blocksize. Otherwise, the size passed is used. + * @param block Optionally specify which block to write to + * (useful if the blocksize > 0). * @return Number of cells copied. * @error Invalid Handle or invalid index. */ -native int SetArrayArray(Handle array, int index, const any[] values, int size=-1); +native int SetArrayArray(Handle array, int index, const any[] values, int size=-1, int block=0); /** * Shifts an array up. All array contents after and including the given @@ -442,10 +463,11 @@ native void SwapArrayItems(Handle array, int index1, int index2); * * @param array Array Handle. * @param item String to search for + * @param block Optionally which block to search in * @return Array index, or -1 on failure * @error Invalid Handle */ -native int FindStringInArray(Handle array, const char[] item); +native int FindStringInArray(Handle array, const char[] item, int block=0); /** * Returns the index for the first occurrence of the provided value. If the value diff --git a/scripting/1.10/include/adt_stack.inc b/scripting/latest/include/adt_stack.inc similarity index 83% rename from scripting/1.10/include/adt_stack.inc rename to scripting/latest/include/adt_stack.inc index 9be8857..c1cd914 100644 --- a/scripting/1.10/include/adt_stack.inc +++ b/scripting/latest/include/adt_stack.inc @@ -54,6 +54,17 @@ methodmap ArrayStack < Handle // new Array[X][32] public native ArrayStack(int blocksize=1); + // Clears a stack of all entries. + public native void Clear(); + + // Clones an stack, returning a new handle with the same size and data. + // This should NOT be confused with CloneHandle. This is a completely new + // handle with the same data but no relation to the original. It should + // closed when no longer needed. + // + // @return New handle to the cloned stack object + public native ArrayStack Clone(); + // Pushes a value onto the end of the stack, adding a new index. // // This may safely be used even if the stack has a blocksize @@ -84,19 +95,37 @@ methodmap ArrayStack < Handle // @param block Optionally specify which block to read from // (useful if the blocksize > 0). // @param asChar Optionally read as a byte instead of a cell. - // @return True on success, false if the stack is empty. + // @return Value popped from the stack. // @error The stack is empty. public native any Pop(int block=0, bool asChar=false); + // Reads a cell value from a stack without removing it. + // + // @param block Optionally specify which block to read from + // (useful if the blocksize > 0). + // @param asChar Optionally read as a byte instead of a cell. + // @return Value read from the stack. + // @error The stack is empty. + public native any Top(int block=0, bool asChar=false); + // Pops a string value from a stack. // // @param buffer Buffer to store string. // @param maxlength Maximum size of the buffer. - // @oaram written Number of characters written to buffer, not including + // @param written Number of characters written to buffer, not including // the null terminator. // @error The stack is empty. public native void PopString(char[] buffer, int maxlength, int &written = 0); + // Reads a string value from a stack without removing it. + // + // @param buffer Buffer to store string. + // @param maxlength Maximum size of the buffer. + // @param written Number of characters written to buffer, not including + // the null terminator. + // @error The stack is empty. + public native void TopString(char[] buffer, int maxlength, int &written = 0); + // Pops an array of cells from a stack. // // @param buffer Buffer to store the array in. @@ -105,6 +134,14 @@ methodmap ArrayStack < Handle // @error The stack is empty. public native void PopArray(any[] buffer, int size=-1); + // Reads an array of cells from a stack without removing it. + // + // @param buffer Buffer to store the array in. + // @param size If not set, assumes the buffer size is equal to the + // blocksize. Otherwise, the size passed is used. + // @error The stack is empty. + public native void TopArray(any[] buffer, int size=-1); + // Returns true if the stack is empty, false otherwise. property bool Empty { public native get(); @@ -114,6 +151,10 @@ methodmap ArrayStack < Handle property int BlockSize { public native get(); } + + property int Length { + public native get(); + } }; /** diff --git a/scripting/1.10/include/adt_trie.inc b/scripting/latest/include/adt_trie.inc similarity index 95% rename from scripting/1.10/include/adt_trie.inc rename to scripting/latest/include/adt_trie.inc index 2d262c4..9e9eb34 100644 --- a/scripting/1.10/include/adt_trie.inc +++ b/scripting/latest/include/adt_trie.inc @@ -52,6 +52,14 @@ methodmap StringMap < Handle // The StringMap must be freed via delete or CloseHandle(). public native StringMap(); + // Clones a string map, returning a new handle with the same size and data. + // This should NOT be confused with CloneHandle. This is a completely new + // handle with the same data but no relation to the original. It should be + // closed when no longer needed with delete or CloseHandle(). + // + // @return New handle to the cloned string map + public native StringMap Clone(); + // Sets a value in a hash map, either inserting a new entry or replacing an old one. // // @param key Key string. @@ -87,7 +95,6 @@ methodmap StringMap < Handle // Retrieves an array in a Map. // - // @param map Map Handle. // @param key Key string. // @param array Buffer to store array. // @param max_size Maximum size of array buffer. @@ -106,6 +113,12 @@ methodmap StringMap < Handle // as a value or array (not a string). public native bool GetString(const char[] key, char[] value, int max_size, int &size=0); + // Checks whether a key is present in a Map. + // + // @param key Key string. + // @return True if the key has been found, else false. + public native bool ContainsKey(const char[] key); + // Removes a key entry from a Map. // // @param key Key string. diff --git a/scripting/1.10/include/autoexecconfig_kacr.inc b/scripting/latest/include/autoexecconfig_kacr.inc similarity index 98% rename from scripting/1.10/include/autoexecconfig_kacr.inc rename to scripting/latest/include/autoexecconfig_kacr.inc index 99333e6..9caa758 100644 --- a/scripting/1.10/include/autoexecconfig_kacr.inc +++ b/scripting/latest/include/autoexecconfig_kacr.inc @@ -1,6 +1,6 @@ /** * AutoExecConfig for Kigen AC Redux - * (A slightly modified Version to fit our Needs) + * (A slightly modified version to fit our needs) * * Copyright (C) 2013-2017 Impact * @@ -217,7 +217,7 @@ stock ConVar AutoExecConfig_CreateConVar(const char[] name, const char[] default // We only add this convar if it doesn't exist, or the file doesn't exist and it should be auto-generated if(g_iLastFindResult == AUTOEXEC_FIND_NOT_FOUND || (g_iLastFindResult == AUTOEXEC_FIND_FILE_NOT_FOUND && g_bCreateFile)) - g_iLastAppendResult = AutoExecConfig_AppendValue(name, defaultValue, description, flags, hasMin, min, hasMax, max); + g_iLastAppendResult = AutoExecConfig_AppendValue(name, defaultValue, description, hasMin, min, hasMax, max); } // Create the convar @@ -286,14 +286,13 @@ stock static int AutoExecConfig_FormatFileName(char[] buffer, int size, char[] f * @param name Name of new convar. * @param defaultValue String containing the default value of new convar. * @param description Optional description of the convar. - * @param flags Optional bitstring of flags determining how the convar should be handled. See FCVAR_* constants for more details. * @param hasMin Optional boolean that determines if the convar has a minimum value. * @param min Minimum floating point value that the convar can have if hasMin is true. * @param hasMax Optional boolean that determines if the convar has a maximum value. * @param max Maximum floating point value that the convar can have if hasMax is true. * @return Returns one of the AUTOEXEC_APPEND values */ -stock int AutoExecConfig_AppendValue(const char[] name, const char[] defaultValue, const char[] description, int flags, bool hasMin, float min, bool hasMax, float max) +stock int AutoExecConfig_AppendValue(const char[] name, const char[] defaultValue, const char[] description, bool hasMin, float min, bool hasMax, float max) { if(strlen(g_sConfigFile) < 1) // No config set return AUTOEXEC_NO_CONFIG; diff --git a/scripting/1.10/include/banning.inc b/scripting/latest/include/banning.inc similarity index 100% rename from scripting/1.10/include/banning.inc rename to scripting/latest/include/banning.inc diff --git a/scripting/1.10/include/basecomm.inc b/scripting/latest/include/basecomm.inc similarity index 100% rename from scripting/1.10/include/basecomm.inc rename to scripting/latest/include/basecomm.inc diff --git a/scripting/1.10/include/bitbuffer.inc b/scripting/latest/include/bitbuffer.inc similarity index 100% rename from scripting/1.10/include/bitbuffer.inc rename to scripting/latest/include/bitbuffer.inc diff --git a/scripting/1.10/include/clientprefs.inc b/scripting/latest/include/clientprefs.inc similarity index 84% rename from scripting/1.10/include/clientprefs.inc rename to scripting/latest/include/clientprefs.inc index 218d033..538145e 100644 --- a/scripting/1.10/include/clientprefs.inc +++ b/scripting/latest/include/clientprefs.inc @@ -74,6 +74,9 @@ enum CookieMenuAction CookieMenuAction_SelectOption = 1 }; +#define COOKIE_MAX_NAME_LENGTH 30 /**< Maximum Cookie name length. */ +#define COOKIE_MAX_DESCRIPTION_LENGTH 255 /**< Maximum Cookie description length. */ + /** * Cookie Menu Callback prototype * @@ -119,7 +122,8 @@ methodmap Cookie < Handle { // no longer needed. // // @param name Name of cookie to find. - // @return A handle to the cookie if it is found. INVALID_HANDLE otherwise. + // @return A handle to the cookie if it is found, null otherwise. + public static native Cookie Find(const char[] name); // Set the value of a Client preference cookie. @@ -128,6 +132,31 @@ methodmap Cookie < Handle { // @param value String value to set. // @error Invalid cookie handle or invalid client index. public native void Set(int client, const char[] value); + + // Set the integer value of a Client preference cookie. + // + // @param client Client index. + // @param value Integer value to set. + // @error Invalid cookie handle or invalid client index. + public void SetInt(int client, int value) { + char sValue[12]; + IntToString(value, sValue, sizeof(sValue)); + + this.Set(client, sValue); + } + + // Set the float value of a Client preference cookie. + // + // @param client Client index. + // @param value Float value to set. + // @error Invalid cookie handle or invalid client index. + public void SetFloat(int client, float value) { + char sValue[32]; + FloatToString(value, sValue, sizeof(sValue)); + + this.Set(client, sValue); + } + // Retrieve the value of a Client preference cookie. // @@ -137,7 +166,43 @@ methodmap Cookie < Handle { // @error Invalid cookie handle or invalid client index. public native void Get(int client, char[] buffer, int maxlen); - // Sets the value of a Client preference cookie based on an authID string. + // Retrieve the integer value of a Client preference cookie. + // + // @param client Client index. + // @return Integer value of cookie + // @error Invalid cookie handle or invalid client index. + public int GetInt(int client, int defaultValue = 0) + { + char buffer[12]; + this.Get(client, buffer, sizeof(buffer)); + + int value; + if (!StringToIntEx(buffer, value)) + { + value = defaultValue; + } + return value; + } + + // Retrieve the float value of a Client preference cookie. + // + // @param client Client index. + // @return Float value of cookie + // @error Invalid cookie handle or invalid client index. + public float GetFloat(int client, float defaultValue = 0.0) + { + char buffer[32]; + this.Get(client, buffer, sizeof(buffer)); + + float value; + if (!StringToFloatEx(buffer, value)) + { + value = defaultValue; + } + return value; + } + + // Set the value of a Client preference cookie based on an authID string. // // @param authID String Auth/STEAM ID of player to set. // @param value String value to set. @@ -183,7 +248,7 @@ methodmap Cookie < Handle { * exists, a handle to it will still be returned. * @error Cookie name is blank. */ -native Handle RegClientCookie(const char[] name, const char[] description, CookieAccess access); +native Cookie RegClientCookie(const char[] name, const char[] description, CookieAccess access); /** * Searches for a Client preference cookie. @@ -192,9 +257,10 @@ native Handle RegClientCookie(const char[] name, const char[] description, Cooki * no longer needed. * * @param name Name of cookie to find. - * @return A handle to the cookie if it is found. INVALID_HANDLE otherwise. + * @return A handle to the cookie if it is found, null otherwise. + */ -native Handle FindClientCookie(const char[] name); +native Cookie FindClientCookie(const char[] name); /** * Set the value of a Client preference cookie. @@ -326,7 +392,11 @@ public Extension __ext_cprefs = { name = "Client Preferences", file = "clientprefs.ext", +#if defined AUTOLOAD_EXTENSIONS autoload = 1, +#else + autoload = 0, +#endif #if defined REQUIRE_EXTENSIONS required = 1, #else diff --git a/scripting/1.10/include/clients.inc b/scripting/latest/include/clients.inc similarity index 95% rename from scripting/1.10/include/clients.inc rename to scripting/latest/include/clients.inc index 9a2946a..02ccba8 100644 --- a/scripting/1.10/include/clients.inc +++ b/scripting/latest/include/clients.inc @@ -69,8 +69,9 @@ enum AuthIdType * MAXPLAYERS is a hardcoded value as an upper limit. MaxClients changes based on the server. */ -#define MAXPLAYERS 65 /**< Maximum number of players SourceMod supports */ +#define MAXPLAYERS 101 /**< Maximum number of players SourceMod supports */ #define MAX_NAME_LENGTH 128 /**< Maximum buffer required to store a client name */ +#define MAX_AUTHID_LENGTH 64 /**< Maximum buffer required to store any AuthID type */ public const int MaxClients; /**< Maximum number of players the server supports (dynamic) */ @@ -214,6 +215,18 @@ forward Action OnClientPreAdminCheck(int client); */ forward void OnClientPostAdminFilter(int client); +/** + * Called directly before the server enters hibernation. + * This is your last chance to do anything in the plugin before + * hibernation occurs, as SV_Frame will no longer be called. + */ +forward void OnServerEnterHibernation(); + +/** + * Called directly before the server leaves hibernation. + */ +forward void OnServerExitHibernation(); + /** * Called once a client is authorized and fully in-game, and * after all post-connection authorizations have been performed. @@ -225,6 +238,14 @@ forward void OnClientPostAdminFilter(int client); */ forward void OnClientPostAdminCheck(int client); +/** + * Called when the language was received from the player. + * + * @param client Client index. + * @param language Language number. + */ +forward void OnClientLanguageChanged(int client, int language); + /** * This function is deprecated. Use the MaxClients variable instead. * @@ -347,6 +368,7 @@ native int GetClientUserId(int client); * * @param client Player index. * @return True if player is connected to the server, false otherwise. + * @error Invalid client index. */ native bool IsClientConnected(int client); @@ -384,6 +406,7 @@ stock bool IsPlayerInGame(int client) * * @param client Player index. * @return True if player has been authenticated, false otherwise. + * @error Invalid client index. */ native bool IsClientAuthorized(int client); @@ -392,6 +415,7 @@ native bool IsClientAuthorized(int client); * * @param client Player index. * @return True if player is a fake client, false otherwise. + * @error Invalid client index, or client not connected. */ native bool IsFakeClient(int client); @@ -400,6 +424,7 @@ native bool IsFakeClient(int client); * * @param client Player index. * @return True if player is the SourceTV bot, false otherwise. + * @error Invalid client index, or client not connected. */ native bool IsClientSourceTV(int client); @@ -408,6 +433,7 @@ native bool IsClientSourceTV(int client); * * @param client Player index. * @return True if player is the Replay bot, false otherwise. + * @error Invalid client index, or client not connected. */ native bool IsClientReplay(int client); @@ -416,6 +442,7 @@ native bool IsClientReplay(int client); * * @param client Player index. * @return True if player is an observer, false otherwise. + * @error Invalid client index, client not in game, or no mod support. */ native bool IsClientObserver(int client); @@ -496,6 +523,7 @@ native void RemoveUserFlags(int client, AdminFlag ...); * * @param client Player's index. * @param flags Bitstring of flags to set on client. + * @error Invalid client index, or client not connected. */ native void SetUserFlagBits(int client, int flags); @@ -548,6 +576,7 @@ native void NotifyPostAdminCheck(int client); * * @param name Name to use. * @return Client index on success, 0 otherwise. + * @error No map is active. */ native int CreateFakeClient(const char[] name); @@ -791,7 +820,7 @@ native void KickClientEx(int client, const char[] format="", any ...); * * @param client Client index. * @param team Mod-specific team index. - * @error Invalid client index, client not connected, or lack of + * @error Invalid client index, client not in game, or lack of * mod support. */ native void ChangeClientTeam(int client, int team); diff --git a/scripting/1.10/include/commandfilters.inc b/scripting/latest/include/commandfilters.inc similarity index 94% rename from scripting/1.10/include/commandfilters.inc rename to scripting/latest/include/commandfilters.inc index 714502b..de8ebb1 100644 --- a/scripting/1.10/include/commandfilters.inc +++ b/scripting/latest/include/commandfilters.inc @@ -132,16 +132,23 @@ stock void ReplyToTargetError(int client, int reason) } } +#define FEATURECAP_MULTITARGETFILTER_CLIENTPARAM "SourceMod MultiTargetFilter ClientParam" + /** * Adds clients to a multi-target filter. * * @param pattern Pattern name. * @param clients Array to fill with unique, valid client indexes. + * @param client Client that triggered this filter. * @return True if pattern was recognized, false otherwise. + * + * @note To see if the client param is available, use FeatureType_Capability and FEATURECAP_MULTITARGETFILTER_CLIENTPARAM. */ typeset MultiTargetFilter { function bool (const char[] pattern, Handle clients); function bool (const char[] pattern, ArrayList clients); + function bool (const char[] pattern, Handle clients, int client); + function bool (const char[] pattern, ArrayList clients, int client); } /** diff --git a/scripting/1.10/include/commandline.inc b/scripting/latest/include/commandline.inc similarity index 100% rename from scripting/1.10/include/commandline.inc rename to scripting/latest/include/commandline.inc diff --git a/scripting/1.10/include/console.inc b/scripting/latest/include/console.inc similarity index 90% rename from scripting/1.10/include/console.inc rename to scripting/latest/include/console.inc index 3b0693c..80e9086 100644 --- a/scripting/1.10/include/console.inc +++ b/scripting/latest/include/console.inc @@ -273,6 +273,24 @@ native ReplySource SetCmdReplySource(ReplySource source); */ native bool IsChatTrigger(); +/** + * Get the list of characters used for public chat triggers. + * + * @param buffer Buffer to use for storing the string. + * @param maxlength Maximum length of the buffer. + * @return Length of string written to buffer. + */ +native int GetPublicChatTriggers(char[] buffer, int maxlength); + +/** + * Get the list of characters used for silent chat triggers. + * + * @param buffer Buffer to use for storing the string. + * @param maxlength Maximum length of the buffer. + * @return Length of string written to buffer. + */ +native int GetSilentChatTriggers(char[] buffer, int maxlength); + /** * Displays usage of an admin command to users depending on the * setting of the sm_show_activity cvar. All users receive a message @@ -423,6 +441,72 @@ native int GetCmdArgs(); */ native int GetCmdArg(int argnum, char[] buffer, int maxlength); +/** + * Retrieves a numeric command argument given its index, from the current + * console or server command. Will return 0 if the argument can not be + * parsed as a number. Use GetCmdArgIntEx to handle that explicitly. + * + * @param argnum Argument number to retrieve. + * @return Value of the command argument. + */ +stock int GetCmdArgInt(int argnum) +{ + char str[12]; + GetCmdArg(argnum, str, sizeof(str)); + + return StringToInt(str); +} + +/** + * Retrieves a numeric command argument given its index, from the current + * console or server command. Returns false if the argument can not be + * completely parsed as an integer. + * + * @param argnum Argument number to retrieve. + * @param value Populated with the value of the command argument. + * @return Whether the argument was entirely a numeric value. + */ +stock bool GetCmdArgIntEx(int argnum, int &value) +{ + char str[12]; + int len = GetCmdArg(argnum, str, sizeof(str)); + + return StringToIntEx(str, value) == len && len > 0; +} + +/** + * Retrieves a float command argument given its index, from the current + * console or server command. Will return 0.0 if the argument can not be + * parsed as a number. Use GetCmdArgFloatEx to handle that explicitly. + * + * @param argnum Argument number to retrieve. + * @return Value of the command argument. + */ +stock float GetCmdArgFloat(int argnum) +{ + char str[18]; + GetCmdArg(argnum, str, sizeof(str)); + + return StringToFloat(str); +} + +/** + * Retrieves a float command argument given its index, from the current + * console or server command. Returns false if the argument can not be + * completely parsed as a floating point. + * + * @param argnum Argument number to retrieve. + * @param value Populated with the value of the command argument. + * @return Whether the argument was entirely a floating point value. + */ +stock bool GetCmdArgFloatEx(int argnum, float &value) +{ + char str[18]; + int len = GetCmdArg(argnum, str, sizeof(str)); + + return StringToFloatEx(str, value) == len && len > 0; +} + /** * Retrieves the entire command argument string in one lump from the current * console or server command. @@ -471,12 +555,29 @@ methodmap CommandIterator < Handle { public native get(); } - // Retrieves the command's default flags + // This property is deprecated. Use .AdminFlags instead. + // Retrieves the command's effective admin flags. // // @error Invalid iterator position. + // @deprecated Use .AdminFlags instead. + #pragma deprecated Use .AdminFlags instead. property int Flags { public native get(); } + + // Retrieves the command's effective admin flags. + // + // @error Invalid iterator position. + property int AdminFlags { + public native get(); + } + + // Retrieves the command's convar flags. + // + // @error Invalid iterator position. + property int ConVarFlags { + public native get(); + } } /** diff --git a/scripting/1.10/include/convars.inc b/scripting/latest/include/convars.inc similarity index 98% rename from scripting/1.10/include/convars.inc rename to scripting/latest/include/convars.inc index 7bc9f77..907ed4d 100644 --- a/scripting/1.10/include/convars.inc +++ b/scripting/latest/include/convars.inc @@ -49,6 +49,7 @@ enum ConVarBounds */ enum ConVarQueryResult { + ConVarQuery_Cancelled = -1, //< Client disconnected during query */ ConVarQuery_Okay = 0, //< Retrieval of client convar value was successful. */ ConVarQuery_NotFound, //< Client convar was not found. */ ConVarQuery_NotValid, //< A console command with the same name was found, but there is no convar. */ @@ -121,6 +122,11 @@ methodmap ConVar < Handle public native set(int flags); } + // Retrieves the plugin handle of the convar's creator + property Handle Plugin { + public native get(); + } + // Sets the boolean value of a console variable. // // Note: The replicate and notify params are only relevant for the @@ -165,7 +171,6 @@ methodmap ConVar < Handle // Retrieves the string value of a console variable. // - // @param convar Handle to the convar. // @param value Buffer to store the value of the convar. // @param maxlength Maximum length of string buffer. public native void GetString(char[] value, int maxlength); @@ -224,6 +229,12 @@ methodmap ConVar < Handle // @param maxlength Maximum length of string buffer. public native void GetName(char[] name, int maxlength); + // Retrieves the description of a console variable. + // + // @param buffer Buffer to store the description of the convar. + // @param maxlength Maximum length of string buffer. + public native void GetDescription(char[] buffer, int maxlength); + // Replicates a convar value to a specific client. This does not change the actual convar value. // // @param client Client index @@ -239,7 +250,6 @@ methodmap ConVar < Handle // Removes a hook for when a console variable's value is changed. // - // @param convar Handle to the convar. // @param callback An OnConVarChanged function pointer. // @error No active hook on convar. public native void RemoveChangeHook(ConVarChanged callback); diff --git a/scripting/1.10/include/core.inc b/scripting/latest/include/core.inc similarity index 99% rename from scripting/1.10/include/core.inc rename to scripting/latest/include/core.inc index 8fed55c..382ead0 100644 --- a/scripting/1.10/include/core.inc +++ b/scripting/latest/include/core.inc @@ -38,7 +38,7 @@ #include /** If this gets changed, you need to update Core's check. */ -#define SOURCEMOD_PLUGINAPI_VERSION 5 +#define SOURCEMOD_PLUGINAPI_VERSION 7 struct PlVers { diff --git a/scripting/1.10/include/cstrike.inc b/scripting/latest/include/cstrike.inc similarity index 94% rename from scripting/1.10/include/cstrike.inc rename to scripting/latest/include/cstrike.inc index 4894840..c3b5358 100644 --- a/scripting/1.10/include/cstrike.inc +++ b/scripting/latest/include/cstrike.inc @@ -45,6 +45,8 @@ #define CS_SLOT_KNIFE 2 /**< Knife slot. */ #define CS_SLOT_GRENADE 3 /**< Grenade slot (will only return one grenade). */ #define CS_SLOT_C4 4 /**< C4 slot. */ +#define CS_SLOT_BOOST 11 /**< Slot for healthshot and shield (will only return one weapon/item). */ +#define CS_SLOT_UTILITY 12 /**< Slot for tablet. */ #define CS_DMG_HEADSHOT (1 << 30) /**< Headshot */ @@ -156,6 +158,7 @@ enum CSWeaponID CSWeapon_BUMPMINE = 85, CSWeapon_MAX_WEAPONS_NO_KNIFES, // Max without the knife item defs, useful when treating all knives as a regular knife. CSWeapon_BAYONET = 500, + CSWeapon_KNIFE_CLASSIC = 503, CSWeapon_KNIFE_FLIP = 505, CSWeapon_KNIFE_GUT = 506, CSWeapon_KNIFE_KARAMBIT = 507, @@ -193,8 +196,10 @@ forward Action CS_OnBuyCommand(int client, const char[] weapon); * * @param client Client index * @param weaponIndex Weapon index + * @param donated Was weapon donated (Bought from a buy menu while ctrl was pressed) + * (Note: This param is for CS:GO only, will be false on other games) */ -forward Action CS_OnCSWeaponDrop(int client, int weaponIndex); +forward Action CS_OnCSWeaponDrop(int client, int weaponIndex, bool donated); /** * Called when game retrieves a weapon's price for a player. @@ -435,10 +440,19 @@ native CSWeaponID CS_ItemDefIndexToID(int iDefIndex); * @return Returns item definition index value for the weapon id. * @error Invalid weapon id. * - * @note In most cases the item deinition index will be the id. Works for CS:GO ONLY. + * @note In most cases the item definition index will be the id. Works for CS:GO ONLY. */ native int CS_WeaponIDToItemDefIndex(CSWeaponID id); +/** + * Returns the loadout slot based on the CSWeaponID. (CS:GO only) + * + * @param id CSWeaponID to get the loadout slot for. + * @return Returns loadout slot value for the weapon id. + * @error Invalid weapon id. + */ +native int CS_WeaponIDToLoadoutSlot(CSWeaponID id); + /** * Do not edit below this line! */ @@ -479,5 +493,6 @@ public void __ext_cstrike_SetNTVOptional() MarkNativeAsOptional("CS_UpdateClientModel"); MarkNativeAsOptional("CS_ItemDefIndexToID"); MarkNativeAsOptional("CS_WeaponIDToItemDefIndex"); + MarkNativeAsOptional("CS_WeaponIDToLoadoutSlot"); } #endif diff --git a/scripting/1.10/include/datapack.inc b/scripting/latest/include/datapack.inc similarity index 87% rename from scripting/1.10/include/datapack.inc rename to scripting/latest/include/datapack.inc index b3d4e89..ae8b4d9 100644 --- a/scripting/1.10/include/datapack.inc +++ b/scripting/latest/include/datapack.inc @@ -71,6 +71,20 @@ methodmap DataPack < Handle // @param insert Determines whether mid-pack writes will insert instead of overwrite. public native void WriteFunction(Function fktptr, bool insert = false); + // Packs an array of cells into a data pack. + // + // @param array Array to add. + // @param count Number of elements + // @param insert Determines whether mid-pack writes will insert instead of overwrite. + public native void WriteCellArray(const any[] array, int count, bool insert = false); + + // Packs an array of floats into a data pack. + // + // @param array Array to add. + // @param count Number of elements + // @param insert Determines whether mid-pack writes will insert instead of overwrite. + public native void WriteFloatArray(const float[] array, int count, bool insert = false); + // Reads a cell from a data pack. // // @return A cell at this position @@ -92,6 +106,18 @@ methodmap DataPack < Handle // @return Function pointer. public native Function ReadFunction(); + // Reads an array of cells a data pack. + // + // @param buffer Destination buffer. + // @param count Maximum length of output buffer. + public native void ReadCellArray(any[] buffer, int count); + + // Reads an array of floats from a data pack. + // + // @param buffer Destination buffer. + // @param count Maximum length of output buffer. + public native void ReadFloatArray(float[] buffer, int count); + // Resets the position in a data pack. // // @param clear If true, clears the contained data. diff --git a/scripting/1.10/include/dbi.inc b/scripting/latest/include/dbi.inc similarity index 97% rename from scripting/1.10/include/dbi.inc rename to scripting/latest/include/dbi.inc index e43a23c..c03f737 100644 --- a/scripting/1.10/include/dbi.inc +++ b/scripting/latest/include/dbi.inc @@ -162,7 +162,7 @@ methodmap DBResultSet < Handle // Fetches a row from the current result set. This must be // successfully called before any results are fetched. // - // If this function fails, _MoreResults can be used to + // If this function fails, MoreRows can be used to // tell if there was an error or the result set is finished. // // @return True if a row was fetched, false otherwise. @@ -360,7 +360,7 @@ methodmap Database < Handle // // Example: "utf8", "latin1" // - // @param characterset The character set string to change to. + // @param charset The character set string to change to. // @return True, if character set was changed, false otherwise. public native bool SetCharset(const char[] charset); @@ -374,8 +374,8 @@ methodmap Database < Handle // the database's character set. // // NOTE: SourceMod only guarantees properly escaped strings when the query - // encloses the string in ''. While drivers tend to allow " instead, the string - // may be not be escaped (for example, on SQLite)! + // encloses the string in single quotes. While drivers tend to allow double + // quotes (") instead, the string may be not be escaped (for example, on SQLite)! // // @param string String to quote. // @param buffer Buffer to store quoted string in. @@ -393,7 +393,7 @@ methodmap Database < Handle // @param format Formatting rules. // @param ... Variable number of format parameters. // @return Number of cells written. - public native int Format(const char[] buffer, int maxlength, const char[] format, any ...); + public native int Format(char[] buffer, int maxlength, const char[] format, any ...); // Returns whether a database is the same connection as another database. public native bool IsSameConnection(Database other); @@ -547,7 +547,7 @@ native bool SQL_CheckConfig(const char[] name); * string to return the default driver. * @return Driver Handle, or INVALID_HANDLE on failure. */ -native Handle SQL_GetDriver(const char[] name=""); +native DBDriver SQL_GetDriver(const char[] name=""); /** * Reads the driver of an opened database. @@ -557,7 +557,7 @@ native Handle SQL_GetDriver(const char[] name=""); * @param ident_length Maximum length of the buffer. * @return Driver Handle. */ -native Handle SQL_ReadDriver(Handle database, char[] ident="", int ident_length=0); +native DBDriver SQL_ReadDriver(Handle database, char[] ident="", int ident_length=0); /** * Retrieves a driver's identification string. @@ -590,7 +590,7 @@ native void SQL_GetDriverProduct(Handle driver, char[] product, int maxlength); * Example: "utf8", "latin1" * * @param database Database Handle. - * @param characterset The character set string to change to. + * @param charset The character set string to change to. * @return True, if character set was changed, false otherwise. */ native bool SQL_SetCharset(Handle database, const char[] charset); @@ -635,8 +635,8 @@ native bool SQL_GetError(Handle hndl, char[] error, int maxlength); * the database's character set. * * NOTE: SourceMod only guarantees properly escaped strings when the query - * encloses the string in ''. While drivers tend to allow " instead, the string - * may be not be escaped (for example, on SQLite)! + * encloses the string in single quotes. While drivers tend to allow double + * quotes (") instead, the string may be not be escaped (for example, on SQLite)! * * @param database A database Handle. * @param string String to quote. @@ -664,7 +664,7 @@ native bool SQL_EscapeString(Handle database, * @param ... Variable number of format parameters. * @return Number of cells written. */ -native int SQL_FormatQuery(Handle database, const char[] buffer, int maxlength, const char[] format, any ...); +native int SQL_FormatQuery(Handle database, char[] buffer, int maxlength, const char[] format, any ...); /** * This function is deprecated. Use SQL_EscapeString instead. @@ -797,7 +797,7 @@ native bool SQL_FieldNameToNum(Handle query, const char[] name, int &field); * Fetches a row from the current result set. This must be * successfully called before any results are fetched. * - * If this function fails, SQL_MoreResults() can be used to + * If this function fails, SQL_MoreRows() can be used to * tell if there was an error or the result set is finished. * * @param query A query (or statement) Handle. @@ -959,6 +959,10 @@ native bool SQL_Execute(Handle statement); * If the lock cannot be acquired, the main thread will pause until the * threaded operation has concluded. * + * Care should be taken to not lock an already-locked database. Internally, + * lock calls are nested recursively and must be paired with an equal amount + * of unlocks to be undone. This behaviour should not be relied on. + * * @param database A database Handle. * @error Invalid database Handle. */ diff --git a/scripting/latest/include/dhooks.inc b/scripting/latest/include/dhooks.inc new file mode 100644 index 0000000..99f17e7 --- /dev/null +++ b/scripting/latest/include/dhooks.inc @@ -0,0 +1,1100 @@ +/** + * vim: set ts=4 sw=4 tw=99 noet : + * ============================================================================= + * SourceMod (C)2021 AlliedModders LLC. All rights reserved. + * ============================================================================= + * + * This file is part of the SourceMod/SourcePawn SDK. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + * + * As a special exception, AlliedModders LLC gives you permission to link the + * code of this program (as well as its derivative works) to "Half-Life 2," the + * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software + * by the Valve Corporation. You must obey the GNU General Public License in + * all respects for all other code used. Additionally, AlliedModders LLC grants + * this exception to all derivative works. AlliedModders LLC defines further + * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), + * or . + * + * Version: $Id$ + */ + +#if defined _dhooks_included +#endinput +#endif +#define _dhooks_included + +// Needed for the SDKFuncConfSource enum. +#include + +#define INVALID_HOOK_ID 0 + +enum ObjectValueType +{ + ObjectValueType_Int = 0, + ObjectValueType_Bool, + ObjectValueType_Ehandle, + ObjectValueType_Float, + ObjectValueType_CBaseEntityPtr, + ObjectValueType_IntPtr, + ObjectValueType_BoolPtr, + ObjectValueType_EhandlePtr, + ObjectValueType_FloatPtr, + ObjectValueType_Vector, + ObjectValueType_VectorPtr, + ObjectValueType_CharPtr, + ObjectValueType_String +}; + +enum ListenType +{ + ListenType_Created, + ListenType_Deleted +}; + +enum ReturnType +{ + ReturnType_Unknown, + ReturnType_Void, + ReturnType_Int, + ReturnType_Bool, + ReturnType_Float, + ReturnType_String, // Note this is a string_t + ReturnType_StringPtr, // Note this is a string_t * + ReturnType_CharPtr, + ReturnType_Vector, + ReturnType_VectorPtr, + ReturnType_CBaseEntity, + ReturnType_Edict +}; + +enum HookParamType +{ + HookParamType_Unknown, + HookParamType_Int, + HookParamType_Bool, + HookParamType_Float, + HookParamType_String, // Note this is a string_t + HookParamType_StringPtr, // Note this is a string_t * + HookParamType_CharPtr, + HookParamType_VectorPtr, + HookParamType_CBaseEntity, + HookParamType_ObjectPtr, + HookParamType_Edict, + HookParamType_Object +}; + +enum ThisPointerType +{ + ThisPointer_Ignore, + ThisPointer_CBaseEntity, + ThisPointer_Address +}; + +enum HookType +{ + HookType_Entity, + HookType_GameRules, + HookType_Raw +}; + +enum CallingConvention +{ + CallConv_CDECL, + CallConv_THISCALL, + CallConv_STDCALL, + CallConv_FASTCALL, +}; + +enum HookMode +{ + Hook_Pre, /**< Callback will be executed BEFORE the original function. */ + Hook_Post /**< Callback will be executed AFTER the original function. */ +}; + +enum MRESReturn +{ + MRES_ChangedHandled = -2, /**< Use changed values and return MRES_Handled */ + MRES_ChangedOverride, /**< Use changed values and return MRES_Override */ + MRES_Ignored, /**< plugin didn't take any action */ + MRES_Handled, /**< plugin did something, but real function should still be called */ + MRES_Override, /**< call real function, but use my return value */ + MRES_Supercede /**< skip real function; use my return value */ +}; + +enum DHookPassFlag +{ + DHookPass_ByVal = (1<<0), /**< Passing by value */ + DHookPass_ByRef = (1<<1), /**< Passing by reference */ + DHookPass_ODTOR = (1<<2), /**< Object has a destructor */ + DHookPass_OCTOR = (1<<3), /**< Object has a constructor */ + DHookPass_OASSIGNOP = (1<<4), /**< Object has an assignment operator */ +}; + +enum DHookRegister +{ + // Don't change the register and use the default for the calling convention. + DHookRegister_Default, + + // 8-bit general purpose registers + DHookRegister_AL, + DHookRegister_CL, + DHookRegister_DL, + DHookRegister_BL, + DHookRegister_AH, + DHookRegister_CH, + DHookRegister_DH, + DHookRegister_BH, + + // 32-bit general purpose registers + DHookRegister_EAX, + DHookRegister_ECX, + DHookRegister_EDX, + DHookRegister_EBX, + DHookRegister_ESP, + DHookRegister_EBP, + DHookRegister_ESI, + DHookRegister_EDI, + + // 128-bit XMM registers + DHookRegister_XMM0, + DHookRegister_XMM1, + DHookRegister_XMM2, + DHookRegister_XMM3, + DHookRegister_XMM4, + DHookRegister_XMM5, + DHookRegister_XMM6, + DHookRegister_XMM7, + + // 80-bit FPU registers + DHookRegister_ST0 +}; + +typeset ListenCB +{ + // Deleted + function void (int entity); + + // Created + function void (int entity, const char[] classname); +}; + +typeset DHookRemovalCB +{ + function void (int hookid); +}; + +typeset DHookCallback +{ + // Function Example: void Ham::Test() with this pointer ignore + function MRESReturn (); + + // Function Example: void Ham::Test() with this pointer passed + function MRESReturn (int pThis); + + // Function Example: void Ham::Test(int cake) with this pointer ignore + function MRESReturn (DHookParam hParams); + + // Function Example: void Ham::Test(int cake) with this pointer passed + function MRESReturn (int pThis, DHookParam hParams); + + // Function Example: int Ham::Test() with this pointer ignore + function MRESReturn (DHookReturn hReturn); + + // Function Example: int Ham::Test() with this pointer passed + function MRESReturn (int pThis, DHookReturn hReturn); + + // Function Example: int Ham::Test(int cake) with this pointer ignore + function MRESReturn (DHookReturn hReturn, DHookParam hParams); + + // Function Example: int Ham::Test(int cake) with this pointer passed + function MRESReturn (int pThis, DHookReturn hReturn, DHookParam hParams); + + // Address NOW + + // Function Example: void Ham::Test() with this pointer passed + function MRESReturn (Address pThis); + + // Function Example: void Ham::Test(int cake) with this pointer passed + function MRESReturn (Address pThis, DHookParam hParams); + + // Function Example: int Ham::Test() with this pointer passed + function MRESReturn (Address pThis, DHookReturn hReturn); + + // Function Example: int Ham::Test(int cake) with this pointer passed + function MRESReturn (Address pThis, DHookReturn hReturn, DHookParam hParams); + +}; + +// Represents the parameters of the hooked function. +methodmap DHookParam < Handle +{ + // Get the value of a parameter. + // Use only for: int, entity, edict, bool or float parameter types. + // + // @param num Parameter number to get, starting at 1. Parameter number 0 returns + // the number of parameters. + // + // @return Value if num greater than 0. If 0 returns parameter count. + // If CBaseEntity returns entity index. + // @error Invalid handle, invalid param number or invalid param type. + public native any Get(int num); + + // Get the value of a vector parameter. + // Use only for: vector or vectorptr parameter types. + // + // @param num Parameter number to get, starting at 1. + // @param vec Vector buffer to store result. + // + // @error Invalid handle, invalid param number or invalid param type. + public native void GetVector(int num, float vec[3]); + + // Get the value of a string parameter. + // Use only for: string, stringptr or charptr parameter types. + // + // @param num Parameter number to get, starting at 1. + // @param buffer String buffer to store result. + // @param size Buffer size. + // + // @error Invalid handle, invalid param number or invalid param type. + public native void GetString(int num, char[] buffer, int size); + + // Set the value of a parameter. + // Use only for: int, entity, edict, bool or float parameter types. + // + // An entity parameter type can be set to NULL using INVALID_ENT_REFERENCE (-1). + // + // The changes are only applied when MRES_ChangedHandled or MRES_ChangedOverride + // is returned in the callback. + // + // @param num Parameter number to set starting at 1. + // @param value Value to set it as (only pass int, bool, float or entity index). + // + // @error Invalid handle, invalid param number or invalid param type. + public native void Set(int num, any value); + + // Set the value of a vector parameter. + // Use only for: vector or vectorptr parameter types. + // + // The changes are only applied when MRES_ChangedHandled or MRES_ChangedOverride + // is returned in the callback. + // + // @param num Parameter number to set, starting at 1. + // @param vec Value to set vector as. + // + // @error Invalid handle, invalid param number or invalid param type. + public native void SetVector(int num, const float vec[3]); + + // Set the value of a string parameter. + // Use only for: string, stringptr or charptr parameter types. + // + // The changes are only applied when MRES_ChangedHandled or MRES_ChangedOverride + // is returned in the callback. + // + // @param num Parameter number to set, starting at 1. + // @param value Value to set string as. + // + // @error Invalid handle, invalid param number or invalid param type. + public native void SetString(int num, const char[] value); + + // Gets an object's variable value. + // + // @param num Parameter number to get, starting at 1. + // @param offset Byte offset within the object to the var to get. + // @param type Type of var it is. + // + // @return Value of the objects var. If EHANDLE type or entity returns entity index. + // @error Invalid handle, invalid param number, invalid param type or invalid Object type. + public native any GetObjectVar(int num, int offset, ObjectValueType type); + + // Gets an object's vector variable value. + // + // @param num Parameter number to get, starting at 1. + // @param offset Byte offset within the object to the var to get. + // @param type Type of var it is. + // @param vec Buffer to store the result vector. + // + // @error Invalid handle, invalid param number, invalid param type or invalid Object type. + public native void GetObjectVarVector(int num, int offset, ObjectValueType type, float vec[3]); + + // Gets an object's string variable value. + // + // @param num Parameter number to get, starting at 1. + // @param offset Byte offset within the object to the var to get. + // @param type Type of var it is. + // @param buffer Buffer to store the result string. + // @param size Size of the buffer. + // + // @error Invalid handle, invalid param number, invalid param type or invalid Object type. + public native void GetObjectVarString(int num, int offset, ObjectValueType type, char[] buffer, int size); + + // Sets an object's variable value. + // + // The changes are only applied when MRES_ChangedHandled or MRES_ChangedOverride + // is returned in the callback. + // + // @param num Parameter number to set, starting at 1. + // @param offset Byte offset within the object to the var to set. + // @param type Type of var it is. + // @param value The value to set the var to. + // + // @error Invalid handle, invalid param number, invalid param type or invalid Object type. + public native void SetObjectVar(int num, int offset, ObjectValueType type, any value); + + // Sets an object's vector variable value. + // + // The changes are only applied when MRES_ChangedHandled or MRES_ChangedOverride + // is returned in the callback. + // + // @param num Parameter number to set, starting at 1. + // @param offset Byte offset within the object to the var to set. + // @param type Type of var it is. + // @param vec The value to set the vector var to. + // + // @error Invalid handle, invalid param number, invalid param type or invalid Object type. + public native void SetObjectVarVector(int num, int offset, ObjectValueType type, const float vec[3]); + + // No setter for object strings yet. Open an issue if you really need it. + + // Checks if a pointer parameter is null. + // + // @param num Parameter number to check, starting at 1. + // + // @return true if null, false otherwise. + // @error Non-pointer parameter. + public native bool IsNull(int num); + + // Get param address (Use only for ptr param types) + // + // @param num Param number to get. (Example if the function has 2 params and you need the value + // of the first param num would be 1.) + // + // @return Address of the parameter. + // @error Invalid handle. Invalid param number. Invalid param type. + public native Address GetAddress(int num); +}; + + +// Represents the return value of the hooked function. +methodmap DHookReturn < Handle +{ + // Retrieves or sets the return value. + // Use only for: int, entity, edict, bool or float return types. + // + // An entity return type can be set to NULL using INVALID_ENT_REFERENCE (-1). + // + // The return value is only readable in a post hook. + // The value is only applied when MRES_Override or MRES_Supercede is returned + // in the callback. + property any Value { + public native get(); + public native set(any value); + } + + // Get return vector value. + // Use only for: vector or vectorptr return types. + // + // Only useful in post hooks. + // + // @param vec Vector buffer to store result in. + // + // @error Invalid Handle or invalid type. + public native void GetVector(float vec[3]); + + // Get return string value. + // Use only for: string, stringptr or charptr return types. + // + // Only useful in post hooks. + // + // @param buffer String buffer to store result in. + // @param size String buffer size. + // + // @error Invalid Handle or invalid type. + public native void GetString(char[] buffer, int size); + + // Set return vector value. + // Use only for: vector or vectorptr return types. + // + // The value is only applied when MRES_Override or MRES_Supercede is returned + // in the callback. + // + // @param vec Value to set return vector to. + // + // @error Invalid Handle or invalid type. + public native void SetVector(const float vec[3]); + + // Set return string value. + // Use only for: string, stringptr or charptr return types. + // + // The value is only applied when MRES_Override or MRES_Supercede is returned + // in the callback. + // + // @param buffer Value to set return string to. + // + // @error Invalid Handle or invalid type. + public native void SetString(const char[] buffer); +}; + +// Base method map for common functions between virtual hooks and detours. +methodmap DHookSetup < Handle +{ + // Load address or offset for a vtable hook or detour from a gamedata file. + // + // @param gameconf GameData handle. + // @param source Whether to look in Offsets, Signatures, or Addresses. + // @param name Name of the property to find. + // + // @return true on success, false if nothing was found. + // @error Invalid setup or gamedata handle. + public native bool SetFromConf(Handle gameconf, SDKFuncConfSource source, const char[] name); + + // Adds a parameter to a hook setup. + // + // @param type Parameter type. + // @param size Used for Objects (not Object ptr) to define the size of the object. + // @param flag Used to change the pass type (ignored by detours). + // @param custom_register The register this argument is passed in instead of the stack (ignored by vhooks). + // + // @error Invalid setup handle or too many params added (request upping the max in thread). + public native void AddParam(HookParamType type, int size=-1, DHookPassFlag flag=DHookPass_ByVal, DHookRegister custom_register=DHookRegister_Default); +}; + +// A DynamicHook allows to hook a virtual function on any C++ object. +// Currently CBaseEntity and CGameRules have a convenience API for easy entity hooking, +// but it's possible to provide a raw this-pointer to hook any object in memory too. +// +// Internally this intercepts function calls by replacing the function pointer +// in the virtual table of the object with our own function. +methodmap DynamicHook < DHookSetup +{ + // Creates a vtable hook. + // + // @param offset Virtual table offset of function to hook. + // @param hooktype Type of hook. + // @param returntype Type of return value. + // @param thistype Type of this pointer or ignore (ignore can be used if not needed). + // + // @error Failed to create hook setup handle or invalid callback function. + public native DynamicHook(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype); + + // Setup a vtable hook for a function as described in a "Functions" section in gamedata. + // The "Functions" section is parsed once the gamedata file is loaded and cached globally. + // + // @param gameconf GameData handle to use for address lookup. + // Doesn't have to be the same as the one with the "Functions" section. + // @param name Name of the function in a "Functions" section to load. + // + // @return Setup handle for the detour or null if offset wasn't found. + // @error Failed to create detour setup handle, invalid gamedata handle, + // invalid callback function or failed to find function in cached "Functions" sections. + public static native DynamicHook FromConf(Handle gameconf, const char[] name); + + // Hook an entity. + // + // Entity hooks are auto-removed when the entity is destroyed. + // If you need to read the return value of the function, choose a post hook. + // + // @param mode The desired hook mode - pre or post. + // A pre hook calls your callback BEFORE the original function is called. + // You can access the parameters, set the return value, and skip the original function. + // A post hook calls your callback AFTER the original function executed. + // You can access the parameters and get/set the return value. + // @param entity Entity index to hook on. + // @param callback Callback function. + // @param removalcb Optional callback for when the hook is removed. + // + // @return A hookid on success, INVALID_HOOK_ID otherwise. + // @error Invalid setup handle, invalid address, invalid hook type or invalid callback. + public native int HookEntity(HookMode mode, int entity, DHookCallback callback, DHookRemovalCB removalcb=INVALID_FUNCTION); + + // Hook gamerules object. + // + // Game rules hooks are auto-removed on map end. + // If you need to read the return value of the function, choose a post hook. + // + // @param mode The desired hook mode - pre or post. + // A pre hook calls your callback BEFORE the original function is called. + // You can access the parameters, set the return value, and skip the original function. + // A post hook calls your callback AFTER the original function executed. + // You can access the parameters and get/set the return value. + // @param callback Callback function. + // @param removalcb Optional callback for when the hook is removed. + // + // @return A hookid on success, INVALID_HOOK_ID otherwise. + // @error Invalid setup handle, invalid address, invalid hook type or invalid callback. + public native int HookGamerules(HookMode mode, DHookCallback callback, DHookRemovalCB removalcb=INVALID_FUNCTION); + + // Hook a raw this-pointer. + // If you need to read the return value of the function, choose a post hook. + // + // @param mode The desired hook mode - pre or post. + // A pre hook calls your callback BEFORE the original function is called. + // You can access the parameters, set the return value, and skip the original function. + // A post hook calls your callback AFTER the original function executed. + // You can access the parameters and get/set the return value. + // @param addr This pointer address. + // @param callback Callback function. + // + // @return A hookid on success, INVALID_HOOK_ID otherwise. + // @error Invalid setup handle, invalid address, invalid hook type or invalid callback. + public native int HookRaw(HookMode mode, Address addr, DHookCallback callback); + + // Remove hook by hook id. + // + // @param hookid Hook id to remove. + // + // @return true on success, false otherwise + public static native bool RemoveHook(int hookid); +}; + +// A DynamicDetour is a way to hook and block any function in memory. +// Given the address of a function, it can call a callback in your script whenever +// the function gets called. The callback has access to all parameters of the function +// as well as the return value. +// +// Internally this works by replacing the first instructions of the function +// with a jump to our own code. This means that the signature used to find +// the function address in the first place might not match anymore after a detour. +// If you need to detour the same function in different plugins make sure to +// wildcard \x2a the first 6 bytes of the signature to accommodate for the patched +// jump introduced by the detour. +methodmap DynamicDetour < DHookSetup +{ + // Creates a detour. + // + // @param funcaddr The address of the function to detour. + // Can be Address_Null if you want to load the address from gamedata using DHookSetFromConf. + // @param callConv Calling convention of the function. + // @param returnType Type of the return value. + // @param thisType Type of this pointer or ignore (ignore can be used if not needed). + // Only used for thiscall detours. + // + // @error Failed to create detour setup handle. + public native DynamicDetour(Address funcaddr, CallingConvention callConv, ReturnType returntype, ThisPointerType thisType=ThisPointer_Ignore); + + // Setup a detour for a function as described in a "Functions" section in gamedata. + // The "Functions" section is parsed once the gamedata file is loaded and cached globally. + // + // @param gameconf GameData handle to use for address lookup. + // Doesn't have to be the same as the one with the "Functions" section. + // @param name Name of the function in a "Functions" section to load. + // + // @return Setup handle for the detour or null if offset wasn't found. + // @error Failed to create detour setup handle, invalid gamedata handle, + // invalid callback function or failed to find function in cached "Functions" sections. + public static native DynamicDetour FromConf(Handle gameconf, const char[] name); + + // Enable the detour of the function described in this detour setup. + // If you need to read the return value of the function, choose a post hook. + // + // @param mode The desired hook mode - pre or post. + // A pre hook calls your callback BEFORE the original function is called. + // You can access the parameters, set the return value, and skip the original function. + // A post hook calls your callback AFTER the original function executed. + // You can access the parameters and get/set the return value. + // @param callback Callback function. + // + // @return true if detour was enabled, false otherwise. + // @error Hook handle is not setup for a detour. + public native bool Enable(HookMode mode, DHookCallback callback); + + // Disable the detour of the function described in this detour setup. + // + // @param mode The hook mode to disable - pre or post. + // @param callback Callback function. + // + // @return true if detour was disabled, false otherwise. + // @error Hook handle is not setup for a detour or function is not detoured. + public native bool Disable(HookMode mode, DHookCallback callback); +}; + +/** + * Adds an entity listener hook + * + * @param type Type of listener to add + * @param callback Callback to use + */ +native void DHookAddEntityListener(ListenType type, ListenCB callback); + +/** + * Removes an entity listener hook + * + * @param type Type of listener to remove + * @param callback Callback this listener was using + * + * @return true if one was removed, false otherwise + */ +native bool DHookRemoveEntityListener(ListenType type, ListenCB callback); + +/** + * Creates a hook + * + * @param offset vtable offset of function to hook + * @param hooktype Type of hook + * @param returntype Type of return value + * @param thistype Type of this pointer or ignore (ignore can be used if not needed) + * @param callback Optional callback function, if not set here must be set when hooking. + * + * @return Returns setup handle for the hook. + * @error Failed to create hook setup handle or invalid callback function. + */ +native DynamicHook DHookCreate(int offset, HookType hooktype, ReturnType returntype, ThisPointerType thistype, DHookCallback callback=INVALID_FUNCTION); + +/** + * Creates a detour + * + * @param funcaddr The address of the function to detour. + * Can be Address_Null if you want to load the address from gamedata using DHookSetFromConf. + * @param callConv Calling convention of the function. + * @param returnType Type of the return value. + * @param thisType Type of this pointer or ignore (ignore can be used if not needed) + * + * @return Setup handle for the detour. + * @error Failed to create detour setup handle. + */ +native DynamicDetour DHookCreateDetour(Address funcaddr, CallingConvention callConv, ReturnType returntype, ThisPointerType thisType); + +/** + * Setup a detour or hook for a function as described in a "Functions" section in gamedata. + * + * @param gameconf GameConfig handle + * @param name Name of the function in the gamedata to load. + * + * @return Setup handle for the detour or INVALID_HANDLE if offset/signature/address wasn't found. + * @error Failed to create detour setup handle, invalid gamedata handle, invalid callback function or + * failed to find function in gamedata. + */ +native DHookSetup DHookCreateFromConf(Handle gameconf, const char[] name); + +/** + * Load details for a vhook or detour from a gamedata file. + * + * @param setup Hook setup handle to set the offset or address on. + * @param gameconf GameConfig handle + * @param source Whether to look in Offsets or Signatures. + * @param name Name of the property to find. + * + * @return true on success, false if nothing was found. + * @error Invalid setup or gamedata handle. + */ +native bool DHookSetFromConf(Handle setup, Handle gameconf, SDKFuncConfSource source, const char[] name); + +/** + * Enable the detour of the function described in the hook setup handle. + * + * @param setup Hook setup handle + * @param post true to make the hook a post hook. (If you need to change the return value or need the return + * value use a post hook! If you need to change params and return use a pre and post hook!) + * @param callback Callback function + * + * @return true if detour was enabled, false otherwise. + * @error Hook handle is not setup for a detour. + */ +native bool DHookEnableDetour(Handle setup, bool post, DHookCallback callback); + +/** + * Disable the detour of the function described in the hook setup handle. + * + * @param setup Hook setup handle + * @param post true to disable a post hook. + * @param callback Callback function + * + * @return true if detour was disabled, false otherwise. + * @error Hook handle is not setup for a detour or function is not detoured. + */ +native bool DHookDisableDetour(Handle setup, bool post, DHookCallback callback); + +/** + * Adds param to a hook setup + * + * @param setup Setup handle to add the param to. + * @param type Param type + * @param size Used for Objects (not Object ptr) to define the size of the object. + * @param flag Used to change the pass type. + * @param custom_register The register this argument is passed in instead of the stack. + * + * @error Invalid setup handle or too many params added (request upping the max in thread) + */ +native void DHookAddParam(Handle setup, HookParamType type, int size=-1, DHookPassFlag flag=DHookPass_ByVal, DHookRegister custom_register=DHookRegister_Default); + +/** + * Hook entity + * + * @param setup Setup handle to use to add the hook. + * @param post true to make the hook a post hook. (If you need to change the return value or need the return + * value use a post hook! If you need to change params and return use a pre and post hook!) + * @param entity Entity index to hook on. + * @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and + * will call this callback) + * @param callback Optional callback function, if not set here must be set when creating the hook. + * + * @return INVALID_HOOK_ID on fail a hookid on success + * @error Invalid setup handle, invalid address, invalid hook type or invalid callback. + */ +native int DHookEntity(Handle setup, bool post, int entity, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION); + +/** + * Hook gamerules + * + * @param setup Setup handle to use to add the hook. + * @param post true to make the hook a post hook. (If you need to change the return value or need the return + * value use a post hook! If you need to change params and return use a pre and post hook!) + * @param removalcb Callback for when the hook is removed (Game rules hooks are auto-removed on map end and will + * call this callback) + * @param callback Optional callback function, if not set here must be set when creating the hook. + * + * @return INVALID_HOOK_ID on fail a hookid on success + * @error Invalid setup handle, invalid address, invalid hook type or invalid callback. + */ +native int DHookGamerules(Handle setup, bool post, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION); + +/** + * Hook a raw pointer + * + * @param setup Setup handle to use to add the hook. + * @param post true to make the hook a post hook. (If you need to change the return value or need the return + * value use a post hook! If you need to change params and return use a pre and post hook!) + * @param addr This pointer address. + * @param removalcb Callback for when the hook is removed (Entity hooks are auto-removed on entity destroyed and + * will call this callback) + * @param callback Optional callback function, if not set here must be set when creating the hook. + * + * @return INVALID_HOOK_ID on fail a hookid on success + * @error Invalid setup handle, invalid address, invalid hook type or invalid callback. + */ +native int DHookRaw(Handle setup, bool post, Address addr, DHookRemovalCB removalcb=INVALID_FUNCTION, DHookCallback callback=INVALID_FUNCTION); + +/** + * Remove hook by hook id + * + * @param hookid Hook id to remove + * + * @return true on success, false otherwise + */ +native bool DHookRemoveHookID(int hookid); + +/** + * Get param value (Use only for: int, entity, edict, bool or float param types) + * + * @param hParams Handle to params structure + * @param num Param number to get. (Example if the function has 2 params and you need the value of the first + * param num would be 1. 0 Will return the number of params stored) + * + * @return value if num greater than 0. If 0 returns paramcount. + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native any DHookGetParam(Handle hParams, int num); + +/** + * Get vector param value + * + * @param hParams Handle to params structure + * @param num Param number to get. (Example if the function has 2 params and you need the value of the first + * param num would be 1.) + * @param vec Vector buffer to store result. + * + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native void DHookGetParamVector(Handle hParams, int num, float vec[3]); + +/** + * Get string param value + * + * @param hParams Handle to params structure + * @param num Param number to get. (Example if the function has 2 params and you need the value of the first + * param num would be 1.) + * @param buffer String buffer to store result + * @param size Buffer size + * + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native void DHookGetParamString(Handle hParams, int num, char[] buffer, int size); + +/** + * Set param value (Use only for: int, entity, edict, bool or float param types) + * + * An entity param type can be set to NULL using INVALID_ENT_REFERENCE (-1). + * + * @param hParams Handle to params structure + * @param num Param number to set (Example if the function has 2 params and you need to set the value of the + * first param num would be 1.) + * @param value Value to set it as (only pass int, bool, float or entity index) + * + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native void DHookSetParam(Handle hParams, int num, any value); + +/** + * Set vector param value + * + * @param hParams Handle to params structure + * @param num Param number to set (Example if the function has 2 params and you need to set the value of the + * first param num would be 1.) + * @param vec Value to set vector as. + * + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native void DHookSetParamVector(Handle hParams, int num, float vec[3]); + +/** + * Set string param value + * + * @param hParams Handle to params structure + * @param num Param number to set (Example if the function has 2 params and you need to set the value of the + * first param num would be 1.) + * @param value Value to set string as. + * + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native void DHookSetParamString(Handle hParams, int num, char[] value); + +/** + * Get return value (Use only for: int, entity, bool or float return types) + * + * @param hReturn Handle to return structure + * + * @error Invalid Handle, invalid type. + * @return Returns default value if prehook returns actual value if post hook. + */ +native any DHookGetReturn(Handle hReturn); + +/** + * Get return vector value + * + * @param hReturn Handle to return structure + * @param vec Vector buffer to store result in. (In pre hooks will be default value (0.0,0.0,0.0)) + * + * @error Invalid Handle, invalid type. + */ +native void DHookGetReturnVector(Handle hReturn, float vec[3]); + +/** + * Get return string value + * + * @param hReturn Handle to return structure + * @param buffer String buffer to store result in. (In pre hooks will be default value "") + * @param size String buffer size + * + * @error Invalid Handle, invalid type. + */ +native void DHookGetReturnString(Handle hReturn, char[] buffer, int size); + +/** + * Set return value (Use only for: int, entity, bool or float return types) + * + * An entity return type can be set to NULL using INVALID_ENT_REFERENCE (-1). + * + * @param hReturn Handle to return structure + * @param value Value to set return as + * + * @error Invalid Handle, invalid type. + */ +native void DHookSetReturn(Handle hReturn, any value); + +/** + * Set return vector value + * + * @param hReturn Handle to return structure + * @param vec Value to set return vector as + * + * @error Invalid Handle, invalid type. + */ +native void DHookSetReturnVector(Handle hReturn, float vec[3]); + +/** + * Set return string value + * + * @param hReturn Handle to return structure + * @param value Value to set return string as + * + * @error Invalid Handle, invalid type. + */ +native void DHookSetReturnString(Handle hReturn, char[] value); + +//WE SHOULD WRAP THESE AROUND STOCKS FOR NON PTR AS WE SUPPORT BOTH WITH THESE NATIVE'S + +/** + * Gets an objects variable value + * + * @param hParams Handle to params structure + * @param num Param number to get. + * @param offset Offset within the object to the var to get. + * @param type Type of var it is + * + * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. + * @return Value of the objects var. If EHANDLE type or entity returns entity index. + */ +native any DHookGetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type); + +/** + * Sets an objects variable value + * + * @param hParams Handle to params structure + * @param num Param number to set. + * @param offset Offset within the object to the var to set. + * @param type Type of var it is + * @param value The value to set the var to. + * + * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. + */ +native void DHookSetParamObjectPtrVar(Handle hParams, int num, int offset, ObjectValueType type, any value); + +/** + * Gets an objects vector variable value + * + * @param hParams Handle to params structure + * @param num Param number to get. + * @param offset Offset within the object to the var to get. + * @param type Type of var it is + * @param buffer Buffer to store the result vector + * + * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. + */ +native void DHookGetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float buffer[3]); + +/** + * Sets an objects vector variable value + * + * @param hParams Handle to params structure + * @param num Param number to set. + * @param offset Offset within the object to the var to set. + * @param type Type of var it is + * @param value The value to set the vector var to. + * + * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. + */ +native void DHookSetParamObjectPtrVarVector(Handle hParams, int num, int offset, ObjectValueType type, float value[3]); + +/** + * Gets an objects string variable value + * + * @param hParams Handle to params structure + * @param num Param number to get. + * @param offset Offset within the object to the var to get. + * @param type Type of var it is + * @param buffer Buffer to store the result vector + * @param size Size of the buffer + * + * @error Invalid handle. Invalid param number. Invalid param type. Invalid Object type. + */ +native void DHookGetParamObjectPtrString(Handle hParams, int num, int offset, ObjectValueType type, char[] buffer, int size); + +/** + * Checks if a pointer param is null + * + * @param hParams Handle to params structure + * @param num Param number to check. + * + * @return true if null, false otherwise. + * @error Non pointer param + */ +native bool DHookIsNullParam(Handle hParams, int num); + +/** + * Get param address (Use only for ptr param types) + * + * @param hParams Handle to params structure + * @param num Param number to get. (Example if the function has 2 params and you need the value of the first + * param num would be 1.) + * + * @return Address of the parameter. + * @error Invalid handle. Invalid param number. Invalid param type. + */ +native Address DHookGetParamAddress(Handle hParams, int num); + +public Extension __ext_dhooks = +{ + name = "dhooks", + file = "dhooks.ext", +#if defined AUTOLOAD_EXTENSIONS + autoload = 1, +#else + autoload = 0, +#endif +#if defined REQUIRE_EXTENSIONS + required = 1, +#else + required = 0, +#endif +}; + +#if !defined REQUIRE_EXTENSIONS +public __ext_dhooks_SetNTVOptional() +{ + MarkNativeAsOptional("DHookAddEntityListener"); + MarkNativeAsOptional("DHookRemoveEntityListener"); + MarkNativeAsOptional("DHookCreate"); + MarkNativeAsOptional("DHookCreateDetour"); + MarkNativeAsOptional("DHookCreateFromConf"); + MarkNativeAsOptional("DHookSetFromConf"); + MarkNativeAsOptional("DHookEnableDetour"); + MarkNativeAsOptional("DHookDisableDetour"); + MarkNativeAsOptional("DHookAddParam"); + MarkNativeAsOptional("DHookEntity"); + MarkNativeAsOptional("DHookGamerules"); + MarkNativeAsOptional("DHookRaw"); + MarkNativeAsOptional("DHookRemoveHookID"); + MarkNativeAsOptional("DHookGetParam"); + MarkNativeAsOptional("DHookGetParamVector"); + MarkNativeAsOptional("DHookGetParamString"); + MarkNativeAsOptional("DHookSetParam"); + MarkNativeAsOptional("DHookSetParamVector"); + MarkNativeAsOptional("DHookSetParamString"); + MarkNativeAsOptional("DHookGetReturn"); + MarkNativeAsOptional("DHookGetReturnVector"); + MarkNativeAsOptional("DHookGetReturnString"); + MarkNativeAsOptional("DHookSetReturn"); + MarkNativeAsOptional("DHookSetReturnVector"); + MarkNativeAsOptional("DHookSetReturnString"); + MarkNativeAsOptional("DHookGetParamObjectPtrVar"); + MarkNativeAsOptional("DHookSetParamObjectPtrVar"); + MarkNativeAsOptional("DHookGetParamObjectPtrVarVector"); + MarkNativeAsOptional("DHookSetParamObjectPtrVarVector"); + MarkNativeAsOptional("DHookIsNullParam"); + MarkNativeAsOptional("DHookGetParamObjectPtrString"); + MarkNativeAsOptional("DHookGetParamAddress"); + + MarkNativeAsOptional("DHookParam.IsNull"); + MarkNativeAsOptional("DHookParam.Get"); + MarkNativeAsOptional("DHookParam.GetVector"); + MarkNativeAsOptional("DHookParam.GetString"); + MarkNativeAsOptional("DHookParam.Set"); + MarkNativeAsOptional("DHookParam.SetVector"); + MarkNativeAsOptional("DHookParam.SetString"); + MarkNativeAsOptional("DHookParam.GetObjectVar"); + MarkNativeAsOptional("DHookParam.GetObjectVarVector"); + MarkNativeAsOptional("DHookParam.GetObjectVarString"); + MarkNativeAsOptional("DHookParam.SetObjectVar"); + MarkNativeAsOptional("DHookParam.SetObjectVarVector"); + MarkNativeAsOptional("DHookParam.GetAddress"); + MarkNativeAsOptional("DHookReturn.Value.get"); + MarkNativeAsOptional("DHookReturn.Value.set"); + MarkNativeAsOptional("DHookReturn.GetVector"); + MarkNativeAsOptional("DHookReturn.GetString"); + MarkNativeAsOptional("DHookReturn.SetVector"); + MarkNativeAsOptional("DHookReturn.SetString"); + MarkNativeAsOptional("DHookSetup.SetFromConf"); + MarkNativeAsOptional("DHookSetup.AddParam"); + MarkNativeAsOptional("DynamicHook.DynamicHook"); + MarkNativeAsOptional("DynamicHook.FromConf"); + MarkNativeAsOptional("DynamicHook.HookEntity"); + MarkNativeAsOptional("DynamicHook.HookGamerules"); + MarkNativeAsOptional("DynamicHook.HookRaw"); + MarkNativeAsOptional("DynamicHook.RemoveHook"); + MarkNativeAsOptional("DynamicDetour.DynamicDetour"); + MarkNativeAsOptional("DynamicDetour.FromConf"); + MarkNativeAsOptional("DynamicDetour.Enable"); + MarkNativeAsOptional("DynamicDetour.Disable"); +} +#endif diff --git a/scripting/1.10/include/entity.inc b/scripting/latest/include/entity.inc similarity index 96% rename from scripting/1.10/include/entity.inc rename to scripting/latest/include/entity.inc index a0f9116..2c9e4de 100644 --- a/scripting/1.10/include/entity.inc +++ b/scripting/latest/include/entity.inc @@ -428,6 +428,7 @@ native int FindSendPropOffs(const char[] cls, const char[] prop); * for strings. * @param local_offset Optional parameter to store the local offset, as * FindSendPropOffs() would return. + * @param array_size Optional parameter to store array size, 0 if not an array. * @return On success, returns an absolutely computed offset. * If no offset is available, 0 is returned. * If the property is not found, -1 is returned. @@ -436,7 +437,8 @@ native int FindSendPropInfo(const char[] cls, const char[] prop, PropFieldType &type=view_as(0), int &num_bits=0, - int &local_offset=0); + int &local_offset=0, + int &array_size=0); /** * Given an entity, finds a datamap property offset. @@ -700,7 +702,7 @@ native int SetEntPropString(int entity, PropType type, const char[] prop, const * @param entity Entity/edict index. * @param type Property type. * @param prop Property name. - * @return Size of array (in elements) or 1 if property is not an array. + * @return Size of array (in elements) or 0 if property is not an array. * @error Invalid entity or property not found. */ native int GetEntPropArraySize(int entity, PropType type, const char[] prop); @@ -715,7 +717,7 @@ native int GetEntPropArraySize(int entity, PropType type, const char[] prop); * @param dataSize Size of each value in bytes (1, 2, or 4). * @error Invalid entity or offset out of reasonable bounds. */ -stock void GetEntDataArray(int entity, int offset, int[] array, int arraySize, int dataSize=4) +stock void GetEntDataArray(int entity, int offset, any[] array, int arraySize, int dataSize=4) { for (int i = 0; i < arraySize; i++) { @@ -734,7 +736,7 @@ stock void GetEntDataArray(int entity, int offset, int[] array, int arraySize, i * @param changeState True to set the network state as changed; false otherwise. * @error Invalid entity or offset out of reasonable bounds. */ -stock void SetEntDataArray(int entity, int offset, const int[] array, int arraySize, int dataSize=4, bool changeState=false) +stock void SetEntDataArray(int entity, int offset, const any[] array, int arraySize, int dataSize=4, bool changeState=false) { for (int i = 0; i < arraySize; i++) { @@ -765,3 +767,19 @@ stock bool GetEntityClassname(int entity, char[] clsname, int maxlength) { return !!GetEntPropString(entity, Prop_Data, "m_iClassname", clsname, maxlength); } + +/** + * Interprets the address as an entity handle and returns the associated entity. + * + * @param addr Address to a memory location. + * @return Entity index at the given location. If there is no entity, or the stored entity is invalid, then -1 is returned. + */ +native int LoadEntityFromHandleAddress(Address addr); + +/** + * Interprets the address as an entity handle and sets the entity. + * + * @param addr Address to a memory location. + * @param entity Entity index to set, or -1 to clear. + */ +native void StoreEntityToHandleAddress(Address addr, int entity); diff --git a/scripting/1.10/include/entity_prop_stocks.inc b/scripting/latest/include/entity_prop_stocks.inc similarity index 98% rename from scripting/1.10/include/entity_prop_stocks.inc rename to scripting/latest/include/entity_prop_stocks.inc index c0bc6ff..4dd4060 100644 --- a/scripting/1.10/include/entity_prop_stocks.inc +++ b/scripting/latest/include/entity_prop_stocks.inc @@ -534,19 +534,10 @@ stock void SetEntityHealth(int entity, int amount) gotconfig = true; } - char cls[64]; PropFieldType type; int offset; - if (!GetEntityNetClass(entity, cls, sizeof(cls))) - { - ThrowError("SetEntityHealth not supported by this mod: Could not get serverclass name"); - return; - } - - offset = FindSendPropInfo(cls, prop, type); - - if (offset <= 0) + if ((offset = FindDataMapInfo(entity, prop, type)) == -1) { ThrowError("SetEntityHealth not supported by this mod"); return; @@ -559,7 +550,12 @@ stock void SetEntityHealth(int entity, int amount) } else { - SetEntProp(entity, Prop_Send, prop, amount); + SetEntData(entity, offset, amount); + } + + if (IsValidEdict(entity)) + { + ChangeEdictState(entity); } } diff --git a/scripting/latest/include/entitylump.inc b/scripting/latest/include/entitylump.inc new file mode 100644 index 0000000..9d269e6 --- /dev/null +++ b/scripting/latest/include/entitylump.inc @@ -0,0 +1,157 @@ +#if defined _entitylump_included + #endinput +#endif + +#define _entitylump_included + +/** + * An ordered list of key / value pairs for a map entity. + * If the entry in the EntityLump is removed, the handle will error on all operations. + * (The handle will remain valid on the scripting side, and will still need to be deleted.) + * + * Write operations (update, insert, erase, append) are only allowed during OnMapInit. + */ +methodmap EntityLumpEntry < Handle { + /** + * Copies the key / value at the given index into buffers. + * + * @param index Position, starting from 0. + * @param keybuf Key name buffer. + * @param keylen Maximum length of the key name buffer. + * @param valbuf Value buffer. + * @param vallen Maximum length of the value buffer. + * @error Index is out of bounds. + */ + public native void Get(int index, char[] keybuf = "", int keylen = 0, char[] valbuf = "", int vallen = 0); + + /** + * Updates the key / value pair at the given index. + * + * @param index Position, starting from 0. + * @param key New key name, or NULL_STRING to preserve the existing key name. + * @param value New value, or NULL_STRING to preserve the existing value. + * @error Index is out of bounds or entity lump is read-only. + */ + public native void Update(int index, const char[] key = NULL_STRING, const char[] value = NULL_STRING); + + /** + * Inserts a new key / value pair at the given index, shifting the pair at that index and beyond up. + * If EntityLumpEntry.Length is passed in, this is an append operation. + * + * @param index Position, starting from 0. + * @param key New key name. + * @param value New value. + * @error Index is out of bounds or entity lump is read-only. + */ + public native void Insert(int index, const char[] key, const char[] value); + + /** + * Removes the key / value pair at the given index, shifting all entries past it down. + * + * @param index Position, starting from 0. + * @error Index is out of bounds or entity lump is read-only. + */ + public native void Erase(int index); + + /** + * Inserts a new key / value pair at the end of the entry's list. + * + * @param key New key name. + * @param value New value. + * @error Index is out of bounds or entity lump is read-only. + */ + public native void Append(const char[] key, const char[] value); + + /** + * Searches the entry list for an index matching a key starting from a position. + * + * @param key Key name to search. + * @param start A position after which to begin searching from. Use -1 to start from the + * first entry. + * @return Position after start with an entry matching the given key, or -1 if no + * match was found. + * @error Invalid start position; must be a value between -1 and one less than the + * length of the entry. + */ + public native int FindKey(const char[] key, int start = -1); + + /** + * Searches the entry list for an index matching a key starting from a position. + * This also copies the value from that index into the given buffer. + * + * This can be used to find the first / only value matching a key, or to iterate over all + * the values that match said key. + * + * @param key Key name to search. + * @param buffer Value buffer. This will contain the result of the next match, or empty + * if no match was found. + * @param maxlen Maximum length of the value buffer. + * @param start An index after which to begin searching from. Use -1 to start from the + * first entry. + * @return Position after start with an entry matching the given key, or -1 if no + * match was found. + * @error Invalid start position; must be a value between -1 and one less than the + * length of the entry. + */ + public int GetNextKey(const char[] key, char[] buffer, int maxlen, int start = -1) { + int result = this.FindKey(key, start); + if (result != -1) { + this.Get(result, .valbuf = buffer, .vallen = maxlen); + } else { + buffer[0] = '\0'; + } + return result; + } + + /** + * Retrieves the number of key / value pairs in the entry. + */ + property int Length { + public native get(); + } +}; + +/** + * A group of natives for a singleton entity lump, representing all the entities defined in the map. + * + * Write operations (insert, erase, append) are only allowed during OnMapInit. + */ +methodmap EntityLump { + /** + * Returns the EntityLumpEntry at the given index. + * This handle should be freed by the calling plugin. + * + * @param index Position, starting from 0. + * @error Index is out of bounds. + */ + public static native EntityLumpEntry Get(int index); + + /** + * Erases an EntityLumpEntry at the given index, shifting all entries past it down. + * Any handles referencing the erased EntityLumpEntry will throw on any operations aside from delete. + * + * @param index Position, starting from 0. + * @error Index is out of bounds or entity lump is read-only. + */ + public static native void Erase(int index); + + /** + * Inserts an empty EntityLumpEntry at the given index, shifting the existing entry and ones past it up. + * + * @param index Position, starting from 0. + * @error Index is out of bounds or entity lump is read-only. + */ + public static native void Insert(int index); + + /** + * Creates an empty EntityLumpEntry, returning its index. + * + * @error Entity lump is read-only. + */ + public static native int Append(); + + /** + * Returns the number of entities currently in the lump. + */ + public static native int Length(); +}; diff --git a/scripting/1.10/include/events.inc b/scripting/latest/include/events.inc similarity index 100% rename from scripting/1.10/include/events.inc rename to scripting/latest/include/events.inc diff --git a/scripting/1.10/include/files.inc b/scripting/latest/include/files.inc similarity index 95% rename from scripting/1.10/include/files.inc rename to scripting/latest/include/files.inc index fd292ba..0eacc99 100644 --- a/scripting/1.10/include/files.inc +++ b/scripting/latest/include/files.inc @@ -112,6 +112,11 @@ methodmap File < Handle CloseHandle(this); } + // Get the file size in bytes. + // + // @return File size in bytes, -1 on error. + public native int Size(); + // Reads a line of text from a file. // // @param buffer String buffer to hold the line. @@ -126,7 +131,7 @@ methodmap File < Handle // @param size Size of each element, in bytes, to be read. // Valid sizes are 1, 2, or 4. // @return Number of elements read, or -1 on error. - public native int Read(int[] items, int num_items, int size); + public native int Read(any[] items, int num_items, int size); // Reads a UTF8 or ANSI string from a file. // @@ -152,7 +157,7 @@ methodmap File < Handle // @param size Size of each item in the array in bytes. // Valid sizes are 1, 2, or 4. // @return True on success, false on error. - public native bool Write(const int[] items, int num_items, int size); + public native bool Write(const any[] items, int num_items, int size); // Writes a binary string to a file. // @@ -314,7 +319,7 @@ native bool ReadDirEntry(Handle dir, char[] buffer, int maxlength, FileType &typ * Mac, this has no distinction from binary mode. On Windows, it causes the '\n' * character (0xA) to be written as "\r\n" (0xD, 0xA). * - * Example: "rb" opens a binary file for writing; "at" opens a text file for + * Example: "rb" opens a binary file for reading; "at" opens a text file for * appending. * * @param file File to open. @@ -361,7 +366,7 @@ native bool ReadFileLine(Handle hndl, char[] buffer, int maxlength); * Valid sizes are 1, 2, or 4. * @return Number of elements read, or -1 on error. */ -native int ReadFile(Handle hndl, int[] items, int num_items, int size); +native int ReadFile(Handle hndl, any[] items, int num_items, int size); /** * Reads a UTF8 or ANSI string from a file. @@ -394,7 +399,7 @@ native int ReadFileString(Handle hndl, char[] buffer, int max_size, int read_cou * @return True on success, false on error. * @error Invalid Handle. */ -native bool WriteFile(Handle hndl, const int[] items, int num_items, int size); +native bool WriteFile(Handle hndl, const any[] items, int num_items, int size); /** * Writes a binary string to a file. @@ -575,7 +580,7 @@ native bool RemoveDir(const char[] path); /** * Creates a directory. * - * @param path Path to create. + * @param path Path to create. Note that directories are not created recursively unless use_valve_fs is used. * @param mode Permissions (default is o=rx,g=rx,u=rwx). Note that folders must have * the execute bit set on Linux. On Windows, the mode is ignored. * @param use_valve_fs If true, the Valve file system will be used instead. @@ -585,7 +590,7 @@ native bool RemoveDir(const char[] path); * In this case, mode is ignored. * @return True on success, false otherwise. */ -native bool CreateDirectory(const char[] path, int mode, bool use_valve_fs=false, const char[] valve_path_id="DEFAULT_WRITE_PATH"); +native bool CreateDirectory(const char[] path, int mode=FPERM_O_READ|FPERM_O_EXEC|FPERM_G_READ|FPERM_G_EXEC|FPERM_U_READ|FPERM_U_WRITE|FPERM_U_EXEC, bool use_valve_fs=false, const char[] valve_path_id="DEFAULT_WRITE_PATH"); /** * Changes a file or directories permissions. @@ -596,6 +601,15 @@ native bool CreateDirectory(const char[] path, int mode, bool use_valve_fs=false */ native bool SetFilePermissions(const char[] path, int mode); +/** + * Retrieves a file or directories permissions. + * + * @param path Path to the file. + * @param mode Variable to store the permissions in. + * @return True on success, false otherwise. + */ +native bool GetFilePermissions(const char[] path, int &mode); + /** * Returns a file timestamp as a unix timestamp. * diff --git a/scripting/1.10/include/float.inc b/scripting/latest/include/float.inc similarity index 85% rename from scripting/1.10/include/float.inc rename to scripting/latest/include/float.inc index 8005e05..65e2b87 100644 --- a/scripting/1.10/include/float.inc +++ b/scripting/latest/include/float.inc @@ -97,6 +97,19 @@ native float FloatAdd(float oper1, float oper2); #pragma deprecated This native is internal implementation. For subtraction use the '-' operator. native float FloatSub(float oper1, float oper2); +/** + * Returns the modulus of oper1 and oper2. + * + * Note: This native is internal implementation. For modulo use the '%' operator. + * + * @param oper1 First value. + * @param oper2 Second value. + * @return oper1%oper2. + * @deprecated This native is internal implementation. For modulo use the '%' operator. + */ +#pragma deprecated This native is internal implementation. For modulo use the '%' operator. +native float FloatMod(float oper1, float oper2); + /** * Returns the decimal part of a float. * @@ -262,13 +275,13 @@ stock int RoundFloat(float value) * User defined operators. */ #if !defined __sourcepawn2__ -#pragma rational Float -// Internal aliases for backwards compatability. -native float __FLOAT_MUL__(float a, float b) = FloatMul; -native float __FLOAT_DIV__(float a, float b) = FloatDiv; -native float __FLOAT_ADD__(float a, float b) = FloatAdd; -native float __FLOAT_SUB__(float a, float b) = FloatSub; +// Internal aliases for backwards compatibility. +native float __FLOAT_MUL__(float a, float b); +native float __FLOAT_DIV__(float a, float b); +native float __FLOAT_ADD__(float a, float b); +native float __FLOAT_SUB__(float a, float b); +native float __FLOAT_MOD__(float a, float b); native bool __FLOAT_GT__(float a, float b); native bool __FLOAT_GE__(float a, float b); @@ -278,17 +291,18 @@ native bool __FLOAT_EQ__(float a, float b); native bool __FLOAT_NE__(float a, float b); native bool __FLOAT_NOT__(float a); -native float operator*(float oper1, float oper2) = FloatMul; -native float operator/(float oper1, float oper2) = FloatDiv; -native float operator+(float oper1, float oper2) = FloatAdd; -native float operator-(float oper1, float oper2) = FloatSub; -native bool operator!(float oper1) = __FLOAT_NOT__; -native bool operator>(float oper1, float oper2) = __FLOAT_GT__; -native bool operator>=(float oper1, float oper2) = __FLOAT_GE__; -native bool operator<(float oper1, float oper2) = __FLOAT_LT__; -native bool operator<=(float oper1, float oper2) = __FLOAT_LE__; -native bool operator!=(float oper1, float oper2) = __FLOAT_NE__; -native bool operator==(float oper1, float oper2) = __FLOAT_EQ__; +stock float operator*(float oper1, float oper2) { return __FLOAT_MUL__(oper1, oper2); } +stock float operator/(float oper1, float oper2) { return __FLOAT_DIV__(oper1, oper2); } +stock float operator+(float oper1, float oper2) { return __FLOAT_ADD__(oper1, oper2); } +stock float operator-(float oper1, float oper2) { return __FLOAT_SUB__(oper1, oper2); } +stock float operator%(float oper1, float oper2) { return __FLOAT_MOD__(oper1, oper2); } +stock bool operator!(float oper1) { return __FLOAT_NOT__(oper1); } +stock bool operator>(float oper1, float oper2) { return __FLOAT_GT__(oper1, oper2); } +stock bool operator>=(float oper1, float oper2) { return __FLOAT_GE__(oper1, oper2); } +stock bool operator<(float oper1, float oper2) { return __FLOAT_LT__(oper1, oper2); } +stock bool operator<=(float oper1, float oper2) { return __FLOAT_LE__(oper1, oper2); } +stock bool operator!=(float oper1, float oper2) { return __FLOAT_NE__(oper1, oper2); } +stock bool operator==(float oper1, float oper2) { return __FLOAT_EQ__(oper1, oper2); } stock float operator++(float oper) { @@ -387,12 +401,15 @@ stock bool operator<=(int oper1, float oper2) return __FLOAT_LE__(float(oper1), oper2); } -/** - * Forbidden operators. - */ -forward operator%(float oper1, float oper2); -forward operator%(float oper1, int oper2); -forward operator%(int oper1, float oper2); +stock float operator%(float oper1, int oper2) +{ + return __FLOAT_MOD__(oper1, float(oper2)); +} + +stock float operator%(int oper1, float oper2) +{ + return __FLOAT_MOD__(float(oper1), oper2); +} #endif // __sourcepawn2__ #define FLOAT_PI 3.1415926535897932384626433832795 diff --git a/scripting/1.10/include/functions.inc b/scripting/latest/include/functions.inc similarity index 97% rename from scripting/1.10/include/functions.inc rename to scripting/latest/include/functions.inc index 490012b..8ce0ea0 100644 --- a/scripting/1.10/include/functions.inc +++ b/scripting/latest/include/functions.inc @@ -123,7 +123,7 @@ methodmap GlobalForward < Handle { // @param type Execution type to be used. // @param ... Variable number of parameter types (up to 32). // @return Handle to new global forward. - // @error More than 32 paramater types passed. + // @error More than 32 parameter types passed. public native GlobalForward(const char[] name, ExecType type, ParamType ...); // Returns the number of functions in a global or private forward's call list. @@ -142,7 +142,7 @@ methodmap PrivateForward < GlobalForward { // @param type Execution type to be used. // @param ... Variable number of parameter types (up to 32). // @return Handle to new private forward. - // @error More than 32 paramater types passed. + // @error More than 32 parameter types passed. public native PrivateForward(ExecType type, ParamType ...); // Adds a function to a private forward's call list. @@ -202,7 +202,7 @@ native Function GetFunctionByName(Handle plugin, const char[] name); * @param type Execution type to be used. * @param ... Variable number of parameter types (up to 32). * @return Handle to new global forward. - * @error More than 32 paramater types passed. + * @error More than 32 parameter types passed. */ native GlobalForward CreateGlobalForward(const char[] name, ExecType type, ParamType ...); @@ -216,7 +216,7 @@ native GlobalForward CreateGlobalForward(const char[] name, ExecType type, Param * @param type Execution type to be used. * @param ... Variable number of parameter types (up to 32). * @return Handle to new private forward. - * @error More than 32 paramater types passed. + * @error More than 32 parameter types passed. */ native PrivateForward CreateForward(ExecType type, ParamType ...); @@ -353,7 +353,7 @@ native void Call_PushArray(const any[] value, int size); * @param value Array to push. * @param size Size of array. * @param cpflags Whether or not changes should be copied back to the input array. - * See SP_PARAM_* constants for details. + * See SM_PARAM_* constants for details. * @error Called before a call has been started. */ native void Call_PushArrayEx(any[] value, int size, int cpflags); @@ -448,6 +448,16 @@ typeset NativeCall * @return Value for the native call to return. */ function any (Handle plugin, int numParams); + + /** + * Defines a native function. + * + * It is not necessary to validate the parameter count + * + * @param plugin Handle of the calling plugin. + * @param numParams Number of parameters passed to the native. + */ + function void (Handle plugin, int numParams); } /** @@ -466,6 +476,8 @@ native void CreateNative(const char[] name, NativeCall func); * @param error Error code to use. * @param fmt Error message format. * @param ... Format arguments. + * @noreturn + * @error Always! */ native int ThrowNativeError(int error, const char[] fmt, any ...); diff --git a/scripting/latest/include/geoip.inc b/scripting/latest/include/geoip.inc new file mode 100644 index 0000000..0676f75 --- /dev/null +++ b/scripting/latest/include/geoip.inc @@ -0,0 +1,241 @@ +/** + * vim: set ts=4 : + * ============================================================================= + * SourceMod (C)2004-2008 AlliedModders LLC. All rights reserved. + * ============================================================================= + * + * This file is part of the SourceMod/SourcePawn SDK. + * + * This program is free software; you can redistribute it and/or modify it under + * the terms of the GNU General Public License, version 3.0, as published by the + * Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more + * details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + * + * As a special exception, AlliedModders LLC gives you permission to link the + * code of this program (as well as its derivative works) to "Half-Life 2," the + * "Source Engine," the "SourcePawn JIT," and any Game MODs that run on software + * by the Valve Corporation. You must obey the GNU General Public License in + * all respects for all other code used. Additionally, AlliedModders LLC grants + * this exception to all derivative works. AlliedModders LLC defines further + * exceptions, found in LICENSE.txt (as of this writing, version JULY-31-2007), + * or . + * + * Version: $Id$ + */ + +#if defined _geoip_included + #endinput +#endif +#define _geoip_included + +enum Continent +{ + CONTINENT_UNKNOWN = 0, + CONTINENT_AFRICA, + CONTINENT_ANTARCTICA, + CONTINENT_ASIA, + CONTINENT_EUROPE, + CONTINENT_NORTH_AMERICA, + CONTINENT_OCEANIA, + CONTINENT_SOUTH_AMERICA, +}; + +// The system of measurement for calculate the distance between geographical coordinates +#define SYSTEM_METRIC 0 // kilometers +#define SYSTEM_IMPERIAL 1 // statute miles + +#include + +/** + * @section IP addresses can contain ports, the ports will be stripped out. + */ + +/** + * Gets the two character country code from an IP address. (US, CA, etc) + * + * @param ip Ip to determine the country code. + * @param ccode Destination string buffer to store the code. + * @return True on success, false otherwise. + */ +native bool GeoipCode2(const char[] ip, char ccode[3]); + +/** + * Gets the three character country code from an IP address. (USA, CAN, etc) + * + * @param ip Ip to determine the country code. + * @param ccode Destination string buffer to store the code. + * @return True on success, false otherwise. + */ +native bool GeoipCode3(const char[] ip, char ccode[4]); + +/** + * Gets the region code with country code from an IP address. (US-IL, CH-CHE, etc) + * + * @param ip Ip to determine the region code. + * @param ccode Destination string buffer to store the code. + * @return True on success, false otherwise. + */ +native bool GeoipRegionCode(const char[] ip, char ccode[12]); + +/** + * Gets the two character continent code from an IP address. (EU, AS, etc) + * + * @param ip Ip to determine the continent code. + * @param ccode Destination string buffer to store the code. + * @return The continent id on success, 0 otherwise. + */ +native Continent GeoipContinentCode(const char[] ip, char ccode[3]); + +/** + * Gets the full country name. + * + * @param ip Ip to determine the country code. + * @param name Destination string buffer to store the country name. + * @param maxlength Maximum length of output string buffer. + * @return True on success, false otherwise. + */ +native bool GeoipCountry(const char[] ip, char[] name, int maxlength); + +/** + * Gets the full country name. + * + * @param ip Ip to determine the country code. + * @param name Destination string buffer to store the country name. + * @param maxlength Maximum length of output string buffer. + * @param client Client index in order to return the result in the player's language + * -1: the default language, which is english. + * 0: the server language. You can use LANG_SERVER define. + * >=1: the player's language. + * @return True on success, false otherwise. + */ +native bool GeoipCountryEx(const char[] ip, char[] name, int maxlength, int client = -1); + +/** + * Gets the full continent name. + * + * @param ip Ip to determine the continent code. + * @param name Destination string buffer to store the continent name. + * @param maxlength Maximum length of output string buffer. + * @param client Client index in order to return the result in the player's language + * -1: the default language, which is english. + * 0: the server language. You can use LANG_SERVER define. + * >=1: the player's language. + * @return True on success, false otherwise. + */ +native bool GeoipContinent(const char[] ip, char[] name, int maxlength, int client = -1); + +/** + * Gets the full region name. + * + * @param ip Ip to determine the region code. + * @param name Destination string buffer to store the region name. + * @param maxlength Maximum length of output string buffer. + * @param client Client index in order to return the result in the player's language + * -1: the default language, which is english. + * 0: the server language. You can use LANG_SERVER define. + * >=1: the player's language. + * @return True on success, false otherwise. + */ +native bool GeoipRegion(const char[] ip, char[] name, int maxlength, int client = -1); + +/** + * Gets the city name. + * + * @param ip Ip to determine the city code. + * @param name Destination string buffer to store the city name. + * @param maxlength Maximum length of output string buffer. + * @param client Client index in order to return the result in the player's language + * -1: the default language, which is english. + * 0: the server language. You can use LANG_SERVER define. + * >=1: the player's language. + * @return True on success, false otherwise. + */ +native bool GeoipCity(const char[] ip, char[] name, int maxlength, int client = -1); + +/** + * Gets the timezone. + * + * @param ip Ip to determine the timezone. + * @param name Destination string buffer to store the timezone. + * @param maxlength Maximum length of output string buffer. + * @return True on success, false otherwise. + */ +native bool GeoipTimezone(const char[] ip, char[] name, int maxlength); + +/** + * Gets the city's latitude + * + * @param ip Ip to determine the city latitude. + * @return The result of the latitude, 0 if latitude is not found + */ +native float GeoipLatitude(const char[] ip); + +/** + * Gets the city's longitude + * + * @param ip Ip to determine the city longitude. + * @return The result of the longitude, 0 if longitude is not found + */ +native float GeoipLongitude(const char[] ip); + +/* + * Calculate the distance between geographical coordinates, latitude and longitude. + * + * @param lat1 The first IP latitude. + * @param lon1 The first IP longitude. + * @param lat2 The second IP latitude. + * @param lon2 The second IP longitude. + * @param system The system of measurement, 0 = Metric(kilometers) or 1 = English(miles). + * + * @return The distance as result in specified system of measurement. + */ +native float GeoipDistance(float lat1, float lon1, float lat2, float lon2, int system = SYSTEM_METRIC); + +/** + * @endsection + */ + +/** + * Do not edit below this line! + */ +public Extension __ext_geoip = +{ + name = "GeoIP", + file = "geoip.ext", +#if defined AUTOLOAD_EXTENSIONS + autoload = 1, +#else + autoload = 0, +#endif +#if defined REQUIRE_EXTENSIONS + required = 1, +#else + required = 0, +#endif +}; + +#if !defined REQUIRE_EXTENSIONS +public void __ext_geoip_SetNTVOptional() +{ + MarkNativeAsOptional("GeoipCode2"); + MarkNativeAsOptional("GeoipCode3"); + MarkNativeAsOptional("GeoipRegionCode"); + MarkNativeAsOptional("GeoipContinentCode"); + MarkNativeAsOptional("GeoipCountry"); + MarkNativeAsOptional("GeoipCountryEx"); + MarkNativeAsOptional("GeoipContinent"); + MarkNativeAsOptional("GeoipRegion"); + MarkNativeAsOptional("GeoipCity"); + MarkNativeAsOptional("GeoipTimezone"); + MarkNativeAsOptional("GeoipLatitude"); + MarkNativeAsOptional("GeoipLongitude"); + MarkNativeAsOptional("GeoipDistance"); +} +#endif diff --git a/scripting/1.10/include/halflife.inc b/scripting/latest/include/halflife.inc similarity index 92% rename from scripting/1.10/include/halflife.inc rename to scripting/latest/include/halflife.inc index c9c9912..4a1b6a4 100644 --- a/scripting/1.10/include/halflife.inc +++ b/scripting/latest/include/halflife.inc @@ -89,7 +89,9 @@ enum EngineVersion Engine_Insurgency, /**< Insurgency (2013 Retail version)*/ Engine_Contagion, /**< Contagion */ Engine_BlackMesa, /**< Black Mesa Multiplayer */ - Engine_DOI /**< Day of Infamy */ + Engine_DOI, /**< Day of Infamy */ + Engine_PVKII = 26, /**< Pirates, Vikings, and Knights II */ + Engine_MCV, /**< Military Conflict: Vietnam */ }; enum FindMapResult @@ -330,10 +332,14 @@ native bool IsSoundPrecached(const char[] sound); /** * Creates different types of ingame messages. * + * Note: On many newer games (Left 4 Dead/2008+), the display of this to clients is broken. + * Additionally, as of 2018, some games also require the client to have cl_showpluginmessages + * set to 1, a non-default value, for this to function. + * * @param client Index of the client. * @param kv KeyValues handle to set the menu keys and options. (Check iserverplugin.h for more information). * @param type Message type to display ingame. - * @error Invalid client index, or client not connected. + * @error Invalid client index, or client not in game. */ native void CreateDialog(int client, Handle kv, DialogType type); @@ -366,7 +372,7 @@ native EngineVersion GetEngineVersion(); * @param client Client index. * @param format Formatting rules. * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @error Invalid client index, or client not in game. */ native void PrintToChat(int client, const char[] format, any ...); @@ -397,7 +403,7 @@ stock void PrintToChatAll(const char[] format, any ...) * @param client Client index. * @param format Formatting rules. * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @error Invalid client index, or client not in game. */ native void PrintCenterText(int client, const char[] format, any ...); @@ -428,7 +434,7 @@ stock void PrintCenterTextAll(const char[] format, any ...) * @param client Client index. * @param format Formatting rules. * @param ... Variable number of format parameters. - * @error If the client is not connected an error will be thrown. + * @error Invalid client index, or client not in game. */ native void PrintHintText(int client, const char[] format, any ...); @@ -462,7 +468,7 @@ stock void PrintHintTextToAll(const char[] format, any ...) * @param Kv KeyValues handle with all the data for the panel setup (Depends * on the panel type and may be unused). * @param show True to show the panel, or false to remove it from the client screen. - * @error If the client is not connected an error will be thrown. + * @error Invalid client index, or client not in game. */ native void ShowVGUIPanel(int client, const char[] name, Handle Kv=INVALID_HANDLE, bool show=true); @@ -561,7 +567,7 @@ native void SetHudTextParamsEx(float x, float y, float holdTime, int color1[4], * @param ... Message formatting parameters. * @return -1 on failure, anything else on success. * This function fails if the mod does not support it. - * @error Client not in-game, or sync object not valid. + * @error Invalid client index, client not in game, or sync object not valid. */ native int ShowSyncHudText(int client, Handle sync, const char[] message, any ...); @@ -579,14 +585,14 @@ native int ShowSyncHudText(int client, Handle sync, const char[] message, any .. * * @param client Client index to send the message to. * @param sync Synchronization object. - * @error Client not in-game, or sync object not valid. + * @error Invalid client index, client not in game, or sync object not valid. */ native void ClearSyncHud(int client, Handle sync); /** * Shows a HUD message to a client on the given channel. * - * As of this writing, only TF, HL2MP, and SourceForts support HUD Text. + * Note: while many games support HUD Text, not all do. * * @param client Client index to send the message to. * @param channel A channel number. @@ -599,6 +605,7 @@ native void ClearSyncHud(int client, Handle sync); * @return -1 on failure (lack of mod support). * Any other return value is the channel number that was * used to render the text. + * @error Invalid client index, or client not in game. */ native int ShowHudText(int client, int channel, const char[] message, any ...); @@ -610,7 +617,7 @@ native int ShowHudText(int client, int channel, const char[] message, any ...); * @param msg Contents of the panel, it can be treated as an url, filename or plain text * depending on the type parameter (WARNING: msg has to be 192 bytes maximum!) * @param type Determines the way to treat the message body of the panel. - * @error If the client is not connected an error will be thrown. + * @error Invalid client index, or client not in game. */ stock void ShowMOTDPanel(int client, const char[] title, const char[] msg, int type=MOTDPANEL_TYPE_INDEX) { @@ -627,11 +634,16 @@ stock void ShowMOTDPanel(int client, const char[] title, const char[] msg, int t /** * Displays a panel asking the client to connect to a specified IP. + * + * Note: On many newer games (Left 4 Dead/2008+), the display of this to clients is broken. + * Additionally, as of 2018, some games also require the client to have cl_showpluginmessages + * set to 1, a non-default value, for this to function. * * @param client Client index. * @param time Duration to hold the panel on the client's screen. * @param ip Destination IP. * @param password Password to connect to the destination IP. The client will be able to see this. + * @error Invalid client index, or client not in game. */ stock void DisplayAskConnectBox(int client, float time, const char[] ip, const char[] password = "") { @@ -649,15 +661,17 @@ stock void DisplayAskConnectBox(int client, float time, const char[] ip, const c * Converts an entity index into a serial encoded entity reference. * * @param entity Entity index. - * @return Entity reference. + * @return Entity reference or -1 on invalid entity. + * @error Entity index >= GetMaxEntities() or < 0 */ native int EntIndexToEntRef(int entity); /** - * Retrieves the entity index from a reference. + * Retrieves the entity index from a reference or validates an entity index. + * The input ref is checked that it is still valid and refers to the same entity. * - * @param ref Entity reference. - * @return Entity index. + * @param ref Entity reference or index. + * @return Entity index or returns INVALID_ENT_REFERENCE if ref is invalid. */ native int EntRefToEntIndex(int ref); @@ -684,7 +698,7 @@ enum ClientRangeType * @param size Maximum size of clients array. * @return Number of client indexes written to clients array. */ -native int GetClientsInRange(float origin[3], ClientRangeType rangeType, int[] clients, int size); +native int GetClientsInRange(const float origin[3], ClientRangeType rangeType, int[] clients, int size); /** * Retrieves the server's authentication string (SteamID). diff --git a/scripting/1.10/include/handles.inc b/scripting/latest/include/handles.inc similarity index 71% rename from scripting/1.10/include/handles.inc rename to scripting/latest/include/handles.inc index a6f7ebe..362ab37 100644 --- a/scripting/1.10/include/handles.inc +++ b/scripting/latest/include/handles.inc @@ -75,7 +75,38 @@ native void CloseHandle(Handle hndl); */ native Handle CloneHandle(Handle hndl, Handle plugin=INVALID_HANDLE); -using __intrinsics__.Handle; +methodmap Handle __nullable__ { + public native ~Handle(); + + /** + * Closes a Handle. If the handle has multiple copies open, + * it is not destroyed unless all copies are closed. + * + * @note Closing a Handle has a different meaning for each Handle type. Make + * sure you read the documentation on whatever provided the Handle. + * + * @error Invalid handles will cause a run time error. + */ + public native void Close(); + + /** + * Clones a Handle. When passing handles in between plugins, caching handles + * can result in accidental invalidation when one plugin releases the Handle, or is its owner + * is unloaded from memory. To prevent this, the Handle may be "cloned" with a new owner. + * + * @note Usually, you will be cloning Handles for other plugins. This means that if you clone + * the Handle without specifying the new owner, it will assume the identity of your original + * calling plugin, which is not very useful. You should either specify that the receiving + * plugin should clone the handle on its own, or you should explicitly clone the Handle + * using the receiving plugin's identity Handle. + * + * @param plugin Optional Handle to another plugin to mark as the new owner. + * If no owner is passed, the owner becomes the calling plugin. + * @return Handle on success, INVALID_HANDLE if not cloneable. + * @error Invalid handles will cause a run time error. + */ + public native Handle Clone(Handle plugin=INVALID_HANDLE); +}; /** * Do not use this function. Returns if a Handle and its contents diff --git a/scripting/1.10/include/helpers.inc b/scripting/latest/include/helpers.inc similarity index 100% rename from scripting/1.10/include/helpers.inc rename to scripting/latest/include/helpers.inc diff --git a/scripting/1.10/include/keyvalues.inc b/scripting/latest/include/keyvalues.inc similarity index 95% rename from scripting/1.10/include/keyvalues.inc rename to scripting/latest/include/keyvalues.inc index 7318507..2291ba9 100644 --- a/scripting/1.10/include/keyvalues.inc +++ b/scripting/latest/include/keyvalues.inc @@ -241,12 +241,13 @@ methodmap KeyValues < Handle // have the previous key saved for backwards traversal. // // @param kv KeyValues Handle. - public native void SavePosition(); + // @return True on success, false if there is no higher node. + public native bool SavePosition(); // Jumps back to the previous position. Returns false if there are no - // previous positions (i.e., at the root node). This should be called - // once for each successful Jump call, in order to return to the top node. - // This function pops one node off the internal traversal stack. + // previous positions (i.e., at the root node with an empty traversal stack). + // This should be called once for each successful Jump call, in order to return + // to the top node. This function pops one node off the internal traversal stack. // // @return True on success, false if there is no higher node. public native bool GoBack(); @@ -271,12 +272,14 @@ methodmap KeyValues < Handle // thus the state is as if KvGoBack() was called. public native int DeleteThis(); - // Sets the position back to the top node, emptying the entire node - // traversal history. This can be used instead of looping KvGoBack() - // if recursive iteration is not important. + // Sets the position back to the top node and clears the entire + // node traversal history (by default). This can be used instead of looping + // KvGoBack() if recursive iteration is not important. // // @param kv KeyValues Handle. - public native void Rewind(); + // @param clearHistory If true, the entire node traversal stack is cleared. + // If false, this will add to the traversal stack. + public native void Rewind(bool clearHistory=true); // Retrieves the current section name. // @@ -305,7 +308,7 @@ methodmap KeyValues < Handle // Returns the position in the jump stack; I.e. the number of calls // required for KvGoBack to return to the root node. If at the root node, - // 0 is returned. + // and the traversal stack is empty, 0 is returned. // // @return Number of non-root nodes in the jump stack. public native int NodesInStack(); @@ -523,9 +526,10 @@ native bool KvGotoNextKey(Handle kv, bool keyOnly=true); * have the previous key saved for backwards traversal. * * @param kv KeyValues Handle. + * @return True on success, false if there is no higher node. * @error Invalid Handle. */ -native void KvSavePosition(Handle kv); +native bool KvSavePosition(Handle kv); /** * Removes the given key from the current position. @@ -556,9 +560,9 @@ native int KvDeleteThis(Handle kv); /** * Jumps back to the previous position. Returns false if there are no - * previous positions (i.e., at the root node). This should be called - * once for each successful Jump call, in order to return to the top node. - * This function pops one node off the internal traversal stack. + * previous positions (i.e., at the root node with an empty traversal stack). + * This should be called once for each successful Jump call, in order to return + * to the top node. This function pops one node off the internal traversal stack. * * @param kv KeyValues Handle. * @return True on success, false if there is no higher node. diff --git a/scripting/1.10/include/lang.inc b/scripting/latest/include/lang.inc similarity index 93% rename from scripting/1.10/include/lang.inc rename to scripting/latest/include/lang.inc index 440b795..3b66905 100644 --- a/scripting/1.10/include/lang.inc +++ b/scripting/latest/include/lang.inc @@ -99,6 +99,15 @@ native void GetLanguageInfo(int language, char[] code="", int codeLen=0, char[] */ native void SetClientLanguage(int client, int language); +/** + * Retrieves the language number a client had when they connected. + * + * @param client Client index. + * @return Language number client originally had. + * @error Invalid client index or client not connected. + */ +native int GetClientOriginalLanguage(int client); + /** * Retrieves the language number from a language code. * diff --git a/scripting/1.10/include/logging.inc b/scripting/latest/include/logging.inc similarity index 100% rename from scripting/1.10/include/logging.inc rename to scripting/latest/include/logging.inc diff --git a/scripting/1.10/include/mapchooser.inc b/scripting/latest/include/mapchooser.inc similarity index 98% rename from scripting/1.10/include/mapchooser.inc rename to scripting/latest/include/mapchooser.inc index 89d73c7..f95e464 100644 --- a/scripting/1.10/include/mapchooser.inc +++ b/scripting/latest/include/mapchooser.inc @@ -135,6 +135,8 @@ forward void OnNominationRemoved(const char[] map, int owner); */ forward void OnMapVoteStarted(); +/* DO NOT EDIT BELOW THIS LINE */ + public SharedPlugin __pl_mapchooser = { name = "mapchooser", @@ -146,6 +148,7 @@ public SharedPlugin __pl_mapchooser = #endif }; +#if !defined REQUIRE_PLUGIN public void __pl_mapchooser_SetNTVOptional() { MarkNativeAsOptional("NominateMap"); @@ -158,3 +161,4 @@ public void __pl_mapchooser_SetNTVOptional() MarkNativeAsOptional("HasEndOfMapVoteFinished"); MarkNativeAsOptional("EndOfMapVoteEnabled"); } +#endif diff --git a/scripting/1.10/include/menus.inc b/scripting/latest/include/menus.inc similarity index 95% rename from scripting/1.10/include/menus.inc rename to scripting/latest/include/menus.inc index 5cdfb7a..866a312 100644 --- a/scripting/1.10/include/menus.inc +++ b/scripting/latest/include/menus.inc @@ -148,8 +148,15 @@ enum MenuSource * @param action The action of the menu. * @param param1 First action parameter (usually the client). * @param param2 Second action parameter (usually the item). + * + * Use void-typed prototype if you don't plan to handle MenuAction_DrawItem + * and MenuAction_DisplayItem actions. */ -typedef MenuHandler = function int (Menu menu, MenuAction action, int param1, int param2); +typeset MenuHandler +{ + function int (Menu menu, MenuAction action, int param1, int param2); + function void (Menu menu, MenuAction action, int param1, int param2); +}; // Panels are used for drawing raw menus without any extra helper functions. // Handles must be closed via delete or CloseHandle(). @@ -307,9 +314,23 @@ methodmap Menu < Handle // @param style By-reference variable to store drawing flags. // @param dispBuf Display buffer. // @param dispBufLen Maximum length of the display buffer. + // @param client Client index. Must be specified if menu is per-client random shuffled, -1 to ignore. // @return True on success, false if position is invalid. public native bool GetItem(int position, char[] infoBuf, int infoBufLen, - int &style=0, char[] dispBuf="", int dispBufLen=0); + int &style=0, char[] dispBuf="", int dispBufLen=0, int client=0); + + // Generates a per-client random mapping for the current vote options. + // + // @param start Menu item index to start randomizing from. + // @param stop Menu item index to stop randomizing at. -1 = infinite + public native void ShufflePerClient(int start=0, int stop=-1); + + // Fills the client vote option mapping with user supplied values. + // + // @param client Client index. + // @param array Integer array with mapping. + // @param length Length of array. + public native void SetClientMapping(int client, int[] array, int length); // Sets the menu's default title/instruction message. // @@ -504,7 +525,7 @@ native bool AddMenuItem(Handle menu, * @error Invalid Handle or menu position. */ native bool InsertMenuItem(Handle menu, - position, + int position, const char[] info, const char[] display, int style=ITEMDRAW_DEFAULT); @@ -537,6 +558,7 @@ native void RemoveAllMenuItems(Handle menu); * @param style By-reference variable to store drawing flags. * @param dispBuf Display buffer. * @param dispBufLen Maximum length of the display buffer. + * @param client Client index. Must be specified if menu is per-client random shuffled, -1 to ignore. * @return True on success, false if position is invalid. * @error Invalid Handle. */ @@ -546,7 +568,27 @@ native bool GetMenuItem(Handle menu, int infoBufLen, int &style=0, char[] dispBuf="", - int dispBufLen=0); + int dispBufLen=0, + int client=0); + +/** + * Generates a per-client random mapping for the current vote options. + * + * @param menu Menu Handle. + * @param start Menu item index to start randomizing from. + * @param stop Menu item index to stop randomizing at. -1 = infinite + */ +native void MenuShufflePerClient(Handle menu, int start=0, int stop=-1); + +/* + * Fills the client vote option mapping with user supplied values. + * + * @param menu Menu Handle. + * @param client Client index. + * @param array Integer array with mapping. + * @param length Length of array. + */ +native void MenuSetClientMapping(Handle menu, int client, int[] array, int length); /** * Returns the first item on the page of a currently selected menu. diff --git a/scripting/1.10/include/nextmap.inc b/scripting/latest/include/nextmap.inc similarity index 100% rename from scripting/1.10/include/nextmap.inc rename to scripting/latest/include/nextmap.inc diff --git a/scripting/1.10/include/profiler.inc b/scripting/latest/include/profiler.inc similarity index 100% rename from scripting/1.10/include/profiler.inc rename to scripting/latest/include/profiler.inc diff --git a/scripting/1.10/include/protobuf.inc b/scripting/latest/include/protobuf.inc similarity index 100% rename from scripting/1.10/include/protobuf.inc rename to scripting/latest/include/protobuf.inc diff --git a/scripting/1.10/include/regex.inc b/scripting/latest/include/regex.inc similarity index 99% rename from scripting/1.10/include/regex.inc rename to scripting/latest/include/regex.inc index 88ae11e..97fcc18 100644 --- a/scripting/1.10/include/regex.inc +++ b/scripting/latest/include/regex.inc @@ -199,12 +199,13 @@ native Regex CompileRegex(const char[] pattern, int flags = 0, char[] error="", * @param regex Regex Handle from CompileRegex() * @param str The string to check. * @param ret Error code, if applicable. + * @param offset Offset in the string to start searching from. * @return Number of captures found or -1 on failure. * * @note Use the regex handle passed to this function to extract * matches with GetRegexSubString(). */ -native int MatchRegex(Handle regex, const char[] str, RegexError &ret = REGEX_ERROR_NONE); +native int MatchRegex(Handle regex, const char[] str, RegexError &ret = REGEX_ERROR_NONE, int offset = 0); /** * Returns a matched substring from a regex handle. diff --git a/scripting/1.10/include/sdkhooks.inc b/scripting/latest/include/sdkhooks.inc similarity index 95% rename from scripting/1.10/include/sdkhooks.inc rename to scripting/latest/include/sdkhooks.inc index 0c8ba4e..b6f73c1 100644 --- a/scripting/1.10/include/sdkhooks.inc +++ b/scripting/latest/include/sdkhooks.inc @@ -237,11 +237,12 @@ typeset SDKHookCB function void (int client); // Spawn + // Think function Action (int entity); // GroundEntChanged // SpawnPost - // Think/Post + // ThinkPost // VPhysicsUpdate/Post function void (int entity); @@ -350,7 +351,7 @@ forward void OnEntityCreated(int entity, const char[] classname); /** * When an entity is destroyed * - * @param entity Entity index + * @param entity Entity index or edict reference. */ forward void OnEntityDestroyed(int entity); @@ -368,14 +369,17 @@ forward Action OnGetGameDescription(char gameDesc[64]); * When the level is initialized * * @param mapName Name of the map - * @param mapEntities Entities of the map - * @return Plugin_Changed if mapEntities has been edited, else no change. + * @param mapEntities Unused, always empty + * @return Unused, return value is ignored */ +#pragma deprecated Use OnMapInit() instead forward Action OnLevelInit(const char[] mapName, char mapEntities[2097152]); /** * Hooks an entity * + * Unhooked automatically upon destruction/removal of the entity + * * @param entity Entity index * @param type Type of function to hook * @param callback Function to call when hook is called @@ -385,6 +389,8 @@ native void SDKHook(int entity, SDKHookType type, SDKHookCB callback); /** * Hooks an entity * + * Unhooked automatically upon destruction/removal of the entity + * * @param entity Entity index * @param type Type of function to hook * @param callback Function to call when hook is called @@ -414,10 +420,13 @@ native void SDKUnhook(int entity, SDKHookType type, SDKHookCB callback); * @param weapon Weapon index (orangebox and later) or -1 for unspecified * @param damageForce Velocity of damage force * @param damagePosition Origin of damage + * @param bypassHooks If true, bypass SDK hooks on OnTakeDamage + * @error Invalid entity, attacker, inflictor, or weapon entity. */ native void SDKHooks_TakeDamage(int entity, int inflictor, int attacker, float damage, int damageType=DMG_GENERIC, int weapon=-1, - const float damageForce[3]=NULL_VECTOR, const float damagePosition[3]=NULL_VECTOR); + const float damageForce[3]=NULL_VECTOR, const float damagePosition[3]=NULL_VECTOR, + bool bypassHooks = true); /** * Forces a client to drop the specified weapon @@ -426,10 +435,11 @@ native void SDKHooks_TakeDamage(int entity, int inflictor, int attacker, * @param weapon Weapon entity index. * @param vecTarget Location to toss weapon to, or NULL_VECTOR for default. * @param vecVelocity Velocity at which to toss weapon, or NULL_VECTOR for default. + * @param bypassHooks If true, bypass SDK hooks on Weapon Drop * @error Invalid client or weapon entity, weapon not owned by client. */ native void SDKHooks_DropWeapon(int client, int weapon, const float vecTarget[3]=NULL_VECTOR, - const float vecVelocity[3]=NULL_VECTOR); + const float vecVelocity[3]=NULL_VECTOR, bool bypassHooks = true); /** * Do not edit below this line! diff --git a/scripting/1.10/include/sdktools.inc b/scripting/latest/include/sdktools.inc similarity index 95% rename from scripting/1.10/include/sdktools.inc rename to scripting/latest/include/sdktools.inc index e5dffba..6687e64 100644 --- a/scripting/1.10/include/sdktools.inc +++ b/scripting/latest/include/sdktools.inc @@ -60,7 +60,9 @@ enum SDKCallType SDKCall_Player, /**< CBasePlayer call */ SDKCall_GameRules, /**< CGameRules call */ SDKCall_EntityList, /**< CGlobalEntityList call */ - SDKCall_Raw /**< |this| pointer with an arbitrary address */ + SDKCall_Raw, /**< |this| pointer with an arbitrary address */ + SDKCall_Server, /**< CBaseServer call */ + SDKCall_Engine /**< CVEngineServer call */ }; enum SDKLibrary @@ -146,6 +148,7 @@ native bool PrepSDKCall_SetAddress(Address addr); * @param source Whether to look in Offsets or Signatures. * @param name Name of the property to find. * @return True on success, false if nothing was found. + * @error Invalid game config Handle. */ native bool PrepSDKCall_SetFromConf(Handle gameconf, SDKFuncConfSource source, const char[] name); @@ -168,6 +171,7 @@ native void PrepSDKCall_SetReturnInfo(SDKType type, SDKPassMethod pass, int decf * @param pass How the data is passed in C++. * @param decflags Flags on decoding from the plugin to C++. * @param encflags Flags on encoding from C++ to the plugin. + * @error Parameter limit for SDK calls reached. */ native void PrepSDKCall_AddParameter(SDKType type, SDKPassMethod pass, int decflags=0, int encflags=0); @@ -190,6 +194,7 @@ native Handle EndPrepSDKCall(); * rules will result in crashes or wildly unexpected behavior! * * If the return value is a float or integer, the return value will be this value. + * If the return value is a string, the value returned by the function will be the number of bytes written, or -1 for NULL. * If the return value is a CBaseEntity, CBasePlayer, or edict, the return value will * always be the entity index, or -1 for NULL. * diff --git a/scripting/1.10/include/sdktools_client.inc b/scripting/latest/include/sdktools_client.inc similarity index 95% rename from scripting/1.10/include/sdktools_client.inc rename to scripting/latest/include/sdktools_client.inc index 23da412..885f563 100644 --- a/scripting/1.10/include/sdktools_client.inc +++ b/scripting/latest/include/sdktools_client.inc @@ -39,6 +39,7 @@ * Sets the client to an inactive state waiting for a new map * * @param client The client index + * @error Invalid client index. */ native void InactivateClient(int client); @@ -46,5 +47,6 @@ native void InactivateClient(int client); * Reconnect a client without dropping the netchannel * * @param client The client index + * @error Invalid client index. */ native void ReconnectClient(int client); diff --git a/scripting/1.10/include/sdktools_engine.inc b/scripting/latest/include/sdktools_engine.inc similarity index 100% rename from scripting/1.10/include/sdktools_engine.inc rename to scripting/latest/include/sdktools_engine.inc diff --git a/scripting/1.10/include/sdktools_entinput.inc b/scripting/latest/include/sdktools_entinput.inc similarity index 100% rename from scripting/1.10/include/sdktools_entinput.inc rename to scripting/latest/include/sdktools_entinput.inc diff --git a/scripting/1.10/include/sdktools_entoutput.inc b/scripting/latest/include/sdktools_entoutput.inc similarity index 100% rename from scripting/1.10/include/sdktools_entoutput.inc rename to scripting/latest/include/sdktools_entoutput.inc diff --git a/scripting/1.10/include/sdktools_functions.inc b/scripting/latest/include/sdktools_functions.inc similarity index 77% rename from scripting/1.10/include/sdktools_functions.inc rename to scripting/latest/include/sdktools_functions.inc index 3be387e..e1beca0 100644 --- a/scripting/1.10/include/sdktools_functions.inc +++ b/scripting/latest/include/sdktools_functions.inc @@ -96,15 +96,16 @@ native void ExtinguishEntity(int entity); * @param velocity New velocity, or NULL_VECTOR for no change. * @error Invalid entity or client not in game, or lack of mod support. */ -native void TeleportEntity(int entity, const float origin[3], const float angles[3], const float velocity[3]); +native void TeleportEntity(int entity, const float origin[3] = NULL_VECTOR, const float angles[3] = NULL_VECTOR, const float velocity[3] = NULL_VECTOR); /** * Forces a player to commit suicide. * * @param client Client index. + * @param explode If true, explode the player. * @error Invalid client or client not in game, or lack of mod support. */ -native void ForcePlayerSuicide(int client); +native void ForcePlayerSuicide(int client, bool explode = false); /** * Slaps a player in a random direction. @@ -119,11 +120,11 @@ native void SlapPlayer(int client, int health=5, bool sound=true); /** * Searches for an entity by classname. * - * @param startEnt The entity index after which to begin searching from. + * @param startEnt A valid entity's index after which to begin searching from. * Use -1 to start from the first entity. * @param classname Classname of the entity to find. * @return Entity index >= 0 if found, -1 otherwise. - * @error Lack of mod support. + * @error Invalid start entity or lack of mod support. */ native int FindEntityByClassname(int startEnt, const char[] classname); @@ -133,7 +134,7 @@ native int FindEntityByClassname(int startEnt, const char[] classname); * @param client Player's index. * @param ang Destination vector to store the client's eye angles. * @return True on success, false on failure. - * @error Invalid client index, client not in game, or no mod support. + * @error Invalid client index, client not in game, or lack of mod support. */ native bool GetClientEyeAngles(int client, float ang[3]); @@ -145,7 +146,7 @@ native bool GetClientEyeAngles(int client, float ang[3]); * @param classname Entity classname. * @param ForceEdictIndex Edict index used by the created entity (ignored on Orangebox and above). * @return Entity index on success, or -1 on failure. - * @error Invalid edict index, or no mod support. + * @error Invalid edict index, no map is running, or lack of mod support. */ native int CreateEntityByName(const char[] classname, int ForceEdictIndex=-1); @@ -154,7 +155,7 @@ native int CreateEntityByName(const char[] classname, int ForceEdictIndex=-1); * * @param entity Entity index of the created entity. * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @error Invalid entity index or lack of mod support. */ native bool DispatchSpawn(int entity); @@ -165,10 +166,27 @@ native bool DispatchSpawn(int entity); * @param keyName Name of the key. * @param value String value. * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @error Invalid entity index or lack of mod support. */ native bool DispatchKeyValue(int entity, const char[] keyName, const char[] value); +/** + * Dispatches a KeyValue into given entity using an integer value. + * + * @param entity Destination entity index. + * @param keyName Name of the key. + * @param value Integer value. + * @return True on success, false otherwise. + * @error Invalid entity index or lack of mod support. + */ +stock bool DispatchKeyValueInt(int entity, const char[] keyName, int value) +{ + char str[12]; + FormatEx(str, sizeof(str), "%d", value); + + return DispatchKeyValue(entity, keyName, str); +} + /** * Dispatches a KeyValue into given entity using a floating point value. * @@ -176,7 +194,7 @@ native bool DispatchKeyValue(int entity, const char[] keyName, const char[] valu * @param keyName Name of the key. * @param value Floating point value. * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @error Invalid entity index or lack of mod support. */ native bool DispatchKeyValueFloat(int entity, const char[] keyName, float value); @@ -187,7 +205,7 @@ native bool DispatchKeyValueFloat(int entity, const char[] keyName, float value) * @param keyName Name of the key. * @param vec Vector value. * @return True on success, false otherwise. - * @error Invalid entity index, or no mod support. + * @error Invalid entity index or lack of mod support. */ native bool DispatchKeyValueVector(int entity, const char[] keyName, const float vec[3]); @@ -266,7 +284,7 @@ native int GetTeamEntity(int teamIndex); * * @param entity Entity index. * @param model Model name. - * @error Invalid entity index, or no mod support. + * @error Invalid entity index or lack of mod support. */ native void SetEntityModel(int entity, const char[] model); @@ -297,6 +315,7 @@ native bool GetPlayerJingleFile(int client, char[] hex, int maxlength); * * @param in Buffer to store the input traffic velocity. * @param out Buffer to store the output traffic velocity. + * @error Lack of mod support. */ native void GetServerNetStats(float &inAmount, float &outAmout); @@ -325,7 +344,7 @@ native void ActivateEntity(int entity); * @param client Player's index. * @param key Key string. * @param value Value string. - * @error Invalid client index, or client not connected. + * @error Invalid client index, client not connected, or lack of mod support. */ native void SetClientInfo(int client, const char[] key, const char[] value); @@ -334,7 +353,7 @@ native void SetClientInfo(int client, const char[] key, const char[] value); * * @param client Player's index. * @param name New name. - * @error Invalid client index, or client not connected. + * @error Invalid client index, client not connected, or lack of mod support. */ native void SetClientName(int client, const char[] name); @@ -347,5 +366,54 @@ native void SetClientName(int client, const char[] name); * @param ammotype Type of ammo to give to player. * @param suppressSound If true, don't play the ammo pickup sound. * @return Amount of ammo actually given. + * @error Lack of mod support. */ native int GivePlayerAmmo(int client, int amount, int ammotype, bool suppressSound=false); + +/** + * Changes an entity's collision group (CBaseEntity::SetCollisionGroup). + * + * @param entity The entity index. + * @param collisionGroup Collision group to use. + * @error Invalid entity or lack of mod support. + */ +native void SetEntityCollisionGroup(int entity, int collisionGroup); + +/** + * Recaculates entity collision rules (CBaseEntity::CollisionRulesChanged). + * + * @param entity The entity index. + * @error Invalid entity or lack of mod support. + */ +native void EntityCollisionRulesChanged(int entity); + +/** + * Sets an entity's owner (CBaseEntity::SetEntityOwner). + * + * @param entity The entity index. + * @param owner The owner entity index, can be invalid. + * @error Invalid entity or lack of mod support. + */ +native void SetEntityOwner(int entity, int owner=INVALID_ENT_REFERENCE); + +/** + * Returns the index number of a given named attachment. + * + * @param entity The entity index. + * @param name The attachment name. + * @return An attachment index, or 0 if the attachment name is invalid or unused. + * @error Invalid entity or lack of mod support. + */ +native int LookupEntityAttachment(int entity, const char[] name); + +/** + * Returns the world location and world angles of an attachment. + * + * @param entity The entity index. + * @param attachment The attachment index. + * @param origin Destination vector to store the attachment's origin vector. + * @param angles Destination vector to store the attachment's position angle. + * @return True on success, otherwise false. + * @error Invalid entity or lack of mod support. + */ +native bool GetEntityAttachment(int entity, int attachment, float origin[3], float angles[3]); diff --git a/scripting/1.10/include/sdktools_gamerules.inc b/scripting/latest/include/sdktools_gamerules.inc similarity index 87% rename from scripting/1.10/include/sdktools_gamerules.inc rename to scripting/latest/include/sdktools_gamerules.inc index dc69355..6d07166 100644 --- a/scripting/1.10/include/sdktools_gamerules.inc +++ b/scripting/latest/include/sdktools_gamerules.inc @@ -80,7 +80,7 @@ enum RoundState { * only used as a fallback in case detection fails. * @param element Element # (starting from 0) if property is an array. * @return Value at the given property offset. - * @error Not supported. + * @error Prop type is not an integer, or lack of mod support. */ native int GameRules_GetProp(const char[] prop, int size=4, int element=0); @@ -94,7 +94,7 @@ native int GameRules_GetProp(const char[] prop, int size=4, int element=0); * only used as a fallback in case detection fails. * @param element Element # (starting from 0) if property is an array. * @param changeState This parameter is ignored. - * @error Not supported. + * @error Prop type is not an integer, or lack of mod support. */ native void GameRules_SetProp(const char[] prop, any value, int size=4, int element=0, bool changeState=false); @@ -104,7 +104,7 @@ native void GameRules_SetProp(const char[] prop, any value, int size=4, int elem * @param prop Property name. * @param element Element # (starting from 0) if property is an array. * @return Value at the given property offset. - * @error Not supported. + * @error Prop type is not a float, or lack of mod support. */ native float GameRules_GetPropFloat(const char[] prop, int element=0); @@ -115,7 +115,7 @@ native float GameRules_GetPropFloat(const char[] prop, int element=0); * @param value Value to set. * @param element Element # (starting from 0) if property is an array. * @param changeState This parameter is ignored. - * @error Not supported. + * @error Prop type is not a float, or lack of mod support. */ native void GameRules_SetPropFloat(const char[] prop, float value, int element=0, bool changeState=false); @@ -127,7 +127,7 @@ native void GameRules_SetPropFloat(const char[] prop, float value, int element=0 * @return Entity index at the given property. * If there is no entity, or the entity is not valid, * then -1 is returned. - * @error Not supported. + * @error Prop type is not an entity, or lack of mod support. */ native int GameRules_GetPropEnt(const char[] prop, int element=0); @@ -138,7 +138,7 @@ native int GameRules_GetPropEnt(const char[] prop, int element=0); * @param other Entity index to set, or -1 to unset. * @param element Element # (starting from 0) if property is an array. * @param changeState This parameter is ignored. - * @error Not supported. + * @error Prop type is not an entity, invalid entity, or lack of mod support. */ native void GameRules_SetPropEnt(const char[] prop, int other, int element=0, bool changeState=false); @@ -148,7 +148,7 @@ native void GameRules_SetPropEnt(const char[] prop, int other, int element=0, bo * @param prop Property name. * @param vec Vector buffer to store data in. * @param element Element # (starting from 0) if property is an array. - * @error Not supported. + * @error Prop type is not a vector, or lack of mod support. */ native void GameRules_GetPropVector(const char[] prop, float vec[3], int element=0); @@ -159,7 +159,7 @@ native void GameRules_GetPropVector(const char[] prop, float vec[3], int element * @param vec Vector to set. * @param element Element # (starting from 0) if property is an array. * @param changeState This parameter is ignored. - * @error Not supported. + * @error Prop type is not a vector, or lack of mod support. */ native void GameRules_SetPropVector(const char[] prop, const float vec[3], int element=0, bool changeState=false); @@ -169,10 +169,11 @@ native void GameRules_SetPropVector(const char[] prop, const float vec[3], int e * @param prop Property to use. * @param buffer Destination string buffer. * @param maxlen Maximum length of output string buffer. + * @param element Element # (starting from 0) if property is an array. * @return Number of non-null bytes written. - * @error Not supported. + * @error Prop type is not a string, or lack of mod support. */ -native int GameRules_GetPropString(const char[] prop, char[] buffer, int maxlen); +native int GameRules_GetPropString(const char[] prop, char[] buffer, int maxlen, int element=0); /** * Sets a gamerules property as a string. @@ -180,10 +181,11 @@ native int GameRules_GetPropString(const char[] prop, char[] buffer, int maxlen) * @param prop Property to use. * @param buffer String to set. * @param changeState This parameter is ignored. + * @param element Element # (starting from 0) if property is an array. * @return Number of non-null bytes written. - * @error Not supported. + * @error Prop type is not a string, or lack of mod support. */ -native int GameRules_SetPropString(const char[] prop, const char[] buffer, bool changeState=false); +native int GameRules_SetPropString(const char[] prop, const char[] buffer, bool changeState=false, int element=0); /** * Gets the current round state. diff --git a/scripting/1.10/include/sdktools_hooks.inc b/scripting/latest/include/sdktools_hooks.inc similarity index 81% rename from scripting/1.10/include/sdktools_hooks.inc rename to scripting/latest/include/sdktools_hooks.inc index aa20e3b..9c92772 100644 --- a/scripting/1.10/include/sdktools_hooks.inc +++ b/scripting/latest/include/sdktools_hooks.inc @@ -37,6 +37,23 @@ #define FEATURECAP_PLAYERRUNCMD_11PARAMS "SDKTools PlayerRunCmd 11Params" +/** + * Called when a clients movement buttons are being processed (Read Only) + * + * @param client Index of the client. + * @param buttons Current commands (as bitflags - see entity_prop_stocks.inc). + * @param impulse Current impulse command. + * @param vel Players desired velocity. + * @param angles Players desired view angles. + * @param weapon Entity index of the new weapon if player switches weapon, 0 otherwise. + * @param subtype Weapon subtype when selected from a menu. + * @param cmdnum Command number. Increments from the first command sent. + * @param tickcount Tick count. A client's prediction based on the server's GetGameTickCount value. + * @param seed Random seed. Used to determine weapon recoil, spread, and other predicted elements. + * @param mouse Mouse direction (x, y). + */ +forward void OnPlayerRunCmdPre(int client, int buttons, int impulse, const float vel[3], const float angles[3], int weapon, int subtype, int cmdnum, int tickcount, int seed, const int mouse[2]); + /** * Called when a clients movement buttons are being processed * diff --git a/scripting/1.10/include/sdktools_sound.inc b/scripting/latest/include/sdktools_sound.inc similarity index 93% rename from scripting/1.10/include/sdktools_sound.inc rename to scripting/latest/include/sdktools_sound.inc index 41c87de..247971e 100644 --- a/scripting/1.10/include/sdktools_sound.inc +++ b/scripting/latest/include/sdktools_sound.inc @@ -72,15 +72,18 @@ enum */ enum { - SND_NOFLAGS= 0, /**< Nothing */ - SND_CHANGEVOL = 1, /**< Change sound volume */ - SND_CHANGEPITCH = 2, /**< Change sound pitch */ - SND_STOP = 3, /**< Stop the sound */ - SND_SPAWNING = 4, /**< Used in some cases for ambients */ - SND_DELAY = 5, /**< Sound has an initial delay */ - SND_STOPLOOPING = 6, /**< Stop looping all sounds on the entity */ - SND_SPEAKER = 7, /**< Being played by a mic through a speaker */ - SND_SHOULDPAUSE = 8 /**< Pause if game is paused */ + SND_NOFLAGS = 0, /** Nothing */ + SND_CHANGEVOL = (1 << 0), /** Change sound volume */ + SND_CHANGEPITCH = (1 << 1), /** Change sound pitch */ + SND_STOP = (1 << 2), /** Stop the sound */ + SND_SPAWNING = (1 << 3), /** Used in some cases for ambients */ + SND_DELAY = (1 << 4), /** Sound has an initial delay */ + SND_STOPLOOPING = (1 << 5), /** Stop looping all sounds on the entity */ + SND_SPEAKER = (1 << 6), /** Being played by a mic through a speaker */ + SND_SHOULDPAUSE = (1 << 7), /** Pause if game is paused */ + SND_IGNORE_PHONEMES = (1 << 8), /** Prevents flex animation from being driven by this sound */ + SND_IGNORE_NAME = (1 << 9), /** Changes all sounds emitted on the entity, regardless of actual name */ + SND_DO_NOT_OVERWRITE_EXISTING_ON_CHANNEL = (1 << 10) /** If an existing sound is found on the channel, the sound will not play instead of overwriting it */ }; /** @@ -199,7 +202,7 @@ native void StopSound(int entity, int channel, const char[] name); * @param updatePos Unknown (updates positions?) * @param soundtime Alternate time to play sound for. * @param ... Optional list of Float[3] arrays to specify additional origins. - * @error Invalid client index. + * @error Invalid client index or client not in game. */ native void EmitSound(const int[] clients, int numClients, @@ -238,7 +241,7 @@ native void EmitSound(const int[] clients, * @param updatePos Unknown (updates positions?) * @param soundtime Alternate time to play sound for. * @param ... Optional list of Float[3] arrays to specify additional origins. - * @error Invalid client index. + * @error Invalid client index, client not in game, or lack of mod support. */ native void EmitSoundEntry(const int[] clients, int numClients, @@ -276,7 +279,7 @@ native void EmitSoundEntry(const int[] clients, * @param updatePos Unknown (updates positions?) * @param soundtime Alternate time to play sound for. * @param ... Optional list of Float[3] arrays to specify additional origins. - * @error Invalid client index. + * @error Invalid client index or client not in game. */ native void EmitSentence(const int[] clients, int numClients, @@ -410,7 +413,7 @@ native void RemoveNormalSoundHook(NormalSHook hook); * @param dir Sound direction. * @param updatePos Unknown (updates positions?) * @param soundtime Alternate time to play sound for. - * @error Invalid client index. + * @error Invalid client index or client not in game. */ stock void EmitSoundToClient(int client, const char[] sample, @@ -549,7 +552,7 @@ native bool GetGameSoundParams(const char[] gameSound, * @param updatePos Unknown (updates positions?) * @param soundtime Alternate time to play sound for. * @return True if the sound was played successfully, false if it failed - * @error Invalid client index. + * @error Invalid client index or client not in game. */ stock bool EmitGameSound(const int[] clients, int numClients, @@ -631,7 +634,7 @@ stock bool EmitAmbientGameSound(const char[] gameSound, * @param dir Sound direction. * @param updatePos Unknown (updates positions?) * @param soundtime Alternate time to play sound for. - * @error Invalid client index. + * @error Invalid client index or client not in game. */ stock bool EmitGameSoundToClient(int client, const char[] gameSound, diff --git a/scripting/1.10/include/sdktools_stocks.inc b/scripting/latest/include/sdktools_stocks.inc similarity index 100% rename from scripting/1.10/include/sdktools_stocks.inc rename to scripting/latest/include/sdktools_stocks.inc diff --git a/scripting/1.10/include/sdktools_stringtables.inc b/scripting/latest/include/sdktools_stringtables.inc similarity index 95% rename from scripting/1.10/include/sdktools_stringtables.inc rename to scripting/latest/include/sdktools_stringtables.inc index 497dd99..346fb33 100644 --- a/scripting/1.10/include/sdktools_stringtables.inc +++ b/scripting/latest/include/sdktools_stringtables.inc @@ -119,9 +119,9 @@ native int GetStringTableDataLength(int tableidx, int stringidx); * * @param tableidx A string table index. * @param stringidx A string index. - * @param userdata Buffer to store the user data. This will be set to "" if there is no user data. + * @param userdata Buffer to store the user data. This will be set to "" if there is no user data * @param maxlength Maximum length of string buffer. - * @return Number of bytes written to the buffer (UTF-8 safe). + * @return Number of bytes written to the buffer (binary safe, includes the null terminator). * @error Invalid string table index or string index. */ native int GetStringTableData(int tableidx, int stringidx, char[] userdata, int maxlength); @@ -133,10 +133,9 @@ native int GetStringTableData(int tableidx, int stringidx, char[] userdata, int * @param stringidx A string index. * @param userdata User data string that will be set. * @param length Length of user data string. This should include the null terminator. - * @return Number of bytes written to the buffer (UTF-8 safe). * @error Invalid string table index or string index. */ -native int SetStringTableData(int tableidx, int stringidx, const char[] userdata, int length); +native void SetStringTableData(int tableidx, int stringidx, const char[] userdata, int length); /** * Adds a string to a given string table. @@ -147,6 +146,7 @@ native int SetStringTableData(int tableidx, int stringidx, const char[] userdata * @param length Length of user data string. This should include the null terminator. * If set to -1, then user data will be not be altered if the specified string * already exists in the string table. + * @error Invalid string table index. */ native void AddToStringTable(int tableidx, const char[] str, const char[] userdata="", int length=-1); diff --git a/scripting/1.10/include/sdktools_tempents.inc b/scripting/latest/include/sdktools_tempents.inc similarity index 91% rename from scripting/1.10/include/sdktools_tempents.inc rename to scripting/latest/include/sdktools_tempents.inc index cc35c71..7364395 100644 --- a/scripting/1.10/include/sdktools_tempents.inc +++ b/scripting/latest/include/sdktools_tempents.inc @@ -98,6 +98,24 @@ native void TE_WriteNum(const char[] prop, int value); */ native int TE_ReadNum(const char[] prop); +/** + * Sets an entity value in the current temp entity. + * + * @param prop Property to use. + * @param value Entity reference or index value to set. + * @error Property not found. + */ +native void TE_WriteEnt(const char[] prop, int value); + +/** + * Reads an entity value in the current temp entity. + * + * @param prop Property to use. + * @return Property value as backwards compatible entity reference. + * @error Property not found. + */ +native int TE_ReadEnt(const char[] prop); + /** * Sets a floating point number in the current temp entity. * @@ -224,7 +242,7 @@ stock void TE_SendToClient(int client, float delay=0.0) * @param rangeType Range type to use for filtering clients. * @param delay Delay in seconds to send the TE. */ -stock void TE_SendToAllInRange(float origin[3], ClientRangeType rangeType, float delay=0.0) +stock void TE_SendToAllInRange(const float origin[3], ClientRangeType rangeType, float delay=0.0) { int[] clients = new int[MaxClients]; int total = GetClientsInRange(origin, rangeType, clients, MaxClients); diff --git a/scripting/1.10/include/sdktools_tempents_stocks.inc b/scripting/latest/include/sdktools_tempents_stocks.inc similarity index 100% rename from scripting/1.10/include/sdktools_tempents_stocks.inc rename to scripting/latest/include/sdktools_tempents_stocks.inc diff --git a/scripting/1.10/include/sdktools_trace.inc b/scripting/latest/include/sdktools_trace.inc similarity index 89% rename from scripting/1.10/include/sdktools_trace.inc rename to scripting/latest/include/sdktools_trace.inc index cf977e1..e5cce27 100644 --- a/scripting/1.10/include/sdktools_trace.inc +++ b/scripting/latest/include/sdktools_trace.inc @@ -164,6 +164,14 @@ enum RayType RayType_Infinite /**< The trace ray will go from the start position to infinity using a direction vector. */ }; +enum TraceType +{ + TRACE_EVERYTHING = 0, + TRACE_WORLD_ONLY, /**< NOTE: This does *not* test static props!!! */ + TRACE_ENTITIES_ONLY, /**< NOTE: This version will *not* test static props */ + TRACE_EVERYTHING_FILTER_PROPS /**< NOTE: This version will pass the IHandleEntity for props through the filter, unlike all other filters */ +}; + typeset TraceEntityFilter { /** @@ -220,6 +228,7 @@ native int TR_GetPointContents(const float pos[3], int &entindex=-1); * @param entindex Entity index to test. * @param pos World position. * @return Contents mask. + * @error Invalid entity. */ native int TR_GetPointContentsEnt(int entindex, const float pos[3]); @@ -295,6 +304,52 @@ native void TR_EnumerateEntitiesHull(const float pos[3], TraceEntityEnumerator enumerator, any data=0); +/** + * Enumerates over entities in a sphere. + * + * @param pos Starting position of the ray. + * @param radius Radius of the ray. + * @param mask Mask to use for the trace. See PARTITION_* flags. + * @param enumerator Function to use as enumerator. For each entity found + * along the ray, this function is called. + * @param data Arbitrary data value to pass through to the enumerator. + */ +native void TR_EnumerateEntitiesSphere(const float pos[3], + float radius, + int mask, + TraceEntityEnumerator enumerator, + any data=0); + +/** + * Enumerates over entities in a box. + * + * @param mins Box minimum size. + * @param maxs Box maximum size. + * @param mask Mask to use for the trace. See PARTITION_* flags. + * @param enumerator Function to use as enumerator. For each entity found + * along the box, this function is called. + * @param data Arbitrary data value to pass through to the enumerator. + */ +native void TR_EnumerateEntitiesBox(const float mins[3], + const float maxs[3], + int mask, + TraceEntityEnumerator enumerator, + any data=0); + +/** + * Enumerates over entities at point. + * + * @param pos Position of the point. + * @param mask Mask to use for the trace. See PARTITION_* flags. + * @param enumerator Function to use as enumerator. For each entity found + * along the point, this function is called. + * @param data Arbitrary data value to pass through to the enumerator. + */ +native void TR_EnumerateEntitiesPoint(const float pos[3], + int mask, + TraceEntityEnumerator enumerator, + any data=0); + /** * Starts up a new trace ray using a global trace result and a customized * trace ray filter. @@ -310,13 +365,15 @@ native void TR_EnumerateEntitiesHull(const float pos[3], * @param filter Function to use as a filter. * @param data Arbitrary data value to pass through to the filter * function. + * @param traceType Trace type. */ native void TR_TraceRayFilter(const float pos[3], const float vec[3], int flags, RayType rtype, TraceEntityFilter filter, - any data=0); + any data=0, + TraceType traceType=TRACE_EVERYTHING); /** * Starts up a new trace hull using a global trace result and a customized @@ -333,6 +390,7 @@ native void TR_TraceRayFilter(const float pos[3], * @param filter Function to use as a filter. * @param data Arbitrary data value to pass through to the filter * function. + * @param traceType Trace type. */ native void TR_TraceHullFilter(const float pos[3], const float vec[3], @@ -340,7 +398,8 @@ native void TR_TraceHullFilter(const float pos[3], const float maxs[3], int flags, TraceEntityFilter filter, - any data=0); + any data=0, + TraceType traceType=TRACE_EVERYTHING); /** * Clips a ray to a particular entity. @@ -351,6 +410,7 @@ native void TR_TraceHullFilter(const float pos[3], * @param flags Trace flags. * @param rtype Method to calculate the ray direction. * @param entity Entity to clip to. + * @error Invalid entity. */ native void TR_ClipRayToEntity(const float pos[3], const float vec[3], @@ -367,6 +427,7 @@ native void TR_ClipRayToEntity(const float pos[3], * @param maxs Hull maximum size. * @param flags Trace flags. * @param entity Entity to clip to. + * @error Invalid entity. */ native void TR_ClipRayHullToEntity(const float pos[3], const float vec[3], @@ -380,6 +441,7 @@ native void TR_ClipRayHullToEntity(const float pos[3], * * @param flags Trace flags. * @param entity Entity to clip to. + * @error Invalid entity. */ native void TR_ClipCurrentRayToEntity(int flags, int entity); @@ -428,6 +490,7 @@ native Handle TR_TraceHullEx(const float pos[3], * @param rtype Method to calculate the ray direction. * @param filter Function to use as a filter. * @param data Arbitrary data value to pass through to the filter function. + * @param traceType Trace type. * @return Ray trace handle, which must be closed via CloseHandle(). */ native Handle TR_TraceRayFilterEx(const float pos[3], @@ -435,7 +498,8 @@ native Handle TR_TraceRayFilterEx(const float pos[3], int flags, RayType rtype, TraceEntityFilter filter, - any data=0); + any data=0, + TraceType traceType=TRACE_EVERYTHING); /** * Starts up a new trace hull using a new trace result and a customized @@ -451,6 +515,7 @@ native Handle TR_TraceRayFilterEx(const float pos[3], * @param flags Trace flags. * @param filter Function to use as a filter. * @param data Arbitrary data value to pass through to the filter function. + * @param traceType Trace type. * @return Ray trace handle, which must be closed via CloseHandle(). */ native Handle TR_TraceHullFilterEx(const float pos[3], @@ -459,7 +524,8 @@ native Handle TR_TraceHullFilterEx(const float pos[3], const float maxs[3], int flags, TraceEntityFilter filter, - any data=0); + any data=0, + TraceType traceType=TRACE_EVERYTHING); /** * Clips a ray to a particular entity. @@ -471,6 +537,7 @@ native Handle TR_TraceHullFilterEx(const float pos[3], * @param rtype Method to calculate the ray direction. * @param entity Entity to clip to. * @return Ray trace handle, which must be closed via CloseHandle(). + * @error Invalid entity. */ native Handle TR_ClipRayToEntityEx(const float pos[3], const float vec[3], @@ -488,6 +555,7 @@ native Handle TR_ClipRayToEntityEx(const float pos[3], * @param flags Trace flags. * @param entity Entity to clip to. * @return Ray trace handle, which must be closed via CloseHandle(). + * @error Invalid entity. */ native Handle TR_ClipRayHullToEntityEx(const float pos[3], const float vec[3], @@ -502,6 +570,7 @@ native Handle TR_ClipRayHullToEntityEx(const float pos[3], * @param flags Trace flags. * @param entity Entity to clip to. * @return Ray trace handle, which must be closed via CloseHandle(). + * @error Invalid entity. */ native Handle TR_ClipCurrentRayToEntityEx(int flags, int entity); diff --git a/scripting/1.10/include/sdktools_variant_t.inc b/scripting/latest/include/sdktools_variant_t.inc similarity index 100% rename from scripting/1.10/include/sdktools_variant_t.inc rename to scripting/latest/include/sdktools_variant_t.inc diff --git a/scripting/1.10/include/sdktools_voice.inc b/scripting/latest/include/sdktools_voice.inc similarity index 87% rename from scripting/1.10/include/sdktools_voice.inc rename to scripting/latest/include/sdktools_voice.inc index 2731997..6bcaf3d 100644 --- a/scripting/1.10/include/sdktools_voice.inc +++ b/scripting/latest/include/sdktools_voice.inc @@ -56,11 +56,26 @@ enum ListenOverride Listen_Yes /**< Can hear */ }; +/** + * Called when a client is speaking. + * + * @param client The client index + */ +forward void OnClientSpeaking(int client); + +/** + * Called once a client speaking end. + * + * @param client The client index + */ +forward void OnClientSpeakingEnd(int client); + /** * Set the client listening flags. * * @param client The client index * @param flags The voice flags + * @error Invalid client index or client not connected. */ native void SetClientListeningFlags(int client, int flags); @@ -69,6 +84,7 @@ native void SetClientListeningFlags(int client, int flags); * * @param client The client index * @return The current voice flags + * @error Invalid client index or client not connected. */ native int GetClientListeningFlags(int client); @@ -102,6 +118,7 @@ native bool GetClientListening(int iReceiver, int iSender); * @param iSender The sender index. * @param override The override of the receiver's ability to listen to the sender. * @return True if successful otherwise false. + * @error Listener or sender client index is invalid or not connected. */ native bool SetListenOverride(int iReceiver, int iSender, ListenOverride override); @@ -111,6 +128,7 @@ native bool SetListenOverride(int iReceiver, int iSender, ListenOverride overrid * @param iReceiver The listener index. * @param iSender The sender index. * @return The override value. + * @error Listener or sender client index is invalid or not connected. */ native ListenOverride GetListenOverride(int iReceiver, int iSender); @@ -120,5 +138,6 @@ native ListenOverride GetListenOverride(int iReceiver, int iSender); * @param iMuter The muter index. * @param iMutee The mutee index. * @return True if muter has muted mutee, false otherwise. + * @error Muter or mutee client index is invalid or not connected. */ native bool IsClientMuted(int iMuter, int iMutee); diff --git a/scripting/1.10/include/socket.inc b/scripting/latest/include/socket.inc similarity index 100% rename from scripting/1.10/include/socket.inc rename to scripting/latest/include/socket.inc diff --git a/scripting/1.10/include/sorting.inc b/scripting/latest/include/sorting.inc similarity index 100% rename from scripting/1.10/include/sorting.inc rename to scripting/latest/include/sorting.inc diff --git a/scripting/1.10/include/sourcemod.inc b/scripting/latest/include/sourcemod.inc similarity index 89% rename from scripting/1.10/include/sourcemod.inc rename to scripting/latest/include/sourcemod.inc index 917f5db..853898f 100644 --- a/scripting/1.10/include/sourcemod.inc +++ b/scripting/latest/include/sourcemod.inc @@ -76,6 +76,7 @@ struct Plugin #include #include #include +#include enum APLRes { @@ -113,6 +114,12 @@ methodmap GameData < Handle // @param name Name of the property to find. // @return An address calculated on success, or 0 on failure. public native Address GetAddress(const char[] name); + + // Returns a function address calculated from a signature. + // + // @param name Name of the property to find. + // @return An address calculated on success, or 0 on failure. + public native Address GetMemSig(const char[] name); }; /** @@ -176,10 +183,14 @@ forward void OnPluginPauseChange(bool pause); forward void OnGameFrame(); /** - * Called when the map is loaded. + * Called when the map starts loading. * - * @note This used to be OnServerLoad(), which is now deprecated. - * Plugins still using the old forward will work. + * @param mapName Name of the map + */ +forward void OnMapInit(const char[] mapName); + +/** + * Called when the map is loaded. */ forward void OnMapStart(); @@ -233,6 +244,28 @@ forward void OnAllPluginsLoaded(); */ native Handle GetMyHandle(); +methodmap PluginIterator < Handle +{ + // Returns an iterator that can be used to search through plugins. + // + // @return A new Handle to a PluginIterator. + public native PluginIterator(); + + // Advances the iterator. Returns whether there are more plugins available in the iterator. + // + // @return True on more plugins, false otherwise. + // @error Invalid Handle. + public native bool Next(); + + // Returns the current plugin in the iterator. + // + // @return Current plugin the iterator is at + // @error Invalid Handle. + property Handle Plugin { + public native get(); + } +} + /** * Returns an iterator that can be used to search through plugins. * @@ -338,6 +371,7 @@ native void SetFailState(const char[] string, any ...); * * @param fmt String format. * @param ... Format arguments. + * @noreturn * @error Always! */ native void ThrowError(const char[] fmt, any ...); @@ -364,7 +398,7 @@ native int GetTime(int bigStamp[2]={0,0}); * Produces a date and/or time string value for a timestamp. * * See this URL for valid parameters: - * http://cplusplus.com/reference/clibrary/ctime/strftime.html + * https://cplusplus.com/reference/ctime/strftime/ * * Note that available parameters depends on support from your operating system. * In particular, ones highlighted in yellow on that page are not currently @@ -378,6 +412,24 @@ native int GetTime(int bigStamp[2]={0,0}); */ native void FormatTime(char[] buffer, int maxlength, const char[] format, int stamp=-1); +/** + * Parses a string representing a date and/or time into a unix timestamp. + * The timezone is always interpreted as UTC/GMT. + * + * See this URL for valid parameters: + * https://en.cppreference.com/w/cpp/io/manip/get_time + * + * Note that available parameters depends on support from your operating system. + * In particular, ones highlighted in yellow on that page are not currently + * available on Windows and should be avoided for portable plugins. + * + * @param dateTime Date and/or time string. + * @param format Formatting rules (passing NULL_STRING will use the rules defined in sm_datetime_format). + * @return 32bit timestamp (number of seconds since unix epoch). + * @error Invalid date/time string or time format. + */ +native int ParseTime(const char[] dateTime, const char[] format); + /** * Loads a game config file. * @@ -452,7 +504,7 @@ native void RegPluginLibrary(const char[] name); * Returns whether a library exists. This function should be considered * expensive; it should only be called on plugin to determine availability * of resources. Use OnLibraryAdded()/OnLibraryRemoved() to detect changes - * in optional resources. + * in libraries. * * @param name Library name of a plugin or extension. * @return True if exists, false otherwise. @@ -473,8 +525,8 @@ native bool LibraryExists(const char[] name); native int GetExtensionFileStatus(const char[] name, char[] error="", int maxlength=0); /** - * Called after a library is added that the current plugin references - * optionally. A library is either a plugin name or extension name, as + * Called after a library is added. + * A library is either a plugin name or extension name, as * exposed via its include file. * * @param name Library name. @@ -482,14 +534,21 @@ native int GetExtensionFileStatus(const char[] name, char[] error="", int maxlen forward void OnLibraryAdded(const char[] name); /** - * Called right before a library is removed that the current plugin references - * optionally. A library is either a plugin name or extension name, as + * Called right before a library is removed. + * A library is either a plugin name or extension name, as * exposed via its include file. * * @param name Library name. */ forward void OnLibraryRemoved(const char[] name); +/** + * Called when a plugin unloaded. + * + * @param plugin Plugin Handle who unloaded. + */ +forward void OnNotifyPluginUnloaded(Handle plugin); + #define MAPLIST_FLAG_MAPSFOLDER (1<<0) /**< On failure, use all maps in the maps folder. */ #define MAPLIST_FLAG_CLEARARRAY (1<<1) /**< If an input array is specified, clear it before adding. */ #define MAPLIST_FLAG_NO_DEFAULT (1<<2) /**< Do not read "default" or "mapcyclefile" on failure. */ @@ -676,18 +735,24 @@ enum Address * * @param addr Address to a memory location. * @param size How many bytes should be read. + * If loading a floating-point value, use NumberType_Int32. * @return The value that is stored at that address. + * @error Address is null or pointing to reserved memory. */ -native int LoadFromAddress(Address addr, NumberType size); +native any LoadFromAddress(Address addr, NumberType size); /** * Store up to 4 bytes to a memory address. * - * @param addr Address to a memory location. - * @param data Value to store at the address. - * @param size How many bytes should be written. + * @param addr Address to a memory location. + * @param data Value to store at the address. + * @param size How many bytes should be written. + * If storing a floating-point value, use NumberType_Int32. + * @param updateMemAccess If true, SourceMod will set read / write / exec permissions + * on the memory page being written to. + * @error Address is null or pointing to reserved memory. */ -native void StoreToAddress(Address addr, int data, NumberType size); +native void StoreToAddress(Address addr, any data, NumberType size, bool updateMemAccess = true); methodmap FrameIterator < Handle { // Creates a stack frame iterator to build your own stack traces. diff --git a/scripting/1.10/include/string.inc b/scripting/latest/include/string.inc similarity index 90% rename from scripting/1.10/include/string.inc rename to scripting/latest/include/string.inc index 990989f..7044bad 100644 --- a/scripting/1.10/include/string.inc +++ b/scripting/latest/include/string.inc @@ -121,7 +121,8 @@ stock bool StrEqual(const char[] str1, const char[] str2, bool caseSensitive=tru * @param dest Destination string buffer to copy to. * @param destLen Destination buffer length (includes null terminator). * @param source Source string buffer to copy from. - * @return Number of cells written. + * @return Number of characters written to the buffer, + * not including the null terminator. */ native int strcopy(char[] dest, int destLen, const char[] source); @@ -139,10 +140,12 @@ stock int StrCopy(char[] dest, int destLen, const char[] source) * Formats a string according to the SourceMod format rules (see documentation). * * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. + * @param maxlength Maximum length of output string buffer, + * including the null terminator. * @param format Formatting rules. * @param ... Variable number of format parameters. - * @return Number of cells written. + * @return Number of characters written to the buffer, + * not including the null terminator. */ native int Format(char[] buffer, int maxlength, const char[] format, any ...); @@ -153,10 +156,12 @@ native int Format(char[] buffer, int maxlength, const char[] format, any ...); * check is removed, it is slightly faster. * * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. + * @param maxlength Maximum length of output string buffer, + * including the null terminator. * @param format Formatting rules. * @param ... Variable number of format parameters. - * @return Number of cells written. + * @return Number of characters written to the buffer, + * not including the null terminator. */ native int FormatEx(char[] buffer, int maxlength, const char[] format, any ...); @@ -167,11 +172,13 @@ native int FormatEx(char[] buffer, int maxlength, const char[] format, any ...); * implementing your own variable argument functions. * * @param buffer Destination string buffer. - * @param maxlength Maximum length of output string buffer. + * @param maxlength Maximum length of output string buffer, + * including the null terminator. * @param format Formatting rules. * @param varpos Argument number which contains the '...' symbol. * Note: Arguments start at 1. * @return Number of bytes written. + * @error Invalid argument index. */ native int VFormat(char[] buffer, int maxlength, const char[] format, int varpos); @@ -194,16 +201,40 @@ native int StringToInt(const char[] str, int nBase=10); */ native int StringToIntEx(const char[] str, int &result, int nBase=10); +/** + * Converts a string to a 64-bit integer. + * + * @param str String to convert. + * @param result Array to store the upper and lower + * 32-bits of the 64-bit integer. + * @param nBase Numerical base to use. 10 is default. + * @return Number of characters consumed. + */ +native int StringToInt64(const char[] str, int result[2], int nBase=10); + /** * Converts an integer to a string. * * @param num Integer to convert. * @param str Buffer to store string in. * @param maxlength Maximum length of string buffer. - * @return Number of cells written to buffer. + * @return Number of characters written to the buffer, + * not including the null terminator. */ native int IntToString(int num, char[] str, int maxlength); +/** + * Converts a 64-bit integer to a string. + * + * @param num Array containing the upper and lower + * 32-bits of a 64-bit integer. + * @param str Buffer to store string in. + * @param maxlength Maximum length of string buffer. + * @return Number of characters written to the buffer, + * not including the null terminator. + */ +native int Int64ToString(const int num[2], char[] str, int maxlength); + /** * Converts a string to a floating point number. * @@ -227,7 +258,8 @@ native int StringToFloatEx(const char[] str, float &result); * @param num Floating point number to convert. * @param str Buffer to store string in. * @param maxlength Maximum length of string buffer. - * @return Number of cells written to buffer. + * @return Number of characters written to the buffer, + * not including the null terminator. */ native int FloatToString(float num, char[] str, int maxlength); @@ -286,6 +318,7 @@ native int SplitString(const char[] source, const char[] split, char[] part, int * @param replace String to replace the search string with. * @param caseSensitive If true (default), search is case sensitive. * @return Number of replacements that were performed. + * @error 'search' parameter is empty. */ native int ReplaceString(char[] text, int maxlength, const char[] search, const char[] replace, bool caseSensitive=true); @@ -305,6 +338,7 @@ native int ReplaceString(char[] text, int maxlength, const char[] search, const * @return Index into the buffer (relative to the start) from where * the last replacement ended, or -1 if no replacements were * made. + * @error 'search' parameter is empty. */ native int ReplaceStringEx(char[] text, int maxlength, const char[] search, const char[] replace, int searchLen=-1, int replaceLen=-1, bool caseSensitive=true); diff --git a/scripting/1.10/include/testing.inc b/scripting/latest/include/testing.inc similarity index 56% rename from scripting/1.10/include/testing.inc rename to scripting/latest/include/testing.inc index 8673379..6ff6d73 100644 --- a/scripting/1.10/include/testing.inc +++ b/scripting/latest/include/testing.inc @@ -38,7 +38,7 @@ stock void SetTestContext(const char[] context) strcopy(TestContext, sizeof(TestContext), context); } -stock void AssertEq(const char[] text, int cell1, int cell2) +stock void AssertEq(const char[] text, any cell1, any cell2) { TestNumber++; if (cell1 == cell2) @@ -52,6 +52,39 @@ stock void AssertEq(const char[] text, int cell1, int cell2) } } +stock void AssertArrayEq(const char[] text, const any[] value, const any[] expected, int len) +{ + TestNumber++; + for (int i = 0; i < len; ++i) + { + if (value[i] != expected[i]) + { + PrintToServer("[%d] %s FAIL: %s should be %d at index %d, got %d", TestNumber, TestContext, text, expected[i], i, value[i]); + ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); + break; + } + } + PrintToServer("[%d] %s: '%s' arrays are equal OK", TestNumber, TestContext, text); +} + +stock void AssertArray2DEq(const char[] text, const any[][] value, const any[][] expected, int len, int innerlen) +{ + TestNumber++; + for (int i=0; i < len; ++i) + { + for (int j=0; j < innerlen; ++j) + { + if (value[i][j] != expected[i][j]) + { + PrintToServer("[%d] %s FAIL: %s should be %d at index [%d][%d], got %d", TestNumber, TestContext, text, expected[i][j], i, j, value[i][j]); + ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); + break; + } + } + } + PrintToServer("[%d] %s: '%s' 2D arrays are equal OK", TestNumber, TestContext, text); +} + stock void AssertFalse(const char[] text, bool value) { TestNumber++; @@ -79,3 +112,32 @@ stock void AssertTrue(const char[] text, bool value) ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); } } + +stock void AssertStrEq(const char[] text, const char[] value, const char[] expected) +{ + TestNumber++; + if (StrEqual(value, expected)) + { + PrintToServer("[%d] %s: '%s' == '%s' OK", TestNumber, TestContext, text, expected); + } + else + { + PrintToServer("[%d] %s FAIL: %s should be '%s', got '%s'", TestNumber, TestContext, text, expected, value); + ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); + } +} + +stock void AssertStrArrayEq(const char[] text, const char[][] value, const char[][] expected, int len) +{ + TestNumber++; + for (int i = 0; i < len; ++i) + { + if (!StrEqual(value[i], expected[i])) + { + PrintToServer("[%d] %s FAIL: %s should be '%s' at index %d, got '%s'", TestNumber, TestContext, text, expected[i], i, value[i]); + ThrowError("test %d (%s in %s) failed", TestNumber, text, TestContext); + break; + } + } + PrintToServer("[%d] %s: '%s' arrays are equal OK", TestNumber, TestContext, text); +} diff --git a/scripting/1.10/include/textparse.inc b/scripting/latest/include/textparse.inc similarity index 95% rename from scripting/1.10/include/textparse.inc rename to scripting/latest/include/textparse.inc index 34e99e4..e76fc4d 100644 --- a/scripting/1.10/include/textparse.inc +++ b/scripting/latest/include/textparse.inc @@ -147,6 +147,14 @@ methodmap SMCParser < Handle // @return An SMCParseError result. public native SMCError ParseFile(const char[] file, int &line = 0, int &col = 0); + // Parses raw UTF-8 text as an SMC file. + // + // @param string A string containing an SMC file. + // @param line An optional variable to store the last line number read. + // @param col An optional variable to store the last column number read. + // @return An SMCParseError result. + public native SMCError ParseString(const char[] string, int &line = 0, int &col = 0); + // Sets the callback for receiving SMC_ParseStart events. property SMC_ParseStart OnStart { public native set(SMC_ParseStart func); diff --git a/scripting/1.10/include/tf2.inc b/scripting/latest/include/tf2.inc similarity index 98% rename from scripting/1.10/include/tf2.inc rename to scripting/latest/include/tf2.inc index 6b8a535..8be97de 100644 --- a/scripting/1.10/include/tf2.inc +++ b/scripting/latest/include/tf2.inc @@ -206,7 +206,10 @@ enum TFCond TFCond_BurningPyro, //124: Dragon's Fury afterburn on Pyros TFCond_RocketPack, //125: Thermal Thruster launched effects, prevents reusing TFCond_LostFooting, //126: Less ground friction - TFCond_AirCurrent //127: Reduced air control and friction + TFCond_AirCurrent, //127: Reduced air control and friction + TFCond_HalloweenHellHeal, // 128: Used when a player gets teleported to hell + TFCond_PowerupModeDominant, // 129: Reduces effects of certain powerups + TFCond_ImmuneToPushback // 130: Player is immune to pushback effects }; const float TFCondDuration_Infinite = -1.0; @@ -227,6 +230,7 @@ public const TFHoliday TFHoliday_FullMoon; public const TFHoliday TFHoliday_HalloweenOrFullMoon; public const TFHoliday TFHoliday_HalloweenOrFullMoonOrValentines; public const TFHoliday TFHoliday_AprilFools; +public const TFHoliday TFHoliday_Soldier; enum TFObjectType { diff --git a/scripting/1.10/include/tf2_stocks.inc b/scripting/latest/include/tf2_stocks.inc similarity index 99% rename from scripting/1.10/include/tf2_stocks.inc rename to scripting/latest/include/tf2_stocks.inc index 02c0054..f978284 100644 --- a/scripting/1.10/include/tf2_stocks.inc +++ b/scripting/latest/include/tf2_stocks.inc @@ -328,7 +328,7 @@ enum TFResourceType TFResource_PlayerClass }; -static const char TFResourceNames[TFResourceType][] = +static const char TFResourceNames[][] = { "m_iPing", "m_iScore", @@ -399,6 +399,7 @@ stock TFClassType TF2_GetPlayerClass(int client) */ stock void TF2_SetPlayerClass(int client, TFClassType classType, bool weapons=true, bool persistent=true) { + #pragma unused weapons SetEntProp(client, Prop_Send, "m_iClass", view_as(classType)); if (persistent) @@ -431,7 +432,7 @@ stock int TF2_GetPlayerResourceData(int client, TFResourceType type) return -1; } - int entity = TF2_GetResourceEntity(); + int entity = GetPlayerResourceEntity(); if (entity == -1) { @@ -468,7 +469,7 @@ stock bool TF2_SetPlayerResourceData(int client, TFResourceType type, any value) return false; } - int entity = TF2_GetResourceEntity(); + int entity = GetPlayerResourceEntity(); if (entity == -1) { diff --git a/scripting/1.10/include/timers.inc b/scripting/latest/include/timers.inc similarity index 89% rename from scripting/1.10/include/timers.inc rename to scripting/latest/include/timers.inc index 2fb74d9..7a5edf5 100644 --- a/scripting/1.10/include/timers.inc +++ b/scripting/latest/include/timers.inc @@ -51,21 +51,21 @@ typeset Timer * Called when the timer interval has elapsed. * * @param timer Handle to the timer object. - * @param hndl Handle passed to CreateTimer() when timer was created. + * @param data Handle or value passed to CreateTimer() when timer was created. * @return Plugin_Stop to stop a repeating timer, any other value for * default behavior. + * Ignored for non-repeating timers (use void return type). */ - function Action(Handle timer, Handle hndl); + function Action(Handle timer, any data); /** * Called when the timer interval has elapsed. + * For repeating timers, use the callback with return value. * * @param timer Handle to the timer object. - * @param data Data passed to CreateTimer() when timer was created. - * @return Plugin_Stop to stop a repeating timer, any other value for - * default behavior. + * @param data Handle or value passed to CreateTimer() when timer was created. */ - function Action(Handle timer, any data); + function void(Handle timer, any data); /** * Called when the timer interval has elapsed. @@ -73,8 +73,17 @@ typeset Timer * @param timer Handle to the timer object. * @return Plugin_Stop to stop a repeating timer, any other value for * default behavior. + * Ignored for non-repeating timers (use void return type). */ function Action(Handle timer); + + /** + * Called when the timer interval has elapsed. + * For repeating timers, use the callback with return value. + * + * @param timer Handle to the timer object. + */ + function void(Handle timer); }; /** @@ -87,7 +96,7 @@ typeset Timer * @return Handle to the timer object. You do not need to call CloseHandle(). * If the timer could not be created, INVALID_HANDLE will be returned. */ -native Handle CreateTimer(float interval, Timer func, any data=INVALID_HANDLE, int flags=0); +native Handle CreateTimer(float interval, Timer func, any data=0, int flags=0); /** * Kills a timer. Use this instead of CloseHandle() if you need more options. @@ -95,7 +104,7 @@ native Handle CreateTimer(float interval, Timer func, any data=INVALID_HANDLE, i * @param timer Timer Handle to kill. * @param autoClose If autoClose is true, the data that was passed to CreateTimer() will * be closed as a handle if TIMER_DATA_HNDL_CLOSE was not specified. - * @error Invalid handles will cause a run time error. + * @error Invalid timer handle. */ native void KillTimer(Handle timer, bool autoClose=false); @@ -105,6 +114,7 @@ native void KillTimer(Handle timer, bool autoClose=false); * @param timer Timer Handle to trigger. * @param reset If reset is true, the elapsed time counter is reset * so the full interval must pass again. + * @error Invalid timer handle. */ native void TriggerTimer(Handle timer, bool reset=false); @@ -182,8 +192,8 @@ forward void OnMapTimeLeftChanged(); * Returns whether or not the server is processing frames or not. * * The server does not process frames until at least one client joins the game. - * Once the first player has in, even if that player, leaves, the server's - * timers and entities will work. + * If server hibernation is disabled, once the first player has joined, even if that player + * leaves, the server's timers and entities will continue to work. * * @return True if the server is ticking, false otherwise. */ diff --git a/scripting/1.10/include/topmenus.inc b/scripting/latest/include/topmenus.inc similarity index 98% rename from scripting/1.10/include/topmenus.inc rename to scripting/latest/include/topmenus.inc index bd1c6da..800610c 100644 --- a/scripting/1.10/include/topmenus.inc +++ b/scripting/latest/include/topmenus.inc @@ -361,7 +361,7 @@ native void RemoveFromTopMenu(Handle topmenu, TopMenuObject topobj); * @param client Client index. * @param position Position to display from. * @return True on success, false on failure. - * @error Invalid TopMenu Handle or client not in game. + * @error Invalid TopMenu Handle, invalid client index, or client not in game. */ native bool DisplayTopMenu(Handle topmenu, int client, TopMenuPosition position); @@ -372,7 +372,7 @@ native bool DisplayTopMenu(Handle topmenu, int client, TopMenuPosition position) * @param category Category topobj id. * @param client Client index. * @return True on success, false on failure. - * @error Invalid TopMenu Handle or client not in game. + * @error Invalid TopMenu Handle, invalid client index, or client not in game. */ native bool DisplayTopMenuCategory(Handle topmenu, TopMenuObject category, int client); diff --git a/scripting/1.10/include/usermessages.inc b/scripting/latest/include/usermessages.inc similarity index 100% rename from scripting/1.10/include/usermessages.inc rename to scripting/latest/include/usermessages.inc diff --git a/scripting/1.10/include/vector.inc b/scripting/latest/include/vector.inc similarity index 100% rename from scripting/1.10/include/vector.inc rename to scripting/latest/include/vector.inc diff --git a/scripting/1.10/include/version.inc b/scripting/latest/include/version.inc similarity index 94% rename from scripting/1.10/include/version.inc rename to scripting/latest/include/version.inc index a86dfb9..8005d8e 100644 --- a/scripting/1.10/include/version.inc +++ b/scripting/latest/include/version.inc @@ -42,8 +42,8 @@ #define SOURCEMOD_V_REV 0 #define SOURCEMOD_V_CSET "0" #define SOURCEMOD_V_MAJOR 1 /**< SourceMod Major version */ - #define SOURCEMOD_V_MINOR 10 /**< SourceMod Minor version */ + #define SOURCEMOD_V_MINOR 12 /**< SourceMod Minor version */ #define SOURCEMOD_V_RELEASE 0 /**< SourceMod Release version */ - #define SOURCEMOD_VERSION "1.10.0-manual" /**< SourceMod version string (major.minor.release-tag) */ + #define SOURCEMOD_VERSION "1.12.0-manual" /**< SourceMod version string (major.minor.release-tag) */ #endif diff --git a/scripting/1.10/include/version_auto.inc b/scripting/latest/include/version_auto.inc similarity index 56% rename from scripting/1.10/include/version_auto.inc rename to scripting/latest/include/version_auto.inc index 9cb19b0..6d92ef0 100644 --- a/scripting/1.10/include/version_auto.inc +++ b/scripting/latest/include/version_auto.inc @@ -5,11 +5,11 @@ #define _auto_version_included #define SOURCEMOD_V_TAG "" -#define SOURCEMOD_V_CSET "ac29ac06" +#define SOURCEMOD_V_CSET "9e51736f" #define SOURCEMOD_V_MAJOR 1 -#define SOURCEMOD_V_MINOR 10 +#define SOURCEMOD_V_MINOR 12 #define SOURCEMOD_V_RELEASE 0 -#define SOURCEMOD_V_REV 6490 +#define SOURCEMOD_V_REV 7176 -#define SOURCEMOD_VERSION "1.10.0.6490" +#define SOURCEMOD_VERSION "1.12.0.7176" \ No newline at end of file diff --git a/scripting/1.10/kigen-ac_redux.sp b/scripting/latest/kigen-ac_redux.sp similarity index 95% rename from scripting/1.10/kigen-ac_redux.sp rename to scripting/latest/kigen-ac_redux.sp index 2fd2f6c..b4127fe 100644 --- a/scripting/1.10/kigen-ac_redux.sp +++ b/scripting/latest/kigen-ac_redux.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,7 +29,6 @@ #include #define REQUIRE_EXTENSIONS // #include // Required for the networking Module // Outdated TODO -#include #include @@ -64,7 +62,7 @@ bool g_bSourceBans, g_bSourceBansPP, g_bMapStarted; //- KACR Modules -// Note: The that ordering of these Includes is imporant -#include "kigen-ac_redux/translations.sp" // Translations Module - NEEDED FIRST +#include "kigen-ac_redux/translations.sp" // Translations Module - Needs to be first #include "kigen-ac_redux/client.sp" // Client Module #include "kigen-ac_redux/commands.sp" // Commands Module #include "kigen-ac_redux/cvars.sp" // CVar Module @@ -128,7 +126,7 @@ public void OnPluginStart() f_hTemp = FindConVar("sv_max_usercmd_future_ticks"); if (f_hTemp != INVALID_HANDLE) SetConVarInt(f_hTemp, 1); - + AutoExecConfig_ExecuteFile(); // Execute the Config AutoExecConfig_CleanFile(); // Cleanup the Config (slow process) @@ -210,7 +208,7 @@ public void OnPluginEnd() CloseHandle(g_hClearTimer); } -//- Map Functions -// +//- Map Hooks -// public void OnMapStart() { @@ -227,7 +225,7 @@ public void OnMapEnd() // RCON_OnMap(); // Currently unused } -//- Client Functions -// +//- Client Hooks -// public bool OnClientConnect(client, char[] rejectmsg, size) { @@ -340,10 +338,22 @@ public Action KACR_ValidateTimer(Handle timer, any client) return Plugin_Stop; } -public Action KACR_ClearTimer(Handle timer, any nothing) -{ - g_hDenyArray.Clear(); -} +// Version Checker for Handle Type TODO 1.8 +#if SOURCEMOD_V_MAJOR == 1 + #if SOURCEMOD_V_MINOR >= 10 // 1.10+ + public void KACR_ClearTimer(Handle timer, any nothing) + { + g_hDenyArray.Clear(); + } + + #else // 1.9 and older + public Action KACR_ClearTimer(Handle timer, any nothing) + { + g_hDenyArray.Clear(); + } + + #endif +#endif //- ConVar Hook -// diff --git a/scripting/1.10/kigen-ac_redux/client.sp b/scripting/latest/kigen-ac_redux/client.sp similarity index 93% rename from scripting/1.10/kigen-ac_redux/client.sp rename to scripting/latest/kigen-ac_redux/client.sp index 397b9f0..ccac45c 100644 --- a/scripting/1.10/kigen-ac_redux/client.sp +++ b/scripting/latest/kigen-ac_redux/client.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -51,7 +50,7 @@ Client_OnPluginStart() HookEvent("player_spawn", Client_PlayerSpawn); HookEvent("player_death", Client_PlayerDeath); HookEvent("round_start", Client_RoundStart); - HookEvent("round_end", Client_CleanEvent); + HookEvent("round_end", Client_RoundEnd); RegConsoleCmd("joinclass", Client_JoinClass); } @@ -159,7 +158,7 @@ public Action Client_Autobuy(client, args) } -//- Map -// +//- Map Hooks -// /*Client_OnMapStart() // Currently unused { @@ -173,27 +172,27 @@ Client_OnMapEnd() strcopy(g_sClientConnections[i], 64, ""); if (hGame == Engine_CSS || hGame == Engine_CSGO) - Client_CleanEvent(INVALID_HANDLE, "", false); + Client_CleanEvent(); } //- Timers -// -public Action Client_AntiSpamConnectTimer(Handle timer, any i) +public Action Client_AntiSpamConnectTimer(Handle hTimer, any iClient) { - strcopy(g_sClientConnections[i], 64, ""); + strcopy(g_sClientConnections[iClient], 64, ""); return Plugin_Stop; } //- Hooks -// -public Action Client_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast) +public Action Client_PlayerSpawn(Event hEvent, const char[] cName, bool bDontBroadcast) { if (!g_bClientEnable || !g_bClientAntiRespawn) return Plugin_Continue; - int client = GetClientOfUserId(GetEventInt(event, "userid")); + int client = GetClientOfUserId(hEvent.GetInt("userid")); char f_sAuthID[64]; if (client <= 0 || GetClientTeam(client) < 2 || !GetClientAuthId(client, AuthId_Steam2, f_sAuthID, sizeof(f_sAuthID))) return Plugin_Continue; @@ -203,12 +202,12 @@ public Action Client_PlayerSpawn(Handle event, const char[] name, bool dontBroad return Plugin_Continue } -public Action Client_PlayerDeath(Handle event, const char[] name, bool dontBroadcast) +public Action Client_PlayerDeath(Event hEvent, const char[] cName, bool bDontBroadcast) { if (!g_bClientEnable || !g_bClientAntiRespawn) return Plugin_Continue; - int client = GetClientOfUserId(GetEventInt(event, "userid")); + int client = GetClientOfUserId(hEvent.GetInt("userid")); char f_sAuthID[64]; if (client <= 0 || !GetClientAuthId(client, AuthId_Steam2, f_sAuthID, sizeof(f_sAuthID))) return Plugin_Continue; @@ -218,24 +217,14 @@ public Action Client_PlayerDeath(Handle event, const char[] name, bool dontBroad return Plugin_Continue } -public Action Client_RoundStart(Handle event, const char[] name, bool dontBroadcast) +public void Client_RoundStart(Event hEvent, const char[] cName, bool bDontBroadcast) { g_bClientMapStarted = true; } -public Action Client_CleanEvent(Handle event, const char[] name, bool dontBroadcast) +public void Client_RoundEnd(Handle hEvent, const char[] cName, bool bDontBroadcast) { - CloseHandle(g_hClientSpawned); // Really needed? We could just clear it? - g_hClientSpawned = new StringMap(); - - for (int i = 1; i <= MaxClients; i++) - { - if (g_bInGame[i] && g_iClientClass[i] != -1) - { - FakeClientCommandEx(i, "joinclass %d", g_iClientClass[i]); - g_iClientClass[i] = -1; - } - } + Client_CleanEvent(); } bool Client_OnClientConnect(iClient, char[] rejectmsg, size) @@ -440,4 +429,22 @@ public void Client_NameProtectChange(Handle convar, const char[] oldValue, const public void Client_AntiSpamConnectChange(Handle convar, const char[] oldValue, const char[] newValue) { g_fClientAntiSpamConnect = GetConVarFloat(convar); -} \ No newline at end of file +} + + +//- Functions -// + +public void Client_CleanEvent() +{ + CloseHandle(g_hClientSpawned); // Really needed? We could just clear it? + g_hClientSpawned = new StringMap(); + + for (int i = 1; i <= MaxClients; i++) + { + if (g_bInGame[i] && g_iClientClass[i] != -1) + { + FakeClientCommandEx(i, "joinclass %d", g_iClientClass[i]); + g_iClientClass[i] = -1; + } + } +} \ No newline at end of file diff --git a/scripting/1.10/kigen-ac_redux/commands.sp b/scripting/latest/kigen-ac_redux/commands.sp similarity index 99% rename from scripting/1.10/kigen-ac_redux/commands.sp rename to scripting/latest/kigen-ac_redux/commands.sp index dbf207b..450bfec 100644 --- a/scripting/1.10/kigen-ac_redux/commands.sp +++ b/scripting/latest/kigen-ac_redux/commands.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.10/kigen-ac_redux/cvars.sp b/scripting/latest/kigen-ac_redux/cvars.sp similarity index 99% rename from scripting/1.10/kigen-ac_redux/cvars.sp rename to scripting/latest/kigen-ac_redux/cvars.sp index a083a2a..dcca3e3 100644 --- a/scripting/1.10/kigen-ac_redux/cvars.sp +++ b/scripting/latest/kigen-ac_redux/cvars.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -956,7 +955,7 @@ public void CVars_EnableChange(Handle convar, const char[] oldValue, const char[ * @param iImportance Priority (PRIORITY_...) * @param cAlternative URL to show to the Player */ -bool CVars_AddCVar(char[] cConVar, f_iComparisonType, f_iAction, const char[] f_sValue, float f_fValue2, f_iImportance, const char f_sAlternative[] = "") +bool CVars_AddCVar(char[] cConVar, f_iComparisonType, f_iAction, const char[] f_sValue, float f_fValue2, f_iImportance, const char[] f_sAlternative = "") { Handle f_hConVar = INVALID_HANDLE, f_hArray; diff --git a/scripting/1.10/kigen-ac_redux/eyetest.sp b/scripting/latest/kigen-ac_redux/eyetest.sp similarity index 88% rename from scripting/1.10/kigen-ac_redux/eyetest.sp rename to scripting/latest/kigen-ac_redux/eyetest.sp index 2689629..f3a2560 100644 --- a/scripting/1.10/kigen-ac_redux/eyetest.sp +++ b/scripting/latest/kigen-ac_redux/eyetest.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -194,8 +193,8 @@ public void Eyetest_AntiWallChange(Handle convar, const char[] oldValue, const c } for (int i = 1; i <= MaxClients; i++) - if (Client_IsValid(i, true)) - if (IsPlayerAlive(i) && !g_bHooked[i]) // We do not use the Arrays here since its OnPluginStart and the Players may havent been checked TODO: is that correct? + if (IsClientInGame(i) && !IsFakeClient(i)) // g_bInGame[i] && !g_bIsFake[i]) - We do not use the Arrays here since its OnPluginStart and the Players may havent been checked. This can be fixed by populating the arrays OnPluginLoad TODO + if (IsPlayerAlive(i) && !g_bHooked[i]) Eyetest_Hook(i); Status_Report(g_iAntiWHStatus, KACR_ON); @@ -213,27 +212,27 @@ public void Eyetest_AntiWallChange(Handle convar, const char[] oldValue, const c g_bAntiWall = f_bEnabled; } -public Action Eyetest_PlayerSpawn(Handle event, const char[] name, bool dontBroadcast) +public void Eyetest_PlayerSpawn(Event hEvent, const char[] cName, bool bDontBroadcast) { - int client = GetClientOfUserId(GetEventInt(event, "userid")); - if (client && GetClientTeam(client) > 1) + int iClient = GetClientOfUserId(hEvent.GetInt("userid")); + if (iClient && GetClientTeam(iClient) > 1) { - if (!IsFakeClient(client)) - g_bShouldProcess[client] = true; + if (!IsFakeClient(iClient)) + g_bShouldProcess[iClient] = true; - if (g_bAntiWall && !g_bHooked[client]) - Eyetest_Hook(client); + if (g_bAntiWall && !g_bHooked[iClient]) + Eyetest_Hook(iClient); } } -public Action Eyetest_PlayerDeath(Handle event, const char[] name, bool dontBroadcast) +public void Eyetest_PlayerDeath(Event hEvent, const char[] cName, bool bDontBroadcast) { - int client = GetClientOfUserId(GetEventInt(event, "userid")); - if (client) + int iClient = GetClientOfUserId(hEvent.GetInt("userid")); + if (iClient) { - g_bShouldProcess[client] = false; - if (g_bAntiWall && g_bHooked[client]) - Eyetest_Unhook(client); + g_bShouldProcess[iClient] = false; + if (g_bAntiWall && g_bHooked[iClient]) + Eyetest_Unhook(iClient); } } @@ -259,21 +258,21 @@ public Action Eyetest_WeaponTransmit(entity, client) return Plugin_Stop; } -public Action Eyetest_Equip(client, weapon) // The Player Picked up a Weapon? Lets bind the Entity ID to the Player ID +public void Eyetest_Equip(iClient, iWeapon) // The Player Picked up a Weapon? Lets bind the Entity ID to the Player ID { - if (g_iWeaponOwner[weapon] == 0) // The Weapon has no owner yet? + if (g_iWeaponOwner[iWeapon] == 0) // The Weapon has no owner yet? { - g_iWeaponOwner[weapon] = client; - SDKHook(weapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); + g_iWeaponOwner[iWeapon] = iClient; + SDKHook(iWeapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); } } -public Action Eyetest_Drop(client, weapon) +public void Eyetest_Drop(iClient, iWeapon) { - if (weapon > 0 && g_iWeaponOwner[weapon] > 0) // Is a Player linked to the Entity? Else we do not Care // Check if the Weapon exists first, it may got deleted in the same Frame, Bugfix for #37 + if (iWeapon > 0 && g_iWeaponOwner[iWeapon] > 0) // Is a Player linked to the Entity? Else we do not Care // Check if the Weapon exists first, it may got deleted in the same Frame, Bugfix for #37 { - g_iWeaponOwner[weapon] = 0; - SDKUnhook(weapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); + g_iWeaponOwner[iWeapon] = 0; + SDKUnhook(iWeapon, SDKHook_SetTransmit, Eyetest_WeaponTransmit); } } diff --git a/scripting/1.10/kigen-ac_redux/network #Unused.sp b/scripting/latest/kigen-ac_redux/network #Unused.sp similarity index 99% rename from scripting/1.10/kigen-ac_redux/network #Unused.sp rename to scripting/latest/kigen-ac_redux/network #Unused.sp index cd826a6..4fe8ae2 100644 --- a/scripting/1.10/kigen-ac_redux/network #Unused.sp +++ b/scripting/latest/kigen-ac_redux/network #Unused.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.10/kigen-ac_redux/rcon.sp b/scripting/latest/kigen-ac_redux/rcon.sp similarity index 98% rename from scripting/1.10/kigen-ac_redux/rcon.sp rename to scripting/latest/kigen-ac_redux/rcon.sp index 342443b..d1a4ed6 100644 --- a/scripting/1.10/kigen-ac_redux/rcon.sp +++ b/scripting/latest/kigen-ac_redux/rcon.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.10/kigen-ac_redux/status.sp b/scripting/latest/kigen-ac_redux/status.sp similarity index 97% rename from scripting/1.10/kigen-ac_redux/status.sp rename to scripting/latest/kigen-ac_redux/status.sp index 58186cd..257aa74 100644 --- a/scripting/1.10/kigen-ac_redux/status.sp +++ b/scripting/latest/kigen-ac_redux/status.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.10/kigen-ac_redux/stocks.sp b/scripting/latest/kigen-ac_redux/stocks.sp similarity index 98% rename from scripting/1.10/kigen-ac_redux/stocks.sp rename to scripting/latest/kigen-ac_redux/stocks.sp index 6fdf2de..28bdb22 100644 --- a/scripting/1.10/kigen-ac_redux/stocks.sp +++ b/scripting/latest/kigen-ac_redux/stocks.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/1.10/kigen-ac_redux/translations.sp b/scripting/latest/kigen-ac_redux/translations.sp similarity index 99% rename from scripting/1.10/kigen-ac_redux/translations.sp rename to scripting/latest/kigen-ac_redux/translations.sp index da15f7c..a185920 100644 --- a/scripting/1.10/kigen-ac_redux/translations.sp +++ b/scripting/latest/kigen-ac_redux/translations.sp @@ -1,7 +1,6 @@ /* - Kigen's Anti-Cheat + Based on Kigen's Anti-Cheat Copyright (C) 2007-2011 CodingDirect LLC - No Copyright (i guess) 2018-2019 FunForBattle This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/scripting/latest/spcomp.exe b/scripting/latest/spcomp.exe new file mode 100644 index 0000000000000000000000000000000000000000..2c4cdb7abddd3b5aae810f70cac456865c1c267e GIT binary patch literal 1081856 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%0D@0%+gQUNXBEIl!HLs9;)y`yW)2 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

+bt*;AK}?Da>uHVV$!Qx|`Dq-arre`@f70te3K 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

g0n9tXr&xq=$f4BwhFICh{c!5;n4bTXS;NE!} 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≥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%0Ao}*v1 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�OR!9S6NYxT)02)xJTs$}etUIf{V6Kang_=( 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 RJ%S!9_LB0u{}2A>{{RXrJN5to literal 0 HcmV?d00001