Update Hamsandwich for Sven Coop 5.17 (#452)

* Remove dropped functions

* Update existing offsets

* Add some logic to prevent the use of removed functions.

* Add Ham_SC_AddPoints and Ham_SC_AddPointsToTeam

* Add Ham_SC_GiveAmmo

* Add Ham_SC_FVisibleFromPos

* Fix an old typos with CanPlaySentence for all mods

* Add Ham_SC_CanPlaySequence

* Add Ham_SC_PlayScriptSentence

* Add Ham_SC_StartPlayerFollowing

* Fix CanPlaySequence hamdata.ini (SC)

* Add Ham_SC_StopPlayerFollowing

* Fix handlers from previous commits

* Add Ham_SC_PreSpawn

* Add Ham_SC_PostSpawn

* Add Ham_SC_OnKeyValueUpdate

* Add Ham_SC_SetClassification

* Add Ham_SC_MyCustomPointer and Ham_SC_MyItemPointer

* Add Ham_SC_IsSneaking

* Add Ham_SC_IsAlive

* Add Ham_SC_IsBSPModel

* Add Ham_SC_ReflectGauss

* Add Ham_SC_HasTarget

* Add Ham_SC_IsInWorld

* Add Ham_SC_IsPlayer

* Add Ham_SC_IsNetClient

* Add Ham_SC_IsBreakable

* Fix Ham_SC_IsMonster, Ham_SC_IsPointEntity, Ham_SC_IsMachine and Ham_SC_CriticakRemove handlers

* Add Ham_SC_OnControls

* Fix Ham_SC_TakeHealth and Ham_SC_TakeArmor handlers

* Add Ham_SC_IsTriggered

* Add Ham_SC_RemovePlayerItem

* Fix typo

* Fix Ham_SC_IsMoving handler

* Add Ham_SC_SUB_UseTargets

* Ham_SC_IsLockedByMaster

* Add Ham_SC_FBecomeProne

* Fix Ham_SC_FVisible handler

* Add Ham_SC_FVecVisible

* Fix Ham_SC_FVisibleFromPos handler

* Fix Ham_SC_IsFacing handler

* Add Ham_SC_SetPlayerAlly

* Add Ham_SC_OnSetOriginByMap

* Add Ham_SC_IsRevivable

* Add Ham_SC_BeginRevive and Ham_SC_EndRevive

* Update offsets based on SvenCoop v5.17

* Add Ham_SC_Item_CanCollect and Ham_SC_Item_Collect

* Add Ham_SC_Item_AddToPlayer

* Add Ham_SC_Item_AddDuplicate

* Add Ham_SC_Item_AddAmmoFromItem

* Add Ham_SC_Item_GetItemInfo

* Add Ham_SC_Item_CanDeploy, Ham_SC_Item_Deploy and Ham_SC_Item_CanHolster

* Add Ham_SC_Item_UpdateClientData

* Add Ham_SC_Item_GetRespawnTime

* Add Ham_SC_Item_CanHaveDuplicates

* Add Ham_SC_Weapon_ExtractAmmoFromItem

* Add Ham_SC_Weapon_GetAmmo1Drop and Ham_SC_Weapon_GetAmmo2Drop

* Add Ham_SC_Weapon_FinishReload and Ham_SC_Weapon_ShouldReload

* Fix Ham_SC_IsMultiplayer, Ham_SC_FRunfuncs and Ham_SC_FCanRun handlers

* Add Ham_SC_Weapon_AddWeapon, _PlayEmptySound, _IsUsable, _ShouldWeaponIdle and _UseDecrement

* Add Ham_SC_Item_GetPickupSound

* Add Ham_SC_Item_InactiveItemPreFrame and Ham_SC_Item_InactiveItemPostFrame

* Add Ham_SC_Item_DetachFromPlayer

* Fix Ham_SC_Player_IsConnected handler

* Add Ham_SC_Player_EnteredObserver, Ham_SC_Player_LeftObserver and Ham_SC_Player_IsObserver

* Fix sc_postpawn typo (should be sc_postspawn)

* Add few more assert
This commit is contained in:
Vincent Herbet
2018-09-06 17:09:10 +02:00
committed by GitHub
parent 0894027cb5
commit 99ebd62653
13 changed files with 2388 additions and 559 deletions

View File

@@ -37,7 +37,8 @@ bool gDoForwards=true;
ke::Vector<Hook *> hooks[HAM_LAST_ENTRY_DONT_USE_ME_LOL];
CHamSpecialBotHandler SpecialbotHandler;
#define V(__KEYNAME, __STUFF__) 0, 0, __KEYNAME, RT_##__STUFF__, RB_##__STUFF__, PC_##__STUFF__, reinterpret_cast<void *>(Hook_##__STUFF__), Create_##__STUFF__, Call_##__STUFF__
#define V(__KEYNAME, __STUFF__) 0, 0, __KEYNAME, false, RT_##__STUFF__, RB_##__STUFF__, PC_##__STUFF__, reinterpret_cast<void *>(Hook_##__STUFF__), Create_##__STUFF__, Call_##__STUFF__
#define V_REMOVED(__KEYNAME) 0, 0, __KEYNAME, true, RT_Void_Void, RB_Void_Void, PC_Void_Void, nullptr, 0, 0
hook_t hooklist[] =
{
@@ -229,7 +230,7 @@ hook_t hooklist[] =
{ V("checkmeleeattack2", Int_Float_Float) },
{ V("schedulechange", Void_Void) },
{ V("canplaysequence", Int_Int_Int) },
{ V("canplaysentence", Int_Int) },
{ V("canplaysentence2", Int_Int) },
{ V("playsentence", Void_Str_Float_Float_Float) },
{ V("playscriptedsentence", Void_Str_Float_Float_Float_Int_Cbase) },
{ V("sentencestop", Void_Void) },
@@ -401,23 +402,23 @@ hook_t hooklist[] =
/* Sven co-op */
{ V("sc_getclassification", Int_Int) },
{ V("sc_ismonster", Int_Void) },
{ V("sc_isphysx", Int_Void) },
{ V("sc_ispointentity", Int_Void) },
{ V("sc_ismachine", Int_Void) },
{ V("sc_criticalremove", Int_Void) },
{ V("sc_ismonster", Bool_Void) },
{ V_REMOVED("sc_isphysx") },
{ V("sc_ispointentity", Bool_Void) },
{ V("sc_ismachine", Bool_Void) },
{ V("sc_criticalremove", Bool_Void) },
{ V("sc_updateonremove", Void_Void) },
{ V("sc_fvisible", Int_Cbase_Bool) },
{ V("sc_fvisiblefrompos", Int_Vector_Vector) },
{ V("sc_isfacing", Int_Entvar_Float) },
{ V("sc_fvisible", Bool_Cbase_Bool) },
{ V("sc_fvisiblefrompos", Bool_pVector_pVector) },
{ V("sc_isfacing", Bool_Entvar_Float) },
{ V("sc_getpointsfordamage", Float_Float) },
{ V("sc_getdamagepoints", Void_Entvar_Entvar_Float) },
{ V("sc_oncreate", Void_Void) },
{ V("sc_ondestroy", Void_Void) },
{ V("sc_isvalidentity", Bool_Void) },
{ V_REMOVED("sc_isvalidentity") },
{ V("sc_shouldfadeondeath", Int_Void) },
{ V("sc_setupfriendly", Void_Void) },
{ V("sc_revivethink", Void_Void) },
{ V_REMOVED("sc_revivethink") },
{ V("sc_revive", Void_Void) },
{ V("sc_startmonster", Void_Void) },
{ V("sc_checkrangeattack1_move",Int_Float_Float) },
@@ -440,10 +441,10 @@ hook_t hooklist[] =
{ V("sc_finbulletcone", Int_Cbase_pVector) },
{ V("sc_callgibmonster", Void_Void) },
{ V("sc_checktimebaseddamage", Void_Void) },
{ V("sc_ismoving", Int_Void) },
{ V("sc_ismoving", Bool_Void) },
{ V("sc_isplayerfollowing", Int_Void) },
{ V("sc_startplayerfollowing", Void_Cbase) },
{ V("sc_stopplayerfollowing", Void_Int) },
{ V("sc_startplayerfollowing", Void_Cbase_Bool) },
{ V("sc_stopplayerfollowing", Void_Bool_Bool) },
{ V("sc_usesound", Void_Void) },
{ V("sc_unusesound", Void_Void) },
{ V("sc_ridemonster", Void_Cbase) },
@@ -454,8 +455,8 @@ hook_t hooklist[] =
{ V("sc_checkrevival", Void_Void) },
{ V("sc_mediccallsound", Void_Void) },
{ V("sc_player_menuinputperformed", Void_Bool) },
{ V("sc_player_ismenuinputdone",Bool_Void) },
{ V_REMOVED("sc_player_menuinputperformed") },
{ V_REMOVED("sc_player_ismenuinputdone") },
{ V("sc_player_specialspawn", Void_Void) },
{ V("sc_player_isvalidinfoentity", Bool_Void) },
{ V("sc_player_levelend", Void_Void) },
@@ -470,9 +471,9 @@ hook_t hooklist[] =
{ V("sc_player_resetview", Void_Void) },
{ V("sc_player_getlogfrequency",Float_Void) },
{ V("sc_player_logplayerstats", Bool_Void) },
{ V("sc_player_disablecollisionwithplayer", Void_Cbase_Float) },
{ V("sc_player_enablecollisionwithplayer", Void_Cbase_Bool) },
{ V("sc_player_cantouchplayer", Bool_Cbase) },
{ V_REMOVED("sc_player_disablecollisionwithplayer") },
{ V_REMOVED("sc_player_enablecollisionwithplayer") },
{ V_REMOVED("sc_player_cantouchplayer") },
{ V("sc_item_materialize", Void_Void) },
@@ -483,10 +484,10 @@ hook_t hooklist[] =
{ V("sc_weapon_getw_model", Str_Str) },
{ V("sc_weapon_getv_model", Str_Str) },
{ V("sc_weapon_precachecustommodels", Void_Void) },
{ V("sc_weapon_ismultiplayer", Int_Void) },
{ V("sc_weapon_frunfuncs", Int_Void) },
{ V("sc_weapon_ismultiplayer", Bool_Void) },
{ V("sc_weapon_frunfuncs", Bool_Void) },
{ V("sc_weapon_setfov", Void_Int) },
{ V("sc_weapon_fcanrun", Int_Void) },
{ V("sc_weapon_fcanrun", Bool_Void) },
{ V("sc_weapon_customdecrement",Void_Float) },
{ V("sc_weapon_setv_model", Void_Str) },
{ V("sc_weapon_setp_model", Void_Str) },
@@ -499,11 +500,11 @@ hook_t hooklist[] =
{ V("tfc_weapon_sendweaponanim", Void_Int_Int) },
{ V("tfc_weapon_getnextattackdelay", Float_Float) },
{ V("sc_takehealth",Int_Float_Int_Int) },
{ V("sc_takearmor", Int_Float_Int_Int) },
{ V("sc_giveammo", Int_Int_Str_Int_Int) },
{ V("sc_takehealth",Bool_Float_Int_Int) },
{ V("sc_takearmor", Bool_Float_Int_Int) },
{ V("sc_giveammo", Int_Int_Str_Int_Bool) },
{ V("sc_checkattacker", Int_Cbase) },
{ V("sc_player_isconnected", Int_Void) },
{ V("sc_player_isconnected", Bool_Void) },
{ V("dod_weapon_sendweaponanim", Void_Int_Int) },
@@ -514,7 +515,69 @@ hook_t hooklist[] =
{ V("ts_weapon_alternateattack", Void_Void) },
{ V("item_getiteminfo", Int_ItemInfo) }
{ V("item_getiteminfo", Int_ItemInfo) },
{ V("sc_prespawn", Void_Void) },
{ V("sc_postspawn", Void_Void) },
{ V("sc_onkeyvalueupdate", Void_Str) },
{ V("sc_setclassification", Void_Int) },
{ V("sc_istriggered", Bool_Void) },
{ V("sc_mycustompointer", Cbase_Void) },
{ V("sc_myitempointer", Cbase_Void) },
{ V("sc_addpoints", Void_Int_Bool) },
{ V("sc_addpointstoteam", Void_Int_Bool) },
{ V("sc_removeplayeritem", Bool_Cbase) },
{ V("sc_oncontrols", Bool_Entvar) },
{ V("sc_issneaking", Bool_Void) },
{ V("sc_isalive", Bool_Void) },
{ V("sc_isbspmodel", Bool_Void) },
{ V("sc_reflectgauss", Bool_Void) },
{ V("sc_hastarget", Bool_Int) },
{ V("sc_isinworld", Bool_Void) },
{ V("sc_isplayer", Bool_Void) },
{ V("sc_isnetclient", Bool_Void) },
{ V("sc_isbreakable", Bool_Void) },
{ V("sc_subusetargets", Void_Cbase_Int_Float) },
{ V("sc_islockedbymaster", Bool_Void) },
{ V("sc_fbecomeprone", Bool_Cbase) },
{ V("sc_fvecvisible", Bool_pVector) },
{ V("sc_setplayerally", Void_Bool) },
{ V("sc_onsetoriginbymap", Void_Void) },
{ V("sc_isrevivable", Bool_Void) },
{ V("sc_beginrevive", Void_Float) },
{ V("sc_endrevive", Void_Float) },
{ V("sc_canplaysequence", Bool_Bool_Int) },
{ V("sc_canplaysentence2", Bool_Bool) },
{ V("sc_playscriptedsentence", Void_Str_Float_Float_Float_Bool_Cbase) },
{ V("sc_item_addtoplayer", Bool_Cbase) },
{ V("sc_item_addduplicate", Bool_Cbase) },
{ V("sc_item_addammofromitem", Bool_Cbase) },
{ V("sc_item_getpickupsound", Str_Void) },
{ V("sc_item_cancollect", Bool_Cbase_Int) },
{ V("sc_item_collect", Void_Cbase_Int) },
{ V("sc_item_getiteminfo", Bool_ItemInfo) },
{ V("sc_item_candeploy", Bool_Void) },
{ V("sc_item_deploy", Bool_Void) },
{ V("sc_item_canholster", Bool_Void) },
{ V("sc_item_inactiveitempreframe", Void_Void) },
{ V("sc_item_inactiveitempostframe",Void_Void) },
{ V("sc_item_detachfromplayer", Void_Void) },
{ V("sc_item_updateclientdata", Bool_Cbase) },
{ V("sc_item_getrespawntime", Float_Void) },
{ V("sc_item_canhaveduplicates",Bool_Void) },
{ V("sc_weapon_extractammofromitem",Bool_Cbase) },
{ V("sc_weapon_addweapon", Bool_Void) },
{ V("sc_weapon_getammo1drop", Int_Void) },
{ V("sc_weapon_getammo2drop", Int_Void) },
{ V("sc_weapon_playemptysound", Bool_Void) },
{ V("sc_weapon_isusable", Bool_Void) },
{ V("sc_weapon_finishreload", Void_Void) },
{ V("sc_weapon_shouldreload", Bool_Void) },
{ V("sc_weapon_shouldweaponidle",Bool_Void) },
{ V("sc_weapon_usedecrement", Bool_Void) },
{ V("sc_player_enteredobserver",Void_Void) },
{ V("sc_player_leftobserver", Void_Void) },
{ V("sc_player_isobserver", Bool_Void) },
};