public async Task RefreshSpeaker(FoundChannel channel, Client Player, List <Client> players) { if (!tsQuery.Client.IsConnected) { return; } try { //Alter kram der rumgebuggt hat //var clients = await tsQuery.GetClients(GetClientOptions.Voice); //var clientschannel = clients.ToList().FindAll(c => c.ChannelId == channel.Id); //var tsplayer = clientschannel.Find(p => p.NickName == name); var name = Player.GetSharedData("TsName"); var currentClients = await tsQuery.GetClients(GetClientOptions.Voice); var tsplayer = currentClients.SingleOrDefault(c => c.NickName == name); if (tsplayer != null) { if (tsplayer.Talk && Player.GetData("IS_SPEAKING") == 0) { players.FindAll(p => p.Exists && p.Position.DistanceTo2D(Player.Position) < 5f) .ForEach((client) => client.TriggerEvent("Teamspeak_LipSync", Player.Handle.Value, true)); Player.SetData("IS_SPEAKING", 1); } else if (!tsplayer.Talk && Player.GetData("IS_SPEAKING") == 1) { players.FindAll(p => p.Exists && p.Position.DistanceTo2D(Player.Position) < 5f) .ForEach((client) => client.TriggerEvent("Teamspeak_LipSync", Player.Handle.Value, false)); Player.SetData("IS_SPEAKING", 0); } } else { //DISCO falls man es so will später //if(Player.GetData("Eingeloggt") == 1 && NAPI.Player.IsPlayerConnected(Player)) //{ // Player.TriggerEvent("DisconnectTeamspeak"); // Funktionen.SpielerSpeichern(Player); // NAPI.Notification.SendNotificationToPlayer(Player, "~r~Du musst auf unserem Teamspeak sein um den Voice Chat nutzen zu können. IP: ts.strawberry-rp.de"); // //Log Eintrag // Funktionen.LogEintrag(Player, "Nicht auf dem Teamspeak"); // NAPI.Player.KickPlayer(Player, "Nicht auf dem Teamspeak"); //} } } catch (Exception ex) { Console.WriteLine("TS RefreshSpeaker Error: " + ex.ToString()); } }
private async Task UpdateTeamspeak(FoundChannel channel) { for (int i = 0; i < NAPI.Pools.GetAllPlayers().Count; i++) { if (NAPI.Pools.GetAllPlayers()[i] != null && NAPI.Pools.GetAllPlayers()[i].Exists) { await RefreshSpeaker(channel, NAPI.Pools.GetAllPlayers()[i], NAPI.Pools.GetAllPlayers()); } } }
//Отдельный метод для создания канала public void CreateChannel(string NameCh, string TextCh, int IndexCh, int IndexObj, string IO_channel) { FoundChannel Ch = new FoundChannel(); Ch.TextCh = TextCh; Ch.NameCh = NameCh; Ch.IndexCh = IndexCh; switch (IO_channel) { case "input": Ch.InputCh = true; break; case "output": Ch.OutputCh = true; break; } FoundObjectList[IndexObj].FoundChList.Add(Ch); }
public async Task RefreshSpeaker(FoundChannel channel, Client player, List <Client> players) { if (!tsQuery.Client.IsConnected) { return; } try { var clients = await tsQuery.GetClients(GetClientOptions.Voice); var clientschannel = clients.ToList().FindAll(c => c.ChannelId == channel.Id); var name = player.GetSharedData("TsName"); var tsplayer = clientschannel.Find(p => p.NickName == name); if (tsplayer != null) { if (tsplayer.Talk && !player.HasData("IS_SPEAKING")) { players.FindAll(p => p.Exists && p.Position.DistanceTo2D(player.Position) < 5f) .ForEach((client) => client.TriggerEvent("Teamspeak_LipSync", player.Handle.Value, true)); player.SetData("IS_SPEAKING", true); } else if (!tsplayer.Talk && player.HasData("IS_SPEAKING")) { players.FindAll(p => p.Exists && p.Position.DistanceTo2D(player.Position) < 5f) .ForEach((client) => client.TriggerEvent("Teamspeak_LipSync", player.Handle.Value, false)); player.ResetData("IS_SPEAKING"); } } } catch (Exception ex) { Console.WriteLine("TS RefreshSpeaker Error: " + ex.ToString()); } }