Fix IgniteEntity crash on NMRiH.
Fix IgniteEntity crash on NMRiH.
1.1 --- a/extensions/sdktools/vnatives.cpp Thu Mar 06 21:33:18 2014 -0500
1.2 +++ b/extensions/sdktools/vnatives.cpp Sat Mar 08 01:04:49 2014 -0500
1.3 @@ -232,16 +232,39 @@
1.4 static ValveCall *pCall = NULL;
1.5 if (!pCall)
1.6 {
1.7 - ValvePassInfo pass[4];
1.8 - InitPass(pass[0], Valve_Float, PassType_Float, PASSFLAG_BYVAL);
1.9 - InitPass(pass[1], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL);
1.10 - InitPass(pass[2], Valve_Float, PassType_Float, PASSFLAG_BYVAL);
1.11 - InitPass(pass[3], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL);
1.12 - if (!CreateBaseCall("Ignite", ValveCall_Entity, NULL, pass, 4, &pCall))
1.13 +#if SOURCE_ENGINE == SE_SDK2013
1.14 + if (!strcmp(g_pSM->GetGameFolderName(), "nmrih"))
1.15 {
1.16 - return pContext->ThrowNativeError("\"Ignite\" not supported by this mod");
1.17 - } else if (!pCall) {
1.18 - return pContext->ThrowNativeError("\"Ignite\" wrapper failed to initialize");
1.19 + ValvePassInfo pass[6];
1.20 + InitPass(pass[0], Valve_Float, PassType_Float, PASSFLAG_BYVAL);
1.21 + InitPass(pass[1], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL);
1.22 + InitPass(pass[2], Valve_Float, PassType_Float, PASSFLAG_BYVAL);
1.23 + InitPass(pass[3], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL);
1.24 + InitPass(pass[4], Valve_POD, PassType_Basic, PASSFLAG_BYVAL);
1.25 + InitPass(pass[5], Valve_POD, PassType_Basic, PASSFLAG_BYVAL);
1.26 + if (!CreateBaseCall("Ignite", ValveCall_Entity, NULL, pass, 6, &pCall))
1.27 + {
1.28 + return pContext->ThrowNativeError("\"Ignite\" not supported by this mod");
1.29 + }
1.30 + else if (!pCall) {
1.31 + return pContext->ThrowNativeError("\"Ignite\" wrapper failed to initialize");
1.32 + }
1.33 + }
1.34 + else
1.35 +#endif // SDK2013
1.36 + {
1.37 + ValvePassInfo pass[4];
1.38 + InitPass(pass[0], Valve_Float, PassType_Float, PASSFLAG_BYVAL);
1.39 + InitPass(pass[1], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL);
1.40 + InitPass(pass[2], Valve_Float, PassType_Float, PASSFLAG_BYVAL);
1.41 + InitPass(pass[3], Valve_Bool, PassType_Basic, PASSFLAG_BYVAL);
1.42 + if (!CreateBaseCall("Ignite", ValveCall_Entity, NULL, pass, 4, &pCall))
1.43 + {
1.44 + return pContext->ThrowNativeError("\"Ignite\" not supported by this mod");
1.45 + }
1.46 + else if (!pCall) {
1.47 + return pContext->ThrowNativeError("\"Ignite\" wrapper failed to initialize");
1.48 + }
1.49 }
1.50 }
1.51
1.52 @@ -251,6 +274,15 @@
1.53 DECODE_VALVE_PARAM(3, vparams, 1);
1.54 DECODE_VALVE_PARAM(4, vparams, 2);
1.55 DECODE_VALVE_PARAM(5, vparams, 3);
1.56 +
1.57 +#if SOURCE_ENGINE == SE_SDK2013
1.58 + if (!strcmp(g_pSM->GetGameFolderName(), "nmrih"))
1.59 + {
1.60 + *(int *) (vptr + 14) = 0;
1.61 + *(int *) (vptr + 18) = 0;
1.62 + }
1.63 +#endif // SDK2013
1.64 +
1.65 FINISH_CALL_SIMPLE(NULL);
1.66
1.67 return 1;