コード例 #1
0
 private bool RPC_OnProjectileAttack(ERPCNetworkType type, Message message)
 {
     using (PlayerProjectileAttack attack = PlayerProjectileAttack.Deserialize(message.read))
     {
         UInt32 hitId     = attack.playerAttack.attack.hitID;
         UInt32 hitBone   = attack.playerAttack.attack.hitBone;
         var    hitPlayer = Get <BasePlayer>(hitId);
         if (Settings.Aimbot_Range_Silent)
         {
             if (hitId == 0)
             {
                 return(RangeAim.Silent(attack));
             }
             if (hitPlayer == null && hitId != 0 && RangeAim.Instance.TargetPlayer != null)
             {
                 var hitPost = attack.playerAttack.attack.hitPositionWorld;
                 if (Vector3.Distance(Position, RangeAim.Instance.TargetPlayer.Position) < 2.5f ||
                     Vector3.Distance(Position, hitPost) > 2.5f)
                 {
                     ConsoleSystem.Log("near wall not found");
                     return(RangeAim.Silent(attack));
                 }
                 ConsoleSystem.Log("Ignore because near wall");
                 return(false);
             }
         }
         if (hitPlayer && hitPlayer.IsAlive)
         {
             RangeAim.Instance.TargetPlayer = Get <BasePlayer>(hitId);
             return(RangeAim.Manual(attack));
         }
     }
     return(false);
 }
コード例 #2
0
ファイル: BaseHeldEntity.cs プロジェクト: dogfood1/UServer3
        private bool RPC_OnPlayerAttack(ERPCNetworkType type, Message message)
        {
            if (MeleeAim.HasCooldown() || AutoGather.HasCooldown())
            {
                return(true);
            }
            using (PlayerAttack playerAttack = PlayerAttack.Deserialize(message.read))
            {
                var attack = playerAttack.attack;
                if (attack.hitID == 0)
                {
                    return(true);
                }

                #region [BaseResource]
                var resource = Get <BaseResource>(attack.hitID);
                if (resource != null)
                {
                    attack.hitItem   = 0;
                    attack.hitBone   = 0;
                    attack.hitPartID = 0;
                    var pos = Settings.ManualGather_Bonus ? resource.GetHitPosition() : resource.Position;

                    // Если это OreResource
                    if (pos != resource.Position)
                    {
                        attack.hitPositionWorld = pos;
                        attack.hitNormalWorld   = pos;
                    }
                    AutoGather.SetCooldown((EPrefabUID)PrefabID);
                    if (VirtualServer.BaseClient.write.Start())
                    {
                        VirtualServer.BaseClient.write.PacketID(Message.Type.RPCMessage);
                        VirtualServer.BaseClient.write.EntityID(this.UID);
                        VirtualServer.BaseClient.write.UInt32((UInt32)ERPCMethodUID.PlayerAttack);
                        PlayerAttack.Serialize(VirtualServer.BaseClient.write, playerAttack);
                        VirtualServer.BaseClient.Send();
                        return(true);
                    }
                }
                #endregion

                #region [BasePlayer]
                if (Settings.Aimbot_Melee_Manual)
                {
                    var player = Get <BasePlayer>(playerAttack.attack.hitID);
                    if (player != null)
                    {
                        var typeHit = OpCodes.GetTargetHit((EHumanBone)attack.hitBone, Settings.Aimbot_Melee_Manual_AutoHeadshot);
                        MeleeAim.SetCooldown((EPrefabUID)this.PrefabID);
                        return(SendMeleeAttack(player, typeHit, player.Position));
                    }
                }
                #endregion
            }
            return(false);
        }
コード例 #3
0
        private static bool OnRPCMessage(ERPCNetworkType type, Message message)
        {
            UInt32 UID   = message.read.EntityID();
            UInt32 rpcId = message.read.UInt32();

            if (type == ERPCNetworkType.IN)
            {
                message.read.UInt64();
            }
            return(RPCManager.RunRPCMethod(UID, (ERPCMethodUID)rpcId, type, message));
        }
コード例 #4
0
ファイル: BaseHeldEntity.cs プロジェクト: dogfood1/UServer3
 private bool RPC_OnCLProject(ERPCNetworkType type, Message message)
 {
     using (ProjectileShoot projectileShoot = ProjectileShoot.Deserialize(message.read))
     {
         foreach (ProjectileShoot.Projectile projectile in projectileShoot.projectiles)
         {
             RangeAim.NoteFiredProjectile(projectile.projectileID, PrefabID, AmmoType);
         }
     }
     return(false);
 }
コード例 #5
0
        private bool RPC_StartLoading(ERPCNetworkType type, Message message)
        {
            ConsoleSystem.Log("StartLoading");
            EACServer.OnStartLoading(VirtualServer.BaseClient.Connection);
            EACServer.OnStartLoading(VirtualServer.BaseServer.connections[0]);
            BaseNetworkable.DestroyAll();

            ListNetworkables.Add(this.UID, this);
            ListPlayers.Add(this);

            return(false);
        }
コード例 #6
0
 public static bool RunRPCMethod(uint entity, ERPCMethodUID method, ERPCNetworkType networkType, Message message)
 {
     try
     {
         if (BaseNetworkable.HasNetworkable(entity) && HasRPCMethod(method))
         {
             return((bool)(RPCMethods[method]?.Invoke(BaseNetworkable.ListNetworkables[entity], new object[] { networkType, message }) ?? false));
         }
     }
     catch (Exception ex)
     {
         ConsoleSystem.Log("Exception: RunRPCMethod(" + (BaseNetworkable.HasNetworkable(entity) ? BaseNetworkable.ListNetworkables[entity].ToString() : "NoHaveEntity") + ", " + method + ", " + networkType + ") => " + ex.Message);
     }
     return(false);
 }
コード例 #7
0
        private bool RPC_OnPlayerLanded(ERPCNetworkType type, Message message)
        {
            if (Settings.SmallFallDamage == false)
            {
                return(false);
            }
            var fallVelocity = message.read.Float();

            if (fallVelocity < -8f)
            {
                if (VirtualServer.BaseClient.write.Start())
                {
                    VirtualServer.BaseClient.write.PacketID(Message.Type.RPCMessage);
                    VirtualServer.BaseClient.write.EntityID(UID);
                    VirtualServer.BaseClient.write.UInt32((UInt32)ERPCMethodUID.OnPlayerLanded);
                    VirtualServer.BaseClient.write.Float(Rand.Float(-15.5f, -15.1f));
                    VirtualServer.BaseClient.Send();
                    return(true);
                }
            }
            return(false);
        }
コード例 #8
0
 private bool RPC_FinishLoading(ERPCNetworkType type, Message message)
 {
     EACServer.OnFinishLoading(VirtualServer.BaseClient.Connection);
     EACServer.OnFinishLoading(VirtualServer.BaseServer.connections[0]);
     return(false);
 }