Quote:
Originally Posted by NiHiLaNTh
you simply need to hook Ham_Killed and check whether attacker is the monster or there are no attacker at all.
|
Hamsandwich is pretty hardcoded and doesn't support all HL mods, Sven Co-op 5.0+ being one of them.
Lynx, try the following:
PHP Code:
const Ham: Ham_SC_Killed = Ham_IsTriggered;
and then just hook Ham_SC_Killed.
Looks like Killed is located at index 20, where it previously was at 17. The previous code works because, regarding current hamdata.ini, IsTrigger is found at index 20 for (older version of) SC. That code just makes an alias for it, kind of.
Here is a table I dumped with IDA from the SC server binary, although it's a few months old one as I got it just as SC 5.0 got released.
It would be great if someone could upload the newest released server binary (Linux).
Code:
// Auto reconstructed from vtable block @ 0x007D3CA0
// from "sc50__server.so", by ida_vtables.idc
0 _ZN11CBaseEntity8PreSpawnEv_localalias_32
1 CBaseEntity::Spawn(void)
2 CBaseEntity::PostSpawn(void)
3 CBaseEntity::Precache(void)
4 CBaseEntity::KeyValue(KeyValueData_s *)
5 CBaseEntity::GetKeyValue(char const*,entvartype_s &)
6 CBaseEntity::Save(CSave &)
7 CBaseEntity::Restore(CRestore &)
8 CBaseEntity::ObjectCaps(void)
9 CBaseEntity::Activate(void)
10 CBaseEntity::SetObjectCollisionBox(void)
11 _ZN11CBaseEntity17GetClassificationEi_localalias_71
12 CBaseEntity::SetClassification(int)
13 CBaseEntity::IRelationship(CBaseEntity*)
14 CBaseEntity::Classify(void)
15 CBaseEntity::DeathNotice(entvars_s *)
16 CBaseEntity::TraceAttack(entvars_s *,float,Vector,TraceResult *,int)
17 CBaseEntity::TakeDamage(entvars_s *,entvars_s *,float,int)
18 CBaseEntity::TakeHealth(float,int,int)
19 CBaseEntity::TakeArmor(float,int,int)
20 CBaseEntity::Killed(entvars_s *,int)
21 CBaseEntity::BloodColor(void)
22 CBaseEntity::TraceBleed(float,Vector,TraceResult *,int)
23 CBaseEntity::IsTriggered(CBaseEntity*)
24 CBaseEntity::MyMonsterPointer(void)
25 CBaseEntity::MySquadMonsterPointer(void)
26 CBaseEntity::MyCustomPointer(void)
27 CBaseEntity::MyItemPointer(void)
28 CBaseEntity::GetToggleState(void)
29 CBaseEntity::AddPoints(int,int)
30 CBaseEntity::AddPointsToTeam(int,int)
31 CBaseEntity::AddPlayerItem(CBasePlayerItem *)
32 CBaseEntity::RemovePlayerItem(CBasePlayerItem *)
33 CBaseEntity::GiveAmmo(int,char *,int,bool)
34 CBaseEntity::GetDelay(void)
35 CBaseEntity::IsMoving(void)
36 CBaseEntity::OverrideReset(void)
37 CBaseEntity::DamageDecal(int)
38 CBaseEntity::SetToggleState(int)
39 CBaseEntity::StartSneaking(void)
40 CBaseEntity::StopSneaking(void)
41 CBaseEntity::OnControls(entvars_s *)
42 CBaseEntity::IsSneaking(void)
43 CBaseEntity::IsAlive(void)
44 CBaseEntity::IsBSPModel(void)
45 CBaseEntity::ReflectGauss(void)
46 CBaseEntity::HasTarget(int)
47 CBaseEntity::IsInWorld(void)
48 CBaseEntity::IsMonster(void)
49 CBaseEntity::IsPlayer(void)
50 CBaseEntity::IsNetClient(void)
51 CBaseEntity::IsPointEnt(void)
52 CBaseEntity::IsMachine(void)
53 CBaseEntity::TeamID(void)
54 CBaseEntity::CriticalRemove(void)
55 CBaseEntity::GetNextTarget(void)
56 CBaseEntity::Think(void)
57 CBaseEntity::Touch(CBaseEntity*)
58 CBaseEntity::Use(CBaseEntity*,CBaseEntity*,USE_TYPE,float)
59 CBaseEntity::Blocked(CBaseEntity*)
60 CBaseEntity::UpdateOnRemove(void)
61 CBaseEntity::Respawn(void)
62 CBaseEntity::UpdateOwner(void)
63 CBaseEntity::FBecomeProne(void)
64 CBaseEntity::Center(void)
65 CBaseEntity::EyePosition(void)
66 CBaseEntity::EarPosition(void)
67 CBaseEntity::BodyTarget(Vector const&)
68 CBaseEntity::Illumination(void)
69 CBaseEntity::FVisible(CBaseEntity*,bool)
70 CBaseEntity::FVisible(Vector const&)
71 CBaseEntity::FVisibleFromPos(Vector const&,Vector const&)
72 CBaseEntity::IsFacing(entvars_s *,float)
73 CBaseEntity::GetPointsForDamage(float)
74 CBaseEntity::GetDamagePoints(entvars_s *,entvars_s *,float)
75 CBaseEntity::SetPlayerAlly(bool)
76 CBaseEntity::~CBaseEntity()
77 CBaseEntity::~CBaseEntity()
78 CBaseEntity::OnCreate(void)
79 CBaseEntity::OnDestroy(void)
80 CBaseEntity::IsRevivable(void)
81 CBaseEntity::BeginRevive(float)
82 CBaseEntity::EndRevive(float)
83 CBaseEntity::ShowHUDInfo(void)
84 CBaseEntity::ShouldDisablePlayerCollisions(void)const
85 __cxa_free_exception
86 `typeinfo name for'CCfgCommand