///////////////////////// // ModifyDamage(TakeDamage takedamage, DamageEvent damage) // Called when any damage was made ///////////////////////// object ModifyDamage(TakeDamage takedamage, ref DamageEvent damage) { /*if (antiMassRadiation && (damage.damageTypes == 0 || damage.damageTypes == DamageTypeFlags.damage_radiation) ) * { * if (takedamage.GetComponent<Controllable>() == null) return null; * if (damage.victim.character == null) return null; * if (float.IsInfinity(damage.amount)) return null; * if (damage.amount > 12f) { AntiCheatBroadcastAdmins(string.Format("{0} is receiving too much damage from the radiation, ignoring the damage", takedamage.GetComponent<Controllable>().playerClient.userName.ToString())); damage.amount = 0f; return damage; } * } * else */ if (antiWallhack) { if (damage.status != LifeStatus.WasKilled) { return(null); } if (!(damage.extraData is BulletWeaponImpact)) { return(null); } cachedBulletWeapon = damage.extraData as BulletWeaponImpact; if (!MeshBatchPhysics.Linecast(damage.attacker.character.eyesOrigin, cachedBulletWeapon.worldPoint, out cachedRaycast, out cachedBoolean, out cachedhitInstance)) { return(null); } if (cachedhitInstance == null) { return(null); } cachedCollider = cachedhitInstance.physicalColliderReferenceOnly; if (cachedCollider == null) { return(null); } if (!(cachedCollider.gameObject.name.Contains("Wall") || cachedCollider.gameObject.name.Contains("Ceiling"))) { return(null); } Debug.Log(string.Format("Wallhack detection on {0} from: {1} to: {2}", damage.attacker.client.userName, damage.attacker.character.eyesOrigin.ToString(), cachedBulletWeapon.worldPoint.ToString())); AntiCheatBroadcastAdmins(string.Format("Wallhack detection on {0} from: {1} to: {2}", damage.attacker.client.userName, damage.attacker.character.eyesOrigin.ToString(), cachedBulletWeapon.worldPoint.ToString())); damage.status = LifeStatus.IsAlive; damage.amount = 0f; takedamage.SetGodMode(false); takedamage.health = 10f; if (takedamage.GetComponent <HumanBodyTakeDamage>() != null) { takedamage.GetComponent <HumanBodyTakeDamage>().SetBleedingLevel(0f); } if (wallhackPunish) { if (wallhackLogs[damage.attacker.client] == null) { wallhackLogs[damage.attacker.client] = Time.realtimeSinceStartup; } if ((wallhackLogs[damage.attacker.client] - Time.realtimeSinceStartup) > 3) { wallhackLogs[damage.attacker.client] = Time.realtimeSinceStartup; } if (wallhackLogs[damage.attacker.client] - Time.realtimeSinceStartup > 0.1) { Punish(damage.attacker.client, "rWallhack"); } } return(damage); } return(null); }