Commit Graph

4947 Commits

Author SHA1 Message Date
Arkshine
a445e806ea Cstrike: Refactor - Simplify forwards logic, fix and improve few things
- The logic around CS_OnBuy forward has been simplified. Since there is no way to have a consistent way to hook/block for all items, the new logic is to have as less as possible code, especially in blocking mode where we want to avoid to do extra stuffs (e.g blocking sound, event, etc).

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

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

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

If an author wanted to have its own prices, the only only way would to force players to use old menu, then overwriting the whole buy menu, so you would be able to display what you want exactly.
2015-11-03 10:45:50 +01:00
Arkshine
ffe8b7761e Cstrike: Move CSW_* constants from amxconst.inc to cstrike_const.inc 2015-11-03 10:45:49 +01:00
Arkshine
2c5cc4289e Cstrike: Add cs_is_valid_itemid() stock 2015-11-03 10:45:49 +01:00
Arkshine
75853dae60 Cstrike: Add cs_find_ent_by_owner() native 2015-11-03 10:45:48 +01:00
Arkshine
23b0450938 Cstrike: Add cs_get_weapon_class() stock (weapon id -> class id)
Note: this has been modified a bit later in cs_is_valid_itemid() commit.
2015-11-03 10:45:47 +01:00
Arkshine
600a15a57b Cstrike: Add cs_get_weapon_info() native 2015-11-03 10:45:47 +01:00
Arkshine
60cdbeb219 Cstrike: Add CS_OnGetItemPrice forward to get/alter an item price on purchase 2015-11-03 10:45:46 +01:00
Arkshine
cf2f753660 Cstrike: Fix CS_OnBuy called only on the first buying of primary/secondary ammos and not when game loops to give until max amount
When game gives ammos, it loops until the max amount is reached, but it sill calls GiveNamedItem and AddAcount, so forward should be called for each of these ones.

Code logic is simplified and more understandable.
2015-11-03 10:45:46 +01:00
Arkshine
e6a2434887 Cstrike: Add cs_get_item_id() and cs_get_translated_item_alias() natives 2015-11-03 10:45:45 +01:00
Arkshine
c6628f22ee Cstrike: Add more known constants from game 2015-11-03 10:45:44 +01:00
Arkshine
d3e5957215 Cstrike: Add cstrike_const.inc and move existing constants there 2015-11-03 10:45:44 +01:00
Vincent Herbet
eb9405bd97 Merge pull request #298 from Arkshine/feature/gamerules-natives
Introduce get/set_gamerules_*() natives to read/write on the gamerules object
2015-11-03 10:42:35 +01:00
Arkshine
49184c86a3 Refactor 5 - Rename original file/var for gamerules 2015-11-02 20:10:40 +01:00
Arkshine
4333255571 Refactor 4 - Move entities natives to its own file and reflect changes 2015-11-02 20:10:39 +01:00
Arkshine
1032fbdbd0 Refactor 3 - Simplify macros and move them to shared file as well 2015-11-02 20:10:39 +01:00
Arkshine
dc6f171f20 Refactor 2 - Duplicate get_member_* for each set of natives for consistency 2015-11-02 20:10:38 +01:00
Arkshine
c07b269c94 Refactor 1 - Move shared code to its own file and reflect changes 2015-11-02 20:10:38 +01:00
Arkshine
02c1b20ed7 Rename get_ent_data_size/info/basetype to be more generic 2015-11-02 20:10:37 +01:00
Arkshine
68f99bc2d5 Add get/Set_gamerules_* natives 2015-11-02 20:10:37 +01:00
Arkshine
df507a675b Reflect changes on get/set_data* natives 2015-11-02 20:10:36 +01:00
Arkshine
d9c7e72d4b Update macros to support gamerules configs 2015-11-02 20:10:36 +01:00
Arkshine
234b537ad9 Factorize gamerules data code 2015-11-02 20:10:35 +01:00
Arkshine
483ef98af3 Load gamerules address and offsets 2015-11-02 20:10:34 +01:00
Arkshine
f31e0e405f Add gamerules offsets for supported mods 2015-11-02 20:10:34 +01:00
Vincent Herbet
7db6e9355d Merge pull request #305 from IgnacioFDM/master
Remove extra semicolon
2015-10-20 10:47:50 +02:00
IgnacioFDM
b78c239395 Remove extra semicolon 2015-10-20 05:34:18 -03:00
Vincent Herbet
b7be35618d Merge pull request #304 from Arkshine/fix/crash-invalid-address
Fix a potential crash if SV_DropClient address could not be found
2015-10-15 13:03:48 +02:00
Arkshine
42fb860077 Fix a potential crash if SV_DropClient address could not be found 2015-10-15 12:50:58 +02:00
Vincent Herbet
e2e57d8347 Merge pull request #302 from Arkshine/fix/compilation-gcc
Fix linux compilation with gcc-4.8 and higher.
2015-10-13 20:39:09 +02:00
Arkshine
85f03c4a06 Fix linux compilation with gcc-4.8 and higher. 2015-10-13 20:25:09 +02:00
Vincent Herbet
915da57d32 Merge pull request #300 from Arkshine/fix/cstrike-sv
Fix retrieval of sv address not working under linux
2015-10-11 13:46:10 +02:00
Arkshine
b3e5e10473 Fix retrieval of sv address not working under linux 2015-10-11 13:25:31 +02:00
Vincent Herbet
2eeeb2997d Merge pull request #299 from Arkshine/fix/typos-in-fakemeta
Fix (get/set)_pdata_(int/float) using the wrong offset value (typo from #297)
2015-10-09 20:36:36 +02:00
Arkshine
9997c31703 Fix (get/set)_pdata_(int/float) using the wrong offset value (typo from #297) 2015-10-09 20:30:45 +02:00
Vincent Herbet
cae7281def Merge pull request #297 from Arkshine/fix/invalid-edict-on-last-player
Fix some natives relying on a known engine bug related to last player's edict being invalid
2015-10-08 19:52:27 +02:00
Arkshine
9bee1f7edf Consistency: Replace GETEDICT with HLTypeConversion in core 2015-10-08 19:36:42 +02:00
Arkshine
b65a0600ee Consistency: Replace GETEDICT and variants with HLTypeConversion in cstrike module 2015-10-08 19:25:00 +02:00
Arkshine
6f301b5cea Consistency: Replace GETEDICT, INDEXENT2 and others things with HLTypeConversion in hamsandwich module 2015-10-08 19:24:49 +02:00
Arkshine
bf5fdc2b5c Consistency: Replace GetPlayerEdict with HLTypeConversion in fun module 2015-10-07 23:27:58 +02:00
Arkshine
e52fc14114 Consistency: Replace INDEXENT2 with HLTypeConversion in engine module 2015-10-07 23:27:57 +02:00
Arkshine
429a4596c1 Consistency: Replace INDEXENT2 and others things with HLTypeConversion in fakemeta module 2015-10-07 23:27:56 +02:00
Arkshine
9980b7ac62 Fix some natives relying on a known engine bug related to last player's edict being invalid 2015-10-06 17:19:01 +02:00
Vincent Herbet
fd0f6cc429 Merge pull request #296 from Arkshine/feature/update-to-latest-amtl
Update to latest AMTL
2015-10-05 19:49:10 +02:00
Arkshine
c29eabec50 Fix max length inconsistencies + typo 2015-10-05 19:12:30 +02:00
Arkshine
138b9e1510 Remove UTIL_Format() and UTIL_VarArgs() 2015-10-05 19:12:08 +02:00
Arkshine
f22dc769f4 Replace some LibraySys usage with AMTL primitives 2015-10-02 23:22:22 +02:00