Changed ID to NetHandle. Configure() removed from COOPAPI and replaced by its own functions

This commit is contained in:
EntenKoeniq
2021-12-14 22:39:15 +01:00
parent 721da34e36
commit 98295fee3a
12 changed files with 179 additions and 144 deletions

View File

@ -106,17 +106,17 @@ namespace CoopClient
} }
/// <summary> /// <summary>
/// Get the local ID from this Lidgren network client when connected to a server /// Get the local net handle from this Lidgren network client when connected to a server
/// </summary> /// </summary>
/// <returns>long</returns> /// <returns>long</returns>
public static long GetLocalID() public static long GetLocalID()
{ {
return Main.LocalClientID; return Main.LocalNetHandle;
} }
/// <summary> /// <summary>
/// Get all connected player's as a Dictionary. /// Get all connected player's as a Dictionary.
/// Key = Lidgren-Network client ID /// Key = Lidgren-Network net handle
/// Value = Character handle or null /// Value = Character handle or null
/// </summary> /// </summary>
/// <returns>Dictionary(long, int)</returns> /// <returns>Dictionary(long, int)</returns>
@ -125,7 +125,7 @@ namespace CoopClient
Dictionary<long, int?> result = new Dictionary<long, int?>(); Dictionary<long, int?> result = new Dictionary<long, int?>();
lock (Main.Players) lock (Main.Players)
{ {
foreach (KeyValuePair<long, Entities.EntitiesPlayer> player in Main.Players.Where(x => x.Key != Main.LocalClientID)) foreach (KeyValuePair<long, Entities.EntitiesPlayer> player in Main.Players.Where(x => x.Key != Main.LocalNetHandle))
{ {
result.Add(player.Key, player.Value.Character?.Handle); result.Add(player.Key, player.Value.Character?.Handle);
} }
@ -134,15 +134,15 @@ namespace CoopClient
} }
/// <summary> /// <summary>
/// Get a player using their Lidgren Network Client ID /// Get a player using their Lidgren Network net handle
/// </summary> /// </summary>
/// <param name="lnID">Lidgren-Network client ID</param> /// <param name="handle">Lidgren-Network net handle</param>
/// <returns>Entities.EntitiesPlayer</returns> /// <returns>Entities.EntitiesPlayer</returns>
public static Entities.EntitiesPlayer GetPlayer(long lnID) public static Entities.EntitiesPlayer GetPlayer(long handle)
{ {
lock (Main.Players) lock (Main.Players)
{ {
return Main.Players.ContainsKey(lnID) ? Main.Players[lnID] : null; return Main.Players.ContainsKey(handle) ? Main.Players[handle] : null;
} }
} }
@ -159,7 +159,7 @@ namespace CoopClient
} }
/// <summary> /// <summary>
/// ? /// Check the chat is visible
/// </summary> /// </summary>
public static bool IsChatFocused() public static bool IsChatFocused()
{ {
@ -167,16 +167,18 @@ namespace CoopClient
} }
/// <summary> /// <summary>
/// ? /// Check the list of players is visible
/// </summary> /// </summary>
/// <returns>bool</returns>
public static bool IsPlayerListVisible() public static bool IsPlayerListVisible()
{ {
return Util.GetTickCount64() - PlayerList.Pressed < 5000; return Util.GetTickCount64() - PlayerList.Pressed < 5000;
} }
/// <summary> /// <summary>
/// ? /// Get the version of GTACOOP:R
/// </summary> /// </summary>
/// <returns>string</returns>
public static string GetCurrentVersion() public static string GetCurrentVersion()
{ {
return Main.CurrentVersion; return Main.CurrentVersion;
@ -217,25 +219,58 @@ namespace CoopClient
} }
/// <summary> /// <summary>
/// Get that player's local username that has been set /// Get that player's local username
/// </summary> /// </summary>
/// <returns>string</returns> /// <returns>string</returns>
public static string GetLocalUsername() public static string GetUsername()
{ {
return Main.MainSettings.Username; return Main.MainSettings.Username;
} }
/// <summary>
/// Set a new username for this player
/// </summary>
/// <param name="username">The new username</param>
/// <returns>false if the player already joined a server or the username is null or empty otherwise true</returns>
public static bool SetUsername(string username)
{
if (IsOnServer() || string.IsNullOrEmpty(username))
{
return false;
}
Main.MainSettings.Username = username;
return true;
}
/// <summary>
/// Enable or disable sharing of NPCs with other players
/// </summary>
/// <param name="share"></param>
public static void SetShareNPCs(bool share)
{
Main.ShareNPCsWithPlayers = share;
}
/// <summary>
/// Enable or disable the local traffic for this player
/// </summary>
/// <param name="stop"></param>
public static void SetLocalTraffic(bool stop)
{
Main.DisableTraffic = stop;
}
#if DEBUG
/// <summary> /// <summary>
/// ? /// ?
/// </summary> /// </summary>
public static void Configure(string playerName, bool shareNpcsWithPlayers, bool disableTrafficSharing, bool debug = false) /// <param name="value"></param>
public static void SetDebug(bool value)
{ {
Main.MainSettings.Username = playerName; Main.UseDebug = value;
Main.ShareNpcsWithPlayers = shareNpcsWithPlayers; }
Main.DisableTraffic = disableTrafficSharing;
#if DEBUG
Main.UseDebug = debug;
#endif #endif
} }
}
} }

View File

@ -28,7 +28,7 @@ namespace CoopClient.Entities
private void OnTick(object sender, EventArgs e) private void OnTick(object sender, EventArgs e)
{ {
if (Game.IsLoading || !Main.MainNetworking.IsOnServer() || !Main.NpcsAllowed) if (Game.IsLoading || !Main.MainNetworking.IsOnServer() || !Main.NPCsAllowed)
{ {
return; return;
} }
@ -78,7 +78,7 @@ namespace CoopClient.Entities
} }
// Only if that player wants to share his NPCs with others // Only if that player wants to share his NPCs with others
if (Main.ShareNpcsWithPlayers) if (Main.ShareNPCsWithPlayers)
{ {
// Send all npcs from the current player // Send all npcs from the current player
foreach (Ped ped in World.GetNearbyPeds(Game.Player.Character.Position, 150f) foreach (Ped ped in World.GetNearbyPeds(Game.Player.Character.Position, 150f)

View File

@ -23,9 +23,9 @@ namespace CoopClient
internal static readonly string CurrentVersion = "V1_1_0"; internal static readonly string CurrentVersion = "V1_1_0";
internal static bool ShareNpcsWithPlayers = false; internal static bool ShareNPCsWithPlayers = false;
internal static bool DisableTraffic = false; internal static bool DisableTraffic = false;
internal static bool NpcsAllowed = false; internal static bool NPCsAllowed = false;
private static bool IsGoingToCar = false; private static bool IsGoingToCar = false;
/// <summary> /// <summary>
@ -48,7 +48,7 @@ namespace CoopClient
/// </summary> /// </summary>
public static Chat MainChat = null; public static Chat MainChat = null;
internal static long LocalClientID = 0; internal static long LocalNetHandle = 0;
internal static Dictionary<long, EntitiesPlayer> Players = null; internal static Dictionary<long, EntitiesPlayer> Players = null;
internal static Dictionary<long, EntitiesNpc> NPCs = null; internal static Dictionary<long, EntitiesNpc> NPCs = null;
internal static Dictionary<long, int> NPCsVehicles = null; internal static Dictionary<long, int> NPCsVehicles = null;

View File

@ -100,7 +100,7 @@ namespace CoopClient.Menus
{ {
MainMenu.Items[3].Enabled = true; MainMenu.Items[3].Enabled = true;
MainMenu.Items[3].Title = "Disconnect"; MainMenu.Items[3].Title = "Disconnect";
SubSettings.MainMenu.Items[1].Enabled = !Main.DisableTraffic && Main.NpcsAllowed; SubSettings.MainMenu.Items[1].Enabled = !Main.DisableTraffic && Main.NPCsAllowed;
MainMenu.Visible = false; MainMenu.Visible = false;
ServerList.MainMenu.Visible = false; ServerList.MainMenu.Visible = false;

View File

@ -14,7 +14,7 @@ namespace CoopClient.Menus.Sub
}; };
private readonly NativeCheckboxItem DisableTraffic = new NativeCheckboxItem("Disable Traffic (NPCs/Vehicles)", "Local traffic only", Main.DisableTraffic); private readonly NativeCheckboxItem DisableTraffic = new NativeCheckboxItem("Disable Traffic (NPCs/Vehicles)", "Local traffic only", Main.DisableTraffic);
private readonly NativeCheckboxItem ShareNPCsItem = new NativeCheckboxItem("Share NPCs", "~y~WARNING:~s~ High network traffic!", Main.ShareNpcsWithPlayers) { Enabled = false }; private readonly NativeCheckboxItem ShareNPCsItem = new NativeCheckboxItem("Share NPCs", "~y~WARNING:~s~ High network traffic!", Main.ShareNPCsWithPlayers) { Enabled = false };
private readonly NativeCheckboxItem FlipMenuItem = new NativeCheckboxItem("Flip menu", Main.MainSettings.FlipMenu); private readonly NativeCheckboxItem FlipMenuItem = new NativeCheckboxItem("Flip menu", Main.MainSettings.FlipMenu);
#if DEBUG #if DEBUG
private readonly NativeCheckboxItem UseDebugItem = new NativeCheckboxItem("Debug", Main.UseDebug); private readonly NativeCheckboxItem UseDebugItem = new NativeCheckboxItem("Debug", Main.UseDebug);
@ -27,7 +27,7 @@ namespace CoopClient.Menus.Sub
public Settings() public Settings()
{ {
DisableTraffic.CheckboxChanged += DisableTrafficCheckboxChanged; DisableTraffic.CheckboxChanged += DisableTrafficCheckboxChanged;
ShareNPCsItem.CheckboxChanged += (item, check) => { Main.ShareNpcsWithPlayers = ShareNPCsItem.Checked; }; ShareNPCsItem.CheckboxChanged += (item, check) => { Main.ShareNPCsWithPlayers = ShareNPCsItem.Checked; };
FlipMenuItem.CheckboxChanged += FlipMenuCheckboxChanged; FlipMenuItem.CheckboxChanged += FlipMenuCheckboxChanged;
#if DEBUG #if DEBUG
UseDebugItem.CheckboxChanged += UseDebugCheckboxChanged; UseDebugItem.CheckboxChanged += UseDebugCheckboxChanged;
@ -56,7 +56,7 @@ namespace CoopClient.Menus.Sub
ShareNPCsItem.Enabled = false; ShareNPCsItem.Enabled = false;
} }
else if (Main.NpcsAllowed && !ShareNPCsItem.Enabled) else if (Main.NPCsAllowed && !ShareNPCsItem.Enabled)
{ {
ShareNPCsItem.Enabled = true; ShareNPCsItem.Enabled = true;
} }

View File

@ -61,7 +61,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage(); NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new HandshakePacket() new HandshakePacket()
{ {
ID = 0, NetHandle = 0,
SocialClubName = Game.Player.Name, SocialClubName = Game.Player.Name,
Username = Main.MainSettings.Username, Username = Main.MainSettings.Username,
ModVersion = Main.CurrentVersion, ModVersion = Main.CurrentVersion,
@ -117,8 +117,8 @@ namespace CoopClient
remoteHailMessagePacket.NetIncomingMessageToPacket(message.SenderConnection.RemoteHailMessage); remoteHailMessagePacket.NetIncomingMessageToPacket(message.SenderConnection.RemoteHailMessage);
HandshakePacket handshakePacket = (HandshakePacket)remoteHailMessagePacket; HandshakePacket handshakePacket = (HandshakePacket)remoteHailMessagePacket;
Main.LocalClientID = handshakePacket.ID; Main.LocalNetHandle = handshakePacket.NetHandle;
Main.NpcsAllowed = handshakePacket.NpcsAllowed; Main.NPCsAllowed = handshakePacket.NpcsAllowed;
Main.MainChat.Init(); Main.MainChat.Init();
@ -126,7 +126,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage(); NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new PlayerConnectPacket() new PlayerConnectPacket()
{ {
ID = Main.LocalClientID, NetHandle = Main.LocalNetHandle,
SocialClubName = string.Empty, SocialClubName = string.Empty,
Username = string.Empty Username = string.Empty
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
@ -145,7 +145,7 @@ namespace CoopClient
// Reset all values // Reset all values
LastPlayerFullSync = 0; LastPlayerFullSync = 0;
Main.NpcsAllowed = false; Main.NPCsAllowed = false;
if (Main.MainChat.Focused) if (Main.MainChat.Focused)
{ {
@ -239,7 +239,7 @@ namespace CoopClient
packet = new ModPacket(); packet = new ModPacket();
packet.NetIncomingMessageToPacket(message); packet.NetIncomingMessageToPacket(message);
ModPacket modPacket = (ModPacket)packet; ModPacket modPacket = (ModPacket)packet;
COOPAPI.ModPacketReceived(modPacket.ID, modPacket.Mod, modPacket.CustomPacketID, modPacket.Bytes); COOPAPI.ModPacketReceived(modPacket.NetHandle, modPacket.Mod, modPacket.CustomPacketID, modPacket.Bytes);
break; break;
} }
break; break;
@ -273,15 +273,15 @@ namespace CoopClient
LastUpdateReceived = Util.GetTickCount64() LastUpdateReceived = Util.GetTickCount64()
}; };
Main.Players.Add(packet.ID, player); Main.Players.Add(packet.NetHandle, player);
COOPAPI.Connected(packet.ID); COOPAPI.Connected(packet.NetHandle);
} }
private void PlayerDisconnect(PlayerDisconnectPacket packet) private void PlayerDisconnect(PlayerDisconnectPacket packet)
{ {
if (Main.Players.ContainsKey(packet.ID)) if (Main.Players.ContainsKey(packet.NetHandle))
{ {
EntitiesPlayer player = Main.Players[packet.ID]; EntitiesPlayer player = Main.Players[packet.NetHandle];
if (player.Character != null && player.Character.Exists()) if (player.Character != null && player.Character.Exists())
{ {
player.Character.Kill(); player.Character.Kill();
@ -290,16 +290,16 @@ namespace CoopClient
player.PedBlip?.Delete(); player.PedBlip?.Delete();
COOPAPI.Disconnected(packet.ID); COOPAPI.Disconnected(packet.NetHandle);
Main.Players.Remove(packet.ID); Main.Players.Remove(packet.NetHandle);
} }
} }
private void FullSyncPlayer(FullSyncPlayerPacket packet) private void FullSyncPlayer(FullSyncPlayerPacket packet)
{ {
if (Main.Players.ContainsKey(packet.Extra.ID)) if (Main.Players.ContainsKey(packet.Extra.NetHandle))
{ {
EntitiesPlayer player = Main.Players[packet.Extra.ID]; EntitiesPlayer player = Main.Players[packet.Extra.NetHandle];
player.ModelHash = packet.ModelHash; player.ModelHash = packet.ModelHash;
player.Props = packet.Props; player.Props = packet.Props;
@ -326,9 +326,9 @@ namespace CoopClient
private void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet) private void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet)
{ {
if (Main.Players.ContainsKey(packet.Extra.ID)) if (Main.Players.ContainsKey(packet.Extra.NetHandle))
{ {
EntitiesPlayer player = Main.Players[packet.Extra.ID]; EntitiesPlayer player = Main.Players[packet.Extra.NetHandle];
player.ModelHash = packet.ModelHash; player.ModelHash = packet.ModelHash;
player.Props = packet.Props; player.Props = packet.Props;
@ -366,9 +366,9 @@ namespace CoopClient
private void LightSyncPlayer(LightSyncPlayerPacket packet) private void LightSyncPlayer(LightSyncPlayerPacket packet)
{ {
if (Main.Players.ContainsKey(packet.Extra.ID)) if (Main.Players.ContainsKey(packet.Extra.NetHandle))
{ {
EntitiesPlayer player = Main.Players[packet.Extra.ID]; EntitiesPlayer player = Main.Players[packet.Extra.NetHandle];
player.Health = packet.Extra.Health; player.Health = packet.Extra.Health;
player.Position = packet.Extra.Position.ToVector(); player.Position = packet.Extra.Position.ToVector();
@ -393,9 +393,9 @@ namespace CoopClient
private void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet) private void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet)
{ {
if (Main.Players.ContainsKey(packet.Extra.ID)) if (Main.Players.ContainsKey(packet.Extra.NetHandle))
{ {
EntitiesPlayer player = Main.Players[packet.Extra.ID]; EntitiesPlayer player = Main.Players[packet.Extra.NetHandle];
player.Health = packet.Extra.Health; player.Health = packet.Extra.Health;
player.Position = packet.Extra.Position.ToVector(); player.Position = packet.Extra.Position.ToVector();
@ -423,9 +423,9 @@ namespace CoopClient
private void SuperLightSyncPlayer(SuperLightSyncPlayerPacket packet) private void SuperLightSyncPlayer(SuperLightSyncPlayerPacket packet)
{ {
if (Main.Players.ContainsKey(packet.Extra.ID)) if (Main.Players.ContainsKey(packet.Extra.NetHandle))
{ {
EntitiesPlayer player = Main.Players[packet.Extra.ID]; EntitiesPlayer player = Main.Players[packet.Extra.NetHandle];
player.Health = packet.Extra.Health; player.Health = packet.Extra.Health;
player.Position = packet.Extra.Position.ToVector(); player.Position = packet.Extra.Position.ToVector();
@ -554,7 +554,7 @@ namespace CoopClient
Hash = 0, Hash = 0,
Args = null, Args = null,
Type = result, Type = result,
ID = packet.ID NetHandle = packet.NetHandle
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered, (int)ConnectionChannel.Native); Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered, (int)ConnectionChannel.Native);
Client.FlushSendQueue(); Client.FlushSendQueue();
@ -566,9 +566,9 @@ namespace CoopClient
{ {
lock (Main.NPCs) lock (Main.NPCs)
{ {
if (Main.NPCs.ContainsKey(packet.ID)) if (Main.NPCs.ContainsKey(packet.NetHandle))
{ {
EntitiesNpc npc = Main.NPCs[packet.ID]; EntitiesNpc npc = Main.NPCs[packet.NetHandle];
// "if" this NPC has left a vehicle // "if" this NPC has left a vehicle
npc.NPCVehHandle = 0; npc.NPCVehHandle = 0;
@ -595,7 +595,7 @@ namespace CoopClient
} }
else else
{ {
Main.NPCs.Add(packet.ID, new EntitiesNpc() Main.NPCs.Add(packet.NetHandle, new EntitiesNpc()
{ {
ModelHash = packet.ModelHash, ModelHash = packet.ModelHash,
Props = packet.Props, Props = packet.Props,
@ -625,9 +625,9 @@ namespace CoopClient
{ {
lock (Main.NPCs) lock (Main.NPCs)
{ {
if (Main.NPCs.ContainsKey(packet.ID)) if (Main.NPCs.ContainsKey(packet.NetHandle))
{ {
EntitiesNpc npc = Main.NPCs[packet.ID]; EntitiesNpc npc = Main.NPCs[packet.NetHandle];
npc.NPCVehHandle = packet.VehHandle; npc.NPCVehHandle = packet.VehHandle;
@ -662,7 +662,7 @@ namespace CoopClient
} }
else else
{ {
Main.NPCs.Add(packet.ID, new EntitiesNpc() Main.NPCs.Add(packet.NetHandle, new EntitiesNpc()
{ {
NPCVehHandle = packet.VehHandle, NPCVehHandle = packet.VehHandle,
@ -730,7 +730,7 @@ namespace CoopClient
{ {
Extra = new PlayerPacket() Extra = new PlayerPacket()
{ {
ID = Main.LocalClientID, NetHandle = Main.LocalNetHandle,
Health = player.Health, Health = player.Health,
Position = player.Position.ToLVector() Position = player.Position.ToLVector()
}, },
@ -760,7 +760,7 @@ namespace CoopClient
{ {
Extra = new PlayerPacket() Extra = new PlayerPacket()
{ {
ID = Main.LocalClientID, NetHandle = Main.LocalNetHandle,
Health = player.Health, Health = player.Health,
Position = player.Position.ToLVector() Position = player.Position.ToLVector()
}, },
@ -789,7 +789,7 @@ namespace CoopClient
{ {
Extra = new PlayerPacket() Extra = new PlayerPacket()
{ {
ID = Main.LocalClientID, NetHandle = Main.LocalNetHandle,
Health = player.Health, Health = player.Health,
Position = player.Position.ToLVector() Position = player.Position.ToLVector()
}, },
@ -809,7 +809,7 @@ namespace CoopClient
{ {
Extra = new PlayerPacket() Extra = new PlayerPacket()
{ {
ID = Main.LocalClientID, NetHandle = Main.LocalNetHandle,
Health = player.Health, Health = player.Health,
Position = player.Position.ToLVector() Position = player.Position.ToLVector()
}, },
@ -852,8 +852,8 @@ namespace CoopClient
new FullSyncNpcVehPacket() new FullSyncNpcVehPacket()
{ {
ID = Main.LocalClientID + npc.Handle, NetHandle = Main.LocalNetHandle + npc.Handle,
VehHandle = Main.LocalClientID + veh.Handle, VehHandle = Main.LocalNetHandle + veh.Handle,
ModelHash = npc.Model.Hash, ModelHash = npc.Model.Hash,
Props = npc.GetPedProps(), Props = npc.GetPedProps(),
Health = npc.Health, Health = npc.Health,
@ -879,7 +879,7 @@ namespace CoopClient
{ {
new FullSyncNpcPacket() new FullSyncNpcPacket()
{ {
ID = Main.LocalClientID + npc.Handle, NetHandle = Main.LocalNetHandle + npc.Handle,
ModelHash = npc.Model.Hash, ModelHash = npc.Model.Hash,
Props = npc.GetPedProps(), Props = npc.GetPedProps(),
Health = npc.Health, Health = npc.Health,
@ -928,7 +928,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage(); NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new ModPacket() new ModPacket()
{ {
ID = Main.LocalClientID, NetHandle = Main.LocalNetHandle,
Target = target, Target = target,
Mod = mod, Mod = mod,
CustomPacketID = customID, CustomPacketID = customID,

View File

@ -228,7 +228,7 @@ namespace CoopClient
class ModPacket : Packet class ModPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public long Target { get; set; } public long Target { get; set; }
@ -258,7 +258,7 @@ namespace CoopClient
ModPacket data = message.ReadBytes(len).Deserialize<ModPacket>(); ModPacket data = message.ReadBytes(len).Deserialize<ModPacket>();
ID = data.ID; NetHandle = data.NetHandle;
Target = data.Target; Target = data.Target;
Mod = data.Mod; Mod = data.Mod;
CustomPacketID = data.CustomPacketID; CustomPacketID = data.CustomPacketID;
@ -271,7 +271,7 @@ namespace CoopClient
class HandshakePacket : Packet class HandshakePacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -301,7 +301,7 @@ namespace CoopClient
HandshakePacket data = message.ReadBytes(len).Deserialize<HandshakePacket>(); HandshakePacket data = message.ReadBytes(len).Deserialize<HandshakePacket>();
ID = data.ID; NetHandle = data.NetHandle;
SocialClubName = data.SocialClubName; SocialClubName = data.SocialClubName;
Username = data.Username; Username = data.Username;
ModVersion = data.ModVersion; ModVersion = data.ModVersion;
@ -313,7 +313,7 @@ namespace CoopClient
class PlayerConnectPacket : Packet class PlayerConnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -337,7 +337,7 @@ namespace CoopClient
PlayerConnectPacket data = message.ReadBytes(len).Deserialize<PlayerConnectPacket>(); PlayerConnectPacket data = message.ReadBytes(len).Deserialize<PlayerConnectPacket>();
ID = data.ID; NetHandle = data.NetHandle;
SocialClubName = data.SocialClubName; SocialClubName = data.SocialClubName;
Username = data.Username; Username = data.Username;
} }
@ -347,7 +347,7 @@ namespace CoopClient
class PlayerDisconnectPacket : Packet class PlayerDisconnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message) public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
{ {
@ -365,7 +365,7 @@ namespace CoopClient
PlayerDisconnectPacket data = message.ReadBytes(len).Deserialize<PlayerDisconnectPacket>(); PlayerDisconnectPacket data = message.ReadBytes(len).Deserialize<PlayerDisconnectPacket>();
ID = data.ID; NetHandle = data.NetHandle;
} }
} }
@ -373,7 +373,7 @@ namespace CoopClient
struct PlayerPacket struct PlayerPacket
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int Health { get; set; } public int Health { get; set; }
@ -749,7 +749,7 @@ namespace CoopClient
public NativeArgument Type { get; set; } public NativeArgument Type { get; set; }
[ProtoMember(4)] [ProtoMember(4)]
public long ID { get; set; } public long NetHandle { get; set; }
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message) public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
{ {
@ -770,7 +770,7 @@ namespace CoopClient
Hash = data.Hash; Hash = data.Hash;
Args = data.Args; Args = data.Args;
Type = data.Type; Type = data.Type;
ID = data.ID; NetHandle = data.NetHandle;
} }
} }
@ -824,7 +824,7 @@ namespace CoopClient
class FullSyncNpcPacket : Packet class FullSyncNpcPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int ModelHash { get; set; } public int ModelHash { get; set; }
@ -872,7 +872,7 @@ namespace CoopClient
FullSyncNpcPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcPacket>(); FullSyncNpcPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcPacket>();
ID = data.ID; NetHandle = data.NetHandle;
ModelHash = data.ModelHash; ModelHash = data.ModelHash;
Props = data.Props; Props = data.Props;
Health = data.Health; Health = data.Health;
@ -890,7 +890,7 @@ namespace CoopClient
class FullSyncNpcVehPacket : Packet class FullSyncNpcVehPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public long VehHandle { get; set; } public long VehHandle { get; set; }
@ -968,7 +968,7 @@ namespace CoopClient
FullSyncNpcVehPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcVehPacket>(); FullSyncNpcVehPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcVehPacket>();
ID = data.ID; NetHandle = data.NetHandle;
VehHandle = data.VehHandle; VehHandle = data.VehHandle;
ModelHash = data.ModelHash; ModelHash = data.ModelHash;
Props = data.Props; Props = data.Props;

View File

@ -7,7 +7,7 @@ namespace CoopServer
{ {
public class Client public class Client
{ {
public long ID = 0; public long NetHandle = 0;
public float Latency = 0.0f; public float Latency = 0.0f;
public PlayerData Player; public PlayerData Player;
private readonly Dictionary<string, object> CustomData = new(); private readonly Dictionary<string, object> CustomData = new();
@ -48,18 +48,18 @@ namespace CoopServer
#region FUNCTIONS #region FUNCTIONS
public void Kick(string[] reason) public void Kick(string[] reason)
{ {
Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID)?.Disconnect(string.Join(" ", reason)); Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle)?.Disconnect(string.Join(" ", reason));
} }
public void Kick(string reason) public void Kick(string reason)
{ {
Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID)?.Disconnect(reason); Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle)?.Disconnect(reason);
} }
public void SendChatMessage(string message, string from = "Server") public void SendChatMessage(string message, string from = "Server")
{ {
try try
{ {
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID); NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
if (userConnection == null) if (userConnection == null)
{ {
return; return;
@ -85,10 +85,10 @@ namespace CoopServer
{ {
try try
{ {
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID); NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
if (userConnection == null) if (userConnection == null)
{ {
Logging.Error($"[Client->SendNativeCall(ulong hash, params object[] args)]: Connection \"{ID}\" not found!"); Logging.Error($"[Client->SendNativeCall(ulong hash, params object[] args)]: Connection \"{NetHandle}\" not found!");
return; return;
} }
@ -124,10 +124,10 @@ namespace CoopServer
{ {
try try
{ {
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID); NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
if (userConnection == null) if (userConnection == null)
{ {
Logging.Error($"[Client->SendNativeResponse(Action<object> callback, ulong hash, Type type, params object[] args)]: Connection \"{ID}\" not found!"); Logging.Error($"[Client->SendNativeResponse(Action<object> callback, ulong hash, Type type, params object[] args)]: Connection \"{NetHandle}\" not found!");
return; return;
} }
@ -178,7 +178,7 @@ namespace CoopServer
Hash = hash, Hash = hash,
Args = arguments, Args = arguments,
Type = returnType, Type = returnType,
ID = id NetHandle = id
}; };
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
@ -195,7 +195,7 @@ namespace CoopServer
{ {
try try
{ {
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID); NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
if (userConnection == null) if (userConnection == null)
{ {
return; return;
@ -204,7 +204,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
new ModPacket() new ModPacket()
{ {
ID = 0, NetHandle = 0,
Target = 0, Target = 0,
Mod = mod, Mod = mod,
CustomPacketID = customID, CustomPacketID = customID,

View File

@ -143,7 +143,7 @@ namespace CoopServer
class ModPacket : Packet class ModPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public long Target { get; set; } public long Target { get; set; }
@ -173,7 +173,7 @@ namespace CoopServer
ModPacket data = message.ReadBytes(len).Deserialize<ModPacket>(); ModPacket data = message.ReadBytes(len).Deserialize<ModPacket>();
ID = data.ID; NetHandle = data.NetHandle;
Target = data.Target; Target = data.Target;
Mod = data.Mod; Mod = data.Mod;
CustomPacketID = data.CustomPacketID; CustomPacketID = data.CustomPacketID;
@ -186,7 +186,7 @@ namespace CoopServer
class HandshakePacket : Packet class HandshakePacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -216,7 +216,7 @@ namespace CoopServer
HandshakePacket data = message.ReadBytes(len).Deserialize<HandshakePacket>(); HandshakePacket data = message.ReadBytes(len).Deserialize<HandshakePacket>();
ID = data.ID; NetHandle = data.NetHandle;
SocialClubName = data.SocialClubName; SocialClubName = data.SocialClubName;
Username = data.Username; Username = data.Username;
ModVersion = data.ModVersion; ModVersion = data.ModVersion;
@ -228,7 +228,7 @@ namespace CoopServer
class PlayerConnectPacket : Packet class PlayerConnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -252,7 +252,7 @@ namespace CoopServer
PlayerConnectPacket data = message.ReadBytes(len).Deserialize<PlayerConnectPacket>(); PlayerConnectPacket data = message.ReadBytes(len).Deserialize<PlayerConnectPacket>();
ID = data.ID; NetHandle = data.NetHandle;
SocialClubName = data.SocialClubName; SocialClubName = data.SocialClubName;
Username = data.Username; Username = data.Username;
} }
@ -262,7 +262,7 @@ namespace CoopServer
class PlayerDisconnectPacket : Packet class PlayerDisconnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message) public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
{ {
@ -280,7 +280,7 @@ namespace CoopServer
PlayerDisconnectPacket data = message.ReadBytes(len).Deserialize<PlayerDisconnectPacket>(); PlayerDisconnectPacket data = message.ReadBytes(len).Deserialize<PlayerDisconnectPacket>();
ID = data.ID; NetHandle = data.NetHandle;
} }
} }
@ -288,7 +288,7 @@ namespace CoopServer
struct PlayerPacket struct PlayerPacket
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int Health { get; set; } public int Health { get; set; }
@ -664,7 +664,7 @@ namespace CoopServer
public NativeArgument Type { get; set; } public NativeArgument Type { get; set; }
[ProtoMember(4)] [ProtoMember(4)]
public long ID { get; set; } public long NetHandle { get; set; }
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message) public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
{ {
@ -685,7 +685,7 @@ namespace CoopServer
Hash = data.Hash; Hash = data.Hash;
Args = data.Args; Args = data.Args;
Type = data.Type; Type = data.Type;
ID = data.ID; NetHandle = data.NetHandle;
} }
} }
@ -739,7 +739,7 @@ namespace CoopServer
class FullSyncNpcPacket : Packet class FullSyncNpcPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int ModelHash { get; set; } public int ModelHash { get; set; }
@ -787,7 +787,7 @@ namespace CoopServer
FullSyncNpcPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcPacket>(); FullSyncNpcPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcPacket>();
ID = data.ID; NetHandle = data.NetHandle;
ModelHash = data.ModelHash; ModelHash = data.ModelHash;
Props = data.Props; Props = data.Props;
Health = data.Health; Health = data.Health;
@ -805,7 +805,7 @@ namespace CoopServer
class FullSyncNpcVehPacket : Packet class FullSyncNpcVehPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public long ID { get; set; } public long NetHandle { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public long VehHandle { get; set; } public long VehHandle { get; set; }
@ -883,7 +883,7 @@ namespace CoopServer
FullSyncNpcVehPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcVehPacket>(); FullSyncNpcVehPacket data = message.ReadBytes(len).Deserialize<FullSyncNpcVehPacket>();
ID = data.ID; NetHandle = data.NetHandle;
VehHandle = data.VehHandle; VehHandle = data.VehHandle;
ModelHash = data.ModelHash; ModelHash = data.ModelHash;
Props = data.Props; Props = data.Props;

View File

@ -371,10 +371,10 @@ namespace CoopServer
packet.NetIncomingMessageToPacket(message); packet.NetIncomingMessageToPacket(message);
NativeResponsePacket responsePacket = (NativeResponsePacket)packet; NativeResponsePacket responsePacket = (NativeResponsePacket)packet;
Client client = Clients.Find(x => x.ID == message.SenderConnection.RemoteUniqueIdentifier); Client client = Clients.Find(x => x.NetHandle == message.SenderConnection.RemoteUniqueIdentifier);
if (client != null) if (client != null)
{ {
if (client.Callbacks.ContainsKey(responsePacket.ID)) if (client.Callbacks.ContainsKey(responsePacket.NetHandle))
{ {
object resp = null; object resp = null;
if (responsePacket.Type is IntArgument argument) if (responsePacket.Type is IntArgument argument)
@ -398,8 +398,8 @@ namespace CoopServer
resp = argument4.Data; resp = argument4.Data;
} }
client.Callbacks[responsePacket.ID].Invoke(resp); client.Callbacks[responsePacket.NetHandle].Invoke(resp);
client.Callbacks.Remove(responsePacket.ID); client.Callbacks.Remove(responsePacket.NetHandle);
} }
} }
} }
@ -418,7 +418,7 @@ namespace CoopServer
packet.NetIncomingMessageToPacket(message); packet.NetIncomingMessageToPacket(message);
ModPacket modPacket = (ModPacket)packet; ModPacket modPacket = (ModPacket)packet;
if (MainResource != null && if (MainResource != null &&
MainResource.InvokeModPacketReceived(modPacket.ID, modPacket.Target, modPacket.Mod, modPacket.CustomPacketID, modPacket.Bytes)) MainResource.InvokeModPacketReceived(modPacket.NetHandle, modPacket.Target, modPacket.Mod, modPacket.CustomPacketID, modPacket.Bytes))
{ {
// Was canceled // Was canceled
} }
@ -464,7 +464,7 @@ namespace CoopServer
break; break;
case NetIncomingMessageType.ConnectionLatencyUpdated: case NetIncomingMessageType.ConnectionLatencyUpdated:
{ {
Client client = Clients.Find(x => x.ID == message.SenderConnection.RemoteUniqueIdentifier); Client client = Clients.Find(x => x.NetHandle == message.SenderConnection.RemoteUniqueIdentifier);
if (client != null) if (client != null)
{ {
client.Latency = message.ReadFloat(); client.Latency = message.ReadFloat();
@ -572,7 +572,7 @@ namespace CoopServer
return; return;
} }
long localID = local.RemoteUniqueIdentifier; long localNetHandle = local.RemoteUniqueIdentifier;
Client tmpClient; Client tmpClient;
@ -582,7 +582,7 @@ namespace CoopServer
Clients.Add( Clients.Add(
tmpClient = new Client() tmpClient = new Client()
{ {
ID = localID, NetHandle = localNetHandle,
Player = new() Player = new()
{ {
SocialClubName = packet.SocialClubName, SocialClubName = packet.SocialClubName,
@ -597,7 +597,7 @@ namespace CoopServer
// Create a new handshake packet // Create a new handshake packet
new HandshakePacket() new HandshakePacket()
{ {
ID = localID, NetHandle = localNetHandle,
SocialClubName = string.Empty, SocialClubName = string.Empty,
Username = string.Empty, Username = string.Empty,
ModVersion = string.Empty, ModVersion = string.Empty,
@ -616,7 +616,7 @@ namespace CoopServer
// The connection has been approved, now we need to send all other players to the new player and the new player to all players // The connection has been approved, now we need to send all other players to the new player and the new player to all players
private static void SendPlayerConnectPacket(NetConnection local, PlayerConnectPacket packet) private static void SendPlayerConnectPacket(NetConnection local, PlayerConnectPacket packet)
{ {
Client localClient = Clients.Find(x => x.ID == packet.ID); Client localClient = Clients.Find(x => x.NetHandle == packet.NetHandle);
if (localClient == null) if (localClient == null)
{ {
local.Disconnect("No data found!"); local.Disconnect("No data found!");
@ -629,15 +629,15 @@ namespace CoopServer
// Send all players to local // Send all players to local
clients.ForEach(targetPlayer => clients.ForEach(targetPlayer =>
{ {
long targetPlayerID = targetPlayer.RemoteUniqueIdentifier; long targetNetHandle = targetPlayer.RemoteUniqueIdentifier;
Client targetClient = Clients.Find(x => x.ID == targetPlayerID); Client targetClient = Clients.Find(x => x.NetHandle == targetNetHandle);
if (targetClient != null) if (targetClient != null)
{ {
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
new PlayerConnectPacket() new PlayerConnectPacket()
{ {
ID = targetPlayerID, NetHandle = targetNetHandle,
SocialClubName = targetClient.Player.SocialClubName, SocialClubName = targetClient.Player.SocialClubName,
Username = targetClient.Player.Username Username = targetClient.Player.Username
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
@ -649,7 +649,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
new PlayerConnectPacket() new PlayerConnectPacket()
{ {
ID = packet.ID, NetHandle = packet.NetHandle,
SocialClubName = localClient.Player.SocialClubName, SocialClubName = localClient.Player.SocialClubName,
Username = localClient.Player.Username Username = localClient.Player.Username
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
@ -680,12 +680,12 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
new PlayerDisconnectPacket() new PlayerDisconnectPacket()
{ {
ID = clientID NetHandle = clientID
}.PacketToNetOutGoingMessage(outgoingMessage); }.PacketToNetOutGoingMessage(outgoingMessage);
MainNetServer.SendMessage(outgoingMessage, clients, NetDeliveryMethod.ReliableOrdered, 0); MainNetServer.SendMessage(outgoingMessage, clients, NetDeliveryMethod.ReliableOrdered, 0);
} }
Client localClient = Clients.Find(x => x.ID == clientID); Client localClient = Clients.Find(x => x.NetHandle == clientID);
if (localClient == null) if (localClient == null)
{ {
return; return;
@ -705,7 +705,7 @@ namespace CoopServer
private static void FullSyncPlayer(FullSyncPlayerPacket packet) private static void FullSyncPlayer(FullSyncPlayerPacket packet)
{ {
Client client = Util.GetClientByID(packet.Extra.ID); Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null) if (client == null)
{ {
return; return;
@ -718,11 +718,11 @@ namespace CoopServer
packet.Extra = playerPacket; packet.Extra = playerPacket;
MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.ID).ForEach(x => MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.NetHandle).ForEach(x =>
{ {
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
if (Clients.First(y => y.ID == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f)) if (Clients.First(y => y.NetHandle == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f))
{ {
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
} }
@ -745,7 +745,7 @@ namespace CoopServer
private static void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet) private static void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet)
{ {
Client client = Util.GetClientByID(packet.Extra.ID); Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null) if (client == null)
{ {
return; return;
@ -758,11 +758,11 @@ namespace CoopServer
packet.Extra = playerPacket; packet.Extra = playerPacket;
MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.ID).ForEach(x => MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.NetHandle).ForEach(x =>
{ {
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
if (Clients.First(y => y.ID == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f)) if (Clients.First(y => y.NetHandle == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f))
{ {
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
} }
@ -785,7 +785,7 @@ namespace CoopServer
private static void LightSyncPlayer(LightSyncPlayerPacket packet) private static void LightSyncPlayer(LightSyncPlayerPacket packet)
{ {
Client client = Util.GetClientByID(packet.Extra.ID); Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null) if (client == null)
{ {
return; return;
@ -798,11 +798,11 @@ namespace CoopServer
packet.Extra = playerPacket; packet.Extra = playerPacket;
MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.ID).ForEach(x => MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.NetHandle).ForEach(x =>
{ {
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
if (Clients.First(y => y.ID == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f)) if (Clients.First(y => y.NetHandle == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f))
{ {
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
} }
@ -825,7 +825,7 @@ namespace CoopServer
private static void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet) private static void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet)
{ {
Client client = Util.GetClientByID(packet.Extra.ID); Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null) if (client == null)
{ {
return; return;
@ -838,11 +838,11 @@ namespace CoopServer
packet.Extra = playerPacket; packet.Extra = playerPacket;
MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.ID).ForEach(x => MainNetServer.Connections.FindAll(x => x.RemoteUniqueIdentifier != packet.Extra.NetHandle).ForEach(x =>
{ {
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
if (Clients.First(y => y.ID == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f)) if (Clients.First(y => y.NetHandle == x.RemoteUniqueIdentifier).Player.IsInRangeOf(packet.Extra.Position, 550f))
{ {
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
} }

View File

@ -214,7 +214,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
new ModPacket() new ModPacket()
{ {
ID = 0, NetHandle = 0,
Target = 0, Target = 0,
Mod = mod, Mod = mod,
CustomPacketID = customID, CustomPacketID = customID,

View File

@ -52,12 +52,12 @@ namespace CoopServer
return result; return result;
} }
public static Client GetClientByID(long id) public static Client GetClientByNetHandle(long netHandle)
{ {
Client result = Server.Clients.Find(x => x.ID == id); Client result = Server.Clients.Find(x => x.NetHandle == netHandle);
if (result == null) if (result == null)
{ {
NetConnection localConn = Server.MainNetServer.Connections.Find(x => id == x.RemoteUniqueIdentifier); NetConnection localConn = Server.MainNetServer.Connections.Find(x => netHandle == x.RemoteUniqueIdentifier);
if (localConn != null) if (localConn != null)
{ {
localConn.Disconnect("No data found!"); localConn.Disconnect("No data found!");
@ -76,7 +76,7 @@ namespace CoopServer
return null; return null;
} }
return Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == client.ID); return Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == client.NetHandle);
} }
// Return a list of all connections but not the local connection // Return a list of all connections but not the local connection
@ -94,7 +94,7 @@ namespace CoopServer
{ {
return new(Server.MainNetServer.Connections.FindAll(e => return new(Server.MainNetServer.Connections.FindAll(e =>
{ {
Client client = Server.Clients.First(x => x.ID == e.RemoteUniqueIdentifier); Client client = Server.Clients.First(x => x.NetHandle == e.RemoteUniqueIdentifier);
return client != null && client.Player.IsInRangeOf(position, range); return client != null && client.Player.IsInRangeOf(position, range);
})); }));
} }
@ -103,7 +103,7 @@ namespace CoopServer
{ {
return new(Server.MainNetServer.Connections.Where(e => return new(Server.MainNetServer.Connections.Where(e =>
{ {
Client client = Server.Clients.First(x => x.ID == e.RemoteUniqueIdentifier); Client client = Server.Clients.First(x => x.NetHandle == e.RemoteUniqueIdentifier);
return e != local && client != null && client.Player.IsInRangeOf(position, range); return e != local && client != null && client.Player.IsInRangeOf(position, range);
})); }));
} }