ID (from "string" to "long")

This commit is contained in:
EntenKoeniq
2021-08-16 14:03:05 +02:00
parent de085e53e2
commit f10f3686d3
9 changed files with 80 additions and 47 deletions

View File

@ -21,16 +21,16 @@ namespace CoopClient.Entities
return; return;
} }
Dictionary<string, EntitiesNpc> localNpcs = null; Dictionary<long, EntitiesNpc> localNpcs = null;
lock (Main.Npcs) lock (Main.Npcs)
{ {
localNpcs = new Dictionary<string, EntitiesNpc>(Main.Npcs); localNpcs = new Dictionary<long, EntitiesNpc>(Main.Npcs);
} }
int tickCount = Environment.TickCount; int tickCount = Environment.TickCount;
for (int i = localNpcs.Count - 1; i >= 0; i--) for (int i = localNpcs.Count - 1; i >= 0; i--)
{ {
string key = localNpcs.ElementAt(i).Key; long key = localNpcs.ElementAt(i).Key;
if ((tickCount - localNpcs[key].LastUpdateReceived) > 3500) if ((tickCount - localNpcs[key].LastUpdateReceived) > 3500)
{ {
@ -51,7 +51,7 @@ namespace CoopClient.Entities
lock (Main.Npcs) lock (Main.Npcs)
{ {
foreach (KeyValuePair<string, EntitiesNpc> npc in new Dictionary<string, EntitiesNpc>(Main.Npcs)) foreach (KeyValuePair<long, EntitiesNpc> npc in new Dictionary<long, EntitiesNpc>(Main.Npcs))
{ {
if (!localNpcs.ContainsKey(npc.Key)) if (!localNpcs.ContainsKey(npc.Key))
{ {

View File

@ -30,9 +30,9 @@ namespace CoopClient
public static Networking MainNetworking = new Networking(); public static Networking MainNetworking = new Networking();
public static string LocalPlayerID = null; public static long LocalPlayerID = 0;
public static readonly Dictionary<string, EntitiesPlayer> Players = new Dictionary<string, EntitiesPlayer>(); public static readonly Dictionary<long, EntitiesPlayer> Players = new Dictionary<long, EntitiesPlayer>();
public static readonly Dictionary<string, EntitiesNpc> Npcs = new Dictionary<string, EntitiesNpc>(); public static readonly Dictionary<long, EntitiesNpc> Npcs = new Dictionary<long, EntitiesNpc>();
public Main() public Main()
{ {
@ -76,7 +76,7 @@ namespace CoopClient
MainChat.Tick(); MainChat.Tick();
// Display all players // Display all players
foreach (KeyValuePair<string, EntitiesPlayer> player in Players) foreach (KeyValuePair<long, EntitiesPlayer> player in Players)
{ {
player.Value.DisplayLocally(player.Value.Username); player.Value.DisplayLocally(player.Value.Username);
} }
@ -156,7 +156,7 @@ namespace CoopClient
private void OnAbort(object sender, EventArgs e) private void OnAbort(object sender, EventArgs e)
{ {
foreach (KeyValuePair<string, EntitiesPlayer> player in Players) foreach (KeyValuePair<long, EntitiesPlayer> player in Players)
{ {
player.Value.Character?.AttachedBlip?.Delete(); player.Value.Character?.AttachedBlip?.Delete();
player.Value.Character?.CurrentVehicle?.Delete(); player.Value.Character?.CurrentVehicle?.Delete();
@ -165,7 +165,7 @@ namespace CoopClient
player.Value.PedBlip?.Delete(); player.Value.PedBlip?.Delete();
} }
foreach (KeyValuePair<string, EntitiesNpc> Npc in Npcs) foreach (KeyValuePair<long, EntitiesNpc> Npc in Npcs)
{ {
Npc.Value.Character?.CurrentVehicle?.Delete(); Npc.Value.Character?.CurrentVehicle?.Delete();
Npc.Value.Character?.Kill(); Npc.Value.Character?.Kill();
@ -175,7 +175,7 @@ namespace CoopClient
public static void CleanUp() public static void CleanUp()
{ {
foreach (KeyValuePair<string, EntitiesPlayer> player in Players) foreach (KeyValuePair<long, EntitiesPlayer> player in Players)
{ {
player.Value.Character?.AttachedBlip?.Delete(); player.Value.Character?.AttachedBlip?.Delete();
player.Value.Character?.CurrentVehicle?.Delete(); player.Value.Character?.CurrentVehicle?.Delete();
@ -185,7 +185,7 @@ namespace CoopClient
} }
Players.Clear(); Players.Clear();
foreach (KeyValuePair<string, EntitiesNpc> Npc in Npcs) foreach (KeyValuePair<long, EntitiesNpc> Npc in Npcs)
{ {
Npc.Value.Character?.CurrentVehicle?.Delete(); Npc.Value.Character?.CurrentVehicle?.Delete();
Npc.Value.Character?.Kill(); Npc.Value.Character?.Kill();
@ -231,10 +231,10 @@ namespace CoopClient
private void Debug() private void Debug()
{ {
Ped player = Game.Player.Character; Ped player = Game.Player.Character;
if (!Players.ContainsKey("DebugKey")) if (!Players.ContainsKey(0))
{ {
Players.Add("DebugKey", new EntitiesPlayer() { SocialClubName = "DEBUG", Username = "DebugPlayer" }); Players.Add(0, new EntitiesPlayer() { SocialClubName = "DEBUG", Username = "DebugPlayer" });
DebugSyncPed = Players["DebugKey"]; DebugSyncPed = Players[0];
} }
if ((Environment.TickCount - ArtificialLagCounter) < 37) if ((Environment.TickCount - ArtificialLagCounter) < 37)

View File

@ -62,7 +62,7 @@ namespace CoopClient.Menus.Sub
Main.DebugSyncPed = null; Main.DebugSyncPed = null;
Main.LastFullDebugSync = 0; Main.LastFullDebugSync = 0;
Main.Players.Remove("DebugKey"); Main.Players.Remove(0);
} }
} }
} }

View File

@ -45,7 +45,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage(); NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new HandshakePacket() new HandshakePacket()
{ {
ID = string.Empty, ID = 0,
SocialClubName = Game.Player.Name, SocialClubName = Game.Player.Name,
Username = Main.MainSettings.Username, Username = Main.MainSettings.Username,
ModVersion = Main.CurrentModVersion, ModVersion = Main.CurrentModVersion,
@ -259,6 +259,39 @@ namespace CoopClient
Main.Players.Remove(packet.Player); Main.Players.Remove(packet.Player);
} }
//if (!Main.NpcsAllowed)
//{
// return;
//}
//
//lock (Main.Npcs)
//{
// for (int i = 0; i < Main.Npcs.Count; i++)
// {
// long key = Main.Npcs.ElementAt(i).Key;
//
// if (!key.ToString().StartsWith(packet.Player.ToString()))
// {
// return;
// }
//
// EntitiesNpc npcData = Main.Npcs[key];
//
// if (npcData.Character != null && npcData.Character.Exists() && npcData.Health > 0)
// {
// npcData.Character.Kill();
// npcData.Character.Delete();
// }
//
// if (npcData.MainVehicle != null && npcData.MainVehicle.Exists() && npcData.MainVehicle.PassengerCount == 0)
// {
// npcData.MainVehicle.Delete();
// }
//
// Main.Npcs.Remove(key);
// }
//}
} }
private void FullSyncPlayer(FullSyncPlayerPacket packet) private void FullSyncPlayer(FullSyncPlayerPacket packet)

View File

@ -199,7 +199,7 @@ namespace CoopClient
class HandshakePacket : Packet class HandshakePacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string ID { get; set; } public long ID { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -241,7 +241,7 @@ namespace CoopClient
class PlayerConnectPacket : Packet class PlayerConnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string Player { get; set; } public long Player { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -275,7 +275,7 @@ namespace CoopClient
class PlayerDisconnectPacket : Packet class PlayerDisconnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string Player { get; set; } public long Player { get; set; }
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message) public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
{ {
@ -301,7 +301,7 @@ namespace CoopClient
struct PlayerPacket struct PlayerPacket
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string Player { get; set; } public long Player { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int Health { get; set; } public int Health { get; set; }
@ -589,7 +589,7 @@ namespace CoopClient
class FullSyncNpcPacket : Packet class FullSyncNpcPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string ID { get; set; } public long ID { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int ModelHash { get; set; } public int ModelHash { get; set; }
@ -655,7 +655,7 @@ namespace CoopClient
class FullSyncNpcVehPacket : Packet class FullSyncNpcVehPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string ID { get; set; } public long ID { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int ModelHash { get; set; } public int ModelHash { get; set; }

View File

@ -47,7 +47,7 @@ namespace CoopClient
MainScaleform.CallFunction("DISPLAY_VIEW"); MainScaleform.CallFunction("DISPLAY_VIEW");
} }
private void Update(Dictionary<string, EntitiesPlayer> players, string localUsername) private void Update(Dictionary<long, EntitiesPlayer> players, string localUsername)
{ {
LastUpdate = Environment.TickCount; LastUpdate = Environment.TickCount;
@ -56,7 +56,7 @@ namespace CoopClient
int i = 1; int i = 1;
foreach (KeyValuePair<string, EntitiesPlayer> player in players) foreach (KeyValuePair<long, EntitiesPlayer> player in players)
{ {
MainScaleform.CallFunction("SET_DATA_SLOT", i++, $"{player.Value.Latency * 1000:N0}ms", player.Value.Username, 116, 0, i - 1, "", "", 2, "", "", ' '); MainScaleform.CallFunction("SET_DATA_SLOT", i++, $"{player.Value.Latency * 1000:N0}ms", player.Value.Username, 116, 0, i - 1, "", "", 2, "", "", ' ');
} }

View File

@ -131,7 +131,7 @@ namespace CoopServer
class HandshakePacket : Packet class HandshakePacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string ID { get; set; } public long ID { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -173,7 +173,7 @@ namespace CoopServer
class PlayerConnectPacket : Packet class PlayerConnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string Player { get; set; } public long Player { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public string SocialClubName { get; set; } public string SocialClubName { get; set; }
@ -207,7 +207,7 @@ namespace CoopServer
class PlayerDisconnectPacket : Packet class PlayerDisconnectPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string Player { get; set; } public long Player { get; set; }
public override void PacketToNetOutGoingMessage(NetOutgoingMessage message) public override void PacketToNetOutGoingMessage(NetOutgoingMessage message)
{ {
@ -233,7 +233,7 @@ namespace CoopServer
struct PlayerPacket struct PlayerPacket
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string Player { get; set; } public long Player { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int Health { get; set; } public int Health { get; set; }
@ -521,7 +521,7 @@ namespace CoopServer
class FullSyncNpcPacket : Packet class FullSyncNpcPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string ID { get; set; } public long ID { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int ModelHash { get; set; } public int ModelHash { get; set; }
@ -587,7 +587,7 @@ namespace CoopServer
class FullSyncNpcVehPacket : Packet class FullSyncNpcVehPacket : Packet
{ {
[ProtoMember(1)] [ProtoMember(1)]
public string ID { get; set; } public long ID { get; set; }
[ProtoMember(2)] [ProtoMember(2)]
public int ModelHash { get; set; } public int ModelHash { get; set; }

View File

@ -29,7 +29,7 @@ namespace CoopServer
public static NetServer MainNetServer; public static NetServer MainNetServer;
public static readonly Dictionary<string, EntitiesPlayer> Players = new(); public static readonly Dictionary<long, EntitiesPlayer> Players = new();
private static ServerScript GameMode; private static ServerScript GameMode;
@ -182,7 +182,7 @@ namespace CoopServer
while ((message = MainNetServer.ReadMessage()) != null) while ((message = MainNetServer.ReadMessage()) != null)
{ {
string player; long player;
switch (message.MessageType) switch (message.MessageType)
{ {
@ -212,7 +212,7 @@ namespace CoopServer
case NetIncomingMessageType.StatusChanged: case NetIncomingMessageType.StatusChanged:
NetConnectionStatus status = (NetConnectionStatus)message.ReadByte(); NetConnectionStatus status = (NetConnectionStatus)message.ReadByte();
player = NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier); player = message.SenderConnection.RemoteUniqueIdentifier;
if (status == NetConnectionStatus.Disconnected && Players.ContainsKey(player)) if (status == NetConnectionStatus.Disconnected && Players.ContainsKey(player))
{ {
@ -356,7 +356,7 @@ namespace CoopServer
} }
break; break;
case NetIncomingMessageType.ConnectionLatencyUpdated: case NetIncomingMessageType.ConnectionLatencyUpdated:
Players[NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier)].Latency = message.ReadFloat(); Players[message.SenderConnection.RemoteUniqueIdentifier].Latency = message.ReadFloat();
break; break;
case NetIncomingMessageType.ErrorMessage: case NetIncomingMessageType.ErrorMessage:
Logging.Error(message.ReadString()); Logging.Error(message.ReadString());
@ -383,20 +383,20 @@ namespace CoopServer
{ {
return new(MainNetServer.Connections.Where(e => e != local)); return new(MainNetServer.Connections.Where(e => e != local));
} }
private static List<NetConnection> FilterAllLocal(string local) private static List<NetConnection> FilterAllLocal(long local)
{ {
return new(MainNetServer.Connections.Where(e => NetUtility.ToHexString(e.RemoteUniqueIdentifier) != local)); return new(MainNetServer.Connections.Where(e => e.RemoteUniqueIdentifier != local));
} }
// Return a list of players within range of ... // Return a list of players within range of ...
private static List<NetConnection> GetAllInRange(LVector3 position, float range) private static List<NetConnection> GetAllInRange(LVector3 position, float range)
{ {
return new(MainNetServer.Connections.FindAll(e => Players[NetUtility.ToHexString(e.RemoteUniqueIdentifier)].Ped.IsInRangeOf(position, range))); return new(MainNetServer.Connections.FindAll(e => Players[e.RemoteUniqueIdentifier].Ped.IsInRangeOf(position, range)));
} }
// Return a list of players within range of ... but not the local one // Return a list of players within range of ... but not the local one
private static List<NetConnection> GetAllInRange(LVector3 position, float range, NetConnection local) private static List<NetConnection> GetAllInRange(LVector3 position, float range, NetConnection local)
{ {
return new(MainNetServer.Connections.Where(e => e != local && Players[NetUtility.ToHexString(e.RemoteUniqueIdentifier)].Ped.IsInRangeOf(position, range))); return new(MainNetServer.Connections.Where(e => e != local && Players[e.RemoteUniqueIdentifier].Ped.IsInRangeOf(position, range)));
} }
#region -- PLAYER -- #region -- PLAYER --
@ -447,7 +447,7 @@ namespace CoopServer
return; return;
} }
foreach (KeyValuePair<string, EntitiesPlayer> player in Players) foreach (KeyValuePair<long, EntitiesPlayer> player in Players)
{ {
if (player.Value.SocialClubName == packet.SocialClubName) if (player.Value.SocialClubName == packet.SocialClubName)
{ {
@ -461,7 +461,7 @@ namespace CoopServer
} }
} }
string localPlayerID = NetUtility.ToHexString(local.RemoteUniqueIdentifier); long localPlayerID = local.RemoteUniqueIdentifier;
// Add the player to Players // Add the player to Players
Players.Add(localPlayerID, Players.Add(localPlayerID,
@ -510,7 +510,7 @@ namespace CoopServer
// Send all players to local // Send all players to local
playerList.ForEach(targetPlayer => playerList.ForEach(targetPlayer =>
{ {
string targetPlayerID = NetUtility.ToHexString(targetPlayer.RemoteUniqueIdentifier); long targetPlayerID = targetPlayer.RemoteUniqueIdentifier;
EntitiesPlayer targetEntity = Players[targetPlayerID]; EntitiesPlayer targetEntity = Players[targetPlayerID];

View File

@ -125,17 +125,17 @@ namespace CoopServer
} }
protected static int GetAllPlayersCount() { lock (Server.Players) return Server.Players.Count; } protected static int GetAllPlayersCount() { lock (Server.Players) return Server.Players.Count; }
protected static Dictionary<string, Entities.EntitiesPlayer> GetAllPlayers() { lock (Server.Players) return Server.Players; } protected static Dictionary<long, Entities.EntitiesPlayer> GetAllPlayers() { lock (Server.Players) return Server.Players; }
protected static void KickPlayerByUsername(string username, string reason) protected static void KickPlayerByUsername(string username, string reason)
{ {
lock (Server.Players) lock (Server.Players)
{ {
foreach (KeyValuePair<string, Entities.EntitiesPlayer> player in Server.Players) foreach (KeyValuePair<long, Entities.EntitiesPlayer> player in Server.Players)
{ {
if (player.Value.Username == username) if (player.Value.Username == username)
{ {
Server.MainNetServer.Connections.Find(e => NetUtility.ToHexString(e.RemoteUniqueIdentifier) == player.Key).Disconnect(reason); Server.MainNetServer.Connections.Find(e => e.RemoteUniqueIdentifier == player.Key).Disconnect(reason);
return; return;
} }
} }
@ -163,7 +163,7 @@ namespace CoopServer
{ {
lock (Server.Players) lock (Server.Players)
{ {
foreach (KeyValuePair<string, Entities.EntitiesPlayer> player in Server.Players) foreach (KeyValuePair<long, Entities.EntitiesPlayer> player in Server.Players)
{ {
if (player.Value.Username == username) if (player.Value.Username == username)
{ {
@ -177,7 +177,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage(); NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
packet.PacketToNetOutGoingMessage(outgoingMessage); packet.PacketToNetOutGoingMessage(outgoingMessage);
Server.MainNetServer.SendMessage(outgoingMessage, Server.MainNetServer.Connections.Find(con => NetUtility.ToHexString(con.RemoteUniqueIdentifier) == player.Key), NetDeliveryMethod.ReliableOrdered, 0); Server.MainNetServer.SendMessage(outgoingMessage, Server.MainNetServer.Connections.Find(con => con.RemoteUniqueIdentifier == player.Key), NetDeliveryMethod.ReliableOrdered, 0);
return; return;
} }
} }