Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -336,6 +336,9 @@ if(OS_LINUX OR OS_MACOS)

# Fix for "error: cast from pointer to smaller type 'unsigned int' loses information"
#-fms-extensions

# Required for SourceMod gamedata generation
-Wno-invalid-offsetof
)

# Disable option for older compiler in docker
Expand Down Expand Up @@ -401,8 +404,8 @@ if(NEO_GENERATE_GAMEDATA)

FetchContent_Declare(
gamedata-gen
URL https://github.com/NeotokyoRebuild/gamedata-gen/releases/download/v2/gamedata-gen.zip
URL_HASH MD5=2a988c84e7e192d33819868c37ad3150
URL https://github.com/NeotokyoRebuild/gamedata-gen/releases/download/v3/gamedata-gen.zip
URL_HASH MD5=b502c1d8454e6ce9d0e0d8976ce39a8d
GIT_PROGRESS TRUE
USES_TERMINAL_DOWNLOAD TRUE
)
Expand Down
2 changes: 1 addition & 1 deletion src/cmake/utils.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ function(split_debug_information)
add_custom_command(
OUTPUT ${SPLITDEBUG_TARGET}
COMMAND ${CMAKE_OBJCOPY} --only-keep-debug ${OBJCOPY_COMPRESS_DEBUG_SECTIONS_PARAM} ${SPLITDEBUG_SOURCE} ${SPLITDEBUG_TARGET_DEBUG}
COMMAND ${CMAKE_STRIP} ${SPLITDEBUG_SOURCE} -o ${SPLITDEBUG_TARGET}
COMMAND ${CMAKE_STRIP} --strip-debug ${SPLITDEBUG_SOURCE} -o ${SPLITDEBUG_TARGET}
COMMAND ${CMAKE_OBJCOPY} --add-gnu-debuglink="${SPLITDEBUG_TARGET_DEBUG}" ${SPLITDEBUG_TARGET}
)

Expand Down
10 changes: 10 additions & 0 deletions src/game/server/entitylist.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,10 @@ class CGlobalEntityList : public CBaseEntityList
bool m_bClearingEntities;
CUtlVector<IEntityListener *> m_entityListeners;

#ifdef NEO
friend struct OffsetCalculator<CGlobalEntityList>;
#endif

public:
IServerNetworkable* GetServerNetworkable( CBaseHandle hEnt ) const;
CBaseNetworkable* GetBaseNetworkable( CBaseHandle hEnt ) const;
Expand Down Expand Up @@ -172,6 +176,12 @@ class CGlobalEntityList : public CBaseEntityList

};

#ifdef NEO
BEGIN_OFFSET_REGISTER(CGlobalEntityList);
REGISTER_OFFSET(CGlobalEntityList, m_entityListeners);
END_OFFSET_REGISTER(CGlobalEntityList);
#endif

extern CGlobalEntityList gEntList;


Expand Down
106 changes: 58 additions & 48 deletions src/gamedata/sdkhooks.games/game.neo.txt.in
Original file line number Diff line number Diff line change
Expand Up @@ -4,125 +4,135 @@
{
"Offsets"
{
"EntityListeners"
{
"windows64" "#VTableField.CGlobalEntityList::m_entityListeners#"
"linux64" "#VTableField.CGlobalEntityList::m_entityListeners#"
}
"EndTouch"
{
"windows" "#CBaseEntity::CBaseEntity::EndTouch(CBaseEntity*).windows#"
"linux" "#CBaseEntity::CBaseEntity::EndTouch(CBaseEntity*).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::EndTouch(CBaseEntity*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::EndTouch(CBaseEntity*).linux#"
}
"FireBullets"
{
"windows" "#CBaseEntity::CBaseEntity::FireBullets(FireBulletsInfo_t const&).windows#"
"linux" "#CBaseEntity::CBaseEntity::FireBullets(FireBulletsInfo_t const&).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::FireBullets(FireBulletsInfo_t const&).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::FireBullets(FireBulletsInfo_t const&).linux#"
}
"GroundEntChanged"
{
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::NetworkStateChanged_m_hGroundEntity(void*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::NetworkStateChanged_m_hGroundEntity(void*).linux#"
}
"OnTakeDamage"
{
"windows" "#CBaseEntity::CBaseEntity::OnTakeDamage(CTakeDamageInfo const&).windows#"
"linux" "#CBaseEntity::CBaseEntity::OnTakeDamage(CTakeDamageInfo const&).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::OnTakeDamage(CTakeDamageInfo const&).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::OnTakeDamage(CTakeDamageInfo const&).linux#"
}
"OnTakeDamage_Alive"
{
"windows" "#CBaseCombatCharacter::CBaseCombatCharacter::OnTakeDamage_Alive(CTakeDamageInfo const&).windows#"
"linux" "#CBaseCombatCharacter::CBaseCombatCharacter::OnTakeDamage_Alive(CTakeDamageInfo const&).linux#"
"windows64" "#VTableMethod.CBaseCombatCharacter::CBaseCombatCharacter::OnTakeDamage_Alive(CTakeDamageInfo const&).windows#"
"linux64" "#VTableMethod.CBaseCombatCharacter::CBaseCombatCharacter::OnTakeDamage_Alive(CTakeDamageInfo const&).linux#"
}
"PreThink"
{
"windows" "#CBasePlayer::CBasePlayer::PreThink().windows#"
"linux" "#CBasePlayer::CBasePlayer::PreThink().linux#"
"windows64" "#VTableMethod.CBasePlayer::CBasePlayer::PreThink().windows#"
"linux64" "#VTableMethod.CBasePlayer::CBasePlayer::PreThink().linux#"
}
"PostThink"
{
"windows" "#CBasePlayer::CBasePlayer::PostThink().windows#"
"linux" "#CBasePlayer::CBasePlayer::PostThink().linux#"
"windows64" "#VTableMethod.CBasePlayer::CBasePlayer::PostThink().windows#"
"linux64" "#VTableMethod.CBasePlayer::CBasePlayer::PostThink().linux#"
}
"SetTransmit"
{
"windows" "#CBaseEntity::CBaseEntity::SetTransmit(CCheckTransmitInfo*, bool).windows#"
"linux" "#CBaseEntity::CBaseEntity::SetTransmit(CCheckTransmitInfo*, bool).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::SetTransmit(CCheckTransmitInfo*, bool).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::SetTransmit(CCheckTransmitInfo*, bool).linux#"
}
"Spawn"
{
"windows" "#CBaseEntity::CBaseEntity::Spawn().windows#"
"linux" "#CBaseEntity::CBaseEntity::Spawn().linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::Spawn().windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::Spawn().linux#"
}
"StartTouch"
{
"windows" "#CBaseEntity::CBaseEntity::StartTouch(CBaseEntity*).windows#"
"linux" "#CBaseEntity::CBaseEntity::StartTouch(CBaseEntity*).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::StartTouch(CBaseEntity*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::StartTouch(CBaseEntity*).linux#"
}
"Think"
{
"windows" "#CBaseEntity::CBaseEntity::Think().windows#"
"linux" "#CBaseEntity::CBaseEntity::Think().linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::Think().windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::Think().linux#"
}
"Touch"
{
"windows" "#CBaseEntity::CBaseEntity::Touch(CBaseEntity*).windows#"
"linux" "#CBaseEntity::CBaseEntity::Touch(CBaseEntity*).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::Touch(CBaseEntity*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::Touch(CBaseEntity*).linux#"
}
"TraceAttack"
{
"windows" "#CBaseEntity::CBaseEntity::TraceAttack(CTakeDamageInfo const&, Vector const&, CGameTrace*, CDmgAccumulator*).windows#"
"linux" "#CBaseEntity::CBaseEntity::TraceAttack(CTakeDamageInfo const&, Vector const&, CGameTrace*, CDmgAccumulator*).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::TraceAttack(CTakeDamageInfo const&, Vector const&, CGameTrace*, CDmgAccumulator*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::TraceAttack(CTakeDamageInfo const&, Vector const&, CGameTrace*, CDmgAccumulator*).linux#"
}
"Weapon_CanSwitchTo"
{
"windows" "#CBaseCombatCharacter::CBaseCombatCharacter::Weapon_CanSwitchTo(CBaseCombatWeapon*).windows#"
"linux" "#CBaseCombatCharacter::CBaseCombatCharacter::Weapon_CanSwitchTo(CBaseCombatWeapon*).linux#"
"windows64" "#VTableMethod.CBaseCombatCharacter::CBaseCombatCharacter::Weapon_CanSwitchTo(CBaseCombatWeapon*).windows#"
"linux64" "#VTableMethod.CBaseCombatCharacter::CBaseCombatCharacter::Weapon_CanSwitchTo(CBaseCombatWeapon*).linux#"
}
"Weapon_CanUse"
{
"windows" "#CBasePlayer::CBasePlayer::Weapon_CanUse(CBaseCombatWeapon*).windows#"
"linux" "#CBasePlayer::CBasePlayer::Weapon_CanUse(CBaseCombatWeapon*).linux#"
"windows64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_CanUse(CBaseCombatWeapon*).windows#"
"linux64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_CanUse(CBaseCombatWeapon*).linux#"
}
"Weapon_Drop"
{
"windows" "#CBasePlayer::CBasePlayer::Weapon_Drop(CBaseCombatWeapon*, Vector const*, Vector const*).windows#"
"linux" "#CBasePlayer::CBasePlayer::Weapon_Drop(CBaseCombatWeapon*, Vector const*, Vector const*).linux#"
"windows64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_Drop(CBaseCombatWeapon*, Vector const*, Vector const*).windows#"
"linux64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_Drop(CBaseCombatWeapon*, Vector const*, Vector const*).linux#"
}
"Weapon_Equip"
{
"windows" "#CBasePlayer::CBasePlayer::Weapon_Equip(CBaseCombatWeapon*).windows#"
"linux" "#CBasePlayer::CBasePlayer::Weapon_Equip(CBaseCombatWeapon*).linux#"
"windows64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_Equip(CBaseCombatWeapon*).windows#"
"linux64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_Equip(CBaseCombatWeapon*).linux#"
}
"Weapon_Switch"
{
"windows" "#CBasePlayer::CBasePlayer::Weapon_Switch(CBaseCombatWeapon*, int).windows#"
"linux" "#CBasePlayer::CBasePlayer::Weapon_Switch(CBaseCombatWeapon*, int).linux#"
"windows64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_Switch(CBaseCombatWeapon*, int).windows#"
"linux64" "#VTableMethod.CBasePlayer::CBasePlayer::Weapon_Switch(CBaseCombatWeapon*, int).linux#"
}
"ShouldCollide"
{
"windows" "#CBaseEntity::CBaseEntity::ShouldCollide(int, int) const.windows#"
"linux" "#CBaseEntity::CBaseEntity::ShouldCollide(int, int) const.linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::ShouldCollide(int, int) const.windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::ShouldCollide(int, int) const.linux#"
}
"VPhysicsUpdate"
{
"windows" "#CBaseEntity::CBaseEntity::VPhysicsUpdate(IPhysicsObject*).windows#"
"linux" "#CBaseEntity::CBaseEntity::VPhysicsUpdate(IPhysicsObject*).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::VPhysicsUpdate(IPhysicsObject*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::VPhysicsUpdate(IPhysicsObject*).linux#"
}
"Use"
{
"windows" "#CBaseEntity::CBaseEntity::Use(CBaseEntity*, CBaseEntity*, USE_TYPE, float).windows#"
"linux" "#CBaseEntity::CBaseEntity::Use(CBaseEntity*, CBaseEntity*, USE_TYPE, float).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::Use(CBaseEntity*, CBaseEntity*, USE_TYPE, float).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::Use(CBaseEntity*, CBaseEntity*, USE_TYPE, float).linux#"
}
"Reload"
{
"windows" "#CBaseCombatWeapon::CBaseCombatWeapon::Reload().windows#"
"linux" "#CBaseCombatWeapon::CBaseCombatWeapon::Reload().linux#"
"windows64" "#VTableMethod.CBaseCombatWeapon::CBaseCombatWeapon::Reload().windows#"
"linux64" "#VTableMethod.CBaseCombatWeapon::CBaseCombatWeapon::Reload().linux#"
}
"GetMaxHealth"
{
"windows" "#CBaseEntity::CBaseEntity::GetMaxHealth() const.windows#"
"linux" "#CBaseEntity::CBaseEntity::GetMaxHealth() const.linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::GetMaxHealth() const.windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::GetMaxHealth() const.linux#"
}
"Blocked"
{
"windows" "#CBaseEntity::CBaseEntity::Blocked(CBaseEntity*).windows#"
"linux" "#CBaseEntity::CBaseEntity::Blocked(CBaseEntity*).linux#"
"windows64" "#VTableMethod.CBaseEntity::CBaseEntity::Blocked(CBaseEntity*).windows#"
"linux64" "#VTableMethod.CBaseEntity::CBaseEntity::Blocked(CBaseEntity*).linux#"
}
"CanBeAutobalanced"
{
"windows" "#CBaseMultiplayerPlayer::CBaseMultiplayerPlayer::CanBeAutobalanced().windows#"
"linux" "#CBaseMultiplayerPlayer::CBaseMultiplayerPlayer::CanBeAutobalanced().linux#"
"windows64" "#VTableMethod.CBaseMultiplayerPlayer::CBaseMultiplayerPlayer::CanBeAutobalanced().windows#"
"linux64" "#VTableMethod.CBaseMultiplayerPlayer::CBaseMultiplayerPlayer::CanBeAutobalanced().linux#"
}
}
}
Expand Down
Loading