ID (from "string" to "long")
This commit is contained in:
@ -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))
|
||||
{
|
||||
|
@ -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)
|
||||
|
@ -62,7 +62,7 @@ namespace CoopClient.Menus.Sub
|
||||
|
||||
Main.DebugSyncPed = null;
|
||||
Main.LastFullDebugSync = 0;
|
||||
Main.Players.Remove("DebugKey");
|
||||
Main.Players.Remove(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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; }
|
||||
|
@ -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, "", "", ' ');
|
||||
}
|
||||
|
@ -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; }
|
||||
|
@ -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];
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user