extensions/tf2/natives.cpp
changeset 3147 b6db3d09eb79
parent 3128 337f190aaf4b
child 3255 328938c6ca59
     1.1 --- a/extensions/tf2/natives.cpp	Fri Oct 29 20:04:50 2010 -0500
     1.2 +++ b/extensions/tf2/natives.cpp	Sun Nov 07 19:05:32 2010 -0500
     1.3 @@ -475,6 +475,42 @@
     1.4  	return (cell_t)ClassnameToType(str);
     1.5  }
     1.6  
     1.7 +// native TF2_IsPlayerInDuel(client)
     1.8 +cell_t TF2_IsPlayerInDuel(IPluginContext *pContext, const cell_t *params)
     1.9 +{
    1.10 +	static ICallWrapper *pWrapper = NULL;
    1.11 +
    1.12 +	// DuelMiniGame_IsPlayerInDuel(CTFPlayer *)
    1.13 +	if (!pWrapper)
    1.14 +	{
    1.15 +		REGISTER_NATIVE_ADDR("IsPlayerInDuel", 
    1.16 +			PassInfo pass[1]; \
    1.17 +			pass[0].flags = PASSFLAG_BYVAL; \
    1.18 +			pass[0].size = sizeof(CBaseEntity *); \
    1.19 +			pass[0].type = PassType_Basic; \
    1.20 +			PassInfo ret; \
    1.21 +			ret.flags = PASSFLAG_BYVAL; \
    1.22 +			ret.size = sizeof(bool); \
    1.23 +			ret.type = PassType_Basic; \
    1.24 +			pWrapper = g_pBinTools->CreateCall(addr, CallConv_Cdecl, &ret, pass, 1))
    1.25 +	}
    1.26 +
    1.27 +	CBaseEntity *pPlayer;
    1.28 +	if (!(pPlayer = UTIL_GetCBaseEntity(params[1], true)))
    1.29 +	{
    1.30 +		return pContext->ThrowNativeError("Client index %d is not valid", params[1]);
    1.31 +	}
    1.32 +
    1.33 +	unsigned char vstk[sizeof(CBaseEntity *)];
    1.34 +	unsigned char *vptr = vstk;
    1.35 +	*(CBaseEntity **)vptr = pPlayer;
    1.36 +
    1.37 +	bool retValue;
    1.38 +	pWrapper->Execute(vstk, &retValue);
    1.39 +
    1.40 +	return (retValue) ? 1 : 0;
    1.41 +}
    1.42 +
    1.43  sp_nativeinfo_t g_TFNatives[] = 
    1.44  {
    1.45  	{"TF2_IgnitePlayer",			TF2_Burn},
    1.46 @@ -490,5 +526,6 @@
    1.47  	{"TF2_SetPlayerPowerPlay",		TF2_SetPowerplayEnabled},
    1.48  	{"TF2_StunPlayer",				TF2_StunPlayer},
    1.49  	{"TF2_MakeBleed",				TF2_MakeBleed},
    1.50 +	{"TF2_IsPlayerInDuel",				TF2_IsPlayerInDuel},
    1.51  	{NULL,							NULL}
    1.52  };