From 2cb5baf5f79402195ae134dd7368f585088164c9 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Wed, 9 Aug 2023 23:50:47 -0300 Subject: [PATCH 01/11] Fix player dying when switching characters --- RageCoop.Client/Sync/EntityPool.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RageCoop.Client/Sync/EntityPool.cs b/RageCoop.Client/Sync/EntityPool.cs index 6bc2022..9109627 100644 --- a/RageCoop.Client/Sync/EntityPool.cs +++ b/RageCoop.Client/Sync/EntityPool.cs @@ -363,7 +363,7 @@ namespace RageCoop.Client foreach (Ped p in allPeds) { SyncedPed c = GetPedByHandle(p.Handle); - if (c == null && (p != Game.Player.Character)) + if (c == null && (p != Game.Player.Character) && !Function.Call(Hash.IS_PLAYER_SWITCH_IN_PROGRESS)) { if (allPeds.Length > Main.Settings.WorldPedSoftLimit && p.PopulationType == EntityPopulationType.RandomAmbient && !p.IsInVehicle()) { From 1f8d70a520b213ebc8e126906c8732f3901dea74 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Sun, 13 Aug 2023 19:29:48 -0300 Subject: [PATCH 02/11] Fix player dying when switching characters in missions --- RageCoop.Client/Sync/EntityPool.cs | 5 +++-- RageCoop.Client/Sync/SyncEvents.cs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/RageCoop.Client/Sync/EntityPool.cs b/RageCoop.Client/Sync/EntityPool.cs index 9109627..f75d1a0 100644 --- a/RageCoop.Client/Sync/EntityPool.cs +++ b/RageCoop.Client/Sync/EntityPool.cs @@ -278,7 +278,7 @@ namespace RageCoop.Client ProjectilesByHandle.Remove(p.Handle); } Main.Logger.Debug($"Removing projectile {sp.ID}. Reason:{reason}"); - p.Explode(); + if (sp.Exploded) p.Explode(); } ProjectilesByID.Remove(id); } @@ -363,7 +363,8 @@ namespace RageCoop.Client foreach (Ped p in allPeds) { SyncedPed c = GetPedByHandle(p.Handle); - if (c == null && (p != Game.Player.Character) && !Function.Call(Hash.IS_PLAYER_SWITCH_IN_PROGRESS)) + List mainCharacters = new List { PedHash.Michael, PedHash.Franklin, PedHash.Franklin02, PedHash.Trevor }; + if (c == null && p != Game.Player.Character && !mainCharacters.Contains((PedHash)p.Model.Hash)) { if (allPeds.Length > Main.Settings.WorldPedSoftLimit && p.PopulationType == EntityPopulationType.RandomAmbient && !p.IsInVehicle()) { diff --git a/RageCoop.Client/Sync/SyncEvents.cs b/RageCoop.Client/Sync/SyncEvents.cs index d486fa8..07cda98 100644 --- a/RageCoop.Client/Sync/SyncEvents.cs +++ b/RageCoop.Client/Sync/SyncEvents.cs @@ -126,7 +126,7 @@ namespace RageCoop.Client } var p = EntityPool.GetPedByID(ownerID)?.MainPed; - if (p == null) { p = Game.Player.Character; Main.Logger.Warning("Failed to find owner for bullet"); } + if (p == null) { return; /* p = Game.Player.Character; Main.Logger.Warning("Failed to find owner for bullet"); */ } if (!CorePFXAsset.IsLoaded) { CorePFXAsset.Request(); } if (_lastWeaponHash != weaponHash) { From 14151d7b2cb4daf2cf4834e0f3292ca515dbd97a Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Mon, 14 Aug 2023 14:08:30 -0300 Subject: [PATCH 03/11] Add option to disable blip and nametag display --- RageCoop.Client/Menus/Sub/SettingsMenu.cs | 14 ++++++++++++++ RageCoop.Client/Networking/Receive.cs | 2 +- RageCoop.Client/Settings.cs | 10 ++++++++++ RageCoop.Client/Sync/Entities/Ped/SyncedPed.cs | 11 +++++++---- RageCoop.Client/Sync/EntityPool.cs | 2 +- 5 files changed, 33 insertions(+), 6 deletions(-) diff --git a/RageCoop.Client/Menus/Sub/SettingsMenu.cs b/RageCoop.Client/Menus/Sub/SettingsMenu.cs index 8f6e7d2..f62810e 100644 --- a/RageCoop.Client/Menus/Sub/SettingsMenu.cs +++ b/RageCoop.Client/Menus/Sub/SettingsMenu.cs @@ -17,6 +17,8 @@ namespace RageCoop.Client.Menus private static readonly NativeCheckboxItem _disableTrafficItem = new NativeCheckboxItem("Disable Traffic (NPCs/Vehicles)", "Local traffic only", Main.Settings.DisableTraffic); private static readonly NativeCheckboxItem _flipMenuItem = new NativeCheckboxItem("Flip menu", Main.Settings.FlipMenu); private static readonly NativeCheckboxItem _disablePauseAlt = new NativeCheckboxItem("Disable Alternate Pause", "Don't freeze game time when Esc pressed", Main.Settings.DisableAlternatePause); + private static readonly NativeCheckboxItem _showBlip = new NativeCheckboxItem("Show player blip", "Show other player's blip on map", Main.Settings.ShowPlayerBlip); + private static readonly NativeCheckboxItem _showNametag = new NativeCheckboxItem("Show player nametag", "Show other player's nametag on your screen", Main.Settings.ShowPlayerNameTag); private static readonly NativeCheckboxItem _disableVoice = new NativeCheckboxItem("Enable voice", "Check your GTA:V settings to find the right key on your keyboard for PushToTalk and talk to your friends", Main.Settings.Voice); private static readonly NativeItem _menuKey = new NativeItem("Menu Key", "The key to open menu", Main.Settings.MenuKey.ToString()); @@ -35,6 +37,16 @@ namespace RageCoop.Client.Menus _menuKey.Activated += ChaneMenuKey; _passengerKey.Activated += ChangePassengerKey; _vehicleSoftLimit.Activated += VehicleSoftLimitActivated; + _showBlip.Activated += (s, e) => + { + Main.Settings.ShowPlayerBlip = _showBlip.Checked; + Util.SaveSettings(); + }; + _showNametag.Activated += (s, e) => + { + Main.Settings.ShowPlayerNameTag = _showNametag.Checked; + Util.SaveSettings(); + }; Menu.Add(_disableTrafficItem); Menu.Add(_disablePauseAlt); @@ -43,6 +55,8 @@ namespace RageCoop.Client.Menus Menu.Add(_menuKey); Menu.Add(_passengerKey); Menu.Add(_vehicleSoftLimit); + Menu.Add(_showBlip); + Menu.Add(_showNametag); } private static void DisableVoiceCheckboxChanged(object sender, EventArgs e) diff --git a/RageCoop.Client/Networking/Receive.cs b/RageCoop.Client/Networking/Receive.cs index da05784..e1c2321 100644 --- a/RageCoop.Client/Networking/Receive.cs +++ b/RageCoop.Client/Networking/Receive.cs @@ -293,7 +293,7 @@ namespace RageCoop.Client { recycle = false; // Dispatch to script thread - Main.QueueAction(() => { SyncEvents.HandleEvent(packetType, msg); Peer.Recycle(msg); return true; }); + Main.QueueAction(() => { SyncEvents.HandleEvent(packetType, msg); return true; }); } break; } diff --git a/RageCoop.Client/Settings.cs b/RageCoop.Client/Settings.cs index 654c49e..6da3868 100644 --- a/RageCoop.Client/Settings.cs +++ b/RageCoop.Client/Settings.cs @@ -76,5 +76,15 @@ namespace RageCoop.Client /// Show the owner name of the entity you're aiming at /// public bool ShowEntityOwnerName { get; set; } = false; + + /// + /// Show other player's nametag on your screen + /// + public bool ShowPlayerNameTag { get; set; } = true; + + /// + /// Show other player's blip on map + /// + public bool ShowPlayerBlip { get; set; } = true; } } diff --git a/RageCoop.Client/Sync/Entities/Ped/SyncedPed.cs b/RageCoop.Client/Sync/Entities/Ped/SyncedPed.cs index 0a5d75e..0452cf3 100644 --- a/RageCoop.Client/Sync/Entities/Ped/SyncedPed.cs +++ b/RageCoop.Client/Sync/Entities/Ped/SyncedPed.cs @@ -28,7 +28,7 @@ namespace RageCoop.Client MainPed = p; OwnerID = Main.LocalPlayerID; - Function.Call(Hash.SET_PED_IS_IGNORED_BY_AUTO_OPEN_DOORS, false); + //Function.Call(Hash.SET_PED_IS_IGNORED_BY_AUTO_OPEN_DOORS, false); MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_DisableHurt, true); // MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_DisableMelee, true); @@ -76,12 +76,13 @@ namespace RageCoop.Client } } - if (((byte)BlipColor == 255) && (PedBlip != null)) + if (!Main.Settings.ShowPlayerBlip && (byte)BlipColor != 255) BlipColor = (BlipColor)255; + if ((byte)BlipColor == 255 && PedBlip != null) { PedBlip.Delete(); PedBlip = null; } - else if (((byte)BlipColor != 255) && PedBlip == null) + else if ((byte)BlipColor != 255 && PedBlip == null) { PedBlip = MainPed.AddBlip(); @@ -170,7 +171,7 @@ namespace RageCoop.Client private void RenderNameTag() { - if (!Owner.DisplayNameTag || (MainPed == null) || !MainPed.IsVisible || !MainPed.IsInRange(Main.PlayerPosition, 40f)) + if (!Owner.DisplayNameTag || !Main.Settings.ShowPlayerNameTag || MainPed == null || !MainPed.IsVisible || !MainPed.IsInRange(Main.PlayerPosition, 40f)) { return; } @@ -597,6 +598,8 @@ namespace RageCoop.Client MainPed.Task.StandStill(2000); LastMoving = false; } + + if (MainPed.IsTaskActive(TaskType.CTaskDiveToGround)) MainPed.Task.ClearAll(); break; } SmoothTransition(); diff --git a/RageCoop.Client/Sync/EntityPool.cs b/RageCoop.Client/Sync/EntityPool.cs index f75d1a0..b79922e 100644 --- a/RageCoop.Client/Sync/EntityPool.cs +++ b/RageCoop.Client/Sync/EntityPool.cs @@ -277,7 +277,7 @@ namespace RageCoop.Client { ProjectilesByHandle.Remove(p.Handle); } - Main.Logger.Debug($"Removing projectile {sp.ID}. Reason:{reason}"); + //Main.Logger.Debug($"Removing projectile {sp.ID}. Reason:{reason}"); if (sp.Exploded) p.Explode(); } ProjectilesByID.Remove(id); From d0eb0b7818911c05e0a02984e626f17931cf0dc3 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Fri, 6 Oct 2023 16:36:49 -0300 Subject: [PATCH 04/11] Bump version Add kill message --- RageCoop.Client/Main.cs | 11 +++++++++++ RageCoop.Client/Menus/Sub/ServersMenu.cs | 2 +- RageCoop.Client/Properties/AssemblyInfo.cs | 6 +++--- RageCoop.Server/Properties/AssemblyInfo.cs | 4 ++-- 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/RageCoop.Client/Main.cs b/RageCoop.Client/Main.cs index a853bc4..70a5b07 100644 --- a/RageCoop.Client/Main.cs +++ b/RageCoop.Client/Main.cs @@ -171,6 +171,7 @@ namespace RageCoop.Client Game.Player.WantedLevel = 0; Main.Logger.Debug("Player died."); Scripting.API.Events.InvokePlayerDied(); + KillMessage(); } GTA.UI.Screen.StopEffects(); } @@ -182,6 +183,7 @@ namespace RageCoop.Client else if (P.IsDead && !_lastDead) { Scripting.API.Events.InvokePlayerDied(); + KillMessage(); } _lastDead = P.IsDead; @@ -393,5 +395,14 @@ namespace RageCoop.Client }); } + public static void KillMessage() + { + if (P.Killer != null) + { + var killer = EntityPool.GetPedByHandle(P.Killer.Handle); + if (killer != null && killer.ID == killer.Owner.ID) + Scripting.API.SendChatMessage($"Killed by {killer.Owner.Username} ({P.CauseOfDeath})"); + } + } } } diff --git a/RageCoop.Client/Menus/Sub/ServersMenu.cs b/RageCoop.Client/Menus/Sub/ServersMenu.cs index 8879f11..552163c 100644 --- a/RageCoop.Client/Menus/Sub/ServersMenu.cs +++ b/RageCoop.Client/Menus/Sub/ServersMenu.cs @@ -76,7 +76,7 @@ namespace RageCoop.Client.Menus foreach (ServerInfo server in serverList) { string address = $"{server.address}:{server.port}"; - NativeItem tmpItem = new NativeItem($"[{server.country}] {server.name}", $"~b~{address}~s~~n~~g~Version {server.version}.x~s~") { AltTitle = $"[{server.players}/{server.maxPlayers}]" }; + NativeItem tmpItem = new NativeItem($"[{server.country}] {server.name}", $"~b~{address}~s~~n~~g~Version {server.version}~s~") { AltTitle = $"[{server.players}/{server.maxPlayers}]" }; tmpItem.Activated += (object sender, EventArgs e) => { try diff --git a/RageCoop.Client/Properties/AssemblyInfo.cs b/RageCoop.Client/Properties/AssemblyInfo.cs index 2c99ea5..04b2fee 100644 --- a/RageCoop.Client/Properties/AssemblyInfo.cs +++ b/RageCoop.Client/Properties/AssemblyInfo.cs @@ -15,8 +15,8 @@ using System.Resources; [assembly: AssemblyCulture("")] -// Version informationr( -[assembly: AssemblyVersion("1.5.4.4")] -[assembly: AssemblyFileVersion("1.5.4.4")] +// Version information +[assembly: AssemblyVersion("1.5.4.5")] +[assembly: AssemblyFileVersion("1.5.4.5")] [assembly: NeutralResourcesLanguageAttribute( "en-US" )] diff --git a/RageCoop.Server/Properties/AssemblyInfo.cs b/RageCoop.Server/Properties/AssemblyInfo.cs index f056db6..1242a23 100644 --- a/RageCoop.Server/Properties/AssemblyInfo.cs +++ b/RageCoop.Server/Properties/AssemblyInfo.cs @@ -15,7 +15,7 @@ using System.Resources; [assembly: AssemblyCulture("")] // Version information -[assembly: AssemblyVersion("1.5.4.3")] -[assembly: AssemblyFileVersion("1.5.4.3")] +[assembly: AssemblyVersion("1.5.4.5")] +[assembly: AssemblyFileVersion("1.5.4.5")] [assembly: NeutralResourcesLanguageAttribute( "en-US" )] From 92e1a970a83c5cbdff83f5292d9fa70422549c7f Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Fri, 6 Oct 2023 23:46:08 -0300 Subject: [PATCH 05/11] Show kill notification --- RageCoop.Client/Main.cs | 11 +++++------ RageCoop.Client/Scripting/API.cs | 4 ++-- RageCoop.Client/Scripting/BaseScript.cs | 4 ++-- RageCoop.Server/Scripting/BaseScript.cs | 2 +- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/RageCoop.Client/Main.cs b/RageCoop.Client/Main.cs index 70a5b07..f1c6999 100644 --- a/RageCoop.Client/Main.cs +++ b/RageCoop.Client/Main.cs @@ -170,8 +170,7 @@ namespace RageCoop.Client P.Health = 1; Game.Player.WantedLevel = 0; Main.Logger.Debug("Player died."); - Scripting.API.Events.InvokePlayerDied(); - KillMessage(); + Scripting.API.Events.InvokePlayerDied(KillMessage()); } GTA.UI.Screen.StopEffects(); } @@ -182,8 +181,7 @@ namespace RageCoop.Client } else if (P.IsDead && !_lastDead) { - Scripting.API.Events.InvokePlayerDied(); - KillMessage(); + Scripting.API.Events.InvokePlayerDied(KillMessage()); } _lastDead = P.IsDead; @@ -395,14 +393,15 @@ namespace RageCoop.Client }); } - public static void KillMessage() + private string KillMessage() { if (P.Killer != null) { var killer = EntityPool.GetPedByHandle(P.Killer.Handle); if (killer != null && killer.ID == killer.Owner.ID) - Scripting.API.SendChatMessage($"Killed by {killer.Owner.Username} ({P.CauseOfDeath})"); + return $"~h~{PlayerList.GetPlayer(LocalPlayerID).Username}~h~ was killed by ~h~{killer.Owner.Username}~h~ ({P.CauseOfDeath})"; } + return $"~h~{PlayerList.GetPlayer(LocalPlayerID).Username}~h~ died"; } } } diff --git a/RageCoop.Client/Scripting/API.cs b/RageCoop.Client/Scripting/API.cs index 0cd5ff3..8c7bb4c 100644 --- a/RageCoop.Client/Scripting/API.cs +++ b/RageCoop.Client/Scripting/API.cs @@ -91,7 +91,7 @@ namespace RageCoop.Client.Scripting /// /// The local player is dead /// - public static event EmptyEvent OnPlayerDied; + public static event EventHandler OnPlayerDied; /// /// A local vehicle is spawned @@ -133,7 +133,7 @@ namespace RageCoop.Client.Scripting internal static void InvokeVehicleDeleted(SyncedVehicle v) { OnVehicleDeleted?.Invoke(null, v); } internal static void InvokePedSpawned(SyncedPed p) { OnPedSpawned?.Invoke(null, p); } internal static void InvokePedDeleted(SyncedPed p) { OnPedDeleted?.Invoke(null, p); } - internal static void InvokePlayerDied() { OnPlayerDied?.Invoke(); } + internal static void InvokePlayerDied(string m) { OnPlayerDied?.Invoke(null, m); } internal static void InvokeTick() { OnTick?.Invoke(); } internal static void InvokeKeyDown(object s, KeyEventArgs e) { OnKeyDown?.Invoke(s, e); } diff --git a/RageCoop.Client/Scripting/BaseScript.cs b/RageCoop.Client/Scripting/BaseScript.cs index 8d489ae..e7f3a6a 100644 --- a/RageCoop.Client/Scripting/BaseScript.cs +++ b/RageCoop.Client/Scripting/BaseScript.cs @@ -16,7 +16,7 @@ namespace RageCoop.Client.Scripting { API.Events.OnPedDeleted += (s, p) => { API.SendCustomEvent(CustomEvents.OnPedDeleted, p.ID); }; API.Events.OnVehicleDeleted += (s, p) => { API.SendCustomEvent(CustomEvents.OnVehicleDeleted, p.ID); }; - API.Events.OnPlayerDied += () => { API.SendCustomEvent(CustomEvents.OnPlayerDied); }; + API.Events.OnPlayerDied += (s, m) => { API.SendCustomEvent(CustomEvents.OnPlayerDied, m); }; API.RegisterCustomEventHandler(CustomEvents.SetAutoRespawn, SetAutoRespawn); API.RegisterCustomEventHandler(CustomEvents.SetDisplayNameTag, SetDisplayNameTag); @@ -31,7 +31,7 @@ namespace RageCoop.Client.Scripting API.RegisterCustomEventHandler(CustomEvents.UpdatePedBlip, UpdatePedBlip); API.RegisterCustomEventHandler(CustomEvents.IsHost, (e) => { _isHost = (bool)e.Args[0]; }); API.RegisterCustomEventHandler(CustomEvents.WeatherTimeSync, WeatherTimeSync); - API.RegisterCustomEventHandler(CustomEvents.OnPlayerDied, (e) => { GTA.UI.Notification.Show($"~h~{e.Args[0]}~h~ died."); }); + API.RegisterCustomEventHandler(CustomEvents.OnPlayerDied, (e) => { GTA.UI.Notification.Show((string)e.Args[0]); }); Task.Run(() => { while (true) diff --git a/RageCoop.Server/Scripting/BaseScript.cs b/RageCoop.Server/Scripting/BaseScript.cs index 7fd24b8..537d84b 100644 --- a/RageCoop.Server/Scripting/BaseScript.cs +++ b/RageCoop.Server/Scripting/BaseScript.cs @@ -38,7 +38,7 @@ namespace RageCoop.Server.Scripting }); API.RegisterCustomEventHandler(CustomEvents.OnPlayerDied, (e) => { - API.SendCustomEventQueued(API.GetAllClients().Values.Where(x => x != e.Client).ToList(), CustomEvents.OnPlayerDied, e.Client.Username); + API.SendCustomEventQueued(API.GetAllClients().Values.Where(x => x != e.Client).ToList(), CustomEvents.OnPlayerDied, e.Args); }); API.Events.OnChatMessage += (s, e) => Server.Logger?.Info((e.Client?.Username ?? e.ClaimedSender ?? "Unknown") + ": " + e.Message); From 4e6fde129d32b88e293e11e702c39edf3f9ab9e3 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Wed, 18 Oct 2023 10:41:34 -0300 Subject: [PATCH 06/11] Add global limits --- RageCoop.Client/Networking/Receive.cs | 13 ++++++++++--- RageCoop.Client/Settings.cs | 16 ++++++++++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/RageCoop.Client/Networking/Receive.cs b/RageCoop.Client/Networking/Receive.cs index e1c2321..b92c6d4 100644 --- a/RageCoop.Client/Networking/Receive.cs +++ b/RageCoop.Client/Networking/Receive.cs @@ -159,6 +159,7 @@ namespace RageCoop.Client Main.Logger.Error(ex); Peer.Shutdown($"Packet Error [{packetType}]"); #endif + _recycle = false; } break; } @@ -305,7 +306,9 @@ namespace RageCoop.Client if (c == null) { // Main.Logger.Debug($"Creating character for incoming sync:{packet.ID}"); - EntityPool.ThreadSafe.Add(c = new SyncedPed(packet.ID)); + if (EntityPool.allPeds.Length < Main.Settings.GlobalPedSoftLimit) + EntityPool.ThreadSafe.Add(c = new SyncedPed(packet.ID)); + else return; } PedDataFlags flags = packet.Flags; c.ID = packet.ID; @@ -353,7 +356,9 @@ namespace RageCoop.Client SyncedVehicle v = EntityPool.GetVehicleByID(packet.ID); if (v == null) { - EntityPool.ThreadSafe.Add(v = new SyncedVehicle(packet.ID)); + if (EntityPool.allVehicles.Length < Main.Settings.GlobalVehicleSoftLimit) + EntityPool.ThreadSafe.Add(v = new SyncedVehicle(packet.ID)); + else return; } if (v.IsLocal) { return; } v.ID = packet.ID; @@ -393,7 +398,9 @@ namespace RageCoop.Client { if (packet.Flags.HasProjDataFlag(ProjectileDataFlags.Exploded)) { return; } // Main.Logger.Debug($"Creating new projectile: {(WeaponHash)packet.WeaponHash}"); - EntityPool.ThreadSafe.Add(p = new SyncedProjectile(packet.ID)); + if (EntityPool.allProjectiles.Length < Main.Settings.GlobalProjectileSoftLimit) + EntityPool.ThreadSafe.Add(p = new SyncedProjectile(packet.ID)); + else return; } p.Flags = packet.Flags; p.Position = packet.Position; diff --git a/RageCoop.Client/Settings.cs b/RageCoop.Client/Settings.cs index 6da3868..b60e91e 100644 --- a/RageCoop.Client/Settings.cs +++ b/RageCoop.Client/Settings.cs @@ -67,6 +67,22 @@ namespace RageCoop.Client /// The game won't spawn more NPC traffic if the limit is exceeded. -1 for unlimited (not recommended). /// public int WorldPedSoftLimit { get; set; } = 30; + + /// + /// The mod won't sync more vehicles if the limit is exceeded. + /// + public int GlobalVehicleSoftLimit { get; set; } = 100; + + /// + /// The mod won't sync more peds if the limit is exceeded. + /// + public int GlobalPedSoftLimit { get; set; } = 100; + + /// + /// The mod won't sync more projectiles if the limit is exceeded. + /// + public int GlobalProjectileSoftLimit { get; set; } = 100; + /// /// The directory where log and resources downloaded from server will be placed. /// From 4e524075910263913ca830416d73fc8679c761c0 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Wed, 18 Oct 2023 16:56:44 -0300 Subject: [PATCH 07/11] Update nightly-build.yaml --- .github/workflows/nightly-build.yaml | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/.github/workflows/nightly-build.yaml b/.github/workflows/nightly-build.yaml index 9924c74..8bd9ab6 100644 --- a/.github/workflows/nightly-build.yaml +++ b/.github/workflows/nightly-build.yaml @@ -28,8 +28,6 @@ jobs: run: dotnet publish RageCoop.Server/RageCoop.Server.csproj --self-contained -p:PublishSingleFile=true -p:PublishTrimmed=false -r win-x64 -o bin/Release/Server/win-x64 -c Release - name: Build server linux-x64 run: dotnet publish RageCoop.Server/RageCoop.Server.csproj --self-contained -p:PublishSingleFile=true -p:PublishTrimmed=false -r linux-x64 -o bin/Release/Server/linux-x64 -c Release - - name: Build server linux-arm - run: dotnet publish RageCoop.Server/RageCoop.Server.csproj --self-contained -p:PublishSingleFile=true -p:PublishTrimmed=false -r linux-arm -o bin/Release/Server/linux-arm -c Release - uses: vimtor/action-zip@v1 with: files: bin/Release/Client @@ -45,11 +43,6 @@ jobs: files: bin/Release/Server/linux-x64 dest: RageCoop.Server-linux-x64.zip - - uses: vimtor/action-zip@v1 - with: - files: bin/Release/Server/linux-arm - dest: RageCoop.Server-linux-arm.zip - - uses: WebFreak001/deploy-nightly@v1.1.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # automatically provided by github actions @@ -82,17 +75,3 @@ jobs: asset_name: RageCoop.Server-linux-x64.zip asset_content_type: application/zip max_releases: 7 - - - - uses: WebFreak001/deploy-nightly@v1.1.0 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # automatically provided by github actions - with: - upload_url: https://uploads.github.com/repos/RAGECOOP/RAGECOOP-V/releases/70603992/assets{?name,label} - release_id: 70603992 - asset_path: RageCoop.Server-linux-arm.zip - asset_name: RageCoop.Server-linux-arm.zip - asset_content_type: application/zip - max_releases: 7 - - uses: actions/checkout@v2 - From fbff72ff1422084be5dce031382d2cd3281e02ba Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Wed, 18 Oct 2023 16:57:19 -0300 Subject: [PATCH 08/11] Update LemonUI --- RageCoop.Client/Menus/CoopMenu.cs | 2 +- RageCoop.Client/Menus/Sub/DebugMenu.cs | 2 +- RageCoop.Client/Menus/Sub/DevToolMenu.cs | 2 +- RageCoop.Client/Menus/Sub/ServersMenu.cs | 2 +- RageCoop.Client/Menus/Sub/SettingsMenu.cs | 2 +- RageCoop.Client/RageCoop.Client.csproj | 2 +- libs/LemonUI.SHVDN3.dll | Bin 86528 -> 92672 bytes 7 files changed, 6 insertions(+), 6 deletions(-) diff --git a/RageCoop.Client/Menus/CoopMenu.cs b/RageCoop.Client/Menus/CoopMenu.cs index f87b55c..ceb1e72 100644 --- a/RageCoop.Client/Menus/CoopMenu.cs +++ b/RageCoop.Client/Menus/CoopMenu.cs @@ -50,7 +50,7 @@ namespace RageCoop.Client.Menus { Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0); - Menu.Title.Color = Color.FromArgb(255, 165, 0); + Menu.BannerText.Color = Color.FromArgb(255, 165, 0); _usernameItem.Activated += UsernameActivated; _passwordItem.Activated += _passwordActivated; diff --git a/RageCoop.Client/Menus/Sub/DebugMenu.cs b/RageCoop.Client/Menus/Sub/DebugMenu.cs index 83c8e6f..12dd0e1 100644 --- a/RageCoop.Client/Menus/Sub/DebugMenu.cs +++ b/RageCoop.Client/Menus/Sub/DebugMenu.cs @@ -25,7 +25,7 @@ namespace RageCoop.Client static DebugMenu() { Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0); - Menu.Title.Color = Color.FromArgb(255, 165, 0); + Menu.BannerText.Color = Color.FromArgb(255, 165, 0); DiagnosticMenu.Opening += (sender, e) => diff --git a/RageCoop.Client/Menus/Sub/DevToolMenu.cs b/RageCoop.Client/Menus/Sub/DevToolMenu.cs index 943547b..4ce8a6a 100644 --- a/RageCoop.Client/Menus/Sub/DevToolMenu.cs +++ b/RageCoop.Client/Menus/Sub/DevToolMenu.cs @@ -22,7 +22,7 @@ namespace RageCoop.Client static DevToolMenu() { Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0); - Menu.Title.Color = Color.FromArgb(255, 165, 0); + Menu.BannerText.Color = Color.FromArgb(255, 165, 0); enableItem.Activated += enableItem_Activated; enableItem.Checked = false; diff --git a/RageCoop.Client/Menus/Sub/ServersMenu.cs b/RageCoop.Client/Menus/Sub/ServersMenu.cs index 552163c..fe5e3a3 100644 --- a/RageCoop.Client/Menus/Sub/ServersMenu.cs +++ b/RageCoop.Client/Menus/Sub/ServersMenu.cs @@ -30,7 +30,7 @@ namespace RageCoop.Client.Menus static ServersMenu() { Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0); - Menu.Title.Color = Color.FromArgb(255, 165, 0); + Menu.BannerText.Color = Color.FromArgb(255, 165, 0); Menu.Opening += (object sender, System.ComponentModel.CancelEventArgs e) => { diff --git a/RageCoop.Client/Menus/Sub/SettingsMenu.cs b/RageCoop.Client/Menus/Sub/SettingsMenu.cs index f62810e..f3bbc90 100644 --- a/RageCoop.Client/Menus/Sub/SettingsMenu.cs +++ b/RageCoop.Client/Menus/Sub/SettingsMenu.cs @@ -28,7 +28,7 @@ namespace RageCoop.Client.Menus static SettingsMenu() { Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0); - Menu.Title.Color = Color.FromArgb(255, 165, 0); + Menu.BannerText.Color = Color.FromArgb(255, 165, 0); _disableTrafficItem.CheckboxChanged += DisableTrafficCheckboxChanged; _disablePauseAlt.CheckboxChanged += DisablePauseAltCheckboxChanged; diff --git a/RageCoop.Client/RageCoop.Client.csproj b/RageCoop.Client/RageCoop.Client.csproj index d0d44ef..60b0988 100644 --- a/RageCoop.Client/RageCoop.Client.csproj +++ b/RageCoop.Client/RageCoop.Client.csproj @@ -90,7 +90,7 @@ ..\packages\SharpZipLib.1.3.3\lib\net45\ICSharpCode.SharpZipLib.dll - + False ..\libs\LemonUI.SHVDN3.dll diff --git a/libs/LemonUI.SHVDN3.dll b/libs/LemonUI.SHVDN3.dll index c998d32e5ec7a8bb87dec0d9437e8d624f95ad8c..2f0f66d5dd5ab1362ea821138c0b8d8c300e2f7e 100644 GIT binary patch literal 92672 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 literal 86528 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 From 3fc813b2d8bc12d79e3a5ec6e39024c96d4bcb37 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Sun, 22 Oct 2023 17:14:50 -0300 Subject: [PATCH 09/11] Fix bug disconnecting from server --- RageCoop.Client/Main.cs | 3 ++- RageCoop.Client/Networking/Networking.cs | 14 +++++++------- RageCoop.Client/Sync/EntityPool.cs | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/RageCoop.Client/Main.cs b/RageCoop.Client/Main.cs index f1c6999..1a8f1a9 100644 --- a/RageCoop.Client/Main.cs +++ b/RageCoop.Client/Main.cs @@ -326,7 +326,8 @@ namespace RageCoop.Client WorldThread.Traffic(true); Function.Call(Hash.SET_ENABLE_VEHICLE_SLIPSTREAMING, false); CoopMenu.DisconnectedMenuSetting(); - GTA.UI.Notification.Show("~r~Disconnected: " + reason); + if (reason != "Abort") + GTA.UI.Notification.Show("~r~Disconnected: " + reason); LocalPlayerID = default; }); Memory.RestorePatches(); diff --git a/RageCoop.Client/Networking/Networking.cs b/RageCoop.Client/Networking/Networking.cs index 6feec5d..5b637c7 100644 --- a/RageCoop.Client/Networking/Networking.cs +++ b/RageCoop.Client/Networking/Networking.cs @@ -30,16 +30,16 @@ namespace RageCoop.Client public static void ToggleConnection(string address, string username = null, string password = null, PublicKey publicKey = null) { Menus.CoopMenu.Menu.Visible = false; - Peer?.Shutdown("Bye"); - if (IsOnServer) - { - // ? - } - else if (IsConnecting) + if (IsConnecting) { _publicKeyReceived.Set(); IsConnecting = false; - Notification.Show("Connection has been canceled"); + Main.QueueAction(() => Notification.Show("Connection has been canceled")); + Peer?.Shutdown("Bye"); + } + else if (IsOnServer) + { + Peer?.Shutdown("Bye"); } else { diff --git a/RageCoop.Client/Sync/EntityPool.cs b/RageCoop.Client/Sync/EntityPool.cs index b79922e..891e386 100644 --- a/RageCoop.Client/Sync/EntityPool.cs +++ b/RageCoop.Client/Sync/EntityPool.cs @@ -43,7 +43,7 @@ namespace RageCoop.Client #endregion public static void Cleanup(bool keepPlayer = true, bool keepMine = true) { - foreach (var ped in PedsByID.Values) + foreach (var ped in PedsByID.Values.ToArray()) { if ((keepPlayer && (ped.ID == Main.LocalPlayerID)) || (keepMine && (ped.OwnerID == Main.LocalPlayerID))) { continue; } RemovePed(ped.ID); From f0eefa575c2f63821a2d2d43b2948350a68c8682 Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Sun, 22 Oct 2023 18:59:19 -0300 Subject: [PATCH 10/11] Always sync player ped --- RageCoop.Client/Networking/Receive.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RageCoop.Client/Networking/Receive.cs b/RageCoop.Client/Networking/Receive.cs index b92c6d4..fcea653 100644 --- a/RageCoop.Client/Networking/Receive.cs +++ b/RageCoop.Client/Networking/Receive.cs @@ -306,7 +306,7 @@ namespace RageCoop.Client if (c == null) { // Main.Logger.Debug($"Creating character for incoming sync:{packet.ID}"); - if (EntityPool.allPeds.Length < Main.Settings.GlobalPedSoftLimit) + if (EntityPool.allPeds.Length < Main.Settings.GlobalPedSoftLimit || PlayerList.Players.ContainsKey(packet.ID)) EntityPool.ThreadSafe.Add(c = new SyncedPed(packet.ID)); else return; } From 4a54851c51c33f22900d5bc7cee72575e1f8c35a Mon Sep 17 00:00:00 2001 From: oldnapalm <38410858+oldnapalm@users.noreply.github.com> Date: Mon, 23 Oct 2023 10:36:57 -0300 Subject: [PATCH 11/11] Update AssemblyInfo.cs --- RageCoop.Client/Properties/AssemblyInfo.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/RageCoop.Client/Properties/AssemblyInfo.cs b/RageCoop.Client/Properties/AssemblyInfo.cs index 04b2fee..e6b2d99 100644 --- a/RageCoop.Client/Properties/AssemblyInfo.cs +++ b/RageCoop.Client/Properties/AssemblyInfo.cs @@ -16,7 +16,7 @@ using System.Resources; // Version information -[assembly: AssemblyVersion("1.5.4.5")] -[assembly: AssemblyFileVersion("1.5.4.5")] +[assembly: AssemblyVersion("1.5.4.6")] +[assembly: AssemblyFileVersion("1.5.4.6")] [assembly: NeutralResourcesLanguageAttribute( "en-US" )]