Add shim for TerminateRound for CS:GO
This commit is contained in:
parent
0e4edd4419
commit
c86a6abdc5
@ -122,6 +122,10 @@ DETOUR_DECL_MEMBER1(DetourTerminateRound, void, int, reason)
|
|||||||
|
|
||||||
cell_t result = Pl_Continue;
|
cell_t result = Pl_Continue;
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_CSGO
|
||||||
|
reason--;
|
||||||
|
#endif
|
||||||
|
|
||||||
g_pTerminateRoundForward->PushFloatByRef(&delay);
|
g_pTerminateRoundForward->PushFloatByRef(&delay);
|
||||||
g_pTerminateRoundForward->PushCellByRef(&reason);
|
g_pTerminateRoundForward->PushCellByRef(&reason);
|
||||||
g_pTerminateRoundForward->Execute(&result);
|
g_pTerminateRoundForward->Execute(&result);
|
||||||
@ -129,6 +133,10 @@ DETOUR_DECL_MEMBER1(DetourTerminateRound, void, int, reason)
|
|||||||
if (result >= Pl_Handled)
|
if (result >= Pl_Handled)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_CSGO
|
||||||
|
reason++;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SOURCE_ENGINE != SE_CSGO || !defined(WIN32)
|
#if SOURCE_ENGINE != SE_CSGO || !defined(WIN32)
|
||||||
if (result == Pl_Changed)
|
if (result == Pl_Changed)
|
||||||
return DETOUR_MEMBER_CALL(DetourTerminateRound)(delay, reason);
|
return DETOUR_MEMBER_CALL(DetourTerminateRound)(delay, reason);
|
||||||
|
@ -330,6 +330,12 @@ static cell_t CS_TerminateRound(IPluginContext *pContext, const cell_t *params)
|
|||||||
return pContext->ThrowNativeError("GameRules not available. TerminateRound native disabled.");
|
return pContext->ThrowNativeError("GameRules not available. TerminateRound native disabled.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int reason = params[2];
|
||||||
|
|
||||||
|
#if SOURCE_ENGINE == SE_CSGO
|
||||||
|
reason++;
|
||||||
|
#endif
|
||||||
|
|
||||||
#if SOURCE_ENGINE != SE_CSGO || !defined(WIN32)
|
#if SOURCE_ENGINE != SE_CSGO || !defined(WIN32)
|
||||||
static ICallWrapper *pWrapper = NULL;
|
static ICallWrapper *pWrapper = NULL;
|
||||||
|
|
||||||
@ -356,7 +362,7 @@ static cell_t CS_TerminateRound(IPluginContext *pContext, const cell_t *params)
|
|||||||
vptr += sizeof(void *);
|
vptr += sizeof(void *);
|
||||||
*(float *)vptr = sp_ctof(params[1]);
|
*(float *)vptr = sp_ctof(params[1]);
|
||||||
vptr += sizeof(float);
|
vptr += sizeof(float);
|
||||||
*(int*)vptr = params[2];
|
*(int*)vptr = reason;
|
||||||
|
|
||||||
pWrapper->Execute(vstk, NULL);
|
pWrapper->Execute(vstk, NULL);
|
||||||
#else
|
#else
|
||||||
@ -371,7 +377,7 @@ static cell_t CS_TerminateRound(IPluginContext *pContext, const cell_t *params)
|
|||||||
g_pIgnoreTerminateDetour = true;
|
g_pIgnoreTerminateDetour = true;
|
||||||
|
|
||||||
float delay = sp_ctof(params[1]);
|
float delay = sp_ctof(params[1]);
|
||||||
int reason = params[2];
|
|
||||||
__asm
|
__asm
|
||||||
{
|
{
|
||||||
push reason
|
push reason
|
||||||
|
@ -70,6 +70,8 @@ enum CSRoundEndReason
|
|||||||
// The below only exist on CS:GO
|
// The below only exist on CS:GO
|
||||||
CSRoundEnd_TerroristsSurrender, /**< Terrorists Surrender */
|
CSRoundEnd_TerroristsSurrender, /**< Terrorists Surrender */
|
||||||
CSRoundEnd_CTSurrender, /**< CTs Surrender */
|
CSRoundEnd_CTSurrender, /**< CTs Surrender */
|
||||||
|
CSRoundEnd_TerroristsPlaned, /**< Terrorists Planted the bomb */
|
||||||
|
CSRoundEnd_CTsReachedHostage, /**< CTs Reached the hostage */
|
||||||
};
|
};
|
||||||
|
|
||||||
enum CSWeaponID
|
enum CSWeaponID
|
||||||
|
Loading…
Reference in New Issue
Block a user