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;
}
Dictionary<string, EntitiesNpc> localNpcs = null;
Dictionary<long, EntitiesNpc> localNpcs = null;
lock (Main.Npcs)
{
localNpcs = new Dictionary<string, EntitiesNpc>(Main.Npcs);
localNpcs = new Dictionary<long, EntitiesNpc>(Main.Npcs);
}
int tickCount = Environment.TickCount;
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)
{
@ -51,7 +51,7 @@ namespace CoopClient.Entities
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))
{

View File

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

View File

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

View File

@ -45,7 +45,7 @@ namespace CoopClient
NetOutgoingMessage outgoingMessage = Client.CreateMessage();
new HandshakePacket()
{
ID = string.Empty,
ID = 0,
SocialClubName = Game.Player.Name,
Username = Main.MainSettings.Username,
ModVersion = Main.CurrentModVersion,
@ -259,6 +259,39 @@ namespace CoopClient
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)

View File

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

View File

@ -47,7 +47,7 @@ namespace CoopClient
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;
@ -56,7 +56,7 @@ namespace CoopClient
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, "", "", ' ');
}

View File

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

View File

@ -29,7 +29,7 @@ namespace CoopServer
public static NetServer MainNetServer;
public static readonly Dictionary<string, EntitiesPlayer> Players = new();
public static readonly Dictionary<long, EntitiesPlayer> Players = new();
private static ServerScript GameMode;
@ -182,7 +182,7 @@ namespace CoopServer
while ((message = MainNetServer.ReadMessage()) != null)
{
string player;
long player;
switch (message.MessageType)
{
@ -212,7 +212,7 @@ namespace CoopServer
case NetIncomingMessageType.StatusChanged:
NetConnectionStatus status = (NetConnectionStatus)message.ReadByte();
player = NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier);
player = message.SenderConnection.RemoteUniqueIdentifier;
if (status == NetConnectionStatus.Disconnected && Players.ContainsKey(player))
{
@ -356,7 +356,7 @@ namespace CoopServer
}
break;
case NetIncomingMessageType.ConnectionLatencyUpdated:
Players[NetUtility.ToHexString(message.SenderConnection.RemoteUniqueIdentifier)].Latency = message.ReadFloat();
Players[message.SenderConnection.RemoteUniqueIdentifier].Latency = message.ReadFloat();
break;
case NetIncomingMessageType.ErrorMessage:
Logging.Error(message.ReadString());
@ -383,20 +383,20 @@ namespace CoopServer
{
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 ...
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
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 --
@ -447,7 +447,7 @@ namespace CoopServer
return;
}
foreach (KeyValuePair<string, EntitiesPlayer> player in Players)
foreach (KeyValuePair<long, EntitiesPlayer> player in Players)
{
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
Players.Add(localPlayerID,
@ -510,7 +510,7 @@ namespace CoopServer
// Send all players to local
playerList.ForEach(targetPlayer =>
{
string targetPlayerID = NetUtility.ToHexString(targetPlayer.RemoteUniqueIdentifier);
long targetPlayerID = targetPlayer.RemoteUniqueIdentifier;
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 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)
{
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)
{
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;
}
}
@ -163,7 +163,7 @@ namespace CoopServer
{
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)
{
@ -177,7 +177,7 @@ namespace CoopServer
NetOutgoingMessage outgoingMessage = Server.MainNetServer.CreateMessage();
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;
}
}