public void RegisterClient(IClient client) { if (playerManager == null) { playerManager = PluginManager.GetPluginByType <UMPlayerManager>(); } if (worldManager == null) { worldManager = PluginManager.GetPluginByType <UMWorldManager>(); } Console.WriteLine("Weaponmanager registered player"); client.MessageReceived += Client_MessageReceived; WorldData World = worldManager.clients[client].World; foreach (Player p in World.players.Values) { if (p.WeaponEntityID != ushort.MaxValue) { using (DarkRiftWriter weaponSwitchWriter = DarkRiftWriter.Create()) { WeaponSwitchServerDTO switchData = new WeaponSwitchServerDTO(); switchData.playerId = client.ID; switchData.weaponEntityId = p.WeaponEntityID; switchData.weaponSlot = 0; weaponSwitchWriter.Write(switchData); using (Message fireStartMessage = Message.Create(Tags.WeaponSwitchTag, weaponSwitchWriter)) //Repeat the incoming tagname as all message bodies are the same { client.SendMessage(fireStartMessage, SendMode.Reliable); } } } } }
public void WeaponSwitchMessageRecieved(object sender, MessageReceivedEventArgs e) { using (Message message = e.GetMessage() as Message) { if (message.Tag == Tags.WeaponSwitchTag) { using (DarkRiftReader reader = message.GetReader()) { while (reader.Position < reader.Length) { WorldData World = worldManager.clients[e.Client].World; WeaponSwitchClientDTO data = reader.ReadSerializable <WeaponSwitchClientDTO>(); Player cPlayer = World.players[e.Client]; cPlayer.WeaponEntityID = data.weaponEntityId; using (DarkRiftWriter weaponSwitchWriter = DarkRiftWriter.Create()) { WeaponSwitchServerDTO switchData = new WeaponSwitchServerDTO(); switchData.playerId = e.Client.ID; switchData.weaponEntityId = data.weaponEntityId; switchData.weaponSlot = data.weaponSlot; weaponSwitchWriter.Write(switchData); using (Message fireStartMessage = Message.Create(Tags.WeaponSwitchTag, weaponSwitchWriter)) //Repeat the incoming tagname as all message bodies are the same { foreach (IClient client in World.GetClients().Where(x => x != e.Client)) { client.SendMessage(fireStartMessage, SendMode.Reliable); } } } } } } } }