Example #1
0
 /////////////////////////
 // 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);
 }