Changed ID to NetHandle. Configure() removed from COOPAPI and replaced by its own functions
This commit is contained in:
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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,10 +928,10 @@ 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,
|
||||||
Bytes = bytes
|
Bytes = bytes
|
||||||
}.PacketToNetOutGoingMessage(outgoingMessage);
|
}.PacketToNetOutGoingMessage(outgoingMessage);
|
||||||
Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered, (int)ConnectionChannel.Mod);
|
Client.SendMessage(outgoingMessage, NetDeliveryMethod.ReliableOrdered, (int)ConnectionChannel.Mod);
|
||||||
|
@ -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,10 +258,10 @@ 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;
|
||||||
Bytes = data.Bytes;
|
Bytes = data.Bytes;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
|
@ -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,
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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,
|
||||||
|
@ -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);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user