Fix IgniteEntity crash on NMRiH.
authorNicholas Hastings <skamonkey@gmail.com>
Sat Mar 08 01:04:49 2014 -0500 (2014-03-08)
changeset 4278b29d1e111db9
parent 4277 7a4e68fa7c77
child 4279 07c27b13d08b
Fix IgniteEntity crash on NMRiH.
extensions/sdktools/vnatives.cpp
     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;