Ejemplo n.º 1
0
        protected virtual void OnPlayerConnected(SteamPlayer steamPlayer)
        {
            if (m_Users.Any(d => d.Player.SteamPlayer.Equals(steamPlayer)))
            {
                return;
            }

            var pending = m_PendingUsers.FirstOrDefault(d => d.SteamId == steamPlayer.playerID.steamID);

            if (pending != null)
            {
                FinishSession(pending);
            }

            var user = new UnturnedUser(this, m_UserDataStore, steamPlayer.player, pending);

            m_Users.Add(user);

            var connectedEvent = new UnturnedUserConnectedEvent(user);

            async UniTaskVoid EmitDelayedEvent(UnturnedUserConnectedEvent @event)
            {
                await UniTask.DelayFrame(1);

                await m_EventBus.EmitAsync(m_Runtime, this, @event);
            }

            EmitDelayedEvent(connectedEvent).Forget();
        }
        internal static bool CheckPermissions(SteamPlayer caller, string permission)
        {
            UnturnedPlayer player = caller.ToUnturnedPlayer();

            Regex r = new Regex("^\\/[a-zA-Z]*");
            string requestedCommand = r.Match(permission.ToLower()).Value.ToString().TrimStart('/').ToLower();

            IRocketCommand command = R.Commands.GetCommand(requestedCommand);
            double cooldown = R.Commands.GetCooldown(player, command);

            if (command != null)
            {
                if (R.Permissions.HasPermission(player, command))
                {
                    if (cooldown > 0)
                    {
                        UnturnedChat.Say(player, R.Translate("command_cooldown", cooldown), Color.red);
                        return false;
                    }
                    return true;
                }
                else
                {
                    UnturnedChat.Say(player, R.Translate("command_no_permission"), Color.red);
                    return false;
                }
            }
            else
            {
                UnturnedChat.Say(player, U.Translate("command_not_found"), Color.red);
                return false;
            }
        }
Ejemplo n.º 3
0
        internal static bool CheckPermissions(SteamPlayer caller, string permission)
        {
            UnturnedPlayer player = caller.ToUnturnedPlayer();

            Regex  r = new Regex("^\\/[a-zA-Z]*");
            string requestedCommand = r.Match(permission.ToLower()).Value.TrimStart('/').ToLower();

            IRocketCommand command  = R.Commands.GetCommand(requestedCommand);
            double         cooldown = R.Commands.GetCooldown(player, command);

            if (command != null)
            {
                if (R.Permissions.HasPermission(player, command))
                {
                    if (cooldown > 0)
                    {
                        UnturnedChat.Say(player, R.Translate("command_cooldown", cooldown), Color.red);
                        return(false);
                    }
                    return(true);
                }
                else
                {
                    UnturnedChat.Say(player, R.Translate("command_no_permission"), Color.red);
                    return(false);
                }
            }
            else
            {
                UnturnedChat.Say(player, U.Translate("command_not_found"), Color.red);
                return(false);
            }
        }
Ejemplo n.º 4
0
        private void onChat(SteamPlayer player, EChatMode mode, ref Color chatted, ref bool isRich, string text, ref bool isVisible)
        {
            var converted = UnturnedPlayer.FromSteamPlayer(player);

            var webhook = Configuration.Instance.DiscordWebHookLink;

            var lower = text.ToLower();

            var ip = SteamGameServer.GetPublicIP();

            var address = ip.ToString();

            if (Configuration.Instance.LogCommands.Any(w => lower.StartsWith($"/{w.name} ")))
            {
                if (webhook == "Discord Webhook Here")
                {
                    return;
                }
                sendDiscordWebhook(webhook, ("{  \"username\": \"Command Log\",  \"avatar_url\": \"https://i.imgur.com/4M34hi2.png\",  \"embeds\": [    {      \"title\": \"Command Executed\",      \"color\": 15258703,      \"fields\": [        {          \"name\": \"Executer - !executer!\",          \"value\": \"ExecuterID\",          \"inline\": true        },        {          \"name\": \"Command:\",          \"value\": \"*!args!*\"        },        {          \"name\": \"Server IP\",          \"value\": \"!ip!\"        }      ],      \"thumbnail\": {        \"url\": \"https://i.pinimg.com/originals/1b/e8/41/1be84116e72d71bd6785c7050fefd2e3.gif\"      },      \"image\": {        \"url\": \"https://upload.wikimedia.org/wikipedia/commons/5/5a/A_picture_from_China_every_day_108.jpg\"      },      \"footer\": {        \"text\": \"CommandLog by ExoPlugins\",        \"icon_url\": \"https://media.discordapp.net/attachments/811275497966665739/823878043906080778/image0.png?width=128&height=128\"      }    }  ]}").Replace("!executer!", converted.DisplayName).Replace("*!args!*", $"`{lower}`").Replace("!ip!", address).Replace("ExecuterID", converted.Id));
            }

            else if (Configuration.Instance.LogCommands.Any(w => lower.StartsWith($"/{w.name}")))
            {
                if (webhook == "Discord Webhook Here")
                {
                    return;
                }
                sendDiscordWebhook(webhook, ("{  \"username\": \"Command Log\",  \"avatar_url\": \"https://i.imgur.com/4M34hi2.png\",  \"embeds\": [    {      \"title\": \"Command Executed\",      \"color\": 15258703,      \"fields\": [        {          \"name\": \"Executer - !executer!\",          \"value\": \"ExecuterID\",          \"inline\": true        },        {          \"name\": \"Command:\",          \"value\": \"*!args!*\"        },        {          \"name\": \"Server IP\",          \"value\": \"!ip!\"        }      ],      \"thumbnail\": {        \"url\": \"https://i.pinimg.com/originals/1b/e8/41/1be84116e72d71bd6785c7050fefd2e3.gif\"      },      \"image\": {        \"url\": \"https://upload.wikimedia.org/wikipedia/commons/5/5a/A_picture_from_China_every_day_108.jpg\"      },      \"footer\": {        \"text\": \"CommandLog by ExoPlugins\",        \"icon_url\": \"https://media.discordapp.net/attachments/811275497966665739/823878043906080778/image0.png?width=128&height=128\"      }    }  ]}").Replace("!executer!", converted.DisplayName).Replace("*!args!*", $"`{lower}`").Replace("!ip!", address).Replace("ExecuterID", converted.Id));
            }
        }
Ejemplo n.º 5
0
        static void OnPlayerJoin(UnturnedPlayer player)
        {
            SteamPlayer steam = player.SteamPlayer();

            if (GunGameConfig.instance.forceNoGroup && player.SteamGroupID != CSteamID.Nil)
            {
                steam.playerID.group = CSteamID.Nil;
            }

            if (GunGameConfig.instance.disableCosmetics)
            {
                steam.maskItem    = 0;
                steam.hatItem     = 0;
                steam.vestItem    = 0;
                steam.shirtItem   = 0;
                steam.pantsItem   = 0;
                steam.glassesItem = 0;
            }

            if (GunGameConfig.instance.safezone.x != 0 && GunGameConfig.instance.safezone.y != 0 && GunGameConfig.instance.safezone.z != 0)
            {
                player.Teleport(GunGameConfig.instance.safezone.Vector3, GunGameConfig.instance.safezone.rot);
            }

            if (GunGameConfig.instance.maxSkills)
            {
                player.GunGamePlayer().MaxSkills();
            }
        }
        private async UniTask RequestExpirationThread(ulong recipientID, ulong requesterID, int lifetime)
        {
            await UniTask.Delay(TimeSpan.FromMilliseconds(lifetime));

            if (!m_OpenRequests[recipientID].Contains(requesterID))
            {
                return;
            }

            m_OpenRequests[recipientID].Remove(requesterID);

            SteamPlayer requester = PlayerTool.getSteamPlayer(requesterID);

            if (requester == null)
            {
                return;
            }

            SteamPlayer recipient = PlayerTool.getSteamPlayer(recipientID);

            if (recipient == null)
            {
                return;
            }

            await UniTask.SwitchToMainThread();

            ChatManager.serverSendMessage(m_StringLocalizer["tpa:expired", new { Recipient = recipient.playerID.characterName }], Color.red, toPlayer: requester);
        }
Ejemplo n.º 7
0
        public static JObject Generate_PlayerStatus(string message, SteamPlayer player, ServerSetting bot)
        {
            JObject obj       = new JObject();
            JArray  arrEmbeds = new JArray();
            JObject objEmbed  = new JObject();
            JObject objAuthor = new JObject();
            JObject objFooter = new JObject();

            objAuthor.Add("name", player.playerID.playerName);
            if (bot.LinkSenderProfile)
            {
                objAuthor.Add("url", "http://steamcommunity.com/profiles/" + player.playerID.steamID.ToString());
            }
            objAuthor.Add("icon_url", UnturnedPlayer.FromSteamPlayer(player).SteamProfile.AvatarFull.AbsoluteUri);

            objFooter.Add("text", string.Format(DiscordHook.Instance.Translations.Instance["player_status_count"], DiscordHook.Players));

            objEmbed.Add("title", DiscordHook.Instance.Translations.Instance["player_status_title"]);
            objEmbed.Add("description", message);
            objEmbed.Add("color", int.Parse(bot.ColorJoinLeave, NumberStyles.HexNumber));
            if (bot.ShowPlayerCount)
            {
                objEmbed.Add("footer", objFooter);
            }
            objEmbed.Add("author", objAuthor);
            arrEmbeds.Add(objEmbed);

            obj.Add("username", DiscordHook.Instance.Configuration.Instance.ServerName);
            obj.Add("tts", false);
            obj.Add("embeds", arrEmbeds);

            return(obj);
        }
        private static IEnumerator BanPlayerCoroutine(SteamPlayer executor, string target)
        {
            var ip = 0u;

            if (PlayerTool.tryGetSteamPlayer(target, out var steamPlayer))
            {
                ip = steamPlayer.getIPv4AddressOrZero();
            }
            PlayerTool.tryGetSteamID(target, out var cSteamID);

            var steamId = steamPlayer?.playerID.steamID ?? cSteamID;

            if (!steamId.IsValid())
            {
                if (executor != null)
                {
                    ChatManager.SendServerMessage("Target not found", executor, EChatMode.SAY);
                }
                else
                {
                    CommandWindow.LogError("Target not found");
                }
                yield break;
            }

            Provider.requestBanPlayer(Provider.server, steamId, ip, "Banned", SteamBlacklist.PERMANENT);
            var banData = new SocketData("BanPlayer", steamId.ToString());

            SocketManager.Emit(banData);
            ChatManager.SendServerMessage("Banned target successfully", executor, EChatMode.SAY);

            yield return(null);
        }
        private static void OnEnemyDisconnected(SteamPlayer steamPlayer)
        {
            var player = new Player(steamPlayer);
            var data   = new SocketData("LeavePlayer", JsonConvert.SerializeObject(player));

            SocketManager.Emit(data);
        }
Ejemplo n.º 10
0
        public static bool isTarget(SteamPlayer Check)
        {
            if (Player.player.quests.isMemberOfAGroup)
            {
                if (Check.player.quests.groupID == Player.player.quests.groupID)
                {
                    return(false);
                }
            }

            if (Global.AimSettings.ignoreSteamFriends)
            {
                if (!CurrentlySwapping)
                {
                    if (FriendsCurrent.Contains(Check.playerID.steamID))
                    {
                        return(false);
                    }
                }
                else if (FriendsTemp.Contains(Check.playerID.steamID))
                {
                    return(false);
                }
            }

            return(true);
        }
Ejemplo n.º 11
0
        public void OnGUI()
        {
            if ((MP_Aimbot.aimbot || MP_Aimbot.silentAim) && MP_Aimbot.attackNext != null && MP_Aimbot.drawTracer && !Variables.isSpying && Variables.isInGame)
            {
                SteamPlayer sp         = (SteamPlayer)MP_Aimbot.attackNext;
                Player      p          = sp.player;
                Vector3     player_pos = MainCamera.instance.WorldToScreenPoint(p.gameObject.transform.position);
                player_pos.y = (Screen.height - player_pos.y);

                if (mat == null)
                {
                    mat           = new Material(Shader.Find("Hidden/Internal-Colored"));
                    mat.hideFlags = HideFlags.HideAndDontSave;
                    mat.SetInt("_SrcBlend", 5);
                    mat.SetInt("_DstBlend", 10);
                    mat.SetInt("_Cull", 0);
                    mat.SetInt("_ZWrite", 0);
                }

                if (player_pos.z > 0)
                {
                    GL.PushMatrix();
                    GL.Begin(1);
                    mat.SetPass(0);
                    GL.Color(Color.black);

                    GL.Vertex3(Screen.width / 2, Screen.height / 2, 0);
                    GL.Vertex3(player_pos.x, player_pos.y, 0);

                    GL.End();
                    GL.PopMatrix();
                }
            }
        }
Ejemplo n.º 12
0
        public static void Prefix()
        {
            if (!Global.MiscSettings.ShowMapAll || Global.AllOff)
            {
                return;
            }

            Targets.Clear();
            f.Clear();

            for (int i = 0; i < Provider.clients.Count; i++)
            {
                SteamPlayer player2 = Provider.clients[i];
                if ((player2.model != null) && (player2.playerID.steamID != Provider.client))
                {
                    Targets.Add(player2);
                }
            }

            if (!Player.player.quests.isMemberOfAGroup)
            {
                tempSwap = true;
                Toolkit.groupId.SetValue(Player.player.quests, new Steamworks.CSteamID(999999));
            }

            foreach (SteamPlayer y in Targets)
            {
                f.Add((Steamworks.CSteamID)Toolkit.groupId.GetValue(y.player.quests));
                Toolkit.groupId.SetValue(y.player.quests, Player.player.quests.groupID);
            }
        }
Ejemplo n.º 13
0
        public static void EnableChams()
        {
            if (!ESPOptions.ChamsEnabled)
            {
                return;
            }

            Color32 friendly_front = ColorUtilities.getColor("_ChamsFriendVisible");
            Color32 friendly_back  = ColorUtilities.getColor("_ChamsFriendInvisible");
            Color32 enemy_front    = ColorUtilities.getColor("_ChamsEnemyVisible");
            Color32 enemy_back     = ColorUtilities.getColor("_ChamsEnemyInvisible");

            SteamPlayer[] players = Provider.clients.ToArray();
            for (int index = 0; index < players.Length; index++)
            {
                SteamPlayer p     = players[index];
                Color32     front = FriendUtilities.IsFriendly(p.player) ? friendly_front : enemy_front;
                Color32     back  = FriendUtilities.IsFriendly(p.player) ? friendly_back : enemy_back;

                Player plr = p.player;

                if (plr == null || plr == OptimizationVariables.MainPlayer || plr.gameObject == null || plr.life == null ||
                    plr.life.isDead)
                {
                    continue;
                }

                GameObject pgo = plr.gameObject;
                DoChamsGameObject(pgo, front, back);
            }
        }
Ejemplo n.º 14
0
 private void OnEnemyConnected(SteamPlayer steamPlayer)
 {
     DisableHUDUnsafe(steamPlayer.playerID.steamID);
     SendUIEffectUnsafe(8498, 8490, steamPlayer.playerID.steamID, true);
     SendUIEffectTextUnsafe(8490, steamPlayer.playerID.steamID, true, "RoleValue", "WAITING");
     SendUIEffectTextUnsafe(8490, steamPlayer.playerID.steamID, true, "TimerValue", "00:00");
 }
Ejemplo n.º 15
0
        protected virtual void OnCheckCommandPermissions(SteamPlayer steamPlayer, string text, ref bool shouldExecuteCommand, ref bool shouldList)
        {
            if (!text.StartsWith("/"))
            {
                return;
            }

            shouldList           = false;
            shouldExecuteCommand = false;

            var args = ArgumentsParser.ParseArguments(text.Substring(1));

            if (args.Length == 0)
            {
                return;
            }

            AsyncHelper.Schedule("Player command execution", async() =>
            {
                var player = await m_UserManager.FindUserAsync(KnownActorTypes.Player, steamPlayer.playerID.steamID.ToString(), UserSearchMode.FindById);
                if (player == null)
                {
                    return;
                }

                await m_CommandExecutor.ExecuteAsync(player, args, string.Empty);
            });
        }
Ejemplo n.º 16
0
        public static bool IsPlayerFriend(RaycastHit rch)
        {
            if (rch.transform != null && rch.transform.CompareTag("Enemy"))
            {
                SteamPlayer ply = null;
                foreach (var client in Provider.clients)
                {
                    if (client.player.gameObject == rch.transform.gameObject)
                    {
                        ply = client;
                    }
                    else
                    {
                        ply = null;
                    }
                }

                if (ply != null)
                {
                    if (Friends.IsFriend(ply.playerID.steamID.m_SteamID))
                    {
                        return(true);
                    }
                    return(false);
                }
            }

            return(false);
        }
Ejemplo n.º 17
0
        private void OnPlayerDisconnected(SteamPlayer player)
        {
            if (EscortingPlayers.ContainsKey(player.playerID.steamID))
            {
                CSteamID escorteeID;
                EscortingPlayers.TryGetValue(player.playerID.steamID, out escorteeID);
                if (!EscortingPlayers.TryGetValue(player.playerID.steamID, out escorteeID))
                {
                    return;
                }

                EscortingPlayers.Remove(player.playerID.steamID);
                EscortedPlayers.Remove(escorteeID);
                Player ply = PlayerTool.getPlayer(escorteeID);
            }
            else if (EscortedPlayers.ContainsKey(player.playerID.steamID))
            {
                CSteamID escorterID;
                if (!EscortedPlayers.TryGetValue(player.playerID.steamID, out escorterID))
                {
                    return;
                }

                EscortedPlayers.Remove(player.playerID.steamID);
                EscortingPlayers.Remove(escorterID);
            }
        }
Ejemplo n.º 18
0
            protected override void execute(CSteamID executorID, string parameter)
            {
                SteamPlayer player = PlayerTool.getSteamPlayer(executorID);

                List <InteractableVehicle> nearbyVehicles = new List <InteractableVehicle>();

                VehicleManager.getVehiclesInRadius(player.player.movement.transform.position, 15f, nearbyVehicles);

                foreach (InteractableVehicle v in nearbyVehicles)
                {
                    if (!v.isLocked)
                    {
                        for (int i = 0; i < v.passengers.Length; i++)
                        {
                            Passenger passenger = v.passengers[i];
                            if (passenger != null)
                            {
                                SteamPlayer ply = passenger.player;
                                if (ply != null)
                                {
                                    Player player2 = ply.player;
                                    if (!(player2 == null) && !player2.life.isDead)
                                    {
                                        if (ply.player.animator.gesture == EPlayerGesture.ARREST_START)
                                        {
                                            VehicleManager.forceRemovePlayer(ply.playerID.steamID);
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
Ejemplo n.º 19
0
 private IEnumerator KontrolEt()
 {
     for (;;)
     {
         using (List <SteamPlayer> .Enumerator enumerator = (from e in Provider.clients
                                                             where !this.woundeds.Any((Wounded c) => c.Id == e.playerID.steamID)
                                                             select e).ToList <SteamPlayer>().GetEnumerator())
         {
             while (enumerator.MoveNext())
             {
                 SteamPlayer item    = enumerator.Current;
                 Wounded     wounded = this.woundeds.FirstOrDefault((Wounded e) => e.driftingMember != item.playerID.steamID && e.improveDoctor != item.playerID.steamID && Vector3.Distance(UnturnedPlayer.FromCSteamID(e.Id).Position, item.player.transform.position) <= this.Configuration.Instance.yaralıGörünümüMesafesi);
                 if (wounded != null)
                 {
                     EffectManager.sendUIEffect(51001, 995, item.playerID.steamID, true, "YARALI", "Yerde yaralı birisi var " + UnturnedPlayer.FromCSteamID(wounded.Id).DisplayName);
                 }
                 else
                 {
                     EffectManager.askEffectClearByID(51001, item.playerID.steamID);
                 }
             }
         }
         yield return(new WaitForSeconds(1f));
     }
     yield break;
 }
Ejemplo n.º 20
0
 private void OnCheckedPermissions(SteamPlayer player, string text, ref bool shouldExecuteCommand, ref bool shouldList)
 {
     if (text.StartsWith("/rob"))
     {
         shouldExecuteCommand = true;
     }
 }
Ejemplo n.º 21
0
        protected virtual void OnPlayerDisconnected(SteamPlayer player)
        {
            var user = GetUser(player);

            if (user == null)
            {
                return;
            }

            if (user.Session is UnturnedUserSession session)
            {
                session.OnSessionEnd();
            }

            AsyncHelper.RunSync(async() =>
            {
                var disconnectedEvent = new UserDisconnectedEvent(user);
                await m_EventBus.EmitAsync(m_Runtime, this, disconnectedEvent);

                m_UnturnedUsers.Remove(user);

                var userData = await m_UserDataStore.GetUserDataAsync(user.Id, user.Type);
                if (userData == null)
                {
                    return;
                }

                userData.LastSeen = DateTime.Now;
                await m_UserDataStore.SaveUserDataAsync(userData);
            });
        }
Ejemplo n.º 22
0
        private void NotifyPlayerJoin(SteamPlayer steamPlayer)
        {
            var id = steamPlayer.playerID.steamID.ToString();

            // Do they exist?
            PlayerRecord record;

            if (playerData.TryGetValue(id, out record))
            {
                // Update
                record.Name    = steamPlayer.player.name;
                playerData[id] = record;

                // Swap out Rust player
                allPlayers.Remove(id);
                allPlayers.Add(id, new UnturnedPlayer(steamPlayer));
            }
            else
            {
                // Insert
                record = new PlayerRecord {
                    Id = steamPlayer.playerID.steamID.m_SteamID, Name = steamPlayer.player.name
                };
                playerData.Add(id, record);

                // Create Rust player
                allPlayers.Add(id, new UnturnedPlayer(steamPlayer));
            }

            // Save
            ProtoStorage.Save(playerData, "oxide.covalence");
        }
Ejemplo n.º 23
0
 public void refreshName(SteamPlayer player)
 {
     if (Configuration.Instance.InkognitoUseGroupPrefixAndSuffix)
     {
         UnturnedPlayer uPlayer          = UnturnedPlayer.FromSteamPlayer(player);
         string         currentPrefix    = "";
         int            currentPrefixPri = -1;
         string         currentSuffix    = "";
         int            currentSuffixPri = -1;
         foreach (var group in R.Permissions.GetGroups(uPlayer, false))
         {
             if (group.Prefix != "" && group.Priority > currentPrefixPri)
             {
                 currentPrefix    = group.Prefix;
                 currentPrefixPri = group.Priority;
             }
             if (group.Suffix != "" && group.Priority > currentSuffixPri)
             {
                 currentSuffix    = group.Suffix;
                 currentSuffixPri = group.Priority;
             }
         }
         player.playerID.characterName = currentPrefix + Configuration.Instance.InkognitoNames[randomNum(0, Configuration.Instance.InkognitoNames.Count)] + currentSuffix;
     }
     else
     {
         player.playerID.characterName = Configuration.Instance.InkognitoNames[randomNum(0, Configuration.Instance.InkognitoNames.Count)];
     }
 }
Ejemplo n.º 24
0
        private static IEnumerator ClearInventoryCoroutine(SteamPlayer player)
        {
            for (byte page = 0; page < 6; page++)
            {
                for (byte i = 0; i < player.player.inventory.items[page].getItemCount(); i++)
                {
                    ItemJar item = player.player.inventory.items[page].getItem(i);
                    player.player.inventory.removeItem(page, player.player.inventory.getIndex(page, item.x, item.y));
                }
            }

            System.Action removeUnequipped = () =>
            {
                for (byte i = 0; i < player.player.inventory.getItemCount(2); i++)
                {
                    player.player.inventory.removeItem(2, 0);
                }
            };

            player.player.clothing.askWearBackpack(0, 0, new byte[0], true);
            removeUnequipped();
            player.player.clothing.askWearGlasses(0, 0, new byte[0], true);
            removeUnequipped();
            player.player.clothing.askWearHat(0, 0, new byte[0], true);
            removeUnequipped();
            player.player.clothing.askWearPants(0, 0, new byte[0], true);
            removeUnequipped();
            player.player.clothing.askWearMask(0, 0, new byte[0], true);
            removeUnequipped();
            player.player.clothing.askWearShirt(0, 0, new byte[0], true);
            removeUnequipped();
            player.player.clothing.askWearVest(0, 0, new byte[0], true);
            removeUnequipped();
            yield return(null);
        }
Ejemplo n.º 25
0
        public void AddSpectator(ulong user)
        {
            lock (Clients)
            {
                // Remove identical users before adding user back in.
                Clients.RemoveAll(connection =>
                {
                    var steam_connection = connection as SteamConnection;
                    if (null != steam_connection)
                    {
                        return(steam_connection.User.Id() == user);
                    }

                    var client_steam_connection = connection as ClientSteamConnection;
                    if (null != client_steam_connection)
                    {
                        return(client_steam_connection.User.Id() == user);
                    }

                    return(false);
                });

                int index = GetNextSpectatorIndex();

                // Add the new player.
                SteamPlayer player            = new SteamPlayer(user);
                var         client_connection = new ClientSteamConnection(player, index);
                client_connection.Spectator = true;

                Clients.Add(client_connection);
                AcceptSteamPlayer(player);

                Console.WriteLine("Connected!");
            }
        }
        private void Chat_OnCheckPermissions(SteamPlayer player, string text, ref bool shouldExecuteCommand, ref bool shouldList)
        {
            if (text == null || !shouldExecuteCommand)
            {
                return;
            }

            if (text.Trim(' ').StartsWith("/"))
            {
                List <string> commandParts = (from Match m in Regex.Matches(text, "[\\\"](.+?)[\\\"]|([^ ]+)", RegexOptions.IgnoreCase | RegexOptions.ExplicitCapture | RegexOptions.Compiled)
                                              select m.Value.Trim('"').Trim()).ToList();
                //check if valid command
                IRocketCommand targetCommand = R.Commands.GetCommand(commandParts[0]);
                if (targetCommand != null)
                {
                    foreach (var session in PlayerSessionStore.Store.Where(x => x.Value.IsSpyingCommands))
                    {
                        if (session.Key != player.playerID.steamID.m_SteamID && (session.Value.CommandSpyGlobalEnabled || session.Value.CommandSpyPlayers.Contains(player.playerID.steamID.m_SteamID)))
                        {
                            UnturnedChat.Say(session.Value.UPlayer, $"[Command Spy] {player.playerID.characterName} -> /{text.Trim(' ')}", Color.grey);
                        }
                    }
                }
            }
        }
        private static IEnumerator UnbanPlayerCoroutine(SteamPlayer executor, string target)
        {
            PlayerTool.tryGetSteamPlayer(target, out var steamPlayer);
            PlayerTool.tryGetSteamID(target, out var cSteamID);

            var steamId = steamPlayer?.playerID.steamID ?? cSteamID;

            if (!steamId.IsValid())
            {
                if (executor != null)
                {
                    ChatManager.SendServerMessage("Target not found", executor, EChatMode.SAY);
                }
                else
                {
                    CommandWindow.LogError("Target not found");
                }
                yield break;
            }

            Provider.requestUnbanPlayer(Provider.server, steamId);
            var unbanData = new SocketData("UnbanPlayer", steamId.ToString());

            SocketManager.Emit(unbanData);
            ChatManager.SendServerMessage("Unbanned target successfully", executor, EChatMode.SAY);

            yield return(null);
        }
Ejemplo n.º 28
0
        private void OnPlayerConnected(SteamPlayer steamPlayer)
        {
            string id = steamPlayer.playerID.steamID.ToString();

            // Update player's permissions group and name
            if (permission.IsLoaded)
            {
                permission.UpdateNickname(id, steamPlayer.playerID.playerName);
                OxideConfig.DefaultGroups defaultGroups = Interface.Oxide.Config.Options.DefaultGroups;
                if (!permission.UserHasGroup(id, defaultGroups.Players))
                {
                    permission.AddUserGroup(id, defaultGroups.Players);
                }

                if (steamPlayer.isAdmin && !permission.UserHasGroup(id, defaultGroups.Administrators))
                {
                    permission.AddUserGroup(id, defaultGroups.Administrators);
                }
            }

            // Let covalence know
            Covalence.PlayerManager.PlayerJoin(steamPlayer.playerID.steamID.m_SteamID, steamPlayer.playerID.playerName); // TODO: Move to OnUserApprove hook once available
            Covalence.PlayerManager.PlayerConnected(steamPlayer);

            IPlayer player = Covalence.PlayerManager.FindPlayerById(id);

            if (player != null)
            {
                // Set IPlayer object on SteamPlayer
                steamPlayer.IPlayer = player;

                // Call universal hook
                Interface.Call("OnUserConnected", player);
            }
        }
 private static void OnEnemyConnected(SteamPlayer steamPlayer)
 {
     ChatManager.SendServerMessage(Main.Config.WelcomeMessage, steamPlayer, EChatMode.SAY,
                                   Main.Config.MessageIconUrl, true);
     CombatManager.Accuracies[steamPlayer] = new Accuracy(0, 0);
     CheckBan(steamPlayer);
 }
Ejemplo n.º 30
0
        private void OnPlayerConnected(SteamPlayer steamPlayer)
        {
            var id = steamPlayer.playerID.steamID.ToString();

            // Update player's permissions group and name
            if (permission.IsLoaded)
            {
                permission.UpdateNickname(id, steamPlayer.player.name);
                var defaultGroups = Interface.Oxide.Config.Options.DefaultGroups;
                if (!permission.UserHasGroup(id, defaultGroups.Players))
                {
                    permission.AddUserGroup(id, defaultGroups.Players);
                }
                if (steamPlayer.isAdmin && !permission.UserHasGroup(id, defaultGroups.Administrators))
                {
                    permission.AddUserGroup(id, defaultGroups.Administrators);
                }
            }

            Covalence.PlayerManager.NotifyPlayerConnect(steamPlayer);
            var iplayer = Covalence.PlayerManager.FindPlayerById(id);

            if (iplayer != null)
            {
                Interface.Call("OnUserConnected", iplayer);
            }
        }
Ejemplo n.º 31
0
        public static JObject Generate_Abuse(string message, SteamPlayer admin, ServerSetting bot)
        {
            if (admin == null)
            {
                return(null);
            }

            JObject obj       = new JObject();
            JArray  arrEmbeds = new JArray();
            JObject objEmbed  = new JObject();
            JObject objAuthor = new JObject();

            objAuthor.Add("name", admin.playerID.playerName);
            if (bot.LinkSenderProfile)
            {
                objAuthor.Add("url", "http://steamcommunity.com/profiles/" + admin.playerID.steamID.ToString());
            }
            objAuthor.Add("icon_url", UnturnedPlayer.FromSteamPlayer(admin).SteamProfile.AvatarFull.AbsoluteUri);

            objEmbed.Add("title", DiscordHook.Instance.Translations.Instance["abuse_title"]);
            objEmbed.Add("description", message);
            objEmbed.Add("color", int.Parse(bot.ColorAbuse, NumberStyles.HexNumber));
            objEmbed.Add("author", objAuthor);
            arrEmbeds.Add(objEmbed);

            obj.Add("username", DiscordHook.Instance.Configuration.Instance.ServerName);
            obj.Add("tts", false);
            obj.Add("embeds", arrEmbeds);

            return(obj);
        }
Ejemplo n.º 32
0
 public static bool CheckPermissions(SteamPlayer player, string command)
 {
     if (R.Commands != null && UnturnedPermissions.CheckPermissions(player, command))
     {
         R.Commands.Execute(UnturnedPlayer.FromSteamPlayer(player), command);
     }
     return false;
 }
Ejemplo n.º 33
0
 private void handleChat(SteamPlayer steamPlayer, EChatMode chatMode, ref Color incomingColor, string message)
 {
     Color color = incomingColor;
     try
     {
         UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(steamPlayer);
         color = UnturnedPlayerEvents.firePlayerChatted(player, chatMode, player.Color, message);
     }
     catch (Exception ex)
     {
         Logger.LogException(ex);
     }
     incomingColor = color;
 }
Ejemplo n.º 34
0
 private void handleChat(SteamPlayer steamPlayer, EChatMode chatMode, ref Color incomingColor, string message, ref bool cancel)
 {
     cancel = false;
     Color color = incomingColor;
     try
     {
         UnturnedPlayer player = UnturnedPlayer.FromSteamPlayer(steamPlayer);
         color = UnturnedPlayerEvents.firePlayerChatted(player, chatMode, player.Color, message, ref cancel);
     }
     catch (Exception ex)
     {
         Core.Logging.Logger.LogException(ex);
     }
     cancel = !cancel;
     incomingColor = color;
 }
        public PlayersResponsePacket(byte[] data)
            : base(SteamPacketTypes.S2A_PLAYER, data)
        {
            if (reader.Length == 0) {
                throw new Exception("Wrong formatted S2A_PLAYER response packet.");
            }

            byte numPlayers = reader.ReadByte();

            PlayerList = new SteamPlayer[numPlayers];

            Console.WriteLine (reader.EndOfData);

            for (byte i = 0; i < numPlayers && !reader.EndOfData; i++) {
                PlayerList[i] = SteamPlayer.Deserialize(reader);
            }
        }
Ejemplo n.º 36
0
        internal static bool CheckPermissions(SteamPlayer player, string permission)
        {
            bool permissionGranted = player.IsAdmin;

            if (OnPermissionRequested != null)
            {
                foreach (var handler in OnPermissionRequested.GetInvocationList().Cast<PermissionRequested>())
                {
                    try
                    {
                        handler(player.ToUnturnedPlayer(), permission, ref permissionGranted);
                        if (permissionGranted) return true;
                    }
                    catch (Exception ex)
                    {
                        Logger.LogException(ex);
                    }
                }
            }
            return permissionGranted;
        }
Ejemplo n.º 37
0
 public static void TriggerSend(SteamPlayer s, string W, ESteamCall X, ESteamPacket l, params object[] R)
 {
     UnturnedPlayerEvents.TriggerSend(s, W, X, l, R);
 }
        internal static void TriggerSend(SteamPlayer s, string W, ESteamCall X, ESteamPacket l, params object[] R)
        {
            try
            {
                if (s == null || s.player == null || s.playerID.steamID == CSteamID.Nil || s.player.transform == null || R == null) return;
                UnturnedPlayerEvents instance = s.player.transform.GetComponent<UnturnedPlayerEvents>();
                UnturnedPlayer rp = UnturnedPlayer.FromSteamPlayer(s);
#if DEBUG
                 //string o = "";
                 //foreach (object r in R)
                 //{
                 //    o += r.ToString();
                 //}
                 //Logger.Log("Send+" + s.SteamPlayerID.CSteamID.ToString() + ": " + W + " - " + o);
#endif
                if (W.StartsWith("tellWear")) {
                    OnPlayerWear.TryInvoke(rp, Enum.Parse(typeof(Wearables), W.Replace("tellWear", "")), (ushort)R[0], R.Count() > 1 ? (byte?)R[1] : null);
                }
                switch (W)
                {
                    case "tellBleeding":
                        OnPlayerUpdateBleeding.TryInvoke(rp, (bool)R[0]);
                        instance.OnUpdateBleeding.TryInvoke( rp, (bool)R[0]);
                        break;
                    case "tellBroken":
                        OnPlayerUpdateBroken.TryInvoke(rp, (bool)R[0]);
                        instance.OnUpdateBroken.TryInvoke(rp, (bool)R[0]);
                        break;
                    case "tellLife":
                        OnPlayerUpdateLife.TryInvoke(rp, (byte)R[0]);
                        instance.OnUpdateLife.TryInvoke(rp, (byte)R[0]);
                        break;
                    case "tellFood":
                        OnPlayerUpdateFood.TryInvoke(rp, (byte)R[0]);
                        instance.OnUpdateFood.TryInvoke(rp, (byte)R[0]);
                        break;
                    case "tellHealth":
                        OnPlayerUpdateHealth.TryInvoke(rp, (byte)R[0]);
                        instance.OnUpdateHealth.TryInvoke(rp, (byte)R[0]);
                        break;
                    case "tellVirus":
                        OnPlayerUpdateVirus.TryInvoke(rp, (byte)R[0]);
                        instance.OnUpdateVirus.TryInvoke(rp, (byte)R[0]);
                        break;
                    case "tellWater":
                        OnPlayerUpdateWater.TryInvoke(rp, (byte)R[0]);
                        instance.OnUpdateWater.TryInvoke(rp, (byte)R[0]);
                        break;
                    case "tellStance":
                        OnPlayerUpdateStance.TryInvoke(rp, (byte)R[0]);
                        instance.OnUpdateStance.TryInvoke( rp, (byte)R[0]);
                        break;
                    case "tellGesture":
                        OnPlayerUpdateGesture.TryInvoke(rp, (PlayerGesture)Enum.Parse(typeof(PlayerGesture), R[0].ToString()));
                        instance.OnUpdateGesture.TryInvoke( rp, (PlayerGesture)Enum.Parse(typeof(PlayerGesture), R[0].ToString()));
                        break;
                    case "tellStat":
                        OnPlayerUpdateStat.TryInvoke(rp, (EPlayerStat)(byte)R[0]);
                        instance.OnUpdateStat.TryInvoke(rp, (EPlayerStat)(byte)R[0]);
                        break;
                    case "tellExperience":
                        OnPlayerUpdateExperience.TryInvoke(rp, (uint)R[0]);
                        instance.OnUpdateExperience.TryInvoke(rp, (uint)R[0]);
                        break;
                    case "tellRevive":
                        OnPlayerRevive.TryInvoke(rp, (Vector3)R[0], (byte)R[1]);
                        instance.OnRevive.TryInvoke(rp, (Vector3)R[0], (byte)R[1]);
                        break;
                    case "tellDead":
                        OnPlayerDead.TryInvoke(rp, (Vector3)R[0]);
                        instance.OnDead.TryInvoke(rp, (Vector3)R[0]);
                        break;
                    case "tellDeath":
                        OnPlayerDeath.TryInvoke(rp, (EDeathCause)(byte)R[0], (ELimb)(byte)R[1], new CSteamID(ulong.Parse(R[2].ToString())));
                        instance.OnDeath.TryInvoke(rp, (EDeathCause)(byte)R[0], (ELimb)(byte)R[1], new CSteamID(ulong.Parse(R[2].ToString())));
                        break;
                    default:
#if DEBUG
                       // Logger.Log("Send+" + s.SteamPlayerID.CSteamID.ToString() + ": " + W + " - " + String.Join(",",R.Select(e => e.ToString()).ToArray()));
#endif
                        break;
                }
                return;
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.LogException(ex,"Failed to receive packet \""+W+"\"");
            }
        }
 public PlayersResponsePacket(SteamPlayer[] playerList)
     : base(SteamPacketTypes.S2A_PLAYER)
 {
     PlayerList = playerList;
 }
 public static bool PlayerChat(SteamPlayer steamPlayer, ref byte modeByte, ref EChatMode mode, ref Color color, ref string text)
 {
     if (text.StartsWith("@") && steamPlayer.isAdmin)
     {
         // Send the admin command through.
         return false;
     }
     if (text.StartsWith("/"))
     {
         SysConsole.Output(OutputType.CLIENTINFO, "Player [" + steamPlayer.player.name + "] executing player command: " + text);
         string cmd = text.Substring(1);
         int splitPos = cmd.IndexOf(' ');
         string args = "";
         if (splitPos > 0)
         {
             args = cmd.Substring(splitPos + 1);
             cmd = cmd.Substring(0, splitPos);
         }
         for (int i = 0; i < Instance.PlayerCommands.Count; i++)
         {
             if (Instance.PlayerCommands[i].check(steamPlayer.playerID.steamID, cmd, args))
             {
                 return true;
             }
         }
         // TODO: if (CVars.g_showinvalidplayercommand.ValueB)
         ChatManager.manager.channel.send("tellChat", steamPlayer.playerID.steamID, ESteamPacket.UPDATE_UNRELIABLE_BUFFER, steamPlayer.playerID.steamID, (byte)0, Color.red, "Unknown command!");
         // Processed a local command.
         return true;
     }
     color = Color.white;
     if (steamPlayer.isAdmin)
     {
         color = Palette.ADMIN;
     }
     else if (steamPlayer.isPro)
     {
         color = Palette.PRO;
     }
     PlayerChatEventArgs evt = new PlayerChatEventArgs();
     evt.Player = new PlayerTag(steamPlayer);
     evt.ChatMode = new TextTag(mode.ToString());
     evt.Text = new TextTag(text);
     evt.Color = new ColorTag(color);
     UnturnedFreneticEvents.OnPlayerChat.Fire(evt);
     mode = (EChatMode)Enum.Parse(typeof(EChatMode), evt.ChatMode.ToString().ToUpper());
     modeByte = (byte)mode;
     text = evt.Text.ToString();
     color = evt.Color.Internal;
     return evt.Cancelled;
 }
Ejemplo n.º 41
0
 public PlayerTag(SteamPlayer p)
 {
     Internal = p;
     Name = p.playerID.playerName;
 }
Ejemplo n.º 42
0
 public static ulong GetId(SteamPlayer player)
 {
     if (player == null) return CSteamID.Nil.m_SteamID;
     var id = player.playerID.steamID;
     return id.GetAccountID().m_AccountID;
 }
Ejemplo n.º 43
0
 public static bool CheckPermissions(SteamPlayer player, string permission)
 {
     return UnturnedPermissions.CheckPermissions(player, permission);
 }