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 };