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); }
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); }
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)); }
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); }
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); }
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); }
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); }
private bool RPC_FinishLoading(ERPCNetworkType type, Message message) { EACServer.OnFinishLoading(VirtualServer.BaseClient.Connection); EACServer.OnFinishLoading(VirtualServer.BaseServer.connections[0]); return(false); }