Changeset 446


Ignore:
Timestamp:
Jun 12, 2023, 3:21:34 PM (18 months ago)
Author:
alloc
Message:

24_27_41

Location:
binary-improvements
Files:
25 edited

Legend:

Unmodified
Added
Removed
  • binary-improvements/7dtd-server-fixes/ModInfo.xml

    r443 r446  
    55                <Description value="Common functions" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="26" />
     7                <Version value="27" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
  • binary-improvements/7dtd-server-fixes/src/API.cs

    r443 r446  
    2323
    2424                public void SavePlayerData (ClientInfo _cInfo, PlayerDataFile _playerDataFile) {
    25                         PersistentContainer.Instance.Players [_cInfo.InternalId, true].Update (_cInfo, _playerDataFile);
     25                        PersistentContainer.Instance.Players.GetOrCreate (_cInfo.InternalId, _cInfo.PlatformId, _cInfo.CrossplatformId).Update (_cInfo, _playerDataFile);
    2626                }
    2727
     
    4343
    4444                public void PlayerDisconnected (ClientInfo _cInfo, bool _bShutdown) {
    45                         Player p = PersistentContainer.Instance.Players [_cInfo.InternalId, false];
     45                        Player p = PersistentContainer.Instance.Players.GetByInternalId (_cInfo.InternalId);
    4646                        if (p != null) {
    4747                                p.SetOffline ();
     
    5454
    5555                public void PlayerSpawned (ClientInfo _cInfo, RespawnType _respawnReason, Vector3i _spawnPos) {
    56                         PersistentContainer.Instance.Players [_cInfo.InternalId, true].SetOnline (_cInfo);
     56                        PersistentContainer.Instance.Players.GetOrCreate (_cInfo.InternalId, _cInfo.PlatformId, _cInfo.CrossplatformId).SetOnline (_cInfo);
    5757                        PersistentContainer.Instance.Save ();
    5858                }
  • binary-improvements/7dtd-server-fixes/src/LandClaimList.cs

    r369 r446  
    4141
    4242                        foreach (KeyValuePair<PersistentPlayerData, List<Vector3i>> kvp in owners) {
    43                                 Player p = PersistentContainer.Instance.Players [kvp.Key.UserIdentifier, false];
     43                                Player p = PersistentContainer.Instance.Players.GetByInternalId (kvp.Key.UserIdentifier);
    4444                                if (p == null) {
    45                                         p = new Player (kvp.Key.UserIdentifier);
     45                                        PlatformUserIdentifierAbs platformId = kvp.Key.PlatformUserIdentifier;
     46                                        PlatformUserIdentifierAbs internalId = kvp.Key.UserIdentifier;
     47                                        PlatformUserIdentifierAbs crossPlatformId = platformId.Equals (internalId) ? null : internalId;
     48                                        p = new Player (internalId, platformId, crossPlatformId);
    4649                                }
    4750
     
    6871
    6972                public static OwnerFilter UserIdFilter (PlatformUserIdentifierAbs _userId) {
    70                         return _p => _p.PlatformId.Equals (_userId);
     73                        return _p => _p.InternalId.Equals (_userId);
    7174                }
    7275
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs

    r443 r446  
    55        [Serializable]
    66        public class Player {
    7                 private readonly PlatformUserIdentifierAbs platformId;
    87                private int entityId;
    98                private string name;
     
    2625                [NonSerialized] private ClientInfo clientInfo;
    2726
    28                 public PlatformUserIdentifierAbs PlatformId => platformId;
     27                public PlatformUserIdentifierAbs InternalId { get; }
     28                public PlatformUserIdentifierAbs PlatformId { get; }
     29                public PlatformUserIdentifierAbs CrossPlatformId { get; }
    2930
    3031                public int EntityID => entityId;
     
    3435                public string IP => ip ?? string.Empty;
    3536
    36                 public Inventory Inventory => inventory ?? (inventory = new Inventory ());
     37                public Inventory Inventory => inventory ??= new Inventory ();
    3738
    3839                public bool IsOnline => clientInfo != null;
     
    5859                public bool LandProtectionActive =>
    5960                        GameManager.Instance.World.IsLandProtectionValidForPlayer (GameManager.Instance
    60                                 .GetPersistentPlayerList ().GetPlayerData (PlatformId));
     61                                .GetPersistentPlayerList ().GetPlayerData (InternalId));
    6162
    6263                public float LandProtectionMultiplier =>
    6364                        GameManager.Instance.World.GetLandProtectionHardnessModifierForPlayer (GameManager.Instance
    64                                 .GetPersistentPlayerList ().GetPlayerData (PlatformId));
     65                                .GetPersistentPlayerList ().GetPlayerData (InternalId));
    6566
    6667                public float Level {
     
    107108                }
    108109
    109                 public Player (PlatformUserIdentifierAbs _platformId) {
    110                         platformId = _platformId;
     110                public Player (PlatformUserIdentifierAbs _internalId, PlatformUserIdentifierAbs _platformId, PlatformUserIdentifierAbs _crossPlatformId) {
     111                        InternalId = _internalId;
     112                        PlatformId = _platformId;
     113                        CrossPlatformId = _crossPlatformId;
    111114                        inventory = new Inventory ();
    112115                }
     
    117120                        }
    118121
    119                         Log.Out ("Player set to offline: " + platformId);
     122                        Log.Out ("Player set to offline: " + InternalId);
    120123                        lastOnline = DateTime.Now;
    121124                        try {
     
    133136
    134137                public void SetOnline (ClientInfo _ci) {
    135                         Log.Out ("Player set to online: " + platformId);
     138                        Log.Out ("Player set to online: " + InternalId);
    136139                        clientInfo = _ci;
    137140            entityId = _ci.entityId;
  • binary-improvements/7dtd-server-fixes/src/PersistentData/Players.cs

    r369 r446  
    22using System.Collections.Generic;
    33using System.Text.RegularExpressions;
    4 using Platform.Steam;
    54
    65namespace AllocsFixes.PersistentData {
     
    98                public readonly Dictionary<PlatformUserIdentifierAbs, Player> Dict = new Dictionary<PlatformUserIdentifierAbs, Player> ();
    109
    11                 public Player this [PlatformUserIdentifierAbs _platformId, bool _create] {
    12                         get {
    13                                 if (_platformId == null) {
    14                                         return null;
    15                                 }
     10                public int Count => Dict.Count;
    1611
    17                                 if (Dict.TryGetValue (_platformId, out Player pOld)) {
    18                                         return pOld;
    19                                 }
     12                public Player GetOrCreate (PlatformUserIdentifierAbs _internalId, PlatformUserIdentifierAbs _platformId, PlatformUserIdentifierAbs _crossPlatformId) {
     13                        if (_internalId == null) {
     14                                return null;
     15                        }
    2016
    21                                 if (!_create) {
    22                                         return null;
    23                                 }
     17                        if (Dict.TryGetValue (_internalId, out Player pOld)) {
     18                                return pOld;
     19                        }
    2420
    25                                 Log.Out ("Created new player entry for ID: " + _platformId);
    26                                 Player p = new Player (_platformId);
    27                                 Dict.Add (_platformId, p);
    28                                 return p;
    29                         }
     21                        Log.Out ("Created new player entry for ID: " + _internalId);
     22                        Player p = new Player (_internalId, _platformId, _crossPlatformId);
     23                        Dict.Add (_internalId, p);
     24                        return p;
    3025                }
    3126
    32                 public int Count => Dict.Count;
     27                public Player GetByInternalId (PlatformUserIdentifierAbs _internalId) {
     28                        if (_internalId == null) {
     29                                return null;
     30                        }
    3331
    34                 public PlatformUserIdentifierAbs GetSteamID (string _nameOrId, bool _ignoreColorCodes) {
     32                        return Dict.TryGetValue (_internalId, out Player pOld) ? pOld : null;
     33                }
     34
     35                public Player GetByUserId (PlatformUserIdentifierAbs _userId) {
     36                        foreach ((_, Player p) in Dict) {
     37                                if (p.PlatformId.Equals (_userId) || p.CrossPlatformId.Equals (_userId)) {
     38                                        return p;
     39                                }
     40                        }
     41
     42                        return null;
     43                }
     44
     45                public Player GetByString (string _nameOrId, bool _ignoreColorCodes) {
    3546                        if (string.IsNullOrEmpty (_nameOrId)) {
    3647                                return null;
     
    3849
    3950                        if (PlatformUserIdentifierAbs.TryFromCombinedString (_nameOrId, out PlatformUserIdentifierAbs userId)) {
    40                                 return userId;
     51                                return GetByUserId (userId);
    4152                        }
    4253
    4354                        if (int.TryParse (_nameOrId, out int entityId)) {
    44                                 foreach (KeyValuePair<PlatformUserIdentifierAbs, Player> kvp in Dict) {
    45                                         if (kvp.Value.IsOnline && kvp.Value.EntityID == entityId) {
    46                                                 return kvp.Key;
     55                                foreach ((_, Player p) in Dict) {
     56                                        if (p.IsOnline && p.EntityID == entityId) {
     57                                                return p;
    4758                                        }
    4859                                }
    4960                        }
    5061
    51                         foreach (KeyValuePair<PlatformUserIdentifierAbs, Player> kvp in Dict) {
    52                                 string name = kvp.Value.Name;
     62                        foreach ((_, Player p) in Dict) {
     63                                string name = p.Name;
    5364                                if (_ignoreColorCodes) {
    5465                                        name = Regex.Replace (name, "\\[[0-9a-fA-F]{6}\\]", "");
    5566                                }
    5667
    57                                 if (kvp.Value.IsOnline && name.EqualsCaseInsensitive (_nameOrId)) {
    58                                         return kvp.Key;
     68                                if (p.IsOnline && name.EqualsCaseInsensitive (_nameOrId)) {
     69                                        return p;
    5970                                }
    6071                        }
  • binary-improvements/AllocsCommands/Commands/ListKnownPlayers.cs

    r420 r446  
    4545
    4646                        if (userIdFilter != null) {
    47                                 Player p = PersistentContainer.Instance.Players [userIdFilter, false];
     47                                Player p = PersistentContainer.Instance.Players.GetByInternalId (userIdFilter);
    4848
    4949                                if (p != null) {
  • binary-improvements/AllocsCommands/Commands/ListLandProtection.cs

    r420 r446  
    105105                                        "Player \"{0} ({1})\" owns {4} keystones (protected: {2}, current hardness multiplier: {3})",
    106106                                        kvp.Key.Name,
    107                                         kvp.Key.PlatformId,
     107                                        kvp.Key.InternalId,
    108108                                        kvp.Key.LandProtectionActive,
    109109                                        kvp.Key.LandProtectionMultiplier,
     
    112112                                        foreach (Vector3i v in kvp.Value) {
    113113                                                if (parseableOutput) {
    114                                                         SdtdConsole.Instance.Output ("LandProtectionOf: id=" + kvp.Key.PlatformId +
     114                                                        SdtdConsole.Instance.Output ("LandProtectionOf: id=" + kvp.Key.InternalId +
    115115                                                                                     ", playerName=" + kvp.Key.Name + ", location=" + v);
    116116                                                } else {
  • binary-improvements/AllocsCommands/Commands/ShowInventory.cs

    r420 r446  
    1 using System;
    21using System.Collections.Generic;
    32using AllocsFixes.PersistentData;
     
    3029                        }
    3130
    32                         PlatformUserIdentifierAbs steamid = PersistentContainer.Instance.Players.GetSteamID (_params [0], true);
    33                         if (steamid == null) {
     31                        Player p = PersistentContainer.Instance.Players.GetByString (_params [0], true);
     32                        if (p == null) {
    3433                                SdtdConsole.Instance.Output (
    3534                                        "Playername or entity/steamid id not found or no inventory saved (first saved after a player has been online for 30s).");
     
    4241                        }
    4342
    44                         Player p = PersistentContainer.Instance.Players [steamid, false];
    4543                        PersistentData.Inventory inv = p.Inventory;
    4644
     
    164162                                                        }
    165163
    166                                                         DoParts (_parts [i].parts, _indent + 1, _currentMessage);
     164                                                        DoParts (_parts [i].parts, _indent + 1, null);
    167165                                                } else {
    168166                                                        // currentMessage given -> parseable output
  • binary-improvements/AllocsCommands/ModInfo.xml

    r442 r446  
    55                <Description value="Additional commands for server operation" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="23" />
     7                <Version value="24" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
  • binary-improvements/MapRendering/ModInfo.xml

    r442 r446  
    55                <Description value="Render the game map to image map tiles as it is uncovered" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="40" />
     7                <Version value="41" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
  • binary-improvements/MapRendering/Web/API/GetLandClaims.cs

    r420 r446  
    5151
    5252                                owner.Add ("steamid", new JSONString (kvp.Key.PlatformId.CombinedString));
     53                                owner.Add ("crossplatformid", new JSONString (kvp.Key.CrossPlatformId?.CombinedString ?? ""));
    5354                                owner.Add ("claimactive", new JSONBoolean (kvp.Key.LandProtectionActive));
    5455
  • binary-improvements/MapRendering/Web/API/GetPlayerInventories.cs

    r369 r446  
    2020
    2121                                if (p.IsOnline) {
    22                                         AllInventoriesResult.Add (GetPlayerInventory.DoPlayer (kvp.Key.CombinedString, p, showIconColor, showIconName));
     22                                        AllInventoriesResult.Add (GetPlayerInventory.DoPlayer (p, showIconColor, showIconName));
    2323                                }
    2424                        }
  • binary-improvements/MapRendering/Web/API/GetPlayerInventory.cs

    r369 r446  
    2121                        }
    2222
    23                         Player p = PersistentContainer.Instance.Players [userId, false];
     23                        Player p = PersistentContainer.Instance.Players.GetByUserId (userId);
    2424                        if (p == null) {
    2525                                _resp.StatusCode = (int) HttpStatusCode.NotFound;
     
    3030                        GetInventoryArguments (_req, out bool showIconColor, out bool showIconName);
    3131
    32                         JSONObject result = DoPlayer (userIdString, p, showIconColor, showIconName);
     32                        JSONObject result = DoPlayer (p, showIconColor, showIconName);
    3333
    3434                        WriteJSON (_resp, result);
     
    4545                }
    4646
    47                 internal static JSONObject DoPlayer (string _steamId, Player _player, bool _showIconColor, bool _showIconName) {
     47                internal static JSONObject DoPlayer (Player _player, bool _showIconColor, bool _showIconName) {
    4848                        PersistentData.Inventory inv = _player.Inventory;
    4949
     
    5353                        JSONArray belt = new JSONArray ();
    5454                        JSONObject equipment = new JSONObject ();
    55                         result.Add ("userid", new JSONString (_steamId));
     55                        result.Add ("userid", new JSONString (_player.PlatformId.CombinedString));
     56                        result.Add ("crossplatformid", new JSONString (_player.CrossPlatformId?.CombinedString ?? ""));
    5657                        result.Add ("entityid", new JSONNumber (_player.EntityID));
    5758                        result.Add ("playername", new JSONString (_player.Name));
  • binary-improvements/MapRendering/Web/API/GetPlayerList.cs

    r420 r446  
    4949                                Player p = kvp.Value;
    5050
    51                                 if (bViewAll || p.PlatformId.Equals (userId)) {
     51                                if (bViewAll || p.InternalId.Equals (userId)) {
    5252                                        JSONObject pos = new JSONObject ();
    5353                                        pos.Add ("x", new JSONNumber (p.LastPosition.x));
     
    5656
    5757                                        JSONObject pJson = new JSONObject ();
    58                                         pJson.Add ("steamid", new JSONString (kvp.Key.CombinedString));
     58                                        pJson.Add ("steamid", new JSONString (kvp.Value.PlatformId.CombinedString));
     59                                        pJson.Add ("crossplatformid", new JSONString (kvp.Value.CrossPlatformId?.CombinedString ?? ""));
    5960                                        pJson.Add ("entityid", new JSONNumber (p.EntityID));
    6061                                        pJson.Add ("ip", new JSONString (p.IP));
  • binary-improvements/MapRendering/Web/API/GetPlayersLocation.cs

    r420 r446  
    3232
    3333                                if (listOffline || p.IsOnline) {
    34                                         if (bViewAll || p.PlatformId.Equals (userId)) {
     34                                        if (bViewAll || p.InternalId.Equals (userId)) {
    3535                                                JSONObject pos = new JSONObject ();
    3636                                                pos.Add ("x", new JSONNumber (p.LastPosition.x));
     
    3939
    4040                                                JSONObject pJson = new JSONObject ();
    41                                                 pJson.Add ("steamid", new JSONString (kvp.Key.CombinedString));
     41                                                pJson.Add ("steamid", new JSONString (kvp.Value.PlatformId.CombinedString));
     42                                                pJson.Add ("crossplatformid", new JSONString (kvp.Value.CrossPlatformId?.CombinedString ?? ""));
    4243
    4344                                                //                                      pJson.Add("entityid", new JSONNumber (p.EntityID));
  • binary-improvements/MapRendering/Web/API/GetPlayersOnline.cs

    r371 r446  
    1313                        foreach (KeyValuePair<int, EntityPlayer> current in w.Players.dict) {
    1414                                ClientInfo ci = ConnectionManager.Instance.Clients.ForEntityId (current.Key);
    15                                 Player player = PersistentContainer.Instance.Players [ci.InternalId, false];
     15                                Player player = PersistentContainer.Instance.Players.GetByInternalId (ci.InternalId);
    1616
    1717                                JSONObject pos = new JSONObject ();
     
    2222                                JSONObject p = new JSONObject ();
    2323                                p.Add ("steamid", new JSONString (ci.PlatformId.CombinedString));
     24                                p.Add ("crossplatformid", new JSONString (ci.CrossplatformId?.CombinedString ?? ""));
    2425                                p.Add ("entityid", new JSONNumber (ci.entityId));
    2526                                p.Add ("ip", new JSONString (ci.ip));
  • binary-improvements/bin/Mods/Allocs_CommandExtensions/ModInfo.xml

    r442 r446  
    55                <Description value="Additional commands for server operation" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="23" />
     7                <Version value="24" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
  • binary-improvements/bin/Mods/Allocs_CommonFunc/ModInfo.xml

    r443 r446  
    55                <Description value="Common functions" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="26" />
     7                <Version value="27" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
  • binary-improvements/bin/Mods/Allocs_WebAndMapRendering/ModInfo.xml

    r442 r446  
    55                <Description value="Render the game map to image map tiles as it is uncovered" />
    66                <Author value="Christian 'Alloc' Illy" />
    7                 <Version value="40" />
     7                <Version value="41" />
    88                <Website value="http://7dtd.illy.bz" />
    99        </ModInfo>
Note: See TracChangeset for help on using the changeset viewer.