Veteran Member
Join Date: Dec 2012
Location: Toronto, CA
|
11-11-2020
, 18:32
Re: [L4D & L4D2] Left 4 DHooks Direct (1.29) [10-Oct-2020]
|
#224
|
Follow up to my previous reply. I dug up some more and it seems the plugin is running out of memory. I tried the test plugin provided along with the Left4Dhooks and uncommented the L4D2Direct functions. Specifically this area.
PHP Code:
// =========================
// NATIVES - l4d_direct.inc
// =========================
//PrintToServer("L4D2_GetTankCount %d", L4D2_GetTankCount()); //WORKING
PrintToServer("L4D2_GetWitchCount %d", L4D2_GetWitchCount()); //WORKING
PrintToServer("");
PrintToServer("");
PrintToServer("L4D_IsMissionFinalMap %d", L4D_IsMissionFinalMap()); //WORKING
PrintToServer("L4D_IsFirstMapInScenario %d", L4D_IsFirstMapInScenario()); //WORKING
if( g_bLeft4Dead2 )
{
PrintToServer("");
PrintToServer("");
// l4d2weapons.inc
PrintToServer("L4D2_GetMeleeWeaponIndex: knife %d", L4D2_GetMeleeWeaponIndex("knife"));
PrintToServer("L4D2_GetMeleeWeaponIndex: machete %d", L4D2_GetMeleeWeaponIndex("machete"));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg0= %d", L4D2_GetIntMeleeAttribute(0, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg1= %d", L4D2_GetIntMeleeAttribute(1, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg2= %d", L4D2_GetIntMeleeAttribute(2, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg3= %d", L4D2_GetIntMeleeAttribute(3, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg4= %d", L4D2_GetIntMeleeAttribute(4, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg5= %d", L4D2_GetIntMeleeAttribute(5, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg6= %d", L4D2_GetIntMeleeAttribute(6, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg7= %d", L4D2_GetIntMeleeAttribute(7, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg8= %d", L4D2_GetIntMeleeAttribute(8, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg9= %d", L4D2_GetIntMeleeAttribute(9, L4D2IMWA_DamageFlags));
PrintToServer("L4D2_GetIntMeleeAttribute:dmg10= %d", L4D2_GetIntMeleeAttribute(10, L4D2IMWA_DamageFlags));
PrintToServer("");
PrintToServer("");
PrintToServer("L4D2_GetIntMeleeAttribute (RumbleEffect): 1= %d", L4D2_GetIntMeleeAttribute(1, L4D2IMWA_RumbleEffect));
PrintToServer("L4D2_GetIntMeleeAttribute (RumbleEffect): 2= %d", L4D2_GetIntMeleeAttribute(3, L4D2IMWA_RumbleEffect));
PrintToServer("");
PrintToServer("");
int meleeID = L4D2_GetMeleeWeaponIndex("knife");
PrintToServer("L4D2_GetFloatMeleeAttribute knife (Damage): %f", L4D2_GetFloatMeleeAttribute(meleeID, L4D2FMWA_Damage));
L4D2_SetFloatMeleeAttribute(meleeID, L4D2FMWA_Damage, 100.0);
PrintToServer("L4D2_SetFloatMeleeAttribute knife (Damage): %f", L4D2_GetFloatMeleeAttribute(meleeID, L4D2FMWA_Damage));
PrintToServer("L4D2_GetBoolMeleeAttribute knife (Decapitates): %d", L4D2_GetBoolMeleeAttribute(meleeID, L4D2BMWA_Decapitates));
L4D2_SetBoolMeleeAttribute(meleeID, L4D2BMWA_Decapitates, true);
PrintToServer("L4D2_SetBoolMeleeAttribute knife (Decapitates): %d", L4D2_GetBoolMeleeAttribute(meleeID, L4D2BMWA_Decapitates));
PrintToServer("L4D2_GetIntMeleeAttribute knife (DamageFlags): %d", L4D2_GetIntMeleeAttribute(meleeID, L4D2IMWA_DamageFlags));
L4D2_SetIntMeleeAttribute(meleeID, L4D2IMWA_DamageFlags, 8);
PrintToServer("L4D2_SetIntMeleeAttribute knife (DamageFlags): %d", L4D2_GetIntMeleeAttribute(meleeID, L4D2IMWA_DamageFlags));
PrintToServer("");
PrintToServer("");
PrintToServer("L4D2_IsValidWeapon weapon_rifle: %d", L4D2_IsValidWeapon("weapon_rifle"));
PrintToServer("L4D2_IsValidWeapon weapon_autoshotgun: %d", L4D2_IsValidWeapon("weapon_autoshotgun"));
PrintToServer("L4D2_IsValidWeapon weapon_smg: %d", L4D2_IsValidWeapon("weapon_smg"));
PrintToServer("L4D2_IsValidWeaponF: %d", L4D2_IsValidWeapon("smg")); // Changed to support this without "weapon_" required
PrintToServer("");
PrintToServer("");
PrintToServer("L4D2_GetFloatWeaponAttribute_A weapon_rifle (MaxPlayerSpeed): %f", L4D2_GetFloatWeaponAttribute("weapon_rifle", L4D2FWA_MaxPlayerSpeed));
L4D2_SetFloatWeaponAttribute("weapon_rifle", L4D2FWA_MaxPlayerSpeed, 300.0);
PrintToServer("L4D2_SetFloatWeaponAttribute_A weapon_rifle (MaxPlayerSpeed): %f", L4D2_GetFloatWeaponAttribute("weapon_rifle", L4D2FWA_MaxPlayerSpeed));
PrintToServer("L4D2_GetFloatWeaponAttribute_B weapon_rifle (Range): %f", L4D2_GetFloatWeaponAttribute("weapon_rifle", L4D2FWA_Range));
PrintToServer("L4D2_GetFloatWeaponAttribute_C weapon_rifle (MinInAirSpread): %f", L4D2_GetFloatWeaponAttribute("weapon_rifle", L4D2FWA_MinInAirSpread));
PrintToServer("L4D2_GetFloatWeaponAttribute_D weapon_rifle (MaxMovementSpread): %f", L4D2_GetFloatWeaponAttribute("weapon_rifle", L4D2FWA_MaxMovementSpread));
PrintToServer("");
PrintToServer("");
PrintToServer("L4D2_GetIntWeaponAttribute weapon_rifle (Bullets): %d", L4D2_GetIntWeaponAttribute("weapon_rifle", L4D2IWA_Bullets));
PrintToServer("L4D2_GetIntWeaponAttribute weapon_rifle (ClipSize): %d", L4D2_GetIntWeaponAttribute("weapon_rifle", L4D2IWA_ClipSize));
PrintToServer("L4D2_GetIntWeaponAttribute weapon_rifle (Damage): %d", L4D2_GetIntWeaponAttribute("weapon_rifle", L4D2IWA_Damage));
L4D2_SetIntWeaponAttribute("weapon_rifle", L4D2IWA_ClipSize, 100);
PrintToServer("");
PrintToServer("");
L4D2_SetIntWeaponAttribute("weapon_rifle", L4D2IWA_Damage, 100);
PrintToServer("L4D2_SetIntWeaponAttribute weapon_rifle (Damage): %d", L4D2_GetIntWeaponAttribute("weapon_rifle", L4D2IWA_Damage));
PrintToServer("");
PrintToServer("");
PrintToServer("L4D2_GetFloatWeaponAttribute_CA weapon_smg (MaxPlayerSpeed): %f", L4D2_GetFloatWeaponAttribute("weapon_smg", L4D2FWA_MaxPlayerSpeed));
PrintToServer("L4D2_GetFloatWeaponAttribute_CB weapon_smg (Range): %f", L4D2_GetFloatWeaponAttribute("weapon_smg", L4D2FWA_Range));
PrintToServer("L4D2_GetFloatWeaponAttribute_CC weapon_smg (MinInAirSpread): %f", L4D2_GetFloatWeaponAttribute("weapon_smg", L4D2FWA_MinInAirSpread));
PrintToServer("L4D2_GetFloatWeaponAttribute_CD weapon_smg (MaxMovementSpread): %f", L4D2_GetFloatWeaponAttribute("weapon_smg", L4D2FWA_MaxMovementSpread));
PrintToServer("");
PrintToServer("");
// Test attribute tag mis-match
// PrintToServer("L4D2_GetIntWeaponAttribute_DD: %d", L4D2_GetIntWeaponAttribute("weapon_smg", L4D2FWA_MaxPlayerSpeed));
int scores[2];
L4D2_GetVersusCampaignScores(scores);
PrintToServer("L4D2_GetVersusCampaignScores A: %d / %d", scores[0], scores[1]);
scores[0] = 123;
scores[1] = 314;
L4D2_SetVersusCampaignScores(scores);
PrintToServer("L4D2_SetVersusCampaignScores B: %d / %d", scores[0], scores[1]);
float tankFlows[2];
L4D2_GetVersusTankFlowPercent(tankFlows);
PrintToServer("L4D2_GetVersusTankFlowPercent A: %f / %f", tankFlows[0], tankFlows[1]);
tankFlows[0] = 10.0;
tankFlows[1] = 15.0;
L4D2_SetVersusTankFlowPercent(tankFlows);
PrintToServer("L4D2_SetVersusTankFlowPercent B: %f / %f", tankFlows[0], tankFlows[1]);
float witchFlows[2];
L4D2_GetVersusWitchFlowPercent(witchFlows);
PrintToServer("L4D2_GetVersusWitchFlowPercent A: %f / %f", witchFlows[0], witchFlows[1]);
witchFlows[0] = 20.0;
witchFlows[1] = 25.0;
L4D2_SetVersusWitchFlowPercent(witchFlows);
PrintToServer("L4D2_SetVersusWitchFlowPercent B: %f / %f", witchFlows[0], witchFlows[1]);
PrintToServer("");
PrintToServer("");
PrintToServer("L4D2_CTimerHasStarted A: %d", L4D2_CTimerHasStarted(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerReset: %d", L4D2_CTimerReset(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerHasStarted B: %d", L4D2_CTimerHasStarted(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerStart: %d", L4D2_CTimerStart(L4D2CT_MobSpawnTimer, 10.0));
PrintToServer("L4D2_CTimerHasStarted C: %d", L4D2_CTimerHasStarted(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerInvalidate: %d", L4D2_CTimerInvalidate(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerHasStarted D: %d", L4D2_CTimerHasStarted(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerIsElapsed: %d", L4D2_CTimerIsElapsed(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerGetElapsedTime: %f", L4D2_CTimerGetElapsedTime(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerGetRemainingTime: %f", L4D2_CTimerGetRemainingTime(L4D2CT_MobSpawnTimer));
PrintToServer("L4D2_CTimerGetCountdownDuration: %f", L4D2_CTimerGetCountdownDuration(L4D2CT_MobSpawnTimer));
PrintToServer("");
PrintToServer("");
PrintToServer("Testing Boomer timers:");
PrintToServer("L4D2_ITimerHasStarted A: %d", L4D2_ITimerHasStarted(L4D2IT_BoomerDeathTimer));
PrintToServer("L4D2_ITimerGetElapsedTime: %f", L4D2_ITimerGetElapsedTime(L4D2IT_BoomerDeathTimer));
PrintToServer("L4D2_ITimerStart: %f", L4D2_ITimerStart(L4D2IT_BoomerDeathTimer));
PrintToServer("L4D2_ITimerHasStarted B: %d", L4D2_ITimerHasStarted(L4D2IT_BoomerDeathTimer));
PrintToServer("L4D2_ITimerInvalidate: %f", L4D2_ITimerInvalidate(L4D2IT_BoomerDeathTimer));
PrintToServer("L4D2_ITimerHasStarted C: %d", L4D2_ITimerHasStarted(L4D2IT_BoomerDeathTimer));
PrintToServer("");
PrintToServer("");
PrintToServer("L4D_ResetMobTimer %d", L4D_ResetMobTimer()); //SEEMS WORKING
// 1 - Finale Started; 6 - Rescue Vehicle Ready; 7 - Zombie Hordes; 8 - Tank; 10 - Combat Respite (nothing spawns)
PrintToServer("L4D2_ChangeFinaleStage %d", L4D2_ChangeFinaleStage(10, "test")); // WORKING
PrintToServer("L4D2_ChangeFinaleStage %d", L4D2_ChangeFinaleStage(8, "")); // WORKING
PrintToServer("");
PrintToServer("");
}
Line 573 is L4D2_GetTankCount and I commented it out for test, however got the same error for Line 574 - L4D2_GetWitchCount.
I'm getting the following errors which explicitly say that server is running out of memory, but it shouldn't be as 2GB is plenty for a L4D2 server.
PHP Code:
L 11/11/2020 - 18:09:18: [SM] Exception reported: Not enough space on the heap
L 11/11/2020 - 18:09:18: [SM] Blaming: left4dhooks_test.smx
L 11/11/2020 - 18:09:18: [SM] Call stack trace:
L 11/11/2020 - 18:09:18: [SM] [1] Line 573, F:\Desktop\scripting-l4d2\left4dhooks_test.sp::sm_l4dd
L 11/11/2020 - 18:10:26: [SM] Exception reported: Not enough space on the heap
L 11/11/2020 - 18:10:26: [SM] Blaming: left4dhooks_test.smx
L 11/11/2020 - 18:10:26: [SM] Call stack trace:
L 11/11/2020 - 18:10:26: [SM] [1] Line 574, F:\Desktop\scripting-l4d2\left4dhooks_test.sp::sm_l4dd
L 11/11/2020 - 18:20:43: [SM] Exception reported: Invalid memory access
L 11/11/2020 - 18:20:43: [SM] Blaming: left4dhooks_test.smx
L 11/11/2020 - 18:20:43: [SM] Call stack trace:
L 11/11/2020 - 18:20:43: [SM] [1] Line 574, F:\Desktop\scripting-l4d2\left4dhooks_test.sp::sm_l4dd
The last one is different error because I tried to force the stack of the plugin.
PHP Code:
#pragma dynamic 131072
__________________
|
|