From 08874d5266a67e05ebcb51486f9649e58b0010b8 Mon Sep 17 00:00:00 2001 From: Jackz Date: Tue, 19 Jul 2022 13:23:46 -0500 Subject: [PATCH] Fix some server-crashing, add client crashing... welp --- plugins/l4d2_turret.smx | Bin 15679 -> 16383 bytes scripting/l4d2_turret.sp | 54 +++++++++++++++++++++++++++++++-------- 2 files changed, 44 insertions(+), 10 deletions(-) diff --git a/plugins/l4d2_turret.smx b/plugins/l4d2_turret.smx index d1273152388ba9870286b3e6e80ef8431270d3cf..aa01888d1ebc74a511e51d3dcf6e393be72a2a68 100644 GIT binary patch literal 16383 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 diff --git a/scripting/l4d2_turret.sp b/scripting/l4d2_turret.sp index ab7d7fa..408b4df 100644 --- a/scripting/l4d2_turret.sp +++ b/scripting/l4d2_turret.sp @@ -13,15 +13,16 @@ #include #include -//#include -#include -#include +#include +#include +// #include #define PARTICLE_ELMOS "st_elmos_fire_cp0" #define PARTICLE_TES1 "electrical_arc_01_system" #define ENT_PORTAL_NAME "turret" -#define SOUND_LASER_FIRE "level/puck_impact.wav" +#define SOUND_LASER_FIRE "custom/xen_teleport.mp3" +// #define SOUND_LASER_FIRE "level/puck_impact.wav" #include int g_iLaserIndex; @@ -75,7 +76,15 @@ public void OnPluginStart() { RegAdminCmd("sm_turret", Command_SpawnTurret, ADMFLAG_CHEATS); RegAdminCmd("sm_rmturrets", Command_RemoveTurrets, ADMFLAG_CHEATS); CreateTimer(0.1, Timer_Think, _, TIMER_REPEAT); + for(int i = 1; i <= MaxClients; i++) { + if(IsClientConnected(i) && IsClientInGame(i)) { + SDKHook(i, SDKHook_OnTakeDamageAlive, OnTakeDamageAlive); + } + } +} +public void OnPluginEnd() { + OnMapEnd(); } enum TurretState { @@ -88,7 +97,9 @@ TurretState turretState[2048]; int turretActivatorParticle[2048]; int entityActiveTurret[2048]; // mapping the turret thats active on victim. [victim] = turret int turretActiveEntity[2048]; +bool turretIsActiveLaser[2048]; bool pendingDeletion[2048]; +float turretDamage[2048]; int turretCount; @@ -99,6 +110,7 @@ void FindTurrets() { GetEntPropString(entity, Prop_Data, "m_iName", targetname, sizeof(targetname)); if(StrEqual(targetname, "turret")) { SetupTurret(entity); + PrintToServer("Found existing turret: %d", entity); } } } @@ -143,6 +155,13 @@ int ClearTurrets() { AcceptEntityInput(entity, "Kill"); } } + entity = INVALID_ENT_REFERENCE; + while ((entity = FindEntityByClassname(entity, "env_laser")) != INVALID_ENT_REFERENCE) { + if(turretIsActiveLaser[entity]) { + AcceptEntityInput(entity, "TurnOff"); + AcceptEntityInput(entity, "Kill"); + } + } for(int i = 1; i < 2048; i++) { entityActiveTurret[i] = 0; @@ -152,6 +171,20 @@ int ClearTurrets() { return count; } +public void OnClientPutInServer(int client) { + SDKHook(client, SDKHook_OnTakeDamageAlive, OnTakeDamageAlive); +} + +public Action OnTakeDamageAlive(int victim, int& attacker, int& inflictor, float& damage, int& damagetype) { + if(attacker > MaxClients && attacker < 2048 && turretIsActiveLaser[attacker] && GetClientTeam(victim) != 3) { + int health = L4D_GetPlayerTempHealth(victim); + L4D_SetPlayerTempHealth(victim, health); + damage = 0.0; + return Plugin_Stop; + } + return Plugin_Continue; +} + public void OnMapEnd() { ClearTurrets(); } @@ -252,11 +285,11 @@ public Action Timer_Think(Handle h) { GetEntPropVector(entity, Prop_Send, "m_vecOrigin", pos); if(turretState[entity] == Turret_Active) { // Keep targetting if can view - int target = EntRefToEntIndex(turretActiveEntity[entity]); + target = EntRefToEntIndex(turretActiveEntity[entity]); if(target > 0 && IsValidEntity(target)) { bool ragdoll = GetEntProp(target, Prop_Data, "m_bClientSideRagdoll") == 1; if(!ragdoll && CanSeeEntity(pos, target)) { - FireTurret(pos, target); + FireTurret(pos, target, turretDamage[entity]); continue; } entityActiveTurret[target] = 0; @@ -276,11 +309,12 @@ public Action Timer_Think(Handle h) { if(target == -1) target = FindNearestVisibleSpecial(pos, TURRET_MAX_RANGE_SPECIALS_OPTIMIZED); if(target == -1) target = FindNearestVisibleEntity("infected", pos, TURRET_MAX_RANGE_INFECTED_OPTIMIZED, entity); if(target > 0) { + turretDamage[entity] = damage; entityActiveTurret[target] = entity; turretActiveEntity[entity] = EntIndexToEntRef(target); turretActivatorParticle[entity] = EntIndexToEntRef(CreateParticleNamed("turret_activate", PARTICLE_TES1, pos, NULL_VECTOR)); // AcceptEntityInput(turretActivatorParticle[entity], "Start"); - FireTurret(pos, target), damage; + FireTurret(pos, target, turretDamage[entity]); turretState[entity] = Turret_Active; } if(++count > turretCount) { @@ -298,7 +332,8 @@ static float TURRET_LASER_COLOR[3] = { 0.0, 255.0, 255.0 }; void FireTurret(const float origin[3], int target, float damage = 105.0) { int laser = CreateLaser(origin, target, TURRET_LASER_COLOR, damage, 1.0, 0.2); - EmitSoundToAll(SOUND_LASER_FIRE, laser, SNDCHAN_WEAPON, .flags = SND_CHANGEPITCH, .pitch = 100); + EmitSoundToAll(SOUND_LASER_FIRE, laser, SNDCHAN_WEAPON, .flags = SND_CHANGEPITCH, .pitch = 150); + turretIsActiveLaser[laser] = true; } stock int CreateLaser(const float origin[3], int targetEnt, float color[3], float damage = 0.0, float width, float duration = 5.0) { @@ -353,6 +388,7 @@ public Action Timer_ClearEnts(Handle h, DataPack pack) { if(IsValidEntity(ent)) { AcceptEntityInput(ent, "Kill"); } + turretIsActiveLaser[ent] = false; } return Plugin_Handled; } @@ -439,7 +475,6 @@ stock int FindNearestVisibleEntity(const char[] classname, const float origin[3] stock int FindNearestInfected(const float origin[3], float maxRange = 0.0) { - // TODO: If maxrange provided, do ray trace? or GetVisibleInfected int infected = -1; float closestDist, pos[3]; int entity = INVALID_ENT_REFERENCE; @@ -475,7 +510,6 @@ public void OnMapStart() { PrecacheParticle(PARTICLE_ELMOS); PrecacheParticle(PARTICLE_TES1); g_iBeamSprite = PrecacheModel("sprites/laser.vmt", true); - g_iHaloSprite = PrecacheModel("sprites/halo01.vmt", true); g_iLaserIndex = PrecacheModel("materials/sprites/laserbeam.vmt", true); PrecacheSound(SOUND_LASER_FIRE); if(g_iLaserIndex == 0) {