Only gta5 v1.0.1290 or newer is supported!

This commit is contained in:
EntenKoeniq
2021-12-14 14:20:41 +01:00
parent 4bd50a557b
commit 749a5b258d
4 changed files with 61 additions and 23 deletions

View File

@ -16,6 +16,12 @@ namespace CoopClient.Entities
/// </summary>
public EntitiesThread()
{
// Required for some synchronization!
if (Game.Version < GameVersion.v1_0_1290_1_Steam)
{
return;
}
Tick += OnTick;
Interval = Util.GetGameMs<int>();
}
@ -27,13 +33,13 @@ namespace CoopClient.Entities
return;
}
Dictionary<long, EntitiesNpc> localNpcs = null;
lock (Main.Npcs)
Dictionary<long, EntitiesNpc> localNPCs = null;
lock (Main.NPCs)
{
localNpcs = new Dictionary<long, EntitiesNpc>(Main.Npcs);
localNPCs = new Dictionary<long, EntitiesNpc>(Main.NPCs);
ulong tickCount = Util.GetTickCount64();
foreach (KeyValuePair<long, EntitiesNpc> npc in new Dictionary<long, EntitiesNpc>(localNpcs))
foreach (KeyValuePair<long, EntitiesNpc> npc in new Dictionary<long, EntitiesNpc>(localNPCs))
{
if ((tickCount - npc.Value.LastUpdateReceived) > 3000)
{
@ -50,13 +56,13 @@ namespace CoopClient.Entities
npc.Value.MainVehicle.Delete();
}
localNpcs.Remove(npc.Key);
Main.Npcs.Remove(npc.Key);
localNPCs.Remove(npc.Key);
Main.NPCs.Remove(npc.Key);
}
}
}
foreach (EntitiesNpc npc in localNpcs.Values)
foreach (EntitiesNpc npc in localNPCs.Values)
{
npc.DisplayLocally(null);
}

View File

@ -31,32 +31,58 @@ namespace CoopClient
/// <summary>
/// Don't use it!
/// </summary>
public static Settings MainSettings = Util.ReadSettings();
public static Settings MainSettings = null;
/// <summary>
/// Don't use it!
/// </summary>
public static Networking MainNetworking = new Networking();
public static Networking MainNetworking = null;
#if !NON_INTERACTIVE
/// <summary>
/// Don't use it!
/// </summary>
public static MenusMain MainMenu = new MenusMain();
public static MenusMain MainMenu = null;
#endif
/// <summary>
/// Don't use it!
/// </summary>
public static Chat MainChat = new Chat();
public static Chat MainChat = null;
internal static long LocalClientID = 0;
internal static readonly Dictionary<long, EntitiesPlayer> Players = new Dictionary<long, EntitiesPlayer>();
internal static readonly Dictionary<long, EntitiesNpc> Npcs = new Dictionary<long, EntitiesNpc>();
internal static Dictionary<long, EntitiesPlayer> Players = null;
internal static Dictionary<long, EntitiesNpc> NPCs = null;
/// <summary>
/// Don't use it!
/// </summary>
public Main()
{
// Required for some synchronization!
if (Game.Version < GameVersion.v1_0_1290_1_Steam)
{
Tick += (object sender, EventArgs e) =>
{
if (Game.IsLoading)
{
return;
}
if (!GameLoaded)
{
GTA.UI.Notification.Show("~r~Please update your GTA5 to v1.0.1290 or newer!", true);
GameLoaded = true;
}
};
return;
}
MainSettings = Util.ReadSettings();
MainNetworking = new Networking();
MainMenu = new MenusMain();
MainChat = new Chat();
Players = new Dictionary<long, EntitiesPlayer>();
NPCs = new Dictionary<long, EntitiesNpc>();
Function.Call((Hash)0x0888C3502DBBEEF5); // _LOAD_MP_DLC_MAPS
Function.Call((Hash)0x9BAE5AD2508DF078, true); // _ENABLE_MP_DLC_MAPS
@ -217,13 +243,13 @@ namespace CoopClient
}
Players.Clear();
foreach (KeyValuePair<long, EntitiesNpc> Npc in Npcs)
foreach (KeyValuePair<long, EntitiesNpc> Npc in NPCs)
{
Npc.Value.Character?.CurrentVehicle?.Delete();
Npc.Value.Character?.Kill();
Npc.Value.Character?.Delete();
}
Npcs.Clear();
NPCs.Clear();
}
#if DEBUG

View File

@ -563,11 +563,11 @@ namespace CoopClient
#region -- NPC --
private void FullSyncNpc(FullSyncNpcPacket packet)
{
lock (Main.Npcs)
lock (Main.NPCs)
{
if (Main.Npcs.ContainsKey(packet.ID))
if (Main.NPCs.ContainsKey(packet.ID))
{
EntitiesNpc npc = Main.Npcs[packet.ID];
EntitiesNpc npc = Main.NPCs[packet.ID];
npc.LastUpdateReceived = Util.GetTickCount64();
@ -591,7 +591,7 @@ namespace CoopClient
}
else
{
Main.Npcs.Add(packet.ID, new EntitiesNpc()
Main.NPCs.Add(packet.ID, new EntitiesNpc()
{
LastUpdateReceived = Util.GetTickCount64(),
@ -619,11 +619,11 @@ namespace CoopClient
private void FullSyncNpcVeh(FullSyncNpcVehPacket packet)
{
lock (Main.Npcs)
lock (Main.NPCs)
{
if (Main.Npcs.ContainsKey(packet.ID))
if (Main.NPCs.ContainsKey(packet.ID))
{
EntitiesNpc npc = Main.Npcs[packet.ID];
EntitiesNpc npc = Main.NPCs[packet.ID];
npc.LastUpdateReceived = Util.GetTickCount64();
@ -655,7 +655,7 @@ namespace CoopClient
}
else
{
Main.Npcs.Add(packet.ID, new EntitiesNpc()
Main.NPCs.Add(packet.ID, new EntitiesNpc()
{
LastUpdateReceived = Util.GetTickCount64(),

View File

@ -22,6 +22,12 @@ namespace CoopClient
/// </summary>
public PlayerList()
{
// Required for some synchronization!
if (Game.Version < GameVersion.v1_0_1290_1_Steam)
{
return;
}
Init();
Tick += OnTick;