AlliedModders (
-   Coding MM:S Plugins & SM Extensions (
-   -   [CS:GO] Call a function with variable argument (

kadet.89 05-30-2021 11:55

[CS:GO] Call a function with variable argument
I need to call this function:
void CBaseServer::SetReservationCookie( uint64 uiCookie, char const *pchReasonFormat, ... )

I have this working detour:
PHP Code:

DETOUR_DECL_MEMBER3(SetReservationCookieDetourvoiduint64uiCookiechar const *,pchReasonFormatunsigned longarg )

I use DETOUR_MEMBER_MCALL_CALLBACK to call this function. So far I tried passing va_list reference, directly or a link to an empty va_list. Tried to pass 0 or remove the argument. It always leads to crashes.

PHP Code:

    va_list empty_va_list va_list();

What is the correct way to call this function?

In the leaked sources this function is called in 3 places:
PHP Code:

SetReservationCookienReservationCookie"ReplyReservationRequest" );
SetReservationCookieuiReservationCookie"ReserveServerForQueuedGame: %s"szReservationPayload );
SetReservationCookie( *m_pnReservationCookieSession"[R] Connect from %s"ns_address_renderadr ).String() ); 

asherkin 05-31-2021 12:14

Re: [CS:GO] Call a function with variable argument
Varargs functions have a different calling convention from regular functions, and it doesn't look like CDetour implements any straightforward support for them (SourceHook does, in the form of the _vafmt suffixed macros).

All times are GMT -4. The time now is 00:26.

Powered by vBulletin®
Copyright ©2000 - 2021, vBulletin Solutions, Inc.