示例#1
0
        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());
            }
        }
示例#2
0
 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);
        }
示例#4
0
        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());
            }
        }