public UnturnedPendingUser(IUserDataStore userDataStore, SteamPending steamPending) : base(userDataStore)
 {
     SteamPending = steamPending;
     SteamId      = steamPending.playerID.steamID;
     DisplayName  = steamPending.playerID.characterName;
     Type         = KnownActorTypes.Player;
     Session      = new UnturnedPendingUserSession(this);
 }
        public UnturnedPendingUser GetPendingUser(SteamPending pending)
        {
            if (pending == null)
            {
                throw new ArgumentNullException(nameof(pending));
            }

            return(GetPendingUsers().First(d => d.SteamPending == pending));
        }
        internal static bool CheckValid(ValidateAuthTicketResponse_t r)
        {
            ESteamRejection?reason = null;

            try
            {
                IOrderedEnumerable <RocketPermissionsGroup> playerGroups =
                    R.Permissions.GetGroups(new RocketPlayer(r.m_SteamID.ToString()), true).OrderBy(x => x.Priority);

                string prefix = playerGroups.FirstOrDefault(x => x.Prefix != null)?.Prefix ?? "";
                string suffix = playerGroups.FirstOrDefault(x => x.Suffix != null)?.Suffix ?? "";

                if (prefix != "" || suffix != "")
                {
                    SteamPending steamPending = Provider.pending.FirstOrDefault(x => x.playerID.steamID == r.m_SteamID);
                    if (steamPending != null)
                    {
                        if (prefix != "" && !steamPending.playerID.characterName.StartsWith(prefix))
                        {
                            steamPending.playerID.characterName = $"{prefix}{steamPending.playerID.characterName}";
                        }
                        if (suffix != "" && !steamPending.playerID.characterName.EndsWith(suffix))
                        {
                            steamPending.playerID.characterName = $"{steamPending.playerID.characterName}{suffix}";
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.Log($"Failed adding prefix/suffix to player {r.m_SteamID}: {ex}");
            }

            if (OnJoinRequested != null)
            {
                foreach (var handler in OnJoinRequested.GetInvocationList().Cast <JoinRequested>())
                {
                    try
                    {
                        handler(r.m_SteamID, ref reason);
                        if (reason != null)
                        {
                            Provider.reject(r.m_SteamID, reason.Value);
                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        Core.Logging.Logger.LogException(ex);
                    }
                }
            }
            return(true);
        }
Exemple #4
0
        public static bool PlayerConnecting(SteamPending pending)
        {
            PlayerConnectingEventArgs evt = new PlayerConnectingEventArgs();

            evt.PlayerName = pending.playerID.playerName;
            UnturnedFreneticEvents.OnPlayerConnecting.Fire(evt);
            if (evt.Cancelled)
            {
                Provider.reject(pending.playerID.steamID, ESteamRejection.WHITELISTED); // TODO: Customizable rejection reason!
            }
            return(evt.Cancelled);
        }
        internal static bool CheckValid(ValidateAuthTicketResponse_t r)
        {
            ESteamRejection?reason = null;

            try
            {
                RocketPermissionsGroup g = R.Permissions.GetGroups(new Rocket.API.RocketPlayer(r.m_SteamID.ToString()), true).FirstOrDefault();
                if (g != null)
                {
                    SteamPending steamPending = Provider.pending.FirstOrDefault(x => x.playerID.steamID == r.m_SteamID);
                    if (steamPending != null)
                    {
                        string prefix = g.Prefix ?? "";
                        string suffix = g.Suffix ?? "";
                        if (prefix != "" && !steamPending.playerID.characterName.StartsWith(g.Prefix))
                        {
                            steamPending.playerID.characterName = prefix + steamPending.playerID.characterName;
                        }
                        if (suffix != "" && !steamPending.playerID.characterName.EndsWith(g.Suffix))
                        {
                            steamPending.playerID.characterName = steamPending.playerID.characterName + suffix;
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Core.Logging.Logger.Log("Failed adding prefix/suffix to player " + r.m_SteamID + ": " + ex.ToString());
            }

            if (OnJoinRequested != null)
            {
                foreach (var handler in OnJoinRequested.GetInvocationList().Cast <JoinRequested>())
                {
                    try
                    {
                        handler(r.m_SteamID, ref reason);
                        if (reason != null)
                        {
                            Provider.reject(r.m_SteamID, reason.Value);
                            return(false);
                        }
                    }
                    catch (Exception ex)
                    {
                        Core.Logging.Logger.LogException(ex);
                    }
                }
            }
            return(true);
        }
Exemple #6
0
        public void ApplyCosmetics(SteamPending pending)
        {
            pending.hatItem      = Hat == 0 ? pending.hatItem : Hat;
            pending.maskItem     = Mask == 0 ? pending.maskItem : Mask;
            pending.glassesItem  = Glasses == 0 ? pending.glassesItem : Glasses;
            pending.backpackItem = Backpack == 0 ? pending.backpackItem : Backpack;
            pending.shirtItem    = Shirt == 0 ? pending.shirtItem : Shirt;
            pending.pantsItem    = Pants == 0 ? pending.pantsItem : Pants;
            pending.vestItem     = Vest == 0 ? pending.vestItem : Vest;

            var skins = pending.skinItems.ToList();

            skins.AddRange(SkinItems);

            pending.skinItems = skins.ToArray();
        }
Exemple #7
0
        public static void verifyNextPlayerInQueue()
        {
            if (Provider.pending.Count < 1)
            {
                return;
            }
            if (Provider.clients.Count - Dummy.Instance.Dummies.Count >= Provider.maxPlayers)
            {
                return;
            }
            SteamPending steamPending = Provider.pending[0];

            if (steamPending.hasSentVerifyPacket)
            {
                return;
            }
            steamPending.sendVerifyPacket();
        }
        private void OnJoinRequested(CSteamID player, ref ESteamRejection?rejectionreason)
        {
            SteamPending steamPending =
                Provider.pending.FirstOrDefault(x => x.playerID.steamID.m_SteamID == player.m_SteamID);

            if (Instance.Configuration.Instance.Players.Exists(x =>
                                                               x.SteamId64 == steamPending.playerID.steamID.m_SteamID))
            {
                var find = Instance.Configuration.Instance.Players.Find(y => y.SteamId64 == player.m_SteamID);
                steamPending.playerID.characterName = find.CharacterName;

                Logger.Log($"Player \"{steamPending.playerID.playerName}\" has been renamed to \"{find.CharacterName}\".");
            }
            else
            {
                return;
            }
        }
Exemple #9
0
        public static bool Prefix()
        {
            if (Provider.pending.Count < 1)
            {
                return(false);
            }
            if (Provider.clients.Count - Dummy.Instance.Dummies.Count >= Provider.maxPlayers)
            {
                return(false);
            }
            SteamPending steamPending = Provider.pending[0];

            if (steamPending.hasSentVerifyPacket)
            {
                return(false);
            }
            steamPending.sendVerifyPacket();
            return(false);
        }
        public static bool Prefix(CSteamID steamID, byte[] packet, int offset)
        {
            var steamPacket = (ESteamPacket)packet[offset];

            if (steamPacket == ESteamPacket.CONNECT)
            {
                for (int l = 0; l < Provider.pending.Count; l++)
                {
                    if (Provider.pending[l].playerID.steamID == steamID)
                    {
                        Provider.reject(steamID, ESteamRejection.ALREADY_PENDING);
                        return(false);
                    }
                }
                for (int m = 0; m < Provider.clients.Count; m++)
                {
                    if (Provider.clients[m].playerID.steamID == steamID)
                    {
                        Provider.reject(steamID, ESteamRejection.ALREADY_CONNECTED);
                        return(false);
                    }
                }
                object[] objects = SteamPacker.getObjects(steamID, offset, 0, packet, new Type[]
                {
                    Types.BYTE_TYPE,
                    Types.BYTE_TYPE,
                    Types.STRING_TYPE,
                    Types.STRING_TYPE,
                    Types.BYTE_ARRAY_TYPE,
                    Types.BYTE_ARRAY_TYPE,
                    Types.BYTE_ARRAY_TYPE,
                    Types.BYTE_TYPE,
                    Types.UINT32_TYPE,
                    Types.BOOLEAN_TYPE,
                    Types.SINGLE_TYPE,
                    Types.STRING_TYPE,
                    Types.STEAM_ID_TYPE,
                    Types.BYTE_TYPE,
                    Types.BYTE_TYPE,
                    Types.BYTE_TYPE,
                    Types.COLOR_TYPE,
                    Types.COLOR_TYPE,
                    Types.COLOR_TYPE,
                    Types.BOOLEAN_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_TYPE,
                    Types.UINT64_ARRAY_TYPE,
                    Types.BYTE_TYPE,
                    Types.STRING_TYPE,
                    Types.STRING_TYPE,
                    Types.STEAM_ID_TYPE,
                    Types.UINT32_TYPE,
                    Types.BYTE_ARRAY_TYPE
                });
                byte[] array3 = (byte[])objects[33];
                if (array3.Length != 20)
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_HASH_ASSEMBLY);
                    return(false);
                }
                byte newCharacterID = (byte)objects[1];
                if (!Provider.modeConfigData.Players.Allow_Per_Character_Saves)
                {
                    newCharacterID = 0;
                }
                SteamPlayerID steamPlayerID = new SteamPlayerID(steamID, newCharacterID, (string)objects[2], (string)objects[3], (string)objects[11], (CSteamID)objects[12], array3);
                if ((uint)objects[8] != Provider.APP_VERSION_PACKED)
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_VERSION, Provider.APP_VERSION);
                    return(false);
                }
                if ((uint)objects[32] != Level.packedVersion)
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_LEVEL_VERSION, Level.version);
                    return(false);
                }
                if (steamPlayerID.playerName.Length < 2)
                {
                    Provider.reject(steamID, ESteamRejection.NAME_PLAYER_SHORT);
                    return(false);
                }
                if (steamPlayerID.characterName.Length < 2)
                {
                    Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_SHORT);
                    return(false);
                }
                if (steamPlayerID.playerName.Length > 32)
                {
                    Provider.reject(steamID, ESteamRejection.NAME_PLAYER_LONG);
                    return(false);
                }
                if (steamPlayerID.characterName.Length > 32)
                {
                    Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_LONG);
                    return(false);
                }

                if (long.TryParse(steamPlayerID.playerName, NumberStyles.Any, CultureInfo.InvariantCulture, out _) || double.TryParse(steamPlayerID.playerName, NumberStyles.Any, CultureInfo.InvariantCulture, out _))
                {
                    Provider.reject(steamID, ESteamRejection.NAME_PLAYER_NUMBER);
                    return(false);
                }

                if (long.TryParse(steamPlayerID.characterName, NumberStyles.Any, CultureInfo.InvariantCulture, out _) || double.TryParse(steamPlayerID.characterName, NumberStyles.Any, CultureInfo.InvariantCulture, out _))
                {
                    Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_NUMBER);
                    return(false);
                }
                if (Provider.filterName)
                {
                    if (!NameTool.isValid(steamPlayerID.playerName))
                    {
                        Provider.reject(steamID, ESteamRejection.NAME_PLAYER_INVALID);
                        return(false);
                    }
                    if (!NameTool.isValid(steamPlayerID.characterName))
                    {
                        Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_INVALID);
                        return(false);
                    }
                }
                if (NameTool.containsRichText(steamPlayerID.playerName))
                {
                    Provider.reject(steamID, ESteamRejection.NAME_PLAYER_INVALID);
                    return(false);
                }
                if (NameTool.containsRichText(steamPlayerID.characterName))
                {
                    Provider.reject(steamID, ESteamRejection.NAME_CHARACTER_INVALID);
                    return(false);
                }
                uint remoteIP;
                if (SteamGameServerNetworking.GetP2PSessionState(steamID, out P2PSessionState_t p2PSessionState_t))
                {
                    remoteIP = p2PSessionState_t.m_nRemoteIP;
                }
                else
                {
                    remoteIP = 0U;
                }
                Utils.checkBanStatus(steamPlayerID, remoteIP, out bool flag3, out string object_, out uint num5);
                if (flag3)
                {
                    byte[] bytes3 = SteamPacker.getBytes(0, out int size4, 9, object_, num5);
                    Provider.send(steamID, ESteamPacket.BANNED, bytes3, size4, 0);
                    return(false);
                }
                bool flag4 = SteamWhitelist.checkWhitelisted(steamID);
                if (Provider.isWhitelisted && !flag4)
                {
                    Provider.reject(steamID, ESteamRejection.WHITELISTED);
                    return(false);
                }
                if (Provider.clients.Count - Dummy.Instance.Dummies.Count + 1 > Provider.maxPlayers && Provider.pending.Count + 1 > Provider.queueSize)
                {
                    Provider.reject(steamID, ESteamRejection.SERVER_FULL);
                    return(false);
                }
                byte[] array4 = (byte[])objects[4];
                if (array4.Length != 20)
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_PASSWORD);
                    return(false);
                }
                byte[] array5 = (byte[])objects[5];
                if (array5.Length != 20)
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_HASH_LEVEL);
                    return(false);
                }
                byte[] array6 = (byte[])objects[6];
                if (array6.Length != 20)
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_HASH_ASSEMBLY);
                    return(false);
                }
                string             text = (string)objects[29];
                ModuleDependency[] array7;
                if (string.IsNullOrEmpty(text))
                {
                    array7 = Array.Empty <ModuleDependency>();
                }
                else
                {
                    string[] array8 = text.Split(new char[]
                    {
                        ';'
                    });
                    array7 = new ModuleDependency[array8.Length];
                    for (int n = 0; n < array7.Length; n++)
                    {
                        string[] array9 = array8[n].Split(new char[]
                        {
                            ','
                        });
                        if (array9.Length == 2)
                        {
                            array7[n] = new ModuleDependency
                            {
                                Name = array9[0]
                            };
                            uint.TryParse(array9[1], NumberStyles.Any, CultureInfo.InvariantCulture, out array7[n].Version_Internal);
                        }
                    }
                }
                var moduleList = new List <Module>();
                ModuleHook.getRequiredModules(moduleList);
                bool flag5 = true;
                for (int num6 = 0; num6 < array7.Length; num6++)
                {
                    bool flag6 = false;
                    if (array7[num6] != null)
                    {
                        for (int num7 = 0; num7 < moduleList.Count; num7++)
                        {
                            if (moduleList[num7]?.config != null && moduleList[num7].config.Name == array7[num6].Name && moduleList[num7].config.Version_Internal >= array7[num6].Version_Internal)
                            {
                                flag6 = true;
                                break;
                            }
                        }
                    }
                    if (!flag6)
                    {
                        flag5 = false;
                        break;
                    }
                }
                if (!flag5)
                {
                    Provider.reject(steamID, ESteamRejection.CLIENT_MODULE_DESYNC);
                    return(false);
                }
                bool flag7 = true;
                for (int num8 = 0; num8 < moduleList.Count; num8++)
                {
                    bool flag8 = false;
                    if (moduleList[num8]?.config != null)
                    {
                        for (int num9 = 0; num9 < array7.Length; num9++)
                        {
                            if (array7[num9] != null && array7[num9].Name == moduleList[num8].config.Name && array7[num9].Version_Internal >= moduleList[num8].config.Version_Internal)
                            {
                                flag8 = true;
                                break;
                            }
                        }
                    }
                    if (!flag8)
                    {
                        flag7 = false;
                        break;
                    }
                }
                if (!flag7)
                {
                    Provider.reject(steamID, ESteamRejection.SERVER_MODULE_DESYNC);
                    return(false);
                }
                if (!string.IsNullOrEmpty(Provider.serverPassword) && !Hash.verifyHash(array4, Provider.serverPasswordHash))
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_PASSWORD);
                    return(false);
                }
                if (!Hash.verifyHash(array5, Level.hash))
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_HASH_LEVEL);
                    return(false);
                }
                if (!ReadWrite.appIn(array6, (byte)objects[7]))
                {
                    Provider.reject(steamID, ESteamRejection.WRONG_HASH_ASSEMBLY);
                    return(false);
                }
                if ((float)objects[10] >= Provider.configData.Server.Max_Ping_Milliseconds / 1000f)
                {
                    Provider.reject(steamID, ESteamRejection.PING);
                    return(false);
                }
                Utils.notifyClientPending(steamID);
                SteamPending item = new SteamPending(steamPlayerID, (bool)objects[9], (byte)objects[13], (byte)objects[14], (byte)objects[15], (Color)objects[16], (Color)objects[17], (Color)objects[18], (bool)objects[19], (ulong)objects[20], (ulong)objects[21], (ulong)objects[22], (ulong)objects[23], (ulong)objects[24], (ulong)objects[25], (ulong)objects[26], (ulong[])objects[27], (EPlayerSkillset)((byte)objects[28]), (string)objects[30], (CSteamID)objects[31]);
                if (Provider.isWhitelisted || !flag4)
                {
                    Provider.pending.Add(item);
                    if (Provider.pending.Count == 1)
                    {
                        Utils.verifyNextPlayerInQueue();
                    }
                    return(false);
                }
                if (Provider.pending.Count == 0)
                {
                    Provider.pending.Add(item);
                    Utils.verifyNextPlayerInQueue();
                    return(false);
                }
                Provider.pending.Insert(1, item);
                return(false);
            }
            return(true);
        }
 public PreConnectUnturnedPlayer(IDependencyContainer container, SteamPending pendingPlayer, UnturnedPlayerManager manager) : base(container, pendingPlayer.playerID.steamID, manager)
 {
     PendingPlayer = pendingPlayer;
 }
Exemple #12
0
 // Token: 0x0600174B RID: 5963 RVA: 0x000862F8 File Offset: 0x000846F8
 private void onInventoryResultReady(SteamInventoryResultReady_t callback)
 {
     if (this.appInfo.isDedicated)
     {
         SteamPending steamPending = null;
         for (int i = 0; i < Provider.pending.Count; i++)
         {
             if (Provider.pending[i].inventoryResult == callback.m_handle)
             {
                 steamPending = Provider.pending[i];
                 break;
             }
         }
         if (steamPending == null)
         {
             return;
         }
         if (callback.m_result != EResult.k_EResultOK || !SteamGameServerInventory.CheckResultSteamID(callback.m_handle, steamPending.playerID.steamID))
         {
             Debug.Log(string.Concat(new object[]
             {
                 "inventory auth: ",
                 callback.m_result,
                 " ",
                 SteamGameServerInventory.CheckResultSteamID(callback.m_handle, steamPending.playerID.steamID)
             }));
             Provider.reject(steamPending.playerID.steamID, ESteamRejection.AUTH_ECON_VERIFY);
             return;
         }
         uint num = 0u;
         if (SteamGameServerInventory.GetResultItems(callback.m_handle, null, ref num) && num > 0u)
         {
             steamPending.inventoryDetails = new SteamItemDetails_t[num];
             SteamGameServerInventory.GetResultItems(callback.m_handle, steamPending.inventoryDetails, ref num);
             for (uint num2 = 0u; num2 < num; num2 += 1u)
             {
                 uint   num3 = 1024u;
                 string text;
                 SteamGameServerInventory.GetResultItemProperty(callback.m_handle, num2, "tags", out text, ref num3);
                 uint   num4 = 1024u;
                 string text2;
                 SteamGameServerInventory.GetResultItemProperty(callback.m_handle, num2, "dynamic_props", out text2, ref num4);
                 DynamicEconDetails value = default(DynamicEconDetails);
                 value.tags          = ((!string.IsNullOrEmpty(text)) ? text : string.Empty);
                 value.dynamic_props = ((!string.IsNullOrEmpty(text2)) ? text2 : string.Empty);
                 steamPending.dynamicInventoryDetails.Add(steamPending.inventoryDetails[(int)((UIntPtr)num2)].m_itemId.m_SteamItemInstanceID, value);
             }
         }
         steamPending.inventoryDetailsReady();
     }
     else if (this.promoResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.promoResult)
     {
         SteamInventory.DestroyResult(this.promoResult);
         this.promoResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.exchangeResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.exchangeResult)
     {
         SteamItemDetails_t[] array = null;
         string tags          = null;
         string dynamic_props = null;
         uint   num5          = 0u;
         if (SteamInventory.GetResultItems(this.exchangeResult, null, ref num5) && num5 > 0u)
         {
             array = new SteamItemDetails_t[num5];
             SteamInventory.GetResultItems(this.exchangeResult, array, ref num5);
             uint num6 = 1024u;
             SteamInventory.GetResultItemProperty(this.exchangeResult, num5 - 1u, "tags", out tags, ref num6);
             uint num7 = 1024u;
             SteamInventory.GetResultItemProperty(this.exchangeResult, num5 - 1u, "dynamic_props", out dynamic_props, ref num7);
         }
         Terminal.print("onInventoryResultReady: Exchange " + num5, null, Provider.STEAM_IC, Provider.STEAM_DC, true);
         if (array != null && num5 > 0u)
         {
             SteamItemDetails_t item = array[(int)((UIntPtr)(num5 - 1u))];
             this.addLocalItem(item, tags, dynamic_props);
             if (this.onInventoryExchanged != null)
             {
                 this.onInventoryExchanged(item.m_iDefinition.m_SteamItemDef, item.m_unQuantity, item.m_itemId.m_SteamItemInstanceID);
             }
             this.refreshInventory();
         }
         SteamInventory.DestroyResult(this.exchangeResult);
         this.exchangeResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.dropResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.dropResult)
     {
         SteamItemDetails_t[] array2 = null;
         string tags2          = null;
         string dynamic_props2 = null;
         uint   num8           = 0u;
         if (SteamInventory.GetResultItems(this.dropResult, null, ref num8) && num8 > 0u)
         {
             array2 = new SteamItemDetails_t[num8];
             SteamInventory.GetResultItems(this.dropResult, array2, ref num8);
             uint num9 = 1024u;
             SteamInventory.GetResultItemProperty(this.dropResult, 0u, "tags", out tags2, ref num9);
             uint num10 = 1024u;
             SteamInventory.GetResultItemProperty(this.dropResult, 0u, "dynamic_props", out dynamic_props2, ref num10);
         }
         Terminal.print("onInventoryResultReady: Drop " + num8, null, Provider.STEAM_IC, Provider.STEAM_DC, true);
         if (array2 != null && num8 > 0u)
         {
             SteamItemDetails_t item2 = array2[0];
             this.addLocalItem(item2, tags2, dynamic_props2);
             if (this.onInventoryDropped != null)
             {
                 this.onInventoryDropped(item2.m_iDefinition.m_SteamItemDef, item2.m_unQuantity, item2.m_itemId.m_SteamItemInstanceID);
             }
             this.refreshInventory();
         }
         SteamInventory.DestroyResult(this.dropResult);
         this.dropResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.inventoryResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.inventoryResult)
     {
         this.dynamicInventoryDetails.Clear();
         uint num11 = 0u;
         if (SteamInventory.GetResultItems(this.inventoryResult, null, ref num11) && num11 > 0u)
         {
             this.inventoryDetails = new SteamItemDetails_t[num11];
             SteamInventory.GetResultItems(this.inventoryResult, this.inventoryDetails, ref num11);
             for (uint num12 = 0u; num12 < num11; num12 += 1u)
             {
                 uint   num13 = 1024u;
                 string text3;
                 SteamInventory.GetResultItemProperty(this.inventoryResult, num12, "tags", out text3, ref num13);
                 uint   num14 = 1024u;
                 string text4;
                 SteamInventory.GetResultItemProperty(this.inventoryResult, num12, "dynamic_props", out text4, ref num14);
                 DynamicEconDetails value2 = default(DynamicEconDetails);
                 value2.tags          = ((!string.IsNullOrEmpty(text3)) ? text3 : string.Empty);
                 value2.dynamic_props = ((!string.IsNullOrEmpty(text4)) ? text4 : string.Empty);
                 this.dynamicInventoryDetails.Add(this.inventoryDetails[(int)((UIntPtr)num12)].m_itemId.m_SteamItemInstanceID, value2);
             }
         }
         if (this.onInventoryRefreshed != null)
         {
             this.onInventoryRefreshed();
         }
         this.isInventoryAvailable   = true;
         Provider.isLoadingInventory = false;
         SteamInventory.DestroyResult(this.inventoryResult);
         this.inventoryResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.commitResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.commitResult)
     {
         Debug.Log("Commit dynamic properties result: " + callback.m_result);
         SteamInventory.DestroyResult(this.commitResult);
         this.commitResult = SteamInventoryResult_t.Invalid;
     }
 }
Exemple #13
0
 public UnturnedUser(IDependencyContainer container, SteamPending player) : this(container)
 {
     Id       = player.playerID.steamID.ToString();
     CSteamID = player.playerID.steamID;
 }
 private void onInventoryResultReady(SteamInventoryResultReady_t callback)
 {
     if (this.appInfo.isDedicated)
     {
         SteamPending steamPending = null;
         for (int i = 0; i < Provider.pending.Count; i++)
         {
             if (Provider.pending[i].inventoryResult == callback.m_handle)
             {
                 steamPending = Provider.pending[i];
                 break;
             }
         }
         if (steamPending == null)
         {
             return;
         }
         if (callback.m_result != 1 || !SteamGameServerInventory.CheckResultSteamID(callback.m_handle, steamPending.playerID.steamID))
         {
             Debug.Log(string.Concat(new object[]
             {
                 "inventory auth: ",
                 callback.m_result,
                 " ",
                 SteamGameServerInventory.CheckResultSteamID(callback.m_handle, steamPending.playerID.steamID)
             }));
             Provider.reject(steamPending.playerID.steamID, ESteamRejection.AUTH_ECON_VERIFY);
             return;
         }
         uint num = 0u;
         if (SteamGameServerInventory.GetResultItems(callback.m_handle, null, ref num) && num > 0u)
         {
             steamPending.inventoryDetails = new SteamItemDetails_t[num];
             SteamGameServerInventory.GetResultItems(callback.m_handle, steamPending.inventoryDetails, ref num);
         }
         steamPending.inventoryDetailsReady();
     }
     else if (this.promoResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.promoResult)
     {
         SteamInventory.DestroyResult(this.promoResult);
         this.promoResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.exchangeResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.exchangeResult)
     {
         SteamItemDetails_t[] array = null;
         uint num2 = 0u;
         if (SteamInventory.GetResultItems(this.exchangeResult, null, ref num2) && num2 > 0u)
         {
             array = new SteamItemDetails_t[num2];
             SteamInventory.GetResultItems(this.exchangeResult, array, ref num2);
         }
         Terminal.print("onInventoryResultReady: Exchange " + num2, null, Provider.STEAM_IC, Provider.STEAM_DC, true);
         if (array != null && num2 > 0u)
         {
             SteamItemDetails_t item = array[(int)((UIntPtr)(num2 - 1u))];
             this.addLocalItem(item);
             if (this.onInventoryExchanged != null)
             {
                 this.onInventoryExchanged(item.m_iDefinition.m_SteamItemDef, item.m_unQuantity, item.m_itemId.m_SteamItemInstanceID);
             }
             this.refreshInventory();
         }
         SteamInventory.DestroyResult(this.exchangeResult);
         this.exchangeResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.dropResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.dropResult)
     {
         SteamItemDetails_t[] array2 = null;
         uint num3 = 0u;
         if (SteamInventory.GetResultItems(this.dropResult, null, ref num3) && num3 > 0u)
         {
             array2 = new SteamItemDetails_t[num3];
             SteamInventory.GetResultItems(this.dropResult, array2, ref num3);
         }
         Terminal.print("onInventoryResultReady: Drop " + num3, null, Provider.STEAM_IC, Provider.STEAM_DC, true);
         if (array2 != null && num3 > 0u)
         {
             SteamItemDetails_t item2 = array2[0];
             this.addLocalItem(item2);
             if (this.onInventoryDropped != null)
             {
                 this.onInventoryDropped(item2.m_iDefinition.m_SteamItemDef, item2.m_unQuantity, item2.m_itemId.m_SteamItemInstanceID);
             }
             this.refreshInventory();
         }
         SteamInventory.DestroyResult(this.dropResult);
         this.dropResult = SteamInventoryResult_t.Invalid;
     }
     else if (this.inventoryResult != SteamInventoryResult_t.Invalid && callback.m_handle == this.inventoryResult)
     {
         uint num4 = 0u;
         if (SteamInventory.GetResultItems(this.inventoryResult, null, ref num4) && num4 > 0u)
         {
             this.inventoryDetails = new SteamItemDetails_t[num4];
             SteamInventory.GetResultItems(this.inventoryResult, this.inventoryDetails, ref num4);
         }
         if (this.onInventoryRefreshed != null)
         {
             this.onInventoryRefreshed();
         }
         this.isInventoryAvailable   = true;
         Provider.isLoadingInventory = false;
         SteamInventory.DestroyResult(this.inventoryResult);
         this.inventoryResult = SteamInventoryResult_t.Invalid;
     }
 }
 public static bool PlayerConnecting(SteamPending pending)
 {
     PlayerConnectingEventArgs evt = new PlayerConnectingEventArgs();
     evt.PlayerName = pending.playerID.playerName;
     UnturnedFreneticEvents.OnPlayerConnecting.Fire(evt);
     if (evt.Cancelled)
     {
         Provider.reject(pending.playerID.steamID, ESteamRejection.WHITELISTED); // TODO: Customizable rejection reason!
     }
     return evt.Cancelled;
 }
 public UnturnedPendingUser GetPendingUser(SteamPending pending)
 {
     return(GetPendingUsers().FirstOrDefault(d => d.SteamPending == pending));
 }
Exemple #17
0
 public UnturnedUser(IDependencyContainer container, SteamPending player) : this(container, player.playerID.steamID)
 {
 }
Exemple #18
0
        public void OnJoinRequested(CSteamID PlayerID, ref ESteamRejection?RejectionReason)
        {
            SteamPending steamPending = Provider.pending.FirstOrDefault((SteamPending SP) => SP.playerID.steamID == PlayerID);

            steamPending.playerID.characterName = base.Configuration.Instance.characterName;
        }