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>
/// 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>
/// <returns>long</returns>
public static long GetLocalID()
{
return Main.LocalClientID;
return Main.LocalNetHandle;
}
/// <summary>
/// Get all connected player's as a Dictionary.
/// Key = Lidgren-Network client ID
/// Key = Lidgren-Network net handle
/// Value = Character handle or null
/// </summary>
/// <returns>Dictionary(long, int)</returns>
@ -125,7 +125,7 @@ namespace CoopClient
Dictionary<long, int?> result = new Dictionary<long, int?>();
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);
}
@ -134,15 +134,15 @@ namespace CoopClient
}
/// <summary>
/// Get a player using their Lidgren Network Client ID
/// Get a player using their Lidgren Network net handle
/// </summary>
/// <param name="lnID">Lidgren-Network client ID</param>
/// <param name="handle">Lidgren-Network net handle</param>
/// <returns>Entities.EntitiesPlayer</returns>
public static Entities.EntitiesPlayer GetPlayer(long lnID)
public static Entities.EntitiesPlayer GetPlayer(long handle)
{
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>
/// ?
/// Check the chat is visible
/// </summary>
public static bool IsChatFocused()
{
@ -167,16 +167,18 @@ namespace CoopClient
}
/// <summary>
/// ?
/// Check the list of players is visible
/// </summary>
/// <returns>bool</returns>
public static bool IsPlayerListVisible()
{
return Util.GetTickCount64() - PlayerList.Pressed < 5000;
}
/// <summary>
/// ?
/// Get the version of GTACOOP:R
/// </summary>
/// <returns>string</returns>
public static string GetCurrentVersion()
{
return Main.CurrentVersion;
@ -217,25 +219,58 @@ namespace CoopClient
}
/// <summary>
/// Get that player's local username that has been set
/// Get that player's local username
/// </summary>
/// <returns>string</returns>
public static string GetLocalUsername()
public static string GetUsername()
{
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>
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.ShareNpcsWithPlayers = shareNpcsWithPlayers;
Main.DisableTraffic = disableTrafficSharing;
#if DEBUG
Main.UseDebug = debug;
Main.UseDebug = value;
}
#endif
}
}
}

View File

@ -28,7 +28,7 @@ namespace CoopClient.Entities
private void OnTick(object sender, EventArgs e)
{
if (Game.IsLoading || !Main.MainNetworking.IsOnServer() || !Main.NpcsAllowed)
if (Game.IsLoading || !Main.MainNetworking.IsOnServer() || !Main.NPCsAllowed)
{
return;
}
@ -78,7 +78,7 @@ namespace CoopClient.Entities
}
// Only if that player wants to share his NPCs with others
if (Main.ShareNpcsWithPlayers)
if (Main.ShareNPCsWithPlayers)
{
// Send all npcs from the current player
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 bool ShareNpcsWithPlayers = false;
internal static bool ShareNPCsWithPlayers = false;
internal static bool DisableTraffic = false;
internal static bool NpcsAllowed = false;
internal static bool NPCsAllowed = false;
private static bool IsGoingToCar = false;
/// <summary>
@ -48,7 +48,7 @@ namespace CoopClient
/// </summary>
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, EntitiesNpc> NPCs = 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].Title = "Disconnect";
SubSettings.MainMenu.Items[1].Enabled = !Main.DisableTraffic && Main.NpcsAllowed;
SubSettings.MainMenu.Items[1].Enabled = !Main.DisableTraffic && Main.NPCsAllowed;
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 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);
#if DEBUG
private readonly NativeCheckboxItem UseDebugItem = new NativeCheckboxItem("Debug", Main.UseDebug);
@ -27,7 +27,7 @@ namespace CoopClient.Menus.Sub
public Settings()
{
DisableTraffic.CheckboxChanged += DisableTrafficCheckboxChanged;
ShareNPCsItem.CheckboxChanged += (item, check) => { Main.ShareNpcsWithPlayers = ShareNPCsItem.Checked; };
ShareNPCsItem.CheckboxChanged += (item, check) => { Main.ShareNPCsWithPlayers = ShareNPCsItem.Checked; };
FlipMenuItem.CheckboxChanged += FlipMenuCheckboxChanged;
#if DEBUG
UseDebugItem.CheckboxChanged += UseDebugCheckboxChanged;
@ -56,7 +56,7 @@ namespace CoopClient.Menus.Sub
ShareNPCsItem.Enabled = false;
}
else if (Main.NpcsAllowed && !ShareNPCsItem.Enabled)
else if (Main.NPCsAllowed && !ShareNPCsItem.Enabled)
{
ShareNPCsItem.Enabled = true;
}

View File

@ -61,7 +61,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new HandshakePacket()
{
ID = 0,
NetHandle = 0,
SocialClubName = Game.Player.Name,
Username = Main.MainSettings.Username,
ModVersion = Main.CurrentVersion,
@ -117,8 +117,8 @@ namespace CoopClient
remoteHailMessagePacket.NetIncomingMessageToPacket(message.SenderConnection.RemoteHailMessage);
HandshakePacket handshakePacket = (HandshakePacket)remoteHailMessagePacket;
Main.LocalClientID = handshakePacket.ID;
Main.NpcsAllowed = handshakePacket.NpcsAllowed;
Main.LocalNetHandle = handshakePacket.NetHandle;
Main.NPCsAllowed = handshakePacket.NpcsAllowed;
Main.MainChat.Init();
@ -126,7 +126,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new PlayerConnectPacket()
{
ID = Main.LocalClientID,
NetHandle = Main.LocalNetHandle,
SocialClubName = string.Empty,
Username = string.Empty
}.PacketToNetOutGoingMessage(outgoingMessage);
@ -145,7 +145,7 @@ namespace CoopClient
// Reset all values
LastPlayerFullSync = 0;
Main.NpcsAllowed = false;
Main.NPCsAllowed = false;
if (Main.MainChat.Focused)
{
@ -239,7 +239,7 @@ namespace CoopClient
packet = new ModPacket();
packet.NetIncomingMessageToPacket(message);
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;
@ -273,15 +273,15 @@ namespace CoopClient
LastUpdateReceived = Util.GetTickCount64()
};
Main.Players.Add(packet.ID, player);
COOPAPI.Connected(packet.ID);
Main.Players.Add(packet.NetHandle, player);
COOPAPI.Connected(packet.NetHandle);
}
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())
{
player.Character.Kill();
@ -290,16 +290,16 @@ namespace CoopClient
player.PedBlip?.Delete();
COOPAPI.Disconnected(packet.ID);
Main.Players.Remove(packet.ID);
COOPAPI.Disconnected(packet.NetHandle);
Main.Players.Remove(packet.NetHandle);
}
}
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.Props = packet.Props;
@ -326,9 +326,9 @@ namespace CoopClient
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.Props = packet.Props;
@ -366,9 +366,9 @@ namespace CoopClient
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.Position = packet.Extra.Position.ToVector();
@ -393,9 +393,9 @@ namespace CoopClient
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.Position = packet.Extra.Position.ToVector();
@ -423,9 +423,9 @@ namespace CoopClient
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.Position = packet.Extra.Position.ToVector();
@ -554,7 +554,7 @@ namespace CoopClient
Hash = 0,
Args = null,
Type = result,
ID = packet.ID
NetHandle = packet.NetHandle
}.PacketToNetOutGoingMessage(outgoingMessage);
Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered, (int)ConnectionChannel.Native);
Client.FlushSendQueue();
@ -566,9 +566,9 @@ namespace CoopClient
{
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
npc.NPCVehHandle = 0;
@ -595,7 +595,7 @@ namespace CoopClient
}
else
{
Main.NPCs.Add(packet.ID, new EntitiesNpc()
Main.NPCs.Add(packet.NetHandle, new EntitiesNpc()
{
ModelHash = packet.ModelHash,
Props = packet.Props,
@ -625,9 +625,9 @@ namespace CoopClient
{
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;
@ -662,7 +662,7 @@ namespace CoopClient
}
else
{
Main.NPCs.Add(packet.ID, new EntitiesNpc()
Main.NPCs.Add(packet.NetHandle, new EntitiesNpc()
{
NPCVehHandle = packet.VehHandle,
@ -730,7 +730,7 @@ namespace CoopClient
{
Extra = new PlayerPacket()
{
ID = Main.LocalClientID,
NetHandle = Main.LocalNetHandle,
Health = player.Health,
Position = player.Position.ToLVector()
},
@ -760,7 +760,7 @@ namespace CoopClient
{
Extra = new PlayerPacket()
{
ID = Main.LocalClientID,
NetHandle = Main.LocalNetHandle,
Health = player.Health,
Position = player.Position.ToLVector()
},
@ -789,7 +789,7 @@ namespace CoopClient
{
Extra = new PlayerPacket()
{
ID = Main.LocalClientID,
NetHandle = Main.LocalNetHandle,
Health = player.Health,
Position = player.Position.ToLVector()
},
@ -809,7 +809,7 @@ namespace CoopClient
{
Extra = new PlayerPacket()
{
ID = Main.LocalClientID,
NetHandle = Main.LocalNetHandle,
Health = player.Health,
Position = player.Position.ToLVector()
},
@ -852,8 +852,8 @@ namespace CoopClient
new FullSyncNpcVehPacket()
{
ID = Main.LocalClientID + npc.Handle,
VehHandle = Main.LocalClientID + veh.Handle,
NetHandle = Main.LocalNetHandle + npc.Handle,
VehHandle = Main.LocalNetHandle + veh.Handle,
ModelHash = npc.Model.Hash,
Props = npc.GetPedProps(),
Health = npc.Health,
@ -879,7 +879,7 @@ namespace CoopClient
{
new FullSyncNpcPacket()
{
ID = Main.LocalClientID + npc.Handle,
NetHandle = Main.LocalNetHandle + npc.Handle,
ModelHash = npc.Model.Hash,
Props = npc.GetPedProps(),
Health = npc.Health,
@ -928,7 +928,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new ModPacket()
{
ID = Main.LocalClientID,
NetHandle = Main.LocalNetHandle,
Target = target,
Mod = mod,
CustomPacketID = customID,

View File

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

View File

@ -7,7 +7,7 @@ namespace CoopServer
{
public class Client
{
public long ID = 0;
public long NetHandle = 0;
public float Latency = 0.0f;
public PlayerData Player;
private readonly Dictionary<string, object> CustomData = new();
@ -48,18 +48,18 @@ namespace CoopServer
#region FUNCTIONS
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)
{
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")
{
try
{
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID);
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
if (userConnection == null)
{
return;
@ -85,10 +85,10 @@ namespace CoopServer
{
try
{
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID);
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
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;
}
@ -124,10 +124,10 @@ namespace CoopServer
{
try
{
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID);
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
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;
}
@ -178,7 +178,7 @@ namespace CoopServer
Hash = hash,
Args = arguments,
Type = returnType,
ID = id
NetHandle = id
};
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
@ -195,7 +195,7 @@ namespace CoopServer
{
try
{
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == ID);
NetConnection userConnection = Server.MainNetServer.Connections.Find(x => x.RemoteUniqueIdentifier == NetHandle);
if (userConnection == null)
{
return;
@ -204,7 +204,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
new ModPacket()
{
ID = 0,
NetHandle = 0,
Target = 0,
Mod = mod,
CustomPacketID = customID,

View File

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

View File

@ -371,10 +371,10 @@ namespace CoopServer
packet.NetIncomingMessageToPacket(message);
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.Callbacks.ContainsKey(responsePacket.ID))
if (client.Callbacks.ContainsKey(responsePacket.NetHandle))
{
object resp = null;
if (responsePacket.Type is IntArgument argument)
@ -398,8 +398,8 @@ namespace CoopServer
resp = argument4.Data;
}
client.Callbacks[responsePacket.ID].Invoke(resp);
client.Callbacks.Remove(responsePacket.ID);
client.Callbacks[responsePacket.NetHandle].Invoke(resp);
client.Callbacks.Remove(responsePacket.NetHandle);
}
}
}
@ -418,7 +418,7 @@ namespace CoopServer
packet.NetIncomingMessageToPacket(message);
ModPacket modPacket = (ModPacket)packet;
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
}
@ -464,7 +464,7 @@ namespace CoopServer
break;
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)
{
client.Latency = message.ReadFloat();
@ -572,7 +572,7 @@ namespace CoopServer
return;
}
long localID = local.RemoteUniqueIdentifier;
long localNetHandle = local.RemoteUniqueIdentifier;
Client tmpClient;
@ -582,7 +582,7 @@ namespace CoopServer
Clients.Add(
tmpClient = new Client()
{
ID = localID,
NetHandle = localNetHandle,
Player = new()
{
SocialClubName = packet.SocialClubName,
@ -597,7 +597,7 @@ namespace CoopServer
// Create a new handshake packet
new HandshakePacket()
{
ID = localID,
NetHandle = localNetHandle,
SocialClubName = string.Empty,
Username = 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
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)
{
local.Disconnect("No data found!");
@ -629,15 +629,15 @@ namespace CoopServer
// Send all players to local
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)
{
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
new PlayerConnectPacket()
{
ID = targetPlayerID,
NetHandle = targetNetHandle,
SocialClubName = targetClient.Player.SocialClubName,
Username = targetClient.Player.Username
}.PacketToNetOutGoingMessage(outgoingMessage);
@ -649,7 +649,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
new PlayerConnectPacket()
{
ID = packet.ID,
NetHandle = packet.NetHandle,
SocialClubName = localClient.Player.SocialClubName,
Username = localClient.Player.Username
}.PacketToNetOutGoingMessage(outgoingMessage);
@ -680,12 +680,12 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = MainNetServer.CreateMessage();
new PlayerDisconnectPacket()
{
ID = clientID
NetHandle = clientID
}.PacketToNetOutGoingMessage(outgoingMessage);
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)
{
return;
@ -705,7 +705,7 @@ namespace CoopServer
private static void FullSyncPlayer(FullSyncPlayerPacket packet)
{
Client client = Util.GetClientByID(packet.Extra.ID);
Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null)
{
return;
@ -718,11 +718,11 @@ namespace CoopServer
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();
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);
}
@ -745,7 +745,7 @@ namespace CoopServer
private static void FullSyncPlayerVeh(FullSyncPlayerVehPacket packet)
{
Client client = Util.GetClientByID(packet.Extra.ID);
Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null)
{
return;
@ -758,11 +758,11 @@ namespace CoopServer
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();
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);
}
@ -785,7 +785,7 @@ namespace CoopServer
private static void LightSyncPlayer(LightSyncPlayerPacket packet)
{
Client client = Util.GetClientByID(packet.Extra.ID);
Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null)
{
return;
@ -798,11 +798,11 @@ namespace CoopServer
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();
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);
}
@ -825,7 +825,7 @@ namespace CoopServer
private static void LightSyncPlayerVeh(LightSyncPlayerVehPacket packet)
{
Client client = Util.GetClientByID(packet.Extra.ID);
Client client = Util.GetClientByNetHandle(packet.Extra.NetHandle);
if (client == null)
{
return;
@ -838,11 +838,11 @@ namespace CoopServer
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();
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);
}

View File

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

View File

@ -52,12 +52,12 @@ namespace CoopServer
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)
{
NetConnection localConn = Server.MainNetServer.Connections.Find(x => id == x.RemoteUniqueIdentifier);
NetConnection localConn = Server.MainNetServer.Connections.Find(x => netHandle == x.RemoteUniqueIdentifier);
if (localConn != null)
{
localConn.Disconnect("No data found!");
@ -76,7 +76,7 @@ namespace CoopServer
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
@ -94,7 +94,7 @@ namespace CoopServer
{
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);
}));
}
@ -103,7 +103,7 @@ namespace CoopServer
{
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);
}));
}