From 45d1019f96ade4399816382d0dfaf390ebbb2cf4 Mon Sep 17 00:00:00 2001 From: Till Schreiber Date: Sat, 18 Jan 2025 21:39:00 +0100 Subject: [PATCH] ALTV-640 add parachuteStateChange Event --- c-api/event.cpp | 2 ++ c-api/event.h | 2 ++ c-api/func_table.cpp | 4 +++- client/src/runtime/CSharpResourceImpl.cpp | 12 ++++++++++++ client/src/runtime/CSharpResourceImpl.h | 2 ++ client/src/runtime/eventDelegates.h | 4 ++++ cpp-sdk | 2 +- 7 files changed, 26 insertions(+), 2 deletions(-) diff --git a/c-api/event.cpp b/c-api/event.cpp index 52a3955..927879b 100644 --- a/c-api/event.cpp +++ b/c-api/event.cpp @@ -115,6 +115,8 @@ SetDelegate(ScriptRPCAnswer) SetDelegate(PlayerDimensionChange) +SetDelegate(ParachuteStateChange) + #endif CAPI_END() \ No newline at end of file diff --git a/c-api/event.h b/c-api/event.h index 26ad00e..17926ce 100644 --- a/c-api/event.h +++ b/c-api/event.h @@ -99,4 +99,6 @@ EXPORT_CLIENT void Event_SetScriptRPCDelegate(CSharpResourceImpl* resource, /** EXPORT_CLIENT void Event_SetScriptRPCAnswerDelegate(CSharpResourceImpl* resource, /** ClientEvents.ScriptRPCAnswerModuleDelegate */ ScriptRPCAnswerDelegate_t delegate); EXPORT_CLIENT void Event_SetPlayerDimensionChangeDelegate(CSharpResourceImpl* resource, /** ClientEvents.PlayerDimensionChangeModuleDelegate */ PlayerDimensionChangeDelegate_t delegate); + +EXPORT_CLIENT void Event_SetParachuteStateChangeDelegate(CSharpResourceImpl* resource, /** ClientEvents.ParachuteStateChangeModuleDelegate */ ParachuteStateChangeDelegate_t delegate); #endif diff --git a/c-api/func_table.cpp b/c-api/func_table.cpp index 23302a7..d69a715 100644 --- a/c-api/func_table.cpp +++ b/c-api/func_table.cpp @@ -1,6 +1,6 @@ #include "func_table.h" -inline uint64_t capiHash = 14533172368099836198UL; +inline uint64_t capiHash = 93234109882736831UL; inline uint64_t capiHashes[] = { 0, #ifdef ALT_CLIENT_API @@ -289,6 +289,7 @@ inline uint64_t capiHashes[] = { 1555813148561817401UL, 10052271841742065911UL, 15651483423859541657UL, + 11234135878852629737UL, 17879780001793566297UL, 1013031841840963141UL, 10641081887455190199UL, @@ -2111,6 +2112,7 @@ inline void* capiPointers[] = { (void*) Event_SetLocalMetaChangeDelegate, (void*) Event_SetMetaChangeDelegate, (void*) Event_SetNetOwnerChangeDelegate, + (void*) Event_SetParachuteStateChangeDelegate, (void*) Event_SetPlayerBulletHitDelegate, (void*) Event_SetPlayerChangeAnimationDelegate, (void*) Event_SetPlayerChangeInteriorDelegate, diff --git a/client/src/runtime/CSharpResourceImpl.cpp b/client/src/runtime/CSharpResourceImpl.cpp index 1819a24..84304f9 100644 --- a/client/src/runtime/CSharpResourceImpl.cpp +++ b/client/src/runtime/CSharpResourceImpl.cpp @@ -598,6 +598,16 @@ void CSharpResourceImpl::OnEvent(const alt::CEvent* ev) playerDimensionChangeEvent->GetNewDimension()); break; } + case alt::CEvent::Type::PARACHUTE_STATE_CHANGE: + { + auto parachuteStateChangeEvent = dynamic_cast(ev); + + OnParachuteStateChangeDelegate(Util_GetBaseObjectPointer(parachuteStateChangeEvent->GetPlayer()), + parachuteStateChangeEvent->GetPlayer()->GetType(), + parachuteStateChangeEvent->GetOldState(), + parachuteStateChangeEvent->GetNewState()); + break; + } default: { std::cout << "Unhandled client event #" << static_cast(ev->GetType()) << " got called" << std::endl; @@ -1023,4 +1033,6 @@ void CSharpResourceImpl::ResetDelegates() { OnScriptRPCAnswerDelegate = [](auto var, auto var2, auto var3) {}; OnPlayerDimensionChangeDelegate = [](auto var, auto var2, auto var3, auto var4) {}; + + OnParachuteStateChangeDelegate = [](auto var, auto var2, auto var3, auto var4) {}; } \ No newline at end of file diff --git a/client/src/runtime/CSharpResourceImpl.h b/client/src/runtime/CSharpResourceImpl.h index 016ffc5..06ec464 100644 --- a/client/src/runtime/CSharpResourceImpl.h +++ b/client/src/runtime/CSharpResourceImpl.h @@ -107,6 +107,8 @@ class CSharpResourceImpl : public alt::IResource::Impl PlayerDimensionChangeDelegate_t OnPlayerDimensionChangeDelegate = nullptr; + ParachuteStateChangeDelegate_t OnParachuteStateChangeDelegate = nullptr; + bool MakeClient(alt::IResource::CreationInfo* info, std::vector files) { diff --git a/client/src/runtime/eventDelegates.h b/client/src/runtime/eventDelegates.h index 1690397..e59a738 100644 --- a/client/src/runtime/eventDelegates.h +++ b/client/src/runtime/eventDelegates.h @@ -81,3 +81,7 @@ typedef void (* ScriptRPCDelegate_t)(const alt::CEvent* event, const char* name, typedef void (* ScriptRPCAnswerDelegate_t)(uint16_t answerId, alt::MValueConst* answer, const char* answerError); typedef void (* PlayerDimensionChangeDelegate_t)(void* target, alt::IBaseObject::Type targetBaseObjectType, int32_t oldDim, int32_t newDim); + +typedef void (* ParachuteStateChangeDelegate_t)(void* player, alt::IBaseObject::Type playerType, alt::CParachuteStateChangeEvent::ParachuteState oldState, alt::CParachuteStateChangeEvent::ParachuteState newState); + + diff --git a/cpp-sdk b/cpp-sdk index d545348..2c302e9 160000 --- a/cpp-sdk +++ b/cpp-sdk @@ -1 +1 @@ -Subproject commit d5453484571e1862e3d8adf4d6814891ec98612c +Subproject commit 2c302e93bd4d9144676b34388c2cf7d417682ea0