diff --git a/RageCoop.Client/Debug.cs b/RageCoop.Client/Debug.cs index 06896c1..2746d69 100644 --- a/RageCoop.Client/Debug.cs +++ b/RageCoop.Client/Debug.cs @@ -1,8 +1,5 @@ using System; using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; namespace RageCoop.Client { @@ -21,7 +18,7 @@ namespace RageCoop.Client CheckProjectiles, GetAllEntities, Receive, - + ProjectilesTotal, } internal static class Debug { @@ -29,7 +26,7 @@ namespace RageCoop.Client private static int _lastNfHandle; static Debug() { - foreach(TimeStamp t in Enum.GetValues(typeof(TimeStamp))) + foreach (TimeStamp t in Enum.GetValues(typeof(TimeStamp))) { TimeStamps.Add(t, 0); } @@ -37,7 +34,7 @@ namespace RageCoop.Client public static string Dump(this Dictionary d) { string s = ""; - foreach(KeyValuePair kvp in d) + foreach (KeyValuePair kvp in d) { s+=kvp.Key+":"+kvp.Value+"\n"; } diff --git a/RageCoop.Client/DevTools/DevTool.cs b/RageCoop.Client/DevTools/DevTool.cs index 1a74736..0902627 100644 --- a/RageCoop.Client/DevTools/DevTool.cs +++ b/RageCoop.Client/DevTools/DevTool.cs @@ -1,20 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; +using GTA; using GTA.Math; +using System; using System.Drawing; -using System.Windows.Forms; using System.Threading; +using System.Windows.Forms; namespace RageCoop.Client { - internal class DevTool:Script + internal class DevTool : Script { public static Vehicle ToMark; - public static bool UseSecondary=false; + public static bool UseSecondary = false; public static int Current = 0; public static int Secondary = 0; public static MuzzleDir Direction = MuzzleDir.Forward; @@ -27,7 +23,8 @@ namespace RageCoop.Client private void OnKeyDown(object sender, KeyEventArgs e) { if (ToMark==null||(!ToMark.Exists())) { return; } - if (DevToolMenu.Menu.SelectedItem==DevToolMenu.boneIndexItem) { + if (DevToolMenu.Menu.SelectedItem==DevToolMenu.boneIndexItem) + { switch (e.KeyCode) { @@ -78,7 +75,7 @@ namespace RageCoop.Client } private static void OnTick(object sender, EventArgs e) { - if(ToMark == null || !ToMark.Exists()){ return;} + if (ToMark == null || !ToMark.Exists()) { return; } Update(); Draw(Current); if (UseSecondary) @@ -170,15 +167,15 @@ namespace RageCoop.Client GTA.UI.Notification.Show("Copied to clipboard, please paste it on the GitHub issue page!"); } } - + } - internal enum MuzzleDir:byte + internal enum MuzzleDir : byte { - Forward=0, + Forward = 0, Right = 1, - Up=2, - Backward=3, + Up = 2, + Backward = 3, Left = 4, - Down=5, + Down = 5, } } diff --git a/RageCoop.Client/Main.cs b/RageCoop.Client/Main.cs index 20efaf3..031f26e 100644 --- a/RageCoop.Client/Main.cs +++ b/RageCoop.Client/Main.cs @@ -1,16 +1,14 @@ -using System; +using GTA; +using GTA.Math; +using GTA.Native; +using RageCoop.Client.Menus; +using RageCoop.Core; +using System; +using System.Collections.Generic; +using System.Diagnostics; using System.IO; using System.Linq; using System.Windows.Forms; -using System.Collections.Generic; -using System.Drawing; -using System.Threading; -using System.Diagnostics; -using RageCoop.Client.Menus; -using RageCoop.Core; -using GTA; -using GTA.Native; -using GTA.Math; namespace RageCoop.Client { @@ -19,26 +17,26 @@ namespace RageCoop.Client /// internal class Main : Script { - + private bool _gameLoaded = false; internal static readonly string CurrentVersion = "V0_5_0"; - internal static int LocalPlayerID=0; + internal static int LocalPlayerID = 0; internal static RelationshipGroup SyncedPedsGroup; internal static new Settings Settings = null; - internal static Scripting.BaseScript BaseScript=new Scripting.BaseScript(); + internal static Scripting.BaseScript BaseScript = new Scripting.BaseScript(); #if !NON_INTERACTIVE #endif internal static Chat MainChat = null; internal static Stopwatch Counter = new Stopwatch(); internal static Logger Logger = null; - + internal static ulong Ticked = 0; internal static Vector3 PlayerPosition; - internal static Scripting.Resources Resources=null; + internal static Scripting.Resources Resources = null; private static List> QueuedActions = new List>(); /// /// Don't use it! @@ -90,22 +88,24 @@ namespace RageCoop.Client #endif MainChat = new Chat(); Tick += OnTick; - Tick += (s,e) => { Scripting.API.Events.InvokeTick(); }; + Tick += (s, e) => { Scripting.API.Events.InvokeTick(); }; KeyDown += OnKeyDown; KeyDown+=(s, e) => { Scripting.API.Events.InvokeKeyDown(s, e); }; KeyUp+=(s, e) => { Scripting.API.Events.InvokeKeyUp(s, e); }; Aborted += (object sender, EventArgs e) => CleanUp(); - + Util.NativeMemory(); Counter.Restart(); } #if DEBUG #endif + public static Ped P; + public static float FPS; private void OnTick(object sender, EventArgs e) { - var P = Game.Player.Character; - + P= Game.Player.Character; + FPS=Game.FPS; PlayerPosition=P.Position; if (Game.IsLoading) { @@ -114,14 +114,14 @@ namespace RageCoop.Client else if (!_gameLoaded && (_gameLoaded = true)) { #if !NON_INTERACTIVE - GTA.UI.Notification.Show(GTA.UI.NotificationIcon.AllPlayersConf, "RAGECOOP","Welcome!", $"Press ~g~{Main.Settings.MenuKey}~s~ to open the menu."); + GTA.UI.Notification.Show(GTA.UI.NotificationIcon.AllPlayersConf, "RAGECOOP", "Welcome!", $"Press ~g~{Main.Settings.MenuKey}~s~ to open the menu."); #endif } #if !NON_INTERACTIVE CoopMenu.MenuPool.Process(); #endif - + DoQueuedActions(); if (!Networking.IsOnServer) { @@ -139,7 +139,7 @@ namespace RageCoop.Client { Main.Logger.Error(ex); } - + #if DEBUG @@ -160,12 +160,12 @@ namespace RageCoop.Client { Function.Call(Hash.PAUSE_DEATH_ARREST_RESTART, true); Function.Call(Hash.IGNORE_NEXT_RESTART, true); - Function.Call(Hash.FORCE_GAME_STATE_PLAYING); + Function.Call(Hash.FORCE_GAME_STATE_PLAYING); Function.Call(Hash.TERMINATE_ALL_SCRIPTS_WITH_THIS_NAME, "respawn_controller"); if (P.IsDead) { Function.Call(Hash.SET_FADE_OUT_AFTER_DEATH, false); - + if (P.Health!=1) { P.Health=1; @@ -184,7 +184,7 @@ namespace RageCoop.Client Ticked++; } - + private void OnKeyDown(object sender, KeyEventArgs e) { if (MainChat.Focused) @@ -241,7 +241,7 @@ namespace RageCoop.Client else if (e.KeyCode==Settings.PassengerKey) { var P = Game.Player.Character; - + if (!P.IsInVehicle()) { if (P.IsTaskActive(TaskType.CTaskEnterVehicle)) @@ -350,7 +350,7 @@ namespace RageCoop.Client QueuedActions.Remove(action); } } - catch(Exception ex) + catch (Exception ex) { Logger.Error(ex); QueuedActions.Remove(action); @@ -374,7 +374,7 @@ namespace RageCoop.Client { lock (QueuedActions) { - QueuedActions.Add(() => { a(); return true; }) ; + QueuedActions.Add(() => { a(); return true; }); } } /// diff --git a/RageCoop.Client/Menus/CoopMenu.cs b/RageCoop.Client/Menus/CoopMenu.cs index 5c59e61..de52321 100644 --- a/RageCoop.Client/Menus/CoopMenu.cs +++ b/RageCoop.Client/Menus/CoopMenu.cs @@ -1,10 +1,8 @@ using GTA; - -using System.Drawing; - using LemonUI; using LemonUI.Menus; using LemonUI.Scaleform; +using System.Drawing; namespace RageCoop.Client.Menus { @@ -19,7 +17,7 @@ namespace RageCoop.Client.Menus UseMouse = false, Alignment = Main.Settings.FlipMenu ? GTA.UI.Alignment.Right : GTA.UI.Alignment.Left }; - public static PopUp PopUp=new PopUp() + public static PopUp PopUp = new PopUp() { Title="", Prompt="", @@ -31,15 +29,16 @@ namespace RageCoop.Client.Menus public static NativeMenu LastMenu { get; set; } = Menu; #region ITEMS private static readonly NativeItem _usernameItem = new NativeItem("Username") { AltTitle = Main.Settings.Username }; - private static readonly NativeItem _passwordItem = new NativeItem("Password") { AltTitle = new string('*',Main.Settings.Password.Length) }; + private static readonly NativeItem _passwordItem = new NativeItem("Password") { AltTitle = new string('*', Main.Settings.Password.Length) }; public static readonly NativeItem ServerIpItem = new NativeItem("Server IP") { AltTitle = Main.Settings.LastServerAddress }; internal static readonly NativeItem _serverConnectItem = new NativeItem("Connect"); private static readonly NativeItem _aboutItem = new NativeItem("About", "~y~SOURCE~s~~n~" + "https://github.com/RAGECOOP~n~" + "~y~VERSION~s~~n~" + - Main.CurrentVersion.Replace("_", ".")) { LeftBadge = new LemonUI.Elements.ScaledTexture("commonmenu", "shop_new_star") }; - + Main.CurrentVersion.Replace("_", ".")) + { LeftBadge = new LemonUI.Elements.ScaledTexture("commonmenu", "shop_new_star") }; + #endregion @@ -84,7 +83,7 @@ namespace RageCoop.Client.Menus } - public static bool ShowPopUp(string prompt, string title,string subtitle,string error,bool showbackground) + public static bool ShowPopUp(string prompt, string title, string subtitle, string error, bool showbackground) { PopUp.Prompt=prompt; PopUp.Title=title; diff --git a/RageCoop.Client/Menus/Sub/DebugMenu.cs b/RageCoop.Client/Menus/Sub/DebugMenu.cs index f9d4f1f..0a00ea4 100644 --- a/RageCoop.Client/Menus/Sub/DebugMenu.cs +++ b/RageCoop.Client/Menus/Sub/DebugMenu.cs @@ -1,18 +1,13 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using LemonUI; +using GTA; using LemonUI.Menus; -using GTA; using System.Drawing; namespace RageCoop.Client { internal static class DebugMenu { - public static NativeMenu Menu = new NativeMenu("RAGECOOP", "Debug", "Debug settings") { + public static NativeMenu Menu = new NativeMenu("RAGECOOP", "Debug", "Debug settings") + { UseMouse = false, Alignment = Main.Settings.FlipMenu ? GTA.UI.Alignment.Right : GTA.UI.Alignment.Left }; @@ -21,23 +16,23 @@ namespace RageCoop.Client UseMouse = false, Alignment = Main.Settings.FlipMenu ? GTA.UI.Alignment.Right : GTA.UI.Alignment.Left }; - private static NativeItem d1=new NativeItem("PositionPrediction"); + private static NativeItem d1 = new NativeItem("PositionPrediction"); static DebugMenu() { Menu.Banner.Color = Color.FromArgb(225, 0, 0, 0); Menu.Title.Color = Color.FromArgb(255, 165, 0); - d1.Activated+=(sender,e) => + d1.Activated+=(sender, e) => { - try{ SyncParameters.PositioinPredictionDefault =float.Parse(Game.GetUserInput(WindowTitle.EnterMessage20, SyncParameters.PositioinPredictionDefault.ToString(), 20));} + try { SyncParameters.PositioinPredictionDefault =float.Parse(Game.GetUserInput(WindowTitle.EnterMessage20, SyncParameters.PositioinPredictionDefault.ToString(), 20)); } catch { } Update(); }; - + Menu.Add(d1); Menu.AddSubMenu(DiagnosticMenu); - Menu.Opening+=(sender, e) =>Update(); + Menu.Opening+=(sender, e) => Update(); DiagnosticMenu.Opening+=(sender, e) => { DiagnosticMenu.Clear(); @@ -51,7 +46,7 @@ namespace RageCoop.Client Update(); } - + private static void Update() { diff --git a/RageCoop.Client/Menus/Sub/DevToolMenu.cs b/RageCoop.Client/Menus/Sub/DevToolMenu.cs index 3ce7e7d..37c6eb8 100644 --- a/RageCoop.Client/Menus/Sub/DevToolMenu.cs +++ b/RageCoop.Client/Menus/Sub/DevToolMenu.cs @@ -1,10 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using GTA; using LemonUI.Menus; -using GTA; +using System; using System.Drawing; namespace RageCoop.Client @@ -18,7 +14,7 @@ namespace RageCoop.Client }; private static NativeCheckboxItem enableItem = new NativeCheckboxItem("Enable"); - private static NativeCheckboxItem enableSecondaryItem = new NativeCheckboxItem("Secondary","Enable if this vehicle have two muzzles"); + private static NativeCheckboxItem enableSecondaryItem = new NativeCheckboxItem("Secondary", "Enable if this vehicle have two muzzles"); public static NativeItem boneIndexItem = new NativeItem("Current bone index"); public static NativeItem secondaryBoneIndexItem = new NativeItem("Secondary bone index"); public static NativeItem clipboardItem = new NativeItem("Copy to clipboard"); diff --git a/RageCoop.Client/Menus/Sub/ServersMenu.cs b/RageCoop.Client/Menus/Sub/ServersMenu.cs index f7f0634..0a648fe 100644 --- a/RageCoop.Client/Menus/Sub/ServersMenu.cs +++ b/RageCoop.Client/Menus/Sub/ServersMenu.cs @@ -1,9 +1,9 @@ -using System; -using System.Net; -using System.Drawing; -using System.Collections.Generic; +using LemonUI.Menus; using Newtonsoft.Json; -using LemonUI.Menus; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Net; using System.Threading; namespace RageCoop.Client.Menus @@ -18,13 +18,13 @@ namespace RageCoop.Client.Menus [JsonProperty("name")] public string Name { get; set; } - + [JsonProperty("version")] public string Version { get; set; } - + [JsonProperty("players")] public int Players { get; set; } - + [JsonProperty("maxPlayers")] public int MaxPlayers { get; set; } @@ -59,7 +59,7 @@ namespace RageCoop.Client.Menus Menu.Add(ResultItem = new NativeItem("Loading...")); // Prevent freezing - GetServersThread=new Thread(()=> GetAllServers()); + GetServersThread=new Thread(() => GetAllServers()); GetServersThread.Start(); }; Menu.Closing += (object sender, System.ComponentModel.CancelEventArgs e) => @@ -79,7 +79,7 @@ namespace RageCoop.Client.Menus List serverList = null; var realUrl = Main.Settings.MasterServer; serverList = JsonConvert.DeserializeObject>(DownloadString(realUrl)); - + // Need to be processed in main thread Main.QueueAction(() => { diff --git a/RageCoop.Client/Menus/Sub/SettingsMenu.cs b/RageCoop.Client/Menus/Sub/SettingsMenu.cs index 98b6f07..5600723 100644 --- a/RageCoop.Client/Menus/Sub/SettingsMenu.cs +++ b/RageCoop.Client/Menus/Sub/SettingsMenu.cs @@ -1,8 +1,8 @@ -using System.Drawing; -using System; -using System.Windows.Forms; -using GTA; +using GTA; using LemonUI.Menus; +using System; +using System.Drawing; +using System.Windows.Forms; namespace RageCoop.Client.Menus { @@ -22,10 +22,10 @@ namespace RageCoop.Client.Menus private static readonly NativeCheckboxItem _disablePauseAlt = new NativeCheckboxItem("Disable Alternate Pause", "Don't freeze game time when Esc pressed", Main.Settings.DisableTraffic); private static readonly NativeCheckboxItem _showNetworkInfoItem = new NativeCheckboxItem("Show Network Info", Networking.ShowNetworkInfo); - - private static NativeItem _menuKey = new NativeItem("Menu Key","The key to open menu", Main.Settings.MenuKey.ToString()); + + private static NativeItem _menuKey = new NativeItem("Menu Key", "The key to open menu", Main.Settings.MenuKey.ToString()); private static NativeItem _passengerKey = new NativeItem("Passenger Key", "The key to enter a vehicle as passenger", Main.Settings.PassengerKey.ToString()); - private static NativeItem _vehicleSoftLimit = new NativeItem("Vehicle limit (soft)", "The game won't spawn more NPC traffic if the limit is exceeded. \n-1 for unlimited (not recommended).",Main.Settings.WorldVehicleSoftLimit.ToString()); + private static NativeItem _vehicleSoftLimit = new NativeItem("Vehicle limit (soft)", "The game won't spawn more NPC traffic if the limit is exceeded. \n-1 for unlimited (not recommended).", Main.Settings.WorldVehicleSoftLimit.ToString()); /// /// Don't use it! @@ -102,7 +102,7 @@ namespace RageCoop.Client.Menus public static void DisableTrafficCheckboxChanged(object a, System.EventArgs b) { Main.Settings.DisableTraffic = _disableTrafficItem.Checked; - Util.SaveSettings() ; + Util.SaveSettings(); } public static void FlipMenuCheckboxChanged(object a, System.EventArgs b) diff --git a/RageCoop.Client/Menus/Sub/UpdateMenu.cs b/RageCoop.Client/Menus/Sub/UpdateMenu.cs index 4baeb01..997f986 100644 --- a/RageCoop.Client/Menus/Sub/UpdateMenu.cs +++ b/RageCoop.Client/Menus/Sub/UpdateMenu.cs @@ -1,14 +1,10 @@ -using System; -using System.Drawing; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; +using ICSharpCode.SharpZipLib.Zip; using LemonUI.Menus; -using System.Web; -using System.Net; +using System; +using System.Drawing; using System.IO; -using ICSharpCode.SharpZipLib.Zip; +using System.Net; +using System.Threading.Tasks; namespace RageCoop.Client.Menus { @@ -16,7 +12,7 @@ namespace RageCoop.Client.Menus { public static bool IsUpdating { get; private set; } = false; private static NativeItem _updatingItem = new NativeItem("Updating..."); - private static NativeItem _downloadItem = new NativeItem("Download","Download and update to latest nightly"); + private static NativeItem _downloadItem = new NativeItem("Download", "Download and update to latest nightly"); private static string _downloadPath = Path.Combine(Main.Settings.DataDirectory, "RageCoop.Client.zip"); public static NativeMenu Menu = new NativeMenu("Update", "Update", "Download and install latest nightly build from GitHub") @@ -68,7 +64,7 @@ namespace RageCoop.Client.Menus { _updatingItem.AltTitle="Installing..."; }); - new FastZip().ExtractZip(_downloadPath, "Scripts",FastZip.Overwrite.Always, null,null,null,true); + new FastZip().ExtractZip(_downloadPath, "Scripts", FastZip.Overwrite.Always, null, null, null, true); Main.QueueAction(() => { Util.Reload(); diff --git a/RageCoop.Client/Networking/Chat.cs b/RageCoop.Client/Networking/Chat.cs index 10d66e6..2a5376d 100644 --- a/RageCoop.Client/Networking/Chat.cs +++ b/RageCoop.Client/Networking/Chat.cs @@ -1,10 +1,9 @@ -using System; +using GTA; +using GTA.Native; +using System; using System.Runtime.InteropServices; using System.Text; using System.Windows.Forms; -using RageCoop.Core; -using GTA; -using GTA.Native; namespace RageCoop.Client { @@ -106,7 +105,7 @@ namespace RageCoop.Client CurrentInput = ""; return; } - + if (key == Keys.PageUp) { MainScaleForm.CallFunction("PAGE_UP"); diff --git a/RageCoop.Client/Networking/DownloadManager.cs b/RageCoop.Client/Networking/DownloadManager.cs index 71391b7..93885ba 100644 --- a/RageCoop.Client/Networking/DownloadManager.cs +++ b/RageCoop.Client/Networking/DownloadManager.cs @@ -1,8 +1,8 @@ -using System.IO; -using System.Linq; -using System.Collections.Generic; -using RageCoop.Core; +using RageCoop.Core; using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; namespace RageCoop.Client { @@ -22,7 +22,7 @@ namespace RageCoop.Client return new Packets.FileTransferResponse() { ID= fr.ID, - Response=AddFile(fr.ID,fr.Name,fr.FileLength) ? FileResponse.NeedToDownload : FileResponse.AlreadyExists + Response=AddFile(fr.ID, fr.Name, fr.FileLength) ? FileResponse.NeedToDownload : FileResponse.AlreadyExists }; }); Networking.RequestHandlers.Add(PacketType.FileTransferComplete, (data) => @@ -44,10 +44,10 @@ namespace RageCoop.Client { try { - Main.Resources.Load(ResourceFolder,_resources.ToArray()); + Main.Resources.Load(ResourceFolder, _resources.ToArray()); return new Packets.FileTransferResponse() { ID=0, Response=FileResponse.Loaded }; } - catch(Exception ex) + catch (Exception ex) { Main.Logger.Error("Error occurred when loading server resource:"); @@ -56,11 +56,13 @@ namespace RageCoop.Client } }); } - public static string ResourceFolder { - get { - return Path.Combine(Main.Settings.DataDirectory,"Resources", Main.Settings.LastServerAddress.Replace(":", ".")); + public static string ResourceFolder + { + get + { + return Path.Combine(Main.Settings.DataDirectory, "Resources", Main.Settings.LastServerAddress.Replace(":", ".")); } - } + } private static readonly Dictionary InProgressDownloads = new Dictionary(); private static readonly HashSet _resources = new HashSet(); public static bool AddFile(int id, string name, long length) @@ -173,7 +175,7 @@ namespace RageCoop.Client } } - internal class DownloadFile: IDisposable + internal class DownloadFile : IDisposable { public int FileID { get; set; } = 0; public string FileName { get; set; } = string.Empty; @@ -182,7 +184,7 @@ namespace RageCoop.Client public FileStream Stream { get; set; } public void Dispose() { - if(Stream!= null) + if (Stream!= null) { Stream.Flush(); Stream.Close(); diff --git a/RageCoop.Client/Networking/Networking.cs b/RageCoop.Client/Networking/Networking.cs index 568260e..df1530f 100644 --- a/RageCoop.Client/Networking/Networking.cs +++ b/RageCoop.Client/Networking/Networking.cs @@ -1,10 +1,9 @@ -using System; -using Lidgren.Network; +using Lidgren.Network; using RageCoop.Core; -using System.Threading.Tasks; -using System.Threading; -using System.IO; +using System; using System.Security.Cryptography; +using System.Threading; +using System.Threading.Tasks; namespace RageCoop.Client { @@ -34,7 +33,7 @@ namespace RageCoop.Client }); } - public static void ToggleConnection(string address,string username=null,string password=null) + public static void ToggleConnection(string address, string username = null, string password = null) { if (IsOnServer) { @@ -79,12 +78,12 @@ namespace RageCoop.Client Main.QueueAction(() => { GTA.UI.Notification.Show($"~y~Trying to connect..."); }); Menus.CoopMenu._serverConnectItem.Enabled=false; Security.Regen(); - if(!GetServerPublicKey(address)) + if (!GetServerPublicKey(address)) { Menus.CoopMenu._serverConnectItem.Enabled=true; throw new TimeoutException("Failed to retrive server's public key"); } - + // Send HandshakePacket NetOutgoingMessage outgoingMessage = Client.CreateMessage(); var handshake = new Packets.Handshake() @@ -100,7 +99,7 @@ namespace RageCoop.Client Client.Connect(ip[0], short.Parse(ip[1]), outgoingMessage); } - catch(Exception ex) + catch (Exception ex) { Main.Logger.Error("Cannot connect to server: ", ex); Main.QueueAction(() => GTA.UI.Notification.Show("Cannot connect to server: "+ex.Message)); @@ -113,7 +112,7 @@ namespace RageCoop.Client { get { return Client?.ConnectionStatus == NetConnectionStatus.Connected; } } - + #region -- GET -- #region -- PLAYER -- private static void PlayerConnect(Packets.PlayerConnect packet) @@ -130,7 +129,7 @@ namespace RageCoop.Client } private static void PlayerDisconnect(Packets.PlayerDisconnect packet) { - var name=PlayerList.GetPlayer(packet.PedID).Username; + var name = PlayerList.GetPlayer(packet.PedID).Username; GTA.UI.Notification.Show($"{name} left."); PlayerList.RemovePlayer(packet.PedID); EntityPool.RemoveAllFromPlayer(packet.PedID); @@ -140,13 +139,13 @@ namespace RageCoop.Client #endregion // -- PLAYER -- - private static bool GetServerPublicKey(string address,int timeout=10000) + private static bool GetServerPublicKey(string address, int timeout = 10000) { - var msg=Client.CreateMessage(); - new Packets.PublicKeyRequest().Pack(msg); - var adds =address.Split(':'); - Client.SendUnconnectedMessage(msg,adds[0],int.Parse(adds[1])); - return _publicKeyReceived.WaitOne(timeout); + var msg = Client.CreateMessage(); + new Packets.PublicKeyRequest().Pack(msg); + var adds = address.Split(':'); + Client.SendUnconnectedMessage(msg, adds[0], int.Parse(adds[1])); + return _publicKeyReceived.WaitOne(timeout); } #endregion internal static void GetResponse(Packet request, Action callback, ConnectionChannel channel = ConnectionChannel.RequestResponse) where T : Packet, new() diff --git a/RageCoop.Client/Networking/Receive.cs b/RageCoop.Client/Networking/Receive.cs index 5c080cb..df72ce2 100644 --- a/RageCoop.Client/Networking/Receive.cs +++ b/RageCoop.Client/Networking/Receive.cs @@ -1,9 +1,9 @@ -using System; -using System.Collections.Generic; +using GTA; using Lidgren.Network; -using RageCoop.Core; -using GTA; using RageCoop.Client.Menus; +using RageCoop.Core; +using System; +using System.Collections.Generic; using System.Threading; namespace RageCoop.Client @@ -24,15 +24,15 @@ namespace RageCoop.Client return EntityPool.ServerBlips[reader.ReadInt()].Handle; default: throw new ArgumentException("Cannot resolve server side argument: "+t); - + } }; - private static readonly AutoResetEvent _publicKeyReceived=new AutoResetEvent(false); + private static readonly AutoResetEvent _publicKeyReceived = new AutoResetEvent(false); private static readonly Dictionary> PendingResponses = new Dictionary>(); - internal static readonly Dictionary> RequestHandlers = new Dictionary>(); + internal static readonly Dictionary> RequestHandlers = new Dictionary>(); public static void ProcessMessage(NetIncomingMessage message) { - if(message == null) { return; } + if (message == null) { return; } switch (message.MessageType) { @@ -49,7 +49,8 @@ namespace RageCoop.Client #endif break; case NetConnectionStatus.Connected: - Main.QueueAction(() => { + Main.QueueAction(() => + { CoopMenu.ConnectedMenuSetting(); Main.MainChat.Init(); PlayerList.Cleanup(); @@ -80,8 +81,8 @@ namespace RageCoop.Client Main.QueueAction(() => GTA.UI.Notification.Show("~r~Disconnected: " + reason)); Main.Resources.Unload(); - - + + break; } break; @@ -119,7 +120,7 @@ namespace RageCoop.Client response.Write((byte)PacketType.Response); response.Write(id); handler(message.ReadBytes(len)).Pack(response); - Client.SendMessage(response, NetDeliveryMethod.ReliableOrdered,message.SequenceChannel); + Client.SendMessage(response, NetDeliveryMethod.ReliableOrdered, message.SequenceChannel); } break; } @@ -134,7 +135,8 @@ namespace RageCoop.Client } catch (Exception ex) { - Main.QueueAction(() => { + Main.QueueAction(() => + { GTA.UI.Notification.Show("~r~~h~Packet Error"); return true; }); @@ -154,12 +156,12 @@ namespace RageCoop.Client byte[] data = message.ReadBytes(len); if (packetType==PacketType.PublicKeyResponse) { - var packet=new Packets.PublicKeyResponse(); + var packet = new Packets.PublicKeyResponse(); packet.Unpack(data); - Security.SetServerPublicKey(packet.Modulus,packet.Exponent); + Security.SetServerPublicKey(packet.Modulus, packet.Exponent); _publicKeyReceived.Set(); } - + break; } case NetIncomingMessageType.DebugMessage: @@ -326,11 +328,11 @@ namespace RageCoop.Client c.BlipScale=packet.BlipScale; c.LastFullSynced = Main.Ticked; } - + } private static void VehicleSync(Packets.VehicleSync packet) { - SyncedVehicle v = EntityPool.GetVehicleByID(packet.ID); + SyncedVehicle v = EntityPool.GetVehicleByID(packet.ID); if (v==null) { EntityPool.ThreadSafe.Add(v=new SyncedVehicle(packet.ID)); diff --git a/RageCoop.Client/Networking/Send.cs b/RageCoop.Client/Networking/Send.cs index 69bf4e7..eb87cec 100644 --- a/RageCoop.Client/Networking/Send.cs +++ b/RageCoop.Client/Networking/Send.cs @@ -1,8 +1,8 @@ -using Lidgren.Network; -using RageCoop.Core; -using GTA; -using GTA.Native; +using GTA; using GTA.Math; +using GTA.Native; +using Lidgren.Network; +using RageCoop.Core; namespace RageCoop.Client { @@ -24,10 +24,10 @@ namespace RageCoop.Client Client.SendMessage(outgoingMessage, method, (int)channel); } - public static void SendPed(SyncedPed c,bool full) + public static void SendPed(SyncedPed c, bool full) { Ped p = c.MainPed; - var packet=new Packets.PedSync() + var packet = new Packets.PedSync() { ID =c.ID, OwnerID=c.OwnerID, @@ -81,7 +81,7 @@ namespace RageCoop.Client } Send(packet, ConnectionChannel.PedSync); } - public static void SendVehicle(SyncedVehicle v,bool full) + public static void SendVehicle(SyncedVehicle v, bool full) { Vehicle veh = v.MainVehicle; var packet = new Packets.VehicleSync() @@ -123,7 +123,7 @@ namespace RageCoop.Client packet.RadioStation=Util.GetPlayerRadioIndex(); } } - Send(packet,ConnectionChannel.VehicleSync); + Send(packet, ConnectionChannel.VehicleSync); } public static void SendProjectile(SyncedProjectile sp) { @@ -138,13 +138,13 @@ namespace RageCoop.Client WeaponHash=(uint)p.WeaponHash, Exploded=p.IsDead }; - if (p.IsDead) { EntityPool.RemoveProjectile(sp.ID,"Dead"); } + if (p.IsDead) { EntityPool.RemoveProjectile(sp.ID, "Dead"); } Send(packet, ConnectionChannel.ProjectileSync); } #region SYNC EVENTS - public static void SendBulletShot(Vector3 start,Vector3 end,uint weapon,int ownerID) + public static void SendBulletShot(Vector3 start, Vector3 end, uint weapon, int ownerID) { Send(new Packets.BulletShot() { diff --git a/RageCoop.Client/Networking/Statistics.cs b/RageCoop.Client/Networking/Statistics.cs index 3e8c450..c808eb1 100644 --- a/RageCoop.Client/Networking/Statistics.cs +++ b/RageCoop.Client/Networking/Statistics.cs @@ -1,15 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading; +using System.Threading; using System.Threading.Tasks; namespace RageCoop.Client { internal static class Statistics { - public static int BytesDownPerSecond{ get; private set; } + public static int BytesDownPerSecond { get; private set; } public static int BytesUpPerSecond { get; private set; } static Statistics() { @@ -17,7 +13,7 @@ namespace RageCoop.Client { while (true) { - var bu=Networking.Client.Statistics.SentBytes; + var bu = Networking.Client.Statistics.SentBytes; var bd = Networking.Client.Statistics.ReceivedBytes; Thread.Sleep(1000); BytesUpPerSecond=Networking.Client.Statistics.SentBytes-bu; diff --git a/RageCoop.Client/PlayerList.cs b/RageCoop.Client/PlayerList.cs index 7fe5464..0a2d9c1 100644 --- a/RageCoop.Client/PlayerList.cs +++ b/RageCoop.Client/PlayerList.cs @@ -1,9 +1,7 @@ -using System.Collections.Generic; -using System.Linq; -using GTA; -using GTA.Math; -using RageCoop.Core; +using GTA; using GTA.Native; +using RageCoop.Core; +using System.Collections.Generic; namespace RageCoop.Client { @@ -16,7 +14,7 @@ namespace RageCoop.Client public static ulong Pressed { get; set; } public static bool LeftAlign = true; - public static Dictionary Players=new Dictionary { }; + public static Dictionary Players = new Dictionary { }; public static void Tick() { if (!Networking.IsOnServer) @@ -26,7 +24,7 @@ namespace RageCoop.Client if ((Util.GetTickCount64() - _lastUpdate) >= 1000) { - Update( Main.Settings.Username); + Update(Main.Settings.Username); } if ((Util.GetTickCount64() - Pressed) < 5000 && !Main.MainChat.Focused @@ -35,14 +33,14 @@ namespace RageCoop.Client #endif ) { - Function.Call(Hash.DRAW_SCALEFORM_MOVIE, _mainScaleform.Handle, + Function.Call(Hash.DRAW_SCALEFORM_MOVIE, _mainScaleform.Handle, LeftAlign ? LEFT_POSITION : RIGHT_POSITION, 0.3f, 0.28f, 0.6f, 255, 255, 255, 255, 0); } } - private static void Update( string localUsername) + private static void Update(string localUsername) { _lastUpdate = Util.GetTickCount64(); @@ -50,7 +48,7 @@ namespace RageCoop.Client _mainScaleform.CallFunction("SET_DATA_SLOT", 0, $"{Networking.Latency * 1000:N0}ms", localUsername, 116, 0, 0, "", "", 2, "", "", ' '); int i = 1; - + foreach (var player in Players) { _mainScaleform.CallFunction("SET_DATA_SLOT", i++, $"{player.Value.Latency * 1000:N0}ms", player.Value.Username, 116, 0, i - 1, "", "", 2, "", "", ' '); @@ -59,11 +57,11 @@ namespace RageCoop.Client _mainScaleform.CallFunction("SET_TITLE", "Player list", $"{Players.Count+1} players"); _mainScaleform.CallFunction("DISPLAY_VIEW"); } - public static void SetPlayer(int id, string username,float latency=0) + public static void SetPlayer(int id, string username, float latency = 0) { - + PlayerData p; - if (Players.TryGetValue(id,out p)) + if (Players.TryGetValue(id, out p)) { p.Username=username; p.PedID=id; @@ -71,21 +69,21 @@ namespace RageCoop.Client } else { - p = new PlayerData { PedID=id, Username=username,Latency=latency }; - Players.Add(id,p); + p = new PlayerData { PedID=id, Username=username, Latency=latency }; + Players.Add(id, p); } } public static void UpdatePlayer(Packets.PlayerInfoUpdate packet) { var p = GetPlayer(packet.PedID); - if(p?.Character != null) + if (p?.Character != null) { p.Latency= packet.Latency; } } public static PlayerData GetPlayer(int id) { - PlayerData p; + PlayerData p; Players.TryGetValue(id, out p); return p; } @@ -107,12 +105,12 @@ namespace RageCoop.Client } public static void Cleanup() { - Players=new Dictionary{ }; + Players=new Dictionary { }; } } - + internal class PlayerData { public string Username { get; internal set; } diff --git a/RageCoop.Client/Properties/AssemblyInfo.cs b/RageCoop.Client/Properties/AssemblyInfo.cs index a31b155..c405379 100644 --- a/RageCoop.Client/Properties/AssemblyInfo.cs +++ b/RageCoop.Client/Properties/AssemblyInfo.cs @@ -1,5 +1,4 @@ using System.Reflection; -using System.Runtime.CompilerServices; using System.Runtime.InteropServices; // General Information about an assembly is controlled through the following diff --git a/RageCoop.Client/Scripting/API.cs b/RageCoop.Client/Scripting/API.cs index bf42b14..d0f5ce3 100644 --- a/RageCoop.Client/Scripting/API.cs +++ b/RageCoop.Client/Scripting/API.cs @@ -1,10 +1,9 @@ #undef DEBUG -using System.Collections.Generic; -using System; -using System.Linq; -using RageCoop.Core; -using System.Windows.Forms; using GTA; +using RageCoop.Core; +using System; +using System.Collections.Generic; +using System.Windows.Forms; namespace RageCoop.Client.Scripting { @@ -64,7 +63,7 @@ namespace RageCoop.Client.Scripting /// Get or set player's blip sprite /// public static BlipSprite BlipSprite { get; set; } = BlipSprite.Standard; - + /// /// Get or set scale of player's blip /// @@ -136,16 +135,16 @@ namespace RageCoop.Client.Scripting internal static void InvokePlayerDied() { OnPlayerDied?.Invoke(); } internal static void InvokeTick() { OnTick?.Invoke(); } - internal static void InvokeKeyDown(object s,KeyEventArgs e) { OnKeyDown?.Invoke(s,e); } + internal static void InvokeKeyDown(object s, KeyEventArgs e) { OnKeyDown?.Invoke(s, e); } internal static void InvokeKeyUp(object s, KeyEventArgs e) { OnKeyUp?.Invoke(s, e); } internal static void InvokeCustomEventReceived(Packets.CustomEvent p) { - var args = new CustomEventReceivedArgs() { Hash=p.Hash, Args=p.Args}; + var args = new CustomEventReceivedArgs() { Hash=p.Hash, Args=p.Args }; // Main.Logger.Debug($"CustomEvent:\n"+args.Args.DumpWithType()); - + List> handlers; if (CustomEventHandlers.TryGetValue(p.Hash, out handlers)) { @@ -279,12 +278,12 @@ namespace RageCoop.Client.Scripting handlers.Add(handler); } } - + /// /// /// /// - public static void RequestSharedFile(string name,Action callback) + public static void RequestSharedFile(string name, Action callback) { EventHandler handler = (s, e) => { @@ -297,10 +296,10 @@ namespace RageCoop.Client.Scripting Networking.GetResponse(new Packets.FileTransferRequest() { Name=name, - }, + }, (p) => { - if(p.Response != FileResponse.Loaded) + if (p.Response != FileResponse.Loaded) { DownloadManager.DownloadCompleted-=handler; throw new ArgumentException("Requested file was not found on the server: "+name); diff --git a/RageCoop.Client/Scripting/BaseScript.cs b/RageCoop.Client/Scripting/BaseScript.cs index 9456449..9cbe99d 100644 --- a/RageCoop.Client/Scripting/BaseScript.cs +++ b/RageCoop.Client/Scripting/BaseScript.cs @@ -1,27 +1,25 @@ -using System; -using System.Collections.Generic; -using GTA.Native; +using GTA; using GTA.Math; -using GTA; -using RageCoop.Core; +using GTA.Native; using RageCoop.Core.Scripting; -using System.Linq; -using System.Threading.Tasks; +using System; +using System.Collections.Generic; using System.Threading; +using System.Threading.Tasks; namespace RageCoop.Client.Scripting { internal class BaseScript : ClientScript { - private bool _isHost=false; + private bool _isHost = false; public override void OnStart() { API.Events.OnPedDeleted+=(s, p) => { API.SendCustomEvent(CustomEvents.OnPedDeleted, p.ID); }; API.Events.OnVehicleDeleted+=(s, p) => { API.SendCustomEvent(CustomEvents.OnVehicleDeleted, p.ID); }; - API.RegisterCustomEventHandler(CustomEvents.SetAutoRespawn,SetAutoRespawn); - API.RegisterCustomEventHandler(CustomEvents.SetDisplayNameTag,SetDisplayNameTag); - API.RegisterCustomEventHandler(CustomEvents.NativeCall,NativeCall); + API.RegisterCustomEventHandler(CustomEvents.SetAutoRespawn, SetAutoRespawn); + API.RegisterCustomEventHandler(CustomEvents.SetDisplayNameTag, SetDisplayNameTag); + API.RegisterCustomEventHandler(CustomEvents.NativeCall, NativeCall); API.RegisterCustomEventHandler(CustomEvents.ServerPropSync, ServerObjectSync); API.RegisterCustomEventHandler(CustomEvents.DeleteServerProp, DeleteServerProp); API.RegisterCustomEventHandler(CustomEvents.DeleteEntity, DeleteEntity); @@ -66,7 +64,7 @@ namespace RageCoop.Client.Scripting private void SetDisplayNameTag(CustomEventReceivedArgs e) { var p = PlayerList.GetPlayer((int)e.Args[0]); - if(p != null) { p.DisplayNameTag=(bool)e.Args[1]; } + if (p != null) { p.DisplayNameTag=(bool)e.Args[1]; } } private void UpdatePedBlip(CustomEventReceivedArgs e) @@ -93,7 +91,7 @@ namespace RageCoop.Client.Scripting { var vehicleModel = (Model)e.Args[1]; vehicleModel.Request(1000); - Vehicle veh= World.CreateVehicle(vehicleModel, (Vector3)e.Args[2], (float)e.Args[3]); + Vehicle veh = World.CreateVehicle(vehicleModel, (Vector3)e.Args[2], (float)e.Args[3]); while (veh==null) { veh = World.CreateVehicle(vehicleModel, (Vector3)e.Args[2], (float)e.Args[3]); @@ -120,13 +118,13 @@ namespace RageCoop.Client.Scripting private void ServerBlipSync(CustomEventReceivedArgs obj) { - int id= (int)obj.Args[0]; - var sprite=(BlipSprite)(ushort)obj.Args[1]; + int id = (int)obj.Args[0]; + var sprite = (BlipSprite)(ushort)obj.Args[1]; var color = (BlipColor)(byte)obj.Args[2]; - var scale=(float)obj.Args[3]; - var pos=(Vector3)obj.Args[4]; - int rot= (int)obj.Args[5]; - var name=(string)obj.Args[6]; + var scale = (float)obj.Args[3]; + var pos = (Vector3)obj.Args[4]; + int rot = (int)obj.Args[5]; + var name = (string)obj.Args[6]; Blip blip; if (!EntityPool.ServerBlips.TryGetValue(id, out blip)) { @@ -151,8 +149,8 @@ namespace RageCoop.Client.Scripting } private void SetNameTag(CustomEventReceivedArgs e) { - var p =PlayerList.GetPlayer((int)e.Args[0]); - if(p!= null) + var p = PlayerList.GetPlayer((int)e.Args[0]); + if (p!= null) { p.DisplayNameTag=(bool)e.Args[1]; } @@ -169,7 +167,7 @@ namespace RageCoop.Client.Scripting EntityPool.ServerProps.Remove(id); prop?.MainProp?.Delete(); } - + } private void ServerObjectSync(CustomEventReceivedArgs e) { @@ -193,10 +191,10 @@ namespace RageCoop.Client.Scripting List arguments = new List(); int i; var ty = (byte)e.Args[0]; - TypeCode returnType=(TypeCode)ty; + TypeCode returnType = (TypeCode)ty; i = returnType==TypeCode.Empty ? 1 : 2; var hash = (Hash)e.Args[i++]; - for(; i - /// - /// - public class ClientResource - { - /// - /// Name of the resource - /// - public string Name { get; internal set; } - /// - /// A resource-specific folder that can be used to store your files. - /// - public string DataFolder { get; internal set; } - /// - /// Get all instance in this resource. - /// - public List Scripts { get; internal set; } = new List(); - /// - /// Get the where this script is loaded from. - /// - public Dictionary Files { get; internal set; } = new Dictionary(); - - /// - /// A instance that can be used to debug your resource. - /// - public Logger Logger { get; internal set; } - } - internal class Resources - { - public Resources(){ - BaseScriptType = "RageCoop.Client.Scripting.ClientScript"; - Logger = Main.Logger; - } - private void StartAll() - { - lock (LoadedResources) - { - foreach (var d in LoadedResources) - { - foreach (var s in d.Scripts) - { + /// + /// + /// + public class ClientResource + { + /// + /// Name of the resource + /// + public string Name { get; internal set; } + /// + /// A resource-specific folder that can be used to store your files. + /// + public string DataFolder { get; internal set; } + /// + /// Get all instance in this resource. + /// + public List Scripts { get; internal set; } = new List(); + /// + /// Get the where this script is loaded from. + /// + public Dictionary Files { get; internal set; } = new Dictionary(); + + /// + /// A instance that can be used to debug your resource. + /// + public Logger Logger { get; internal set; } + } + internal class Resources + { + public Resources() + { + BaseScriptType = "RageCoop.Client.Scripting.ClientScript"; + Logger = Main.Logger; + } + private void StartAll() + { + lock (LoadedResources) + { + foreach (var d in LoadedResources) + { + foreach (var s in d.Scripts) + { try { - s.CurrentResource=d; - s.OnStart(); - } - catch(Exception ex) - { - Logger.Error("Error occurred when starting script:"+s.GetType().FullName); - Logger?.Error(ex); + s.CurrentResource=d; + s.OnStart(); } - } - } - } - } - private void StopAll() - { - lock (LoadedResources) - { - foreach (var d in LoadedResources) - { - foreach (var s in d.Scripts) - { - try - { - s.OnStop(); - } - catch (Exception ex) - { - Logger.Error("Error occurred when stopping script:"+s.GetType().FullName); - Logger?.Error(ex); - } - } - } - } - } - public void Load(string path,string[] zips) - { - LoadedResources.Clear(); - foreach (var zip in zips) - { - var zipPath=Path.Combine(path, zip); - Logger?.Info($"Loading resource: {Path.GetFileNameWithoutExtension(zip)}"); - LoadResource(new ZipFile(zipPath),Path.Combine(path,"data")); - } - StartAll(); - } - public void Unload() - { - StopAll(); - if (LoadedResources.Count > 0) - { - API.QueueAction(()=>Util.Reload()); - } - LoadedResources.Clear(); + catch (Exception ex) + { + Logger.Error("Error occurred when starting script:"+s.GetType().FullName); + Logger?.Error(ex); + } + } + } + } } - private List ToIgnore = new List - { - "RageCoop.Client.dll", - "RageCoop.Core.dll", - "RageCoop.Server.dll", - "ScriptHookVDotNet3.dll" - }; - private List LoadedResources = new List(); - private string BaseScriptType; - public Logger Logger { get; set; } + private void StopAll() + { + lock (LoadedResources) + { + foreach (var d in LoadedResources) + { + foreach (var s in d.Scripts) + { + try + { + s.OnStop(); + } + catch (Exception ex) + { + Logger.Error("Error occurred when stopping script:"+s.GetType().FullName); + Logger?.Error(ex); + } + } + } + } + } + public void Load(string path, string[] zips) + { + LoadedResources.Clear(); + foreach (var zip in zips) + { + var zipPath = Path.Combine(path, zip); + Logger?.Info($"Loading resource: {Path.GetFileNameWithoutExtension(zip)}"); + LoadResource(new ZipFile(zipPath), Path.Combine(path, "data")); + } + StartAll(); + } + public void Unload() + { + StopAll(); + if (LoadedResources.Count > 0) + { + API.QueueAction(() => Util.Reload()); + } + LoadedResources.Clear(); + } + private List ToIgnore = new List + { + "RageCoop.Client.dll", + "RageCoop.Core.dll", + "RageCoop.Server.dll", + "ScriptHookVDotNet3.dll" + }; + private List LoadedResources = new List(); + private string BaseScriptType; + public Logger Logger { get; set; } - private void LoadResource(ZipFile file, string dataFolderRoot) - { - var r = new ClientResource() - { - Logger = Main.Logger, - Scripts = new List(), - Name=Path.GetFileNameWithoutExtension(file.Name), - DataFolder=Path.Combine(dataFolderRoot, Path.GetFileNameWithoutExtension(file.Name)) - }; - Directory.CreateDirectory(r.DataFolder); + private void LoadResource(ZipFile file, string dataFolderRoot) + { + var r = new ClientResource() + { + Logger = Main.Logger, + Scripts = new List(), + Name=Path.GetFileNameWithoutExtension(file.Name), + DataFolder=Path.Combine(dataFolderRoot, Path.GetFileNameWithoutExtension(file.Name)) + }; + Directory.CreateDirectory(r.DataFolder); - foreach (ZipEntry entry in file) - { - ResourceFile rFile; - r.Files.Add(entry.Name, rFile=new ResourceFile() - { - Name=entry.Name, - IsDirectory=entry.IsDirectory, - }); - if (!entry.IsDirectory) - { - rFile.GetStream=() => { return file.GetInputStream(entry); }; - if (entry.Name.EndsWith(".dll")) - { - var tmp = Path.GetTempFileName(); - var f = File.OpenWrite(tmp); - rFile.GetStream().CopyTo(f); - f.Close(); - LoadScriptsFromAssembly(rFile, tmp, r, false); - } - } - } - LoadedResources.Add(r); - file.Close(); - } - private bool LoadScriptsFromAssembly(ResourceFile file, string path, ClientResource resource, bool shadowCopy = true) - { - lock (LoadedResources) - { - if (!IsManagedAssembly(path)) { return false; } - if (ToIgnore.Contains(file.Name)) { try { File.Delete(path); } catch { }; return false; } + foreach (ZipEntry entry in file) + { + ResourceFile rFile; + r.Files.Add(entry.Name, rFile=new ResourceFile() + { + Name=entry.Name, + IsDirectory=entry.IsDirectory, + }); + if (!entry.IsDirectory) + { + rFile.GetStream=() => { return file.GetInputStream(entry); }; + if (entry.Name.EndsWith(".dll")) + { + var tmp = Path.GetTempFileName(); + var f = File.OpenWrite(tmp); + rFile.GetStream().CopyTo(f); + f.Close(); + LoadScriptsFromAssembly(rFile, tmp, r, false); + } + } + } + LoadedResources.Add(r); + file.Close(); + } + private bool LoadScriptsFromAssembly(ResourceFile file, string path, ClientResource resource, bool shadowCopy = true) + { + lock (LoadedResources) + { + if (!IsManagedAssembly(path)) { return false; } + if (ToIgnore.Contains(file.Name)) { try { File.Delete(path); } catch { }; return false; } - Logger?.Debug($"Loading assembly {file.Name} ..."); + Logger?.Debug($"Loading assembly {file.Name} ..."); - Assembly assembly; + Assembly assembly; - try - { - if (shadowCopy) - { - var temp = Path.GetTempFileName(); - File.Copy(path, temp, true); - assembly = Assembly.LoadFrom(temp); - } - else - { - assembly = Assembly.LoadFrom(path); - } - } - catch (Exception ex) - { - Logger?.Error("Unable to load "+file.Name); - Logger?.Error(ex); - return false; - } + try + { + if (shadowCopy) + { + var temp = Path.GetTempFileName(); + File.Copy(path, temp, true); + assembly = Assembly.LoadFrom(temp); + } + else + { + assembly = Assembly.LoadFrom(path); + } + } + catch (Exception ex) + { + Logger?.Error("Unable to load "+file.Name); + Logger?.Error(ex); + return false; + } - return LoadScriptsFromAssembly(file, assembly, path, resource); - } - } - private bool LoadScriptsFromAssembly(ResourceFile rfile, Assembly assembly, string filename, ClientResource toload) - { - int count = 0; + return LoadScriptsFromAssembly(file, assembly, path, resource); + } + } + private bool LoadScriptsFromAssembly(ResourceFile rfile, Assembly assembly, string filename, ClientResource toload) + { + int count = 0; - try - { - // Find all script types in the assembly - foreach (var type in assembly.GetTypes().Where(x => IsSubclassOf(x, BaseScriptType))) - { - ConstructorInfo constructor = type.GetConstructor(System.Type.EmptyTypes); - if (constructor != null && constructor.IsPublic) - { - try - { - // Invoke script constructor - var script = constructor.Invoke(null) as ClientScript; - // script.CurrentResource = toload; - script.CurrentFile=rfile; - script.CurrentResource=toload; - toload.Scripts.Add(script); - count++; - } - catch (Exception ex) - { - Logger?.Error($"Error occurred when loading script: {type.FullName}."); - Logger?.Error(ex); - } - } - else - { - Logger?.Error($"Script {type.FullName} has an invalid contructor."); - } - } - } - catch (ReflectionTypeLoadException ex) - { - Logger?.Error($"Failed to load assembly {rfile.Name}: "); - Logger?.Error(ex); - foreach (var e in ex.LoaderExceptions) - { - Logger?.Error(e); - } - return false; - } + try + { + // Find all script types in the assembly + foreach (var type in assembly.GetTypes().Where(x => IsSubclassOf(x, BaseScriptType))) + { + ConstructorInfo constructor = type.GetConstructor(System.Type.EmptyTypes); + if (constructor != null && constructor.IsPublic) + { + try + { + // Invoke script constructor + var script = constructor.Invoke(null) as ClientScript; + // script.CurrentResource = toload; + script.CurrentFile=rfile; + script.CurrentResource=toload; + toload.Scripts.Add(script); + count++; + } + catch (Exception ex) + { + Logger?.Error($"Error occurred when loading script: {type.FullName}."); + Logger?.Error(ex); + } + } + else + { + Logger?.Error($"Script {type.FullName} has an invalid contructor."); + } + } + } + catch (ReflectionTypeLoadException ex) + { + Logger?.Error($"Failed to load assembly {rfile.Name}: "); + Logger?.Error(ex); + foreach (var e in ex.LoaderExceptions) + { + Logger?.Error(e); + } + return false; + } - Logger?.Info($"Loaded {count} script(s) in {rfile.Name}"); - return count != 0; - } - private bool IsManagedAssembly(string filename) - { - try - { - using (Stream file = new FileStream(filename, FileMode.Open, FileAccess.Read)) - { - if (file.Length < 64) - return false; + Logger?.Info($"Loaded {count} script(s) in {rfile.Name}"); + return count != 0; + } + private bool IsManagedAssembly(string filename) + { + try + { + using (Stream file = new FileStream(filename, FileMode.Open, FileAccess.Read)) + { + if (file.Length < 64) + return false; - using (BinaryReader bin = new BinaryReader(file)) - { - // PE header starts at offset 0x3C (60). Its a 4 byte header. - file.Position = 0x3C; - uint offset = bin.ReadUInt32(); - if (offset == 0) - offset = 0x80; + using (BinaryReader bin = new BinaryReader(file)) + { + // PE header starts at offset 0x3C (60). Its a 4 byte header. + file.Position = 0x3C; + uint offset = bin.ReadUInt32(); + if (offset == 0) + offset = 0x80; - // Ensure there is at least enough room for the following structures: - // 24 byte PE Signature & Header - // 28 byte Standard Fields (24 bytes for PE32+) - // 68 byte NT Fields (88 bytes for PE32+) - // >= 128 byte Data Dictionary Table - if (offset > file.Length - 256) - return false; + // Ensure there is at least enough room for the following structures: + // 24 byte PE Signature & Header + // 28 byte Standard Fields (24 bytes for PE32+) + // 68 byte NT Fields (88 bytes for PE32+) + // >= 128 byte Data Dictionary Table + if (offset > file.Length - 256) + return false; - // Check the PE signature. Should equal 'PE\0\0'. - file.Position = offset; - if (bin.ReadUInt32() != 0x00004550) - return false; + // Check the PE signature. Should equal 'PE\0\0'. + file.Position = offset; + if (bin.ReadUInt32() != 0x00004550) + return false; - // Read PE magic number from Standard Fields to determine format. - file.Position += 20; - var peFormat = bin.ReadUInt16(); - if (peFormat != 0x10b /* PE32 */ && peFormat != 0x20b /* PE32Plus */) - return false; + // Read PE magic number from Standard Fields to determine format. + file.Position += 20; + var peFormat = bin.ReadUInt16(); + if (peFormat != 0x10b /* PE32 */ && peFormat != 0x20b /* PE32Plus */) + return false; - // Read the 15th Data Dictionary RVA field which contains the CLI header RVA. - // When this is non-zero then the file contains CLI data otherwise not. - file.Position = offset + (peFormat == 0x10b ? 232 : 248); - return bin.ReadUInt32() != 0; - } - } - } - catch - { - // This is likely not a valid assembly if any IO exceptions occur during reading - return false; - } - } - private bool IsSubclassOf(Type type, string baseTypeName) - { - for (Type t = type.BaseType; t != null; t = t.BaseType) - if (t.FullName == baseTypeName) - return true; - return false; - } - } + // Read the 15th Data Dictionary RVA field which contains the CLI header RVA. + // When this is non-zero then the file contains CLI data otherwise not. + file.Position = offset + (peFormat == 0x10b ? 232 : 248); + return bin.ReadUInt32() != 0; + } + } + } + catch + { + // This is likely not a valid assembly if any IO exceptions occur during reading + return false; + } + } + private bool IsSubclassOf(Type type, string baseTypeName) + { + for (Type t = type.BaseType; t != null; t = t.BaseType) + if (t.FullName == baseTypeName) + return true; + return false; + } + } } diff --git a/RageCoop.Client/Security.cs b/RageCoop.Client/Security.cs index e8e79bf..ceb409b 100644 --- a/RageCoop.Client/Security.cs +++ b/RageCoop.Client/Security.cs @@ -1,17 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Security.Cryptography; +using RageCoop.Core; using System.IO; -using RageCoop.Core; +using System.Security.Cryptography; namespace RageCoop.Client { internal class Security { public RSA ServerRSA { get; set; } - public Aes ClientAes { get; set; }=Aes.Create(); + public Aes ClientAes { get; set; } = Aes.Create(); private Logger Logger; public Security(Logger logger) { @@ -19,17 +14,17 @@ namespace RageCoop.Client ClientAes.GenerateKey(); ClientAes.GenerateIV(); } - public void GetSymmetricKeysCrypted(out byte[] cryptedKey,out byte[] cryptedIV) + public void GetSymmetricKeysCrypted(out byte[] cryptedKey, out byte[] cryptedIV) { // Logger?.Debug($"Aes.Key:{ClientAes.Key.Dump()}, Aes.IV:{ClientAes.IV.Dump()}"); cryptedKey =ServerRSA.Encrypt(ClientAes.Key, RSAEncryptionPadding.Pkcs1); - cryptedIV =ServerRSA.Encrypt(ClientAes.IV,RSAEncryptionPadding.Pkcs1); + cryptedIV =ServerRSA.Encrypt(ClientAes.IV, RSAEncryptionPadding.Pkcs1); } public byte[] Encrypt(byte[] data) { return new CryptoStream(new MemoryStream(data), ClientAes.CreateEncryptor(), CryptoStreamMode.Read).ReadToEnd(); } - public void SetServerPublicKey(byte[] modulus,byte[] exponent) + public void SetServerPublicKey(byte[] modulus, byte[] exponent) { var para = new RSAParameters(); para.Modulus = modulus; diff --git a/RageCoop.Client/Settings.cs b/RageCoop.Client/Settings.cs index dd26d46..0b6a723 100644 --- a/RageCoop.Client/Settings.cs +++ b/RageCoop.Client/Settings.cs @@ -42,7 +42,7 @@ namespace RageCoop.Client /// /// The key to enter a vehicle as passenger. /// - public Keys PassengerKey { get; set; }=Keys.G; + public Keys PassengerKey { get; set; } = Keys.G; /// /// Disable world NPC traffic, mission entities won't be affected diff --git a/RageCoop.Client/Sync/Entities/SyncedEntity.cs b/RageCoop.Client/Sync/Entities/SyncedEntity.cs index 69c5d48..24d6703 100644 --- a/RageCoop.Client/Sync/Entities/SyncedEntity.cs +++ b/RageCoop.Client/Sync/Entities/SyncedEntity.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; +using GTA; using GTA.Math; namespace RageCoop.Client @@ -28,7 +23,7 @@ namespace RageCoop.Client /// /// Network ID for this entity /// - public int ID { get;internal set; } + public int ID { get; internal set; } /// /// /// @@ -45,7 +40,7 @@ namespace RageCoop.Client } internal bool IsReady { - get {return (LastSynced>0||LastFullSynced==0);} + get { return (LastSynced>0||LastFullSynced==0); } } internal bool IsInvincible { get; set; } = false; internal bool NeedUpdate @@ -67,10 +62,13 @@ namespace RageCoop.Client public ulong LastUpdated { get; set; } = 0; #endregion + public bool SendNextFrame { get; set; } = false; + public bool SendFullNextFrame { get; set; } = false; + /// /// /// - internal protected bool _lastFrozen=false; + internal protected bool _lastFrozen = false; internal Model Model { get; set; } internal Vector3 Position { get; set; } internal Vector3 Rotation { get; set; } diff --git a/RageCoop.Client/Sync/Entities/SyncedPed.cs b/RageCoop.Client/Sync/Entities/SyncedPed.cs index c115bd6..39cabaa 100644 --- a/RageCoop.Client/Sync/Entities/SyncedPed.cs +++ b/RageCoop.Client/Sync/Entities/SyncedPed.cs @@ -1,20 +1,19 @@ -using System; -using System.Linq; -using System.Drawing; -using System.Collections.Generic; -using RageCoop.Core; -using GTA; -using GTA.Native; +using GTA; using GTA.Math; +using GTA.Native; using LemonUI.Elements; -using System.Security.Cryptography; +using RageCoop.Core; +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; namespace RageCoop.Client { /// /// ? /// - public class SyncedPed:SyncedEntity + public class SyncedPed : SyncedEntity { #region CONSTRUCTORS @@ -49,7 +48,7 @@ namespace RageCoop.Client internal Blip PedBlip = null; internal BlipColor BlipColor = (BlipColor)255; internal BlipSprite BlipSprite = (BlipSprite)0; - internal float BlipScale=1; + internal float BlipScale = 1; internal PlayerData Player; #endregion @@ -69,10 +68,10 @@ namespace RageCoop.Client internal Vector3 LeftFootPosition { get; set; } internal byte WeaponTint { get; set; } - internal bool _lastEnteringVehicle=false; - internal bool _lastSittingInVehicle=false; - private bool _lastRagdoll=false; - private ulong _lastRagdollTime=0; + internal bool _lastEnteringVehicle = false; + internal bool _lastSittingInVehicle = false; + private bool _lastRagdoll = false; + private ulong _lastRagdollTime = 0; private bool _lastInCover = false; private byte[] _lastClothes = null; internal byte[] Clothes { get; set; } @@ -116,7 +115,7 @@ namespace RageCoop.Client } - + @@ -168,9 +167,9 @@ namespace RageCoop.Client } CheckCurrentWeapon(); } - - + + if (MainPed.IsDead) { if (Health>0) @@ -209,7 +208,7 @@ namespace RageCoop.Client return; } - + private void RenderNameTag() { if (!Player.DisplayNameTag || (MainPed==null) || !MainPed.IsVisible || !MainPed.IsInRange(Game.Player.Character.Position, 40f)) @@ -218,7 +217,7 @@ namespace RageCoop.Client } Vector3 targetPos = MainPed.Bones[Bone.IKHead].Position; - Point toDraw=default; + Point toDraw = default; if (Util.WorldToScreen(targetPos, ref toDraw)) { toDraw.Y-=100; @@ -228,7 +227,7 @@ namespace RageCoop.Client Alignment = GTA.UI.Alignment.Center }.Draw(); } - + } private bool CreateCharacter() @@ -242,7 +241,7 @@ namespace RageCoop.Client MainPed.MarkAsNoLongerNeeded(); MainPed.Delete(); } - + MainPed = null; } @@ -264,7 +263,7 @@ namespace RageCoop.Client Model.MarkAsNoLongerNeeded(); - + MainPed.BlockPermanentEvents = true; MainPed.CanWrithe=false; MainPed.CanBeDraggedOutOfVehicle = true; @@ -282,7 +281,7 @@ namespace RageCoop.Client Function.Call(Hash.SET_PED_CAN_EVASIVE_DIVE, MainPed.Handle, false); - MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_DrownsInWater,false); + MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_DrownsInWater, false); MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_DisableHurt, true); MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_DisableExplosionReactions, true); MainPed.SetConfigFlag((int)PedConfigFlags.CPED_CONFIG_FLAG_AvoidTearGas, false); @@ -549,7 +548,7 @@ namespace RageCoop.Client else if (IsInCover) { - + if (!_lastInCover) { Function.Call(Hash.TASK_STAY_IN_COVER, MainPed.Handle); @@ -617,7 +616,7 @@ namespace RageCoop.Client } _lastWeaponComponents = WeaponComponents; } - if (Function.Call(Hash.GET_PED_WEAPON_TINT_INDEX,MainPed,CurrentWeaponHash)!=WeaponTint) + if (Function.Call(Hash.GET_PED_WEAPON_TINT_INDEX, MainPed, CurrentWeaponHash)!=WeaponTint) { Function.Call(Hash.SET_PED_WEAPON_TINT_INDEX, MainPed, CurrentWeaponHash, WeaponTint); } @@ -627,7 +626,7 @@ namespace RageCoop.Client { if (Velocity==default) { - MainPed.Task.AimAt(AimCoords,1000); + MainPed.Task.AimAt(AimCoords, 1000); } else { diff --git a/RageCoop.Client/Sync/Entities/SyncedProjectile.cs b/RageCoop.Client/Sync/Entities/SyncedProjectile.cs index cf478f5..db366dc 100644 --- a/RageCoop.Client/Sync/Entities/SyncedProjectile.cs +++ b/RageCoop.Client/Sync/Entities/SyncedProjectile.cs @@ -1,9 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; +using GTA; using GTA.Math; using RageCoop.Core; @@ -30,7 +25,7 @@ namespace RageCoop.Client Main.Logger.Warning($"Could not find owner for projectile:{Hash}"); } } - if(shooter != null) + if (shooter != null) { if (shooter.MainPed!=null && (p.AttachedEntity==shooter.MainPed.Weapons.CurrentWeaponObject || p.AttachedEntity== shooter.MainPed)) { @@ -40,7 +35,7 @@ namespace RageCoop.Client ShooterID=shooter.ID; IsLocal=shooter.IsLocal; } - + } public SyncedProjectile(int id) { @@ -52,20 +47,20 @@ namespace RageCoop.Client public bool Exploded { get; set; } = false; public Projectile MainProjectile { get; set; } public int ShooterID { get; set; } - private SyncedPed Shooter { get;set; } + private SyncedPed Shooter { get; set; } public Vector3 Origin { get; set; } /// /// Invalid property for projectile. /// - private new int OwnerID{ set { } } + private new int OwnerID { set { } } public WeaponHash Hash { get; set; } private WeaponAsset Asset { get; set; } internal override void Update() { // Skip update if no new sync message has arrived. - if (!NeedUpdate){ return; } + if (!NeedUpdate) { return; } if (MainProjectile == null || !MainProjectile.Exists()) { @@ -81,7 +76,7 @@ namespace RageCoop.Client { Asset=new WeaponAsset(Hash); if (!Asset.IsLoaded) { Asset.Request(); } - World.ShootBullet(Position,Position+Velocity,(Shooter=EntityPool.GetPedByID(ShooterID))?.MainPed,Asset,0); + World.ShootBullet(Position, Position+Velocity, (Shooter=EntityPool.GetPedByID(ShooterID))?.MainPed, Asset, 0); var ps = World.GetAllProjectiles(); MainProjectile=ps[ps.Length-1]; if (Hash==(WeaponHash)VehicleWeaponHash.Tank) diff --git a/RageCoop.Client/Sync/Entities/SyncedProp.cs b/RageCoop.Client/Sync/Entities/SyncedProp.cs index 0df1607..cce8dd4 100644 --- a/RageCoop.Client/Sync/Entities/SyncedProp.cs +++ b/RageCoop.Client/Sync/Entities/SyncedProp.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA.Native; -using GTA; +using GTA; namespace RageCoop.Client { @@ -21,18 +15,21 @@ namespace RageCoop.Client /// The real entity /// public Prop MainProp { get; set; } - internal new int OwnerID { get + internal new int OwnerID + { + get { // alwayse owned by server return 0; - } } + } + } internal override void Update() { if (!NeedUpdate) { return; } if (MainProp== null || !MainProp.Exists()) { - MainProp=World.CreateProp(Model,Position,Rotation,false,false); + MainProp=World.CreateProp(Model, Position, Rotation, false, false); MainProp.IsInvincible=true; } MainProp.Position=Position; diff --git a/RageCoop.Client/Sync/Entities/SyncedVehicle.cs b/RageCoop.Client/Sync/Entities/SyncedVehicle.cs index f0973ba..4e300b7 100644 --- a/RageCoop.Client/Sync/Entities/SyncedVehicle.cs +++ b/RageCoop.Client/Sync/Entities/SyncedVehicle.cs @@ -1,14 +1,11 @@ -using System; -using System.Security.Cryptography; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; -using GTA.Native; +using GTA; using GTA.Math; +using GTA.Native; using RageCoop.Core; +using System; +using System.Collections.Generic; using System.Diagnostics; +using System.Linq; namespace RageCoop.Client { @@ -50,8 +47,8 @@ namespace RageCoop.Client /// /// VehicleSeat,ID /// - public Vehicle MainVehicle { get;internal set; } - public Stopwatch LastSyncedStopWatch=new Stopwatch(); + public Vehicle MainVehicle { get; internal set; } + public Stopwatch LastSyncedStopWatch = new Stopwatch(); #region LAST STATE @@ -99,7 +96,7 @@ namespace RageCoop.Client internal byte[] Colors { get; set; } internal Dictionary Mods { get; set; } internal float EngineHealth { get; set; } - internal VehicleLockStatus LockStatus{get;set;} + internal VehicleLockStatus LockStatus { get; set; } /// /// VehicleSeat,PedID /// @@ -113,11 +110,11 @@ namespace RageCoop.Client #endregion internal override void Update() { - + #region -- INITIAL CHECK -- // Check if all data avalible - if(!IsReady) { return; } + if (!IsReady) { return; } #endregion #region -- CHECK EXISTENCE -- if ((MainVehicle == null) || (!MainVehicle.Exists()) || (MainVehicle.Model.Hash != Model)) @@ -322,7 +319,7 @@ namespace RageCoop.Client if (Function.Call(Hash.GET_VEHICLE_NUMBER_PLATE_TEXT, MainVehicle)!=LicensePlate) { - Function.Call(Hash.SET_VEHICLE_NUMBER_PLATE_TEXT,MainVehicle,LicensePlate); + Function.Call(Hash.SET_VEHICLE_NUMBER_PLATE_TEXT, MainVehicle, LicensePlate); } if (_lastLivery!=Livery) @@ -346,7 +343,7 @@ namespace RageCoop.Client } else if (current.DistanceTo(Position)<5) { - MainVehicle.Velocity = Velocity+5*( predicted - current); + MainVehicle.Velocity = Velocity+5*(predicted - current); if (IsFlipped) { MainVehicle.Quaternion=Quaternion.Slerp(MainVehicle.Quaternion, Quaternion, 0.5f); @@ -375,12 +372,12 @@ namespace RageCoop.Client } private Vector3 GetCalibrationRotation() { - var rot=Quaternion.LookRotation(Quaternion*Vector3.RelativeFront, Quaternion*Vector3.RelativeTop).ToEulerAngles(); - var curRot=Quaternion.LookRotation(MainVehicle.Quaternion*Vector3.RelativeFront, MainVehicle.Quaternion*Vector3.RelativeTop).ToEulerAngles(); - + var rot = Quaternion.LookRotation(Quaternion*Vector3.RelativeFront, Quaternion*Vector3.RelativeTop).ToEulerAngles(); + var curRot = Quaternion.LookRotation(MainVehicle.Quaternion*Vector3.RelativeFront, MainVehicle.Quaternion*Vector3.RelativeTop).ToEulerAngles(); + var r = (rot-curRot).ToDegree(); if (r.X>180) { r.X=r.X-360; } - else if(r.X<-180) { r.X=360+r.X; } + else if (r.X<-180) { r.X=360+r.X; } if (r.Y>180) { r.Y=r.Y-360; } else if (r.Y<-180) { r.Y=360+r.Y; } @@ -388,7 +385,7 @@ namespace RageCoop.Client if (r.Z>180) { r.Z=r.Z-360; } else if (r.Z<-180) { r.Z=360+r.Z; } return r; - + } private bool CreateVehicle() { diff --git a/RageCoop.Client/Sync/EntityPool.cs b/RageCoop.Client/Sync/EntityPool.cs index 9c638ac..0f88c10 100644 --- a/RageCoop.Client/Sync/EntityPool.cs +++ b/RageCoop.Client/Sync/EntityPool.cs @@ -1,14 +1,10 @@  -using System; using GTA; using GTA.Native; -using RageCoop.Core; +using RageCoop.Client.Scripting; +using System; using System.Collections.Generic; using System.Linq; -using RageCoop.Client.Scripting; -using System.Text; -using System.Diagnostics; -using System.Threading.Tasks; using System.Security.Cryptography; namespace RageCoop.Client @@ -36,16 +32,16 @@ namespace RageCoop.Client private static Dictionary ID_Projectiles = new Dictionary(); private static Dictionary Handle_Projectiles = new Dictionary(); - public static object PropsLock=new object(); - public static Dictionary ServerProps=new Dictionary(); + public static object PropsLock = new object(); + public static Dictionary ServerProps = new Dictionary(); public static object BlipsLock = new object(); public static Dictionary ServerBlips = new Dictionary(); - public static void Cleanup(bool keepPlayer=true,bool keepMine=true) + public static void Cleanup(bool keepPlayer = true, bool keepMine = true) { - foreach(int id in new List(ID_Peds.Keys)) + foreach (int id in new List(ID_Peds.Keys)) { if (keepPlayer&&(id==Main.LocalPlayerID)) { continue; } if (keepMine&&(ID_Peds[id].OwnerID==Main.LocalPlayerID)) { continue; } @@ -62,7 +58,7 @@ namespace RageCoop.Client ID_Vehicles.Clear(); Handle_Vehicles.Clear(); - foreach(var p in ID_Projectiles.Values) + foreach (var p in ID_Projectiles.Values) { if (p.ShooterID!=Main.LocalPlayerID && p.MainProjectile!=null && p.MainProjectile.Exists()) { @@ -72,13 +68,13 @@ namespace RageCoop.Client ID_Projectiles.Clear(); Handle_Projectiles.Clear(); - foreach(var p in ServerProps.Values) + foreach (var p in ServerProps.Values) { p?.MainProp?.Delete(); } ServerProps.Clear(); - foreach(var b in ServerBlips.Values) + foreach (var b in ServerBlips.Values) { if (b.Exists()) { @@ -113,10 +109,10 @@ namespace RageCoop.Client player.MainPed = p; // Remove it from Handle_Characters - var pairs=Handle_Peds.Where(x=>x.Value==player); + var pairs = Handle_Peds.Where(x => x.Value==player); if (pairs.Any()) { - var pair=pairs.First(); + var pair = pairs.First(); // Re-add Handle_Peds.Remove(pair.Key); @@ -135,7 +131,7 @@ namespace RageCoop.Client Main.LocalPlayerID=c.OwnerID=c.ID; Add(c); Main.Logger.Debug($"Local player ID is:{c.ID}"); - PlayerList.SetPlayer(c.ID, Main.Settings.Username ); + PlayerList.SetPlayer(c.ID, Main.Settings.Username); return true; } return false; @@ -164,7 +160,7 @@ namespace RageCoop.Client API.Events.InvokePedSpawned(c); } } - public static void RemovePed(int id,string reason="Cleanup") + public static void RemovePed(int id, string reason = "Cleanup") { if (ID_Peds.ContainsKey(id)) { @@ -231,7 +227,7 @@ namespace RageCoop.Client API.Events.InvokeVehicleSpawned(v); } } - public static void RemoveVehicle(int id,string reason = "Cleanup") + public static void RemoveVehicle(int id, string reason = "Cleanup") { if (ID_Vehicles.ContainsKey(id)) { @@ -319,9 +315,9 @@ namespace RageCoop.Client static int vehStatesPerFrame; static int pedStatesPerFrame; static int i; - public static Ped[] allPeds=new Ped[0]; - public static Vehicle[] allVehicles=new Vehicle[0]; - public static Projectile[] allProjectiles=new Projectile[0]; + public static Ped[] allPeds = new Ped[0]; + public static Vehicle[] allVehicles = new Vehicle[0]; + public static Projectile[] allProjectiles = new Projectile[0]; public static void DoSync() { @@ -358,7 +354,7 @@ namespace RageCoop.Client if (!Handle_Projectiles.ContainsKey(p.Handle)) { Add(new SyncedProjectile(p)); - + } } @@ -399,7 +395,7 @@ namespace RageCoop.Client } } - + i=-1; lock (PedsLock) @@ -497,13 +493,13 @@ namespace RageCoop.Client var type = veh.PopulationType; if (type==EntityPopulationType.RandomAmbient || type==EntityPopulationType.RandomParked) { - foreach(var p in veh.Occupants) + foreach (var p in veh.Occupants) { p.Delete(); var c = EntityPool.GetPedByHandle(p.Handle); if (c!=null) { - EntityPool.RemovePed(c.ID,"ThrottleTraffic"); + EntityPool.RemovePed(c.ID, "ThrottleTraffic"); } } veh.Delete(); @@ -532,7 +528,7 @@ namespace RageCoop.Client i++; if ((v.MainVehicle!=null)&&(!v.MainVehicle.Exists())) { - EntityPool.RemoveVehicle(v.ID,"non-existent"); + EntityPool.RemoveVehicle(v.ID, "non-existent"); continue; } @@ -570,7 +566,7 @@ namespace RageCoop.Client public static void RemoveAllFromPlayer(int playerPedId) { - foreach(SyncedPed p in ID_Peds.Values.ToArray()) + foreach (SyncedPed p in ID_Peds.Values.ToArray()) { if (p.OwnerID==playerPedId) { @@ -588,10 +584,10 @@ namespace RageCoop.Client public static int RequestNewID() { - int ID=0; - while ((ID==0) - || ID_Peds.ContainsKey(ID) - || ID_Vehicles.ContainsKey(ID) + int ID = 0; + while ((ID==0) + || ID_Peds.ContainsKey(ID) + || ID_Vehicles.ContainsKey(ID) || ID_Projectiles.ContainsKey(ID)) { byte[] rngBytes = new byte[4]; @@ -610,7 +606,7 @@ namespace RageCoop.Client } public static string DumpDebug() { - string s= ""; + string s = ""; s+="\nID_Peds: "+ID_Peds.Count; s+="\nHandle_Peds: "+Handle_Peds.Count; s+="\nID_Vehicles: "+ID_Vehicles.Count; diff --git a/RageCoop.Client/Sync/SyncEvents.cs b/RageCoop.Client/Sync/SyncEvents.cs index b32d026..71f9191 100644 --- a/RageCoop.Client/Sync/SyncEvents.cs +++ b/RageCoop.Client/Sync/SyncEvents.cs @@ -1,24 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; +using GTA; using GTA.Math; using RageCoop.Core; -using GTA.Native; +using System; using System.Threading; +using System.Threading.Tasks; -namespace RageCoop.Client { +namespace RageCoop.Client +{ internal static class SyncEvents { #region TRIGGER public static void TriggerPedKilled(SyncedPed victim) { - Networking.Send(new Packets.PedKilled() { VictimID=victim.ID},ConnectionChannel.SyncEvents); + Networking.Send(new Packets.PedKilled() { VictimID=victim.ID }, ConnectionChannel.SyncEvents); } - public static void TriggerEnteringVehicle(SyncedPed c,SyncedVehicle veh, VehicleSeat seat) + public static void TriggerEnteringVehicle(SyncedPed c, SyncedVehicle veh, VehicleSeat seat) { Networking. Send(new Packets.EnteringVehicle() @@ -42,7 +39,7 @@ namespace RageCoop.Client { VehicleSeat=(short)seat, PedID=c.ID, VehicleID=veh.ID - },ConnectionChannel.SyncEvents); + }, ConnectionChannel.SyncEvents); } public static void TriggerChangeOwner(SyncedVehicle c, int newOwnerID) @@ -56,7 +53,7 @@ namespace RageCoop.Client { } - public static void TriggerBulletShot(uint hash,SyncedPed owner,Vector3 impactPosition) + public static void TriggerBulletShot(uint hash, SyncedPed owner, Vector3 impactPosition) { // Main.Logger.Trace($"bullet shot:{(WeaponHash)hash}"); @@ -84,18 +81,18 @@ namespace RageCoop.Client { // ANNIHL if (veh.Model.Hash==837858166) { - Networking.SendBulletShot(veh.Bones[35].Position, veh.Bones[35].Position+veh.Bones[35].ForwardVector,hash,owner.ID); - Networking.SendBulletShot(veh.Bones[36].Position, veh.Bones[36].Position+veh.Bones[36].ForwardVector,hash, owner.ID); - Networking.SendBulletShot(veh.Bones[37].Position, veh.Bones[37].Position+veh.Bones[37].ForwardVector,hash, owner.ID); - Networking.SendBulletShot(veh.Bones[38].Position, veh.Bones[38].Position+veh.Bones[38].ForwardVector,hash, owner.ID); + Networking.SendBulletShot(veh.Bones[35].Position, veh.Bones[35].Position+veh.Bones[35].ForwardVector, hash, owner.ID); + Networking.SendBulletShot(veh.Bones[36].Position, veh.Bones[36].Position+veh.Bones[36].ForwardVector, hash, owner.ID); + Networking.SendBulletShot(veh.Bones[37].Position, veh.Bones[37].Position+veh.Bones[37].ForwardVector, hash, owner.ID); + Networking.SendBulletShot(veh.Bones[38].Position, veh.Bones[38].Position+veh.Bones[38].ForwardVector, hash, owner.ID); return; } var info = veh.GetMuzzleInfo(); - if (info==null) { Main.Logger.Warning($"Failed to get muzzle info for vehicle:{veh.DisplayName}");return; } - Networking.SendBulletShot(info.Position,info.Position+info.ForawardVector,hash,owner.ID); + if (info==null) { Main.Logger.Warning($"Failed to get muzzle info for vehicle:{veh.DisplayName}"); return; } + Networking.SendBulletShot(info.Position, info.Position+info.ForawardVector, hash, owner.ID); } - public static void TriggerNozzleTransform(int vehID,bool hover) + public static void TriggerNozzleTransform(int vehID, bool hover) { Networking.Send(new Packets.NozzleTransform() { VehicleID=vehID, Hover=hover }, ConnectionChannel.SyncEvents); } @@ -117,9 +114,9 @@ namespace RageCoop.Client { var flag = LeaveVehicleFlags.None; if (ped.MainPed?.CurrentVehicle==null) { return; } // Bail out - if (ped.MainPed.CurrentVehicle.Speed>5) { flag|=LeaveVehicleFlags.BailOut;} + if (ped.MainPed.CurrentVehicle.Speed>5) { flag|=LeaveVehicleFlags.BailOut; } // ped.PauseUpdate((ulong)Game.FPS*2); - ped.MainPed.Task.LeaveVehicle(flag) ; + ped.MainPed.Task.LeaveVehicle(flag); Task.Run(() => { Thread.Sleep(1000); @@ -132,7 +129,7 @@ namespace RageCoop.Client { } private static void HandleEnteringVehicle(SyncedPed c, SyncedVehicle veh, VehicleSeat seat) { - c.MainPed?.Task.EnterVehicle(veh.MainVehicle, seat,-1,2,EnterVehicleFlags.WarpToDoor|EnterVehicleFlags.AllowJacking); + c.MainPed?.Task.EnterVehicle(veh.MainVehicle, seat, -1, 2, EnterVehicleFlags.WarpToDoor|EnterVehicleFlags.AllowJacking); } private static void HandleEnteredVehicle(int pedId, int vehId, VehicleSeat seat) { @@ -190,10 +187,10 @@ namespace RageCoop.Client { case 1638077257: weaponHash=(uint)VehicleWeaponHash.PlayerLazer; break; - + case (uint)VehicleWeaponHash.PlayerBuzzard: weaponHash=1176362416; - break ; + break; } var p = EntityPool.GetPedByID(ownerID)?.MainPed; @@ -208,7 +205,7 @@ namespace RageCoop.Client { if (!_weaponAsset.IsLoaded) { _weaponAsset.Request(); } World.ShootBullet(start, end, p, _weaponAsset, (int)p.GetWeaponDamage(weaponHash)); Prop w; - if(((w = p.Weapons.CurrentWeaponObject) != null)&&(p.VehicleWeapon==VehicleWeaponHash.Invalid)) + if (((w = p.Weapons.CurrentWeaponObject) != null)&&(p.VehicleWeapon==VehicleWeaponHash.Invalid)) { if (p.Weapons.Current.Components.GetSuppressorComponent().Active) { @@ -228,7 +225,7 @@ namespace RageCoop.Client { } } } - public static void HandleEvent(PacketType type,byte[] data) + public static void HandleEvent(PacketType type, byte[] data) { switch (type) { @@ -273,7 +270,7 @@ namespace RageCoop.Client { { var packet = new Packets.EnteredVehicle(); packet.Unpack(data); - HandleEnteredVehicle(packet.PedID,packet.VehicleID,(VehicleSeat)packet.VehicleSeat); + HandleEnteredVehicle(packet.PedID, packet.VehicleID, (VehicleSeat)packet.VehicleSeat); break; } case PacketType.NozzleTransform: @@ -313,16 +310,16 @@ namespace RageCoop.Client { { if (subject.IsOnTurretSeat()) { - TriggerBulletShot((uint)subject.VehicleWeapon, subject.GetSyncEntity(), endPos); + TriggerBulletShot((uint)subject.VehicleWeapon, c, endPos); } else { - TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle,c); + TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle, c); } } else { - TriggerBulletShot((uint)subject.Weapons.Current.Hash, subject.GetSyncEntity(), endPos); + TriggerBulletShot((uint)subject.Weapons.Current.Hash, c, endPos); } return true; } @@ -335,16 +332,16 @@ namespace RageCoop.Client { { if (subject.IsOnTurretSeat()) { - TriggerBulletShot((uint)subject.VehicleWeapon, subject.GetSyncEntity(), endPos); + TriggerBulletShot((uint)subject.VehicleWeapon, c, endPos); } else { - TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle,c); + TriggerVehBulletShot((uint)subject.VehicleWeapon, subject.CurrentVehicle, c); } } else { - TriggerBulletShot((uint)subject.Weapons.Current.Hash, subject.GetSyncEntity(), endPos); + TriggerBulletShot((uint)subject.Weapons.Current.Hash, c, endPos); } return true; } @@ -358,20 +355,20 @@ namespace RageCoop.Client { } else if (subject.VehicleWeapon==VehicleWeaponHash.Tank && subject.LastWeaponImpactPosition!=default) { - TriggerBulletShot((uint)VehicleWeaponHash.Tank, subject.GetSyncEntity(),subject.LastWeaponImpactPosition); + TriggerBulletShot((uint)VehicleWeaponHash.Tank, c, subject.LastWeaponImpactPosition); } - + } - + // Vehicles var g = subject.IsGettingIntoVehicle; - if ( g && (!c._lastEnteringVehicle)) - { + if (g && (!c._lastEnteringVehicle)) + { var v = subject.VehicleTryingToEnter.GetSyncEntity(); TriggerEnteringVehicle(c, v, subject.GetSeatTryingToEnter()); } - var currentSitting= subject.IsSittingInVehicle(); + var currentSitting = subject.IsSittingInVehicle(); if (c._lastSittingInVehicle) { if (!currentSitting) @@ -391,18 +388,18 @@ namespace RageCoop.Client { c._lastSittingInVehicle=currentSitting; c._lastEnteringVehicle=g; } - + public static void Check(SyncedVehicle v) { if (v.MainVehicle!=null&&v.MainVehicle.HasNozzle()) { - if((v.LastNozzleAngle==1) && (v.MainVehicle.GetNozzleAngel()!=1)) + if ((v.LastNozzleAngle==1) && (v.MainVehicle.GetNozzleAngel()!=1)) { - TriggerNozzleTransform(v.ID,false); + TriggerNozzleTransform(v.ID, false); } - else if((v.LastNozzleAngle==0) && (v.MainVehicle.GetNozzleAngel()!=0)) + else if ((v.LastNozzleAngle==0) && (v.MainVehicle.GetNozzleAngel()!=0)) { - TriggerNozzleTransform(v.ID,true); + TriggerNozzleTransform(v.ID, true); } v.LastNozzleAngle=v.MainVehicle.GetNozzleAngel(); } diff --git a/RageCoop.Client/Sync/SyncParameters.cs b/RageCoop.Client/Sync/SyncParameters.cs index 039c71a..6defcc8 100644 --- a/RageCoop.Client/Sync/SyncParameters.cs +++ b/RageCoop.Client/Sync/SyncParameters.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace RageCoop.Client +namespace RageCoop.Client { internal class SyncParameters { diff --git a/RageCoop.Client/Util/PedConfigFlags.cs b/RageCoop.Client/Util/PedConfigFlags.cs index 219fad8..edfbb71 100644 --- a/RageCoop.Client/Util/PedConfigFlags.cs +++ b/RageCoop.Client/Util/PedConfigFlags.cs @@ -1,471 +1,465 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace RageCoop.Client +namespace RageCoop.Client { - // Potential names and hash collisions included as comments - internal enum PedConfigFlags - { - _0x67D1A445 = 0, - _0xC63DE95E = 1, - CPED_CONFIG_FLAG_NoCriticalHits = 2, - CPED_CONFIG_FLAG_DrownsInWater = 3, - CPED_CONFIG_FLAG_DisableReticuleFixedLockon = 4, - _0x37D196F4 = 5, - _0xE2462399 = 6, - CPED_CONFIG_FLAG_UpperBodyDamageAnimsOnly = 7, - _0xEDDEB838 = 8, - _0xB398B6FD = 9, - _0xF6664E68 = 10, - _0xA05E7CA3 = 11, - _0xCE394045 = 12, - CPED_CONFIG_FLAG_NeverLeavesGroup = 13, - _0xCD8D1411 = 14, - _0xB031F1A9 = 15, - _0xFE65BEE3 = 16, - CPED_CONFIG_FLAG_BlockNonTemporaryEvents = 17, - _0x380165BD = 18, - _0x07C045C7 = 19, - _0x583B5E2D = 20, - _0x475EDA58 = 21, - _0x8629D05B = 22, - _0x1522968B = 23, - CPED_CONFIG_FLAG_IgnoreSeenMelee = 24, - _0x4CC09C4B = 25, - _0x034F3053 = 26, - _0xD91BA7CC = 27, - _0x5C8DC66E = 28, - _0x8902EAA0 = 29, - _0x6580B9D2 = 30, - _0x0EF7A297 = 31, - _0x6BF86E5B = 32, - CPED_CONFIG_FLAG_DieWhenRagdoll = 33, - CPED_CONFIG_FLAG_HasHelmet = 34, - CPED_CONFIG_FLAG_UseHelmet = 35, - _0xEEB3D630 = 36, - _0xB130D17B = 37, - _0x5F071200 = 38, - CPED_CONFIG_FLAG_DisableEvasiveDives = 39, - _0xC287AAFF = 40, - _0x203328CC = 41, - CPED_CONFIG_FLAG_DontInfluenceWantedLevel = 42, - CPED_CONFIG_FLAG_DisablePlayerLockon = 43, - CPED_CONFIG_FLAG_DisableLockonToRandomPeds = 44, - _0xEC4A8ACF = 45, - _0xDB115BFA = 46, - CPED_CONFIG_FLAG_PedBeingDeleted = 47, - CPED_CONFIG_FLAG_BlockWeaponSwitching = 48, - _0xF8E99565 = 49, - _0xDD17FEE6 = 50, - _0x7ED9B2C9 = 51, - _0x655E8618 = 52, - _0x5A6C1F6E = 53, - _0xD749FC41 = 54, - _0x357F63F3 = 55, - _0xC5E60961 = 56, - _0x29275C3E = 57, - CPED_CONFIG_FLAG_IsFiring = 58, - CPED_CONFIG_FLAG_WasFiring = 59, - CPED_CONFIG_FLAG_IsStanding = 60, - CPED_CONFIG_FLAG_WasStanding = 61, - CPED_CONFIG_FLAG_InVehicle = 62, - CPED_CONFIG_FLAG_OnMount = 63, - CPED_CONFIG_FLAG_AttachedToVehicle = 64, - CPED_CONFIG_FLAG_IsSwimming = 65, - CPED_CONFIG_FLAG_WasSwimming = 66, - CPED_CONFIG_FLAG_IsSkiing = 67, - CPED_CONFIG_FLAG_IsSitting = 68, - CPED_CONFIG_FLAG_KilledByStealth = 69, - CPED_CONFIG_FLAG_KilledByTakedown = 70, - CPED_CONFIG_FLAG_Knockedout = 71, - _0x3E3C4560 = 72, - _0x2994C7B7 = 73, - _0x6D59D275 = 74, - CPED_CONFIG_FLAG_UsingCoverPoint = 75, - CPED_CONFIG_FLAG_IsInTheAir = 76, - _0x2D493FB7 = 77, - CPED_CONFIG_FLAG_IsAimingGun = 78, - _0x14D69875 = 79, - _0x40B05311 = 80, - _0x8B230BC5 = 81, - _0xC74E5842 = 82, - _0x9EA86147 = 83, - _0x674C746C = 84, - _0x3E56A8C2 = 85, - _0xC144A1EF = 86, - _0x0548512D = 87, - _0x31C93909 = 88, - _0xA0269315 = 89, - _0xD4D59D4D = 90, - _0x411D4420 = 91, - _0xDF4AEF0D = 92, - CPED_CONFIG_FLAG_ForcePedLoadCover = 93, - _0x300E4CD3 = 94, - _0xF1C5BF04 = 95, - _0x89C2EF13 = 96, - CPED_CONFIG_FLAG_VaultFromCover = 97, - _0x02A852C8 = 98, - _0x3D9407F1 = 99, - _0x319B4558 = 100, - CPED_CONFIG_FLAG_ForcedAim = 101, - _0xB942D71A = 102, - _0xD26C55A8 = 103, - _0xB89E703B = 104, - CPED_CONFIG_FLAG_ForceReload = 105, - _0xD9E73DA2 = 106, - _0xFF71DC2C = 107, - _0x1E27E8D8 = 108, - _0xF2C53966 = 109, - _0xC4DBE247 = 110, - _0x83C0A4BF = 111, - _0x0E0FAF8C = 112, - _0x26616660 = 113, - _0x43B80B79 = 114, - _0x0D2A9309 = 115, - _0x12C1C983 = 116, - CPED_CONFIG_FLAG_BumpedByPlayer = 117, - _0xE586D504 = 118, - _0x52374204 = 119, - CPED_CONFIG_FLAG_IsHandCuffed = 120, - CPED_CONFIG_FLAG_IsAnkleCuffed = 121, - CPED_CONFIG_FLAG_DisableMelee = 122, - _0xFE714397 = 123, - _0xB3E660BD = 124, - _0x5FED6BFD = 125, - _0xC9D6F66F = 126, - _0x519BC986 = 127, - CPED_CONFIG_FLAG_CanBeAgitated = 128, - _0x9A4B617C = 129, // CPED_CONFIG_FLAG_FaceDirInsult - _0xDAB70E9F = 130, - _0xE569438A = 131, - _0xBBC77D6D = 132, - _0xCB59EF0F = 133, - _0x8C5EA971 = 134, - CPED_CONFIG_FLAG_IsScuba = 135, - CPED_CONFIG_FLAG_WillArrestRatherThanJack = 136, - _0xDCE59B58 = 137, - CPED_CONFIG_FLAG_RidingTrain = 138, - CPED_CONFIG_FLAG_ArrestResult = 139, - CPED_CONFIG_FLAG_CanAttackFriendly = 140, - _0x98A4BE43 = 141, - _0x6901E731 = 142, - _0x9EC9BF6C = 143, - _0x42841A8F = 144, - CPED_CONFIG_FLAG_ShootingAnimFlag = 145, - CPED_CONFIG_FLAG_DisableLadderClimbing = 146, - CPED_CONFIG_FLAG_StairsDetected = 147, - CPED_CONFIG_FLAG_SlopeDetected = 148, - _0x1A15670B = 149, - _0x61786EE5 = 150, - _0xCB9186BD = 151, - _0xF0710152 = 152, - _0x43DFE310 = 153, - _0xC43C624E = 154, - CPED_CONFIG_FLAG_CanPerformArrest = 155, - CPED_CONFIG_FLAG_CanPerformUncuff = 156, - CPED_CONFIG_FLAG_CanBeArrested = 157, - _0xF7960FF5 = 158, - _0x59564113 = 159, - _0x0C6C3099 = 160, - _0x645F927A = 161, - _0xA86549B9 = 162, - _0x8AAF337A = 163, - _0x13BAA6E7 = 164, - _0x5FB9D1F5 = 165, - CPED_CONFIG_FLAG_IsInjured = 166, - _0x6398A20B = 167, - _0xD8072639 = 168, - _0xA05B1845 = 169, - _0x83F6D220 = 170, - _0xD8430331 = 171, - _0x4B547520 = 172, - _0xE66E1406 = 173, - _0x1C4BFE0C = 174, - _0x90008BFA = 175, - _0x07C7A910 = 176, - _0xF15F8191 = 177, - _0xCE4E8BE2 = 178, - _0x1D46E4F2 = 179, - CPED_CONFIG_FLAG_IsInCustody = 180, - _0xE4FD9B3A = 181, - _0x67AE0812 = 182, - CPED_CONFIG_FLAG_IsAgitated = 183, - CPED_CONFIG_FLAG_PreventAutoShuffleToDriversSeat = 184, - _0x7B2D325E = 185, - CPED_CONFIG_FLAG_EnableWeaponBlocking = 186, - CPED_CONFIG_FLAG_HasHurtStarted = 187, - CPED_CONFIG_FLAG_DisableHurt = 188, - CPED_CONFIG_FLAG_PlayerIsWeird = 189, - _0x32FC208B = 190, - _0x0C296E5A = 191, - _0xE63B73EC = 192, - _0x04E9CC80 = 193, - CPED_CONFIG_FLAG_UsingScenario = 194, - CPED_CONFIG_FLAG_VisibleOnScreen = 195, - _0xD88C58A1 = 196, - _0x5A3DCF43 = 197, // CPED_CONFIG_FLAG_AvoidUnderSide - _0xEA02B420 = 198, - _0x3F559CFF = 199, - _0x8C55D029 = 200, - _0x5E6466F6 = 201, - _0xEB5AD706 = 202, - _0x0EDDDDE7 = 203, - _0xA64F7B1D = 204, - _0x48532CBA = 205, - _0xAA25A9E7 = 206, - _0x415B26B9 = 207, - CPED_CONFIG_FLAG_DisableExplosionReactions = 208, - CPED_CONFIG_FLAG_DodgedPlayer = 209, - _0x67405504 = 210, - _0x75DDD68C = 211, - _0x2AD879B4 = 212, - _0x51486F91 = 213, - _0x32F79E21 = 214, - _0xBF099213 = 215, - _0x054AC8E2 = 216, - _0x14E495CC = 217, - _0x3C7DF9DF = 218, - _0x848FFEF2 = 219, - CPED_CONFIG_FLAG_DontEnterLeadersVehicle = 220, - _0x2618E1CF = 221, - _0x84F722FA = 222, - _0xD1B87B1F = 223, - _0x728AA918 = 224, - CPED_CONFIG_FLAG_DisablePotentialToBeWalkedIntoResponse = 225, - CPED_CONFIG_FLAG_DisablePedAvoidance = 226, - _0x59E91185 = 227, - _0x1EA7225F = 228, - CPED_CONFIG_FLAG_DisablePanicInVehicle = 229, - _0x6DCA7D88 = 230, - _0xFC3E572D = 231, - _0x08E9F9CF = 232, - _0x2D3BA52D = 233, - _0xFD2F53EA = 234, - _0x31A1B03B = 235, - CPED_CONFIG_FLAG_IsHoldingProp = 236, - _0x82ED0A66 = 237, // CPED_CONFIG_FLAG_BlocksPathingWhenDead - _0xCE57C9A3 = 238, - _0x26149198 = 239, - _0x1B33B598 = 240, - _0x719B6E87 = 241, - _0x13E8E8E8 = 242, - _0xF29739AE = 243, - _0xABEA8A74 = 244, - _0xB60EA2BA = 245, - _0x536B0950 = 246, - _0x0C754ACA = 247, - CPED_CONFIG_FLAG_DisableVehicleSeatRandomAnimations = 248, - _0x12659168 = 249, - _0x1BDF2F04 = 250, - _0x7728FAA3 = 251, - _0x6A807ED8 = 252, - CPED_CONFIG_FLAG_OnStairs = 253, - _0xE1A2F73F = 254, - _0x5B3697C8 = 255, - _0xF1EB20A9 = 256, - _0x8B7DF407 = 257, - _0x329DCF1A = 258, - _0x8D90DD1B = 259, - _0xB8A292B7 = 260, - _0x8374B087 = 261, - _0x2AF558F0 = 262, - _0x82251455 = 263, - _0x30CF498B = 264, - _0xE1CD50AF = 265, - _0x72E4AE48 = 266, - _0xC2657EA1 = 267, - _0x29FF6030 = 268, - _0x8248A5EC = 269, - CPED_CONFIG_FLAG_OnStairSlope = 270, - _0xA0897933 = 271, - CPED_CONFIG_FLAG_DontBlipCop = 272, - CPED_CONFIG_FLAG_ClimbedShiftedFence = 273, - _0xF7823618 = 274, - _0xDC305CCE = 275, // CPED_CONFIG_FLAG_KillWhenTrapped - CPED_CONFIG_FLAG_EdgeDetected = 276, - _0x92B67896 = 277, - _0xCAD677C9 = 278, - CPED_CONFIG_FLAG_AvoidTearGas = 279, - _0x5276AC7B = 280, - _0x1032692A = 281, - _0xDA23E7F1 = 282, - _0x9139724D = 283, - _0xA1457461 = 284, - _0x4186E095 = 285, - _0xAC68E2EB = 286, - CPED_CONFIG_FLAG_RagdollingOnBoat = 287, - CPED_CONFIG_FLAG_HasBrandishedWeapon = 288, - _0x1B9EE8A1 = 289, - _0xF3F5758C = 290, - _0x2A9307F1 = 291, - _0x7403D216 = 292, - _0xA06A3C6C = 293, - CPED_CONFIG_FLAG_DisableShockingEvents = 294, - _0xF8DA25A5 = 295, - _0x7EF55802 = 296, - _0xB31F1187 = 297, - _0x84315402 = 298, - _0x0FD69867 = 299, - _0xC7829B67 = 300, - CPED_CONFIG_FLAG_DisablePedConstraints = 301, - _0x6D23CF25 = 302, - _0x2ADA871B = 303, - _0x47BC8A58 = 304, - _0xEB692FA5 = 305, - _0x4A133C50 = 306, - _0xC58099C3 = 307, - _0xF3D76D41 = 308, - _0xB0EEE9F2 = 309, - CPED_CONFIG_FLAG_IsInCluster = 310, - _0x0FA153EF = 311, - _0xD73F5CD3 = 312, - _0xD4136C22 = 313, - _0xE404CA6B = 314, - _0xB9597446 = 315, - _0xD5C98277 = 316, - _0xD5060A9C = 317, - _0x3E5F1CBB = 318, - _0xD8BE1D54 = 319, - _0x0B1F191F = 320, - _0xC995167A = 321, - CPED_CONFIG_FLAG_HasHighHeels = 322, - _0x86B01E54 = 323, - _0x3A56FE15 = 324, - _0xC03B736C = 325, // CPED_CONFIG_FLAG_SpawnedAtScenario - _0xBBF47729 = 326, - _0x22B668A8 = 327, - _0x2624D4D4 = 328, - CPED_CONFIG_FLAG_DisableTalkTo = 329, - CPED_CONFIG_FLAG_DontBlip = 330, - CPED_CONFIG_FLAG_IsSwitchingWeapon = 331, - _0x630F55F3 = 332, - _0x150468FD = 333, - _0x914EBD6B = 334, - _0x79AF3B6D = 335, - _0x75C7A632 = 336, - _0x52D530E2 = 337, - _0xDB2A90E0 = 338, - _0x5922763D = 339, - _0x12ADB567 = 340, - _0x105C8518 = 341, - _0x106F703D = 342, - _0xED152C3E = 343, - _0xA0EFE6A8 = 344, - _0xBF348C82 = 345, - _0xCDDFE830 = 346, - _0x7B59BD9B = 347, - _0x0124C788 = 348, - CPED_CONFIG_FLAG_EquipJetpack = 349, - _0x08D361A5 = 350, - _0xE13D1F7C = 351, - _0x40E25FB9 = 352, - _0x930629D9 = 353, - _0xECCF0C7F = 354, - _0xB6E9613B = 355, - _0x490C0478 = 356, - _0xE8865BEA = 357, - _0xF3C34A29 = 358, - CPED_CONFIG_FLAG_IsDuckingInVehicle = 359, - _0xF660E115 = 360, - _0xAB0E6DED = 361, - CPED_CONFIG_FLAG_HasReserveParachute = 362, - CPED_CONFIG_FLAG_UseReserveParachute = 363, - _0x5C5D9CD3 = 364, - _0x8F7701F3 = 365, - _0xBC4436AD = 366, - _0xD7E07D37 = 367, - _0x03C4FD24 = 368, - _0x7675789A = 369, - _0xB7288A88 = 370, - _0xC06B6291 = 371, - _0x95A4A805 = 372, - _0xA8E9A042 = 373, - CPED_CONFIG_FLAG_NeverLeaveTrain = 374, - _0xBAC674B3 = 375, - _0x147F1FFB = 376, - _0x4376DD79 = 377, - _0xCD3DB518 = 378, - _0xFE4BA4B6 = 379, - _0x5DF03A55 = 380, - _0xBCD816CD = 381, - _0xCF02DD69 = 382, - _0xF73AFA2E = 383, - _0x80B9A9D0 = 384, - _0xF601F7EE = 385, - _0xA91350FC = 386, - _0x3AB23B96 = 387, - CPED_CONFIG_FLAG_IsClimbingLadder = 388, - CPED_CONFIG_FLAG_HasBareFeet = 389, - _0xB4B1CD4C = 390, - _0x5459AFB8 = 391, - _0x54F27667 = 392, - _0xC11D3E8F = 393, - _0x5419EB3E = 394, - _0x82D8DBB4 = 395, - _0x33B02D2F = 396, - _0xAE66176D = 397, - _0xA2692593 = 398, - _0x714C7E31 = 399, - _0xEC488AC7 = 400, - _0xAE398504 = 401, - _0xABC58D72 = 402, - _0x5E5B9591 = 403, - _0x6BA1091E = 404, - _0x77840177 = 405, - _0x1C7ACAC4 = 406, - _0x124420E9 = 407, - _0x75A65587 = 408, - _0xDFD2D55B = 409, - _0xBDD39919 = 410, - _0x43DEC267 = 411, - _0xE42B7797 = 412, - CPED_CONFIG_FLAG_IsHolsteringWeapon = 413, - _0x4F8149F5 = 414, - _0xDD9ECA7A = 415, - _0x9E7EF9D2 = 416, - _0x2C6ED942 = 417, - CPED_CONFIG_FLAG_IsSwitchingHelmetVisor = 418, - _0xA488727D = 419, - _0xCFF5F6DE = 420, - _0x6D614599 = 421, - CPED_CONFIG_FLAG_DisableVehicleCombat = 422, - _0xFE401D26 = 423, - CPED_CONFIG_FLAG_FallsLikeAircraft = 424, - _0x2B42AE82 = 425, - _0x7A95734F = 426, - _0xDF4D8617 = 427, - _0x578F1F14 = 428, - CPED_CONFIG_FLAG_DisableStartEngine = 429, - CPED_CONFIG_FLAG_IgnoreBeingOnFire = 430, - _0x153C9500 = 431, - _0xCB7A632E = 432, - _0xDE727981 = 433, - CPED_CONFIG_FLAG_DisableHomingMissileLockon = 434, - _0x12BBB935 = 435, - _0xAD0A1277 = 436, - _0xEA6AA46A = 437, - CPED_CONFIG_FLAG_DisableHelmetArmor = 438, - _0xCB7F3A1E = 439, - _0x50178878 = 440, - _0x051B4F0D = 441, - _0x2FC3DECC = 442, - _0xC0030B0B = 443, - _0xBBDAF1E9 = 444, - _0x944FE59C = 445, - _0x506FBA39 = 446, - _0xDD45FE84 = 447, - _0xE698AE75 = 448, - _0x199633F8 = 449, - CPED_CONFIG_FLAG_PedIsArresting = 450, - CPED_CONFIG_FLAG_IsDecoyPed = 451, - _0x3A251D83 = 452, - _0xA56F6986 = 453, - _0x1D19C622 = 454, - _0xB68D3EAB = 455, - CPED_CONFIG_FLAG_CanBeIncapacitated = 456, - _0x4BD5EBAD = 457, - } + // Potential names and hash collisions included as comments + internal enum PedConfigFlags + { + _0x67D1A445 = 0, + _0xC63DE95E = 1, + CPED_CONFIG_FLAG_NoCriticalHits = 2, + CPED_CONFIG_FLAG_DrownsInWater = 3, + CPED_CONFIG_FLAG_DisableReticuleFixedLockon = 4, + _0x37D196F4 = 5, + _0xE2462399 = 6, + CPED_CONFIG_FLAG_UpperBodyDamageAnimsOnly = 7, + _0xEDDEB838 = 8, + _0xB398B6FD = 9, + _0xF6664E68 = 10, + _0xA05E7CA3 = 11, + _0xCE394045 = 12, + CPED_CONFIG_FLAG_NeverLeavesGroup = 13, + _0xCD8D1411 = 14, + _0xB031F1A9 = 15, + _0xFE65BEE3 = 16, + CPED_CONFIG_FLAG_BlockNonTemporaryEvents = 17, + _0x380165BD = 18, + _0x07C045C7 = 19, + _0x583B5E2D = 20, + _0x475EDA58 = 21, + _0x8629D05B = 22, + _0x1522968B = 23, + CPED_CONFIG_FLAG_IgnoreSeenMelee = 24, + _0x4CC09C4B = 25, + _0x034F3053 = 26, + _0xD91BA7CC = 27, + _0x5C8DC66E = 28, + _0x8902EAA0 = 29, + _0x6580B9D2 = 30, + _0x0EF7A297 = 31, + _0x6BF86E5B = 32, + CPED_CONFIG_FLAG_DieWhenRagdoll = 33, + CPED_CONFIG_FLAG_HasHelmet = 34, + CPED_CONFIG_FLAG_UseHelmet = 35, + _0xEEB3D630 = 36, + _0xB130D17B = 37, + _0x5F071200 = 38, + CPED_CONFIG_FLAG_DisableEvasiveDives = 39, + _0xC287AAFF = 40, + _0x203328CC = 41, + CPED_CONFIG_FLAG_DontInfluenceWantedLevel = 42, + CPED_CONFIG_FLAG_DisablePlayerLockon = 43, + CPED_CONFIG_FLAG_DisableLockonToRandomPeds = 44, + _0xEC4A8ACF = 45, + _0xDB115BFA = 46, + CPED_CONFIG_FLAG_PedBeingDeleted = 47, + CPED_CONFIG_FLAG_BlockWeaponSwitching = 48, + _0xF8E99565 = 49, + _0xDD17FEE6 = 50, + _0x7ED9B2C9 = 51, + _0x655E8618 = 52, + _0x5A6C1F6E = 53, + _0xD749FC41 = 54, + _0x357F63F3 = 55, + _0xC5E60961 = 56, + _0x29275C3E = 57, + CPED_CONFIG_FLAG_IsFiring = 58, + CPED_CONFIG_FLAG_WasFiring = 59, + CPED_CONFIG_FLAG_IsStanding = 60, + CPED_CONFIG_FLAG_WasStanding = 61, + CPED_CONFIG_FLAG_InVehicle = 62, + CPED_CONFIG_FLAG_OnMount = 63, + CPED_CONFIG_FLAG_AttachedToVehicle = 64, + CPED_CONFIG_FLAG_IsSwimming = 65, + CPED_CONFIG_FLAG_WasSwimming = 66, + CPED_CONFIG_FLAG_IsSkiing = 67, + CPED_CONFIG_FLAG_IsSitting = 68, + CPED_CONFIG_FLAG_KilledByStealth = 69, + CPED_CONFIG_FLAG_KilledByTakedown = 70, + CPED_CONFIG_FLAG_Knockedout = 71, + _0x3E3C4560 = 72, + _0x2994C7B7 = 73, + _0x6D59D275 = 74, + CPED_CONFIG_FLAG_UsingCoverPoint = 75, + CPED_CONFIG_FLAG_IsInTheAir = 76, + _0x2D493FB7 = 77, + CPED_CONFIG_FLAG_IsAimingGun = 78, + _0x14D69875 = 79, + _0x40B05311 = 80, + _0x8B230BC5 = 81, + _0xC74E5842 = 82, + _0x9EA86147 = 83, + _0x674C746C = 84, + _0x3E56A8C2 = 85, + _0xC144A1EF = 86, + _0x0548512D = 87, + _0x31C93909 = 88, + _0xA0269315 = 89, + _0xD4D59D4D = 90, + _0x411D4420 = 91, + _0xDF4AEF0D = 92, + CPED_CONFIG_FLAG_ForcePedLoadCover = 93, + _0x300E4CD3 = 94, + _0xF1C5BF04 = 95, + _0x89C2EF13 = 96, + CPED_CONFIG_FLAG_VaultFromCover = 97, + _0x02A852C8 = 98, + _0x3D9407F1 = 99, + _0x319B4558 = 100, + CPED_CONFIG_FLAG_ForcedAim = 101, + _0xB942D71A = 102, + _0xD26C55A8 = 103, + _0xB89E703B = 104, + CPED_CONFIG_FLAG_ForceReload = 105, + _0xD9E73DA2 = 106, + _0xFF71DC2C = 107, + _0x1E27E8D8 = 108, + _0xF2C53966 = 109, + _0xC4DBE247 = 110, + _0x83C0A4BF = 111, + _0x0E0FAF8C = 112, + _0x26616660 = 113, + _0x43B80B79 = 114, + _0x0D2A9309 = 115, + _0x12C1C983 = 116, + CPED_CONFIG_FLAG_BumpedByPlayer = 117, + _0xE586D504 = 118, + _0x52374204 = 119, + CPED_CONFIG_FLAG_IsHandCuffed = 120, + CPED_CONFIG_FLAG_IsAnkleCuffed = 121, + CPED_CONFIG_FLAG_DisableMelee = 122, + _0xFE714397 = 123, + _0xB3E660BD = 124, + _0x5FED6BFD = 125, + _0xC9D6F66F = 126, + _0x519BC986 = 127, + CPED_CONFIG_FLAG_CanBeAgitated = 128, + _0x9A4B617C = 129, // CPED_CONFIG_FLAG_FaceDirInsult + _0xDAB70E9F = 130, + _0xE569438A = 131, + _0xBBC77D6D = 132, + _0xCB59EF0F = 133, + _0x8C5EA971 = 134, + CPED_CONFIG_FLAG_IsScuba = 135, + CPED_CONFIG_FLAG_WillArrestRatherThanJack = 136, + _0xDCE59B58 = 137, + CPED_CONFIG_FLAG_RidingTrain = 138, + CPED_CONFIG_FLAG_ArrestResult = 139, + CPED_CONFIG_FLAG_CanAttackFriendly = 140, + _0x98A4BE43 = 141, + _0x6901E731 = 142, + _0x9EC9BF6C = 143, + _0x42841A8F = 144, + CPED_CONFIG_FLAG_ShootingAnimFlag = 145, + CPED_CONFIG_FLAG_DisableLadderClimbing = 146, + CPED_CONFIG_FLAG_StairsDetected = 147, + CPED_CONFIG_FLAG_SlopeDetected = 148, + _0x1A15670B = 149, + _0x61786EE5 = 150, + _0xCB9186BD = 151, + _0xF0710152 = 152, + _0x43DFE310 = 153, + _0xC43C624E = 154, + CPED_CONFIG_FLAG_CanPerformArrest = 155, + CPED_CONFIG_FLAG_CanPerformUncuff = 156, + CPED_CONFIG_FLAG_CanBeArrested = 157, + _0xF7960FF5 = 158, + _0x59564113 = 159, + _0x0C6C3099 = 160, + _0x645F927A = 161, + _0xA86549B9 = 162, + _0x8AAF337A = 163, + _0x13BAA6E7 = 164, + _0x5FB9D1F5 = 165, + CPED_CONFIG_FLAG_IsInjured = 166, + _0x6398A20B = 167, + _0xD8072639 = 168, + _0xA05B1845 = 169, + _0x83F6D220 = 170, + _0xD8430331 = 171, + _0x4B547520 = 172, + _0xE66E1406 = 173, + _0x1C4BFE0C = 174, + _0x90008BFA = 175, + _0x07C7A910 = 176, + _0xF15F8191 = 177, + _0xCE4E8BE2 = 178, + _0x1D46E4F2 = 179, + CPED_CONFIG_FLAG_IsInCustody = 180, + _0xE4FD9B3A = 181, + _0x67AE0812 = 182, + CPED_CONFIG_FLAG_IsAgitated = 183, + CPED_CONFIG_FLAG_PreventAutoShuffleToDriversSeat = 184, + _0x7B2D325E = 185, + CPED_CONFIG_FLAG_EnableWeaponBlocking = 186, + CPED_CONFIG_FLAG_HasHurtStarted = 187, + CPED_CONFIG_FLAG_DisableHurt = 188, + CPED_CONFIG_FLAG_PlayerIsWeird = 189, + _0x32FC208B = 190, + _0x0C296E5A = 191, + _0xE63B73EC = 192, + _0x04E9CC80 = 193, + CPED_CONFIG_FLAG_UsingScenario = 194, + CPED_CONFIG_FLAG_VisibleOnScreen = 195, + _0xD88C58A1 = 196, + _0x5A3DCF43 = 197, // CPED_CONFIG_FLAG_AvoidUnderSide + _0xEA02B420 = 198, + _0x3F559CFF = 199, + _0x8C55D029 = 200, + _0x5E6466F6 = 201, + _0xEB5AD706 = 202, + _0x0EDDDDE7 = 203, + _0xA64F7B1D = 204, + _0x48532CBA = 205, + _0xAA25A9E7 = 206, + _0x415B26B9 = 207, + CPED_CONFIG_FLAG_DisableExplosionReactions = 208, + CPED_CONFIG_FLAG_DodgedPlayer = 209, + _0x67405504 = 210, + _0x75DDD68C = 211, + _0x2AD879B4 = 212, + _0x51486F91 = 213, + _0x32F79E21 = 214, + _0xBF099213 = 215, + _0x054AC8E2 = 216, + _0x14E495CC = 217, + _0x3C7DF9DF = 218, + _0x848FFEF2 = 219, + CPED_CONFIG_FLAG_DontEnterLeadersVehicle = 220, + _0x2618E1CF = 221, + _0x84F722FA = 222, + _0xD1B87B1F = 223, + _0x728AA918 = 224, + CPED_CONFIG_FLAG_DisablePotentialToBeWalkedIntoResponse = 225, + CPED_CONFIG_FLAG_DisablePedAvoidance = 226, + _0x59E91185 = 227, + _0x1EA7225F = 228, + CPED_CONFIG_FLAG_DisablePanicInVehicle = 229, + _0x6DCA7D88 = 230, + _0xFC3E572D = 231, + _0x08E9F9CF = 232, + _0x2D3BA52D = 233, + _0xFD2F53EA = 234, + _0x31A1B03B = 235, + CPED_CONFIG_FLAG_IsHoldingProp = 236, + _0x82ED0A66 = 237, // CPED_CONFIG_FLAG_BlocksPathingWhenDead + _0xCE57C9A3 = 238, + _0x26149198 = 239, + _0x1B33B598 = 240, + _0x719B6E87 = 241, + _0x13E8E8E8 = 242, + _0xF29739AE = 243, + _0xABEA8A74 = 244, + _0xB60EA2BA = 245, + _0x536B0950 = 246, + _0x0C754ACA = 247, + CPED_CONFIG_FLAG_DisableVehicleSeatRandomAnimations = 248, + _0x12659168 = 249, + _0x1BDF2F04 = 250, + _0x7728FAA3 = 251, + _0x6A807ED8 = 252, + CPED_CONFIG_FLAG_OnStairs = 253, + _0xE1A2F73F = 254, + _0x5B3697C8 = 255, + _0xF1EB20A9 = 256, + _0x8B7DF407 = 257, + _0x329DCF1A = 258, + _0x8D90DD1B = 259, + _0xB8A292B7 = 260, + _0x8374B087 = 261, + _0x2AF558F0 = 262, + _0x82251455 = 263, + _0x30CF498B = 264, + _0xE1CD50AF = 265, + _0x72E4AE48 = 266, + _0xC2657EA1 = 267, + _0x29FF6030 = 268, + _0x8248A5EC = 269, + CPED_CONFIG_FLAG_OnStairSlope = 270, + _0xA0897933 = 271, + CPED_CONFIG_FLAG_DontBlipCop = 272, + CPED_CONFIG_FLAG_ClimbedShiftedFence = 273, + _0xF7823618 = 274, + _0xDC305CCE = 275, // CPED_CONFIG_FLAG_KillWhenTrapped + CPED_CONFIG_FLAG_EdgeDetected = 276, + _0x92B67896 = 277, + _0xCAD677C9 = 278, + CPED_CONFIG_FLAG_AvoidTearGas = 279, + _0x5276AC7B = 280, + _0x1032692A = 281, + _0xDA23E7F1 = 282, + _0x9139724D = 283, + _0xA1457461 = 284, + _0x4186E095 = 285, + _0xAC68E2EB = 286, + CPED_CONFIG_FLAG_RagdollingOnBoat = 287, + CPED_CONFIG_FLAG_HasBrandishedWeapon = 288, + _0x1B9EE8A1 = 289, + _0xF3F5758C = 290, + _0x2A9307F1 = 291, + _0x7403D216 = 292, + _0xA06A3C6C = 293, + CPED_CONFIG_FLAG_DisableShockingEvents = 294, + _0xF8DA25A5 = 295, + _0x7EF55802 = 296, + _0xB31F1187 = 297, + _0x84315402 = 298, + _0x0FD69867 = 299, + _0xC7829B67 = 300, + CPED_CONFIG_FLAG_DisablePedConstraints = 301, + _0x6D23CF25 = 302, + _0x2ADA871B = 303, + _0x47BC8A58 = 304, + _0xEB692FA5 = 305, + _0x4A133C50 = 306, + _0xC58099C3 = 307, + _0xF3D76D41 = 308, + _0xB0EEE9F2 = 309, + CPED_CONFIG_FLAG_IsInCluster = 310, + _0x0FA153EF = 311, + _0xD73F5CD3 = 312, + _0xD4136C22 = 313, + _0xE404CA6B = 314, + _0xB9597446 = 315, + _0xD5C98277 = 316, + _0xD5060A9C = 317, + _0x3E5F1CBB = 318, + _0xD8BE1D54 = 319, + _0x0B1F191F = 320, + _0xC995167A = 321, + CPED_CONFIG_FLAG_HasHighHeels = 322, + _0x86B01E54 = 323, + _0x3A56FE15 = 324, + _0xC03B736C = 325, // CPED_CONFIG_FLAG_SpawnedAtScenario + _0xBBF47729 = 326, + _0x22B668A8 = 327, + _0x2624D4D4 = 328, + CPED_CONFIG_FLAG_DisableTalkTo = 329, + CPED_CONFIG_FLAG_DontBlip = 330, + CPED_CONFIG_FLAG_IsSwitchingWeapon = 331, + _0x630F55F3 = 332, + _0x150468FD = 333, + _0x914EBD6B = 334, + _0x79AF3B6D = 335, + _0x75C7A632 = 336, + _0x52D530E2 = 337, + _0xDB2A90E0 = 338, + _0x5922763D = 339, + _0x12ADB567 = 340, + _0x105C8518 = 341, + _0x106F703D = 342, + _0xED152C3E = 343, + _0xA0EFE6A8 = 344, + _0xBF348C82 = 345, + _0xCDDFE830 = 346, + _0x7B59BD9B = 347, + _0x0124C788 = 348, + CPED_CONFIG_FLAG_EquipJetpack = 349, + _0x08D361A5 = 350, + _0xE13D1F7C = 351, + _0x40E25FB9 = 352, + _0x930629D9 = 353, + _0xECCF0C7F = 354, + _0xB6E9613B = 355, + _0x490C0478 = 356, + _0xE8865BEA = 357, + _0xF3C34A29 = 358, + CPED_CONFIG_FLAG_IsDuckingInVehicle = 359, + _0xF660E115 = 360, + _0xAB0E6DED = 361, + CPED_CONFIG_FLAG_HasReserveParachute = 362, + CPED_CONFIG_FLAG_UseReserveParachute = 363, + _0x5C5D9CD3 = 364, + _0x8F7701F3 = 365, + _0xBC4436AD = 366, + _0xD7E07D37 = 367, + _0x03C4FD24 = 368, + _0x7675789A = 369, + _0xB7288A88 = 370, + _0xC06B6291 = 371, + _0x95A4A805 = 372, + _0xA8E9A042 = 373, + CPED_CONFIG_FLAG_NeverLeaveTrain = 374, + _0xBAC674B3 = 375, + _0x147F1FFB = 376, + _0x4376DD79 = 377, + _0xCD3DB518 = 378, + _0xFE4BA4B6 = 379, + _0x5DF03A55 = 380, + _0xBCD816CD = 381, + _0xCF02DD69 = 382, + _0xF73AFA2E = 383, + _0x80B9A9D0 = 384, + _0xF601F7EE = 385, + _0xA91350FC = 386, + _0x3AB23B96 = 387, + CPED_CONFIG_FLAG_IsClimbingLadder = 388, + CPED_CONFIG_FLAG_HasBareFeet = 389, + _0xB4B1CD4C = 390, + _0x5459AFB8 = 391, + _0x54F27667 = 392, + _0xC11D3E8F = 393, + _0x5419EB3E = 394, + _0x82D8DBB4 = 395, + _0x33B02D2F = 396, + _0xAE66176D = 397, + _0xA2692593 = 398, + _0x714C7E31 = 399, + _0xEC488AC7 = 400, + _0xAE398504 = 401, + _0xABC58D72 = 402, + _0x5E5B9591 = 403, + _0x6BA1091E = 404, + _0x77840177 = 405, + _0x1C7ACAC4 = 406, + _0x124420E9 = 407, + _0x75A65587 = 408, + _0xDFD2D55B = 409, + _0xBDD39919 = 410, + _0x43DEC267 = 411, + _0xE42B7797 = 412, + CPED_CONFIG_FLAG_IsHolsteringWeapon = 413, + _0x4F8149F5 = 414, + _0xDD9ECA7A = 415, + _0x9E7EF9D2 = 416, + _0x2C6ED942 = 417, + CPED_CONFIG_FLAG_IsSwitchingHelmetVisor = 418, + _0xA488727D = 419, + _0xCFF5F6DE = 420, + _0x6D614599 = 421, + CPED_CONFIG_FLAG_DisableVehicleCombat = 422, + _0xFE401D26 = 423, + CPED_CONFIG_FLAG_FallsLikeAircraft = 424, + _0x2B42AE82 = 425, + _0x7A95734F = 426, + _0xDF4D8617 = 427, + _0x578F1F14 = 428, + CPED_CONFIG_FLAG_DisableStartEngine = 429, + CPED_CONFIG_FLAG_IgnoreBeingOnFire = 430, + _0x153C9500 = 431, + _0xCB7A632E = 432, + _0xDE727981 = 433, + CPED_CONFIG_FLAG_DisableHomingMissileLockon = 434, + _0x12BBB935 = 435, + _0xAD0A1277 = 436, + _0xEA6AA46A = 437, + CPED_CONFIG_FLAG_DisableHelmetArmor = 438, + _0xCB7F3A1E = 439, + _0x50178878 = 440, + _0x051B4F0D = 441, + _0x2FC3DECC = 442, + _0xC0030B0B = 443, + _0xBBDAF1E9 = 444, + _0x944FE59C = 445, + _0x506FBA39 = 446, + _0xDD45FE84 = 447, + _0xE698AE75 = 448, + _0x199633F8 = 449, + CPED_CONFIG_FLAG_PedIsArresting = 450, + CPED_CONFIG_FLAG_IsDecoyPed = 451, + _0x3A251D83 = 452, + _0xA56F6986 = 453, + _0x1D19C622 = 454, + _0xB68D3EAB = 455, + CPED_CONFIG_FLAG_CanBeIncapacitated = 456, + _0x4BD5EBAD = 457, + } } diff --git a/RageCoop.Client/Util/PedExtensions.cs b/RageCoop.Client/Util/PedExtensions.cs index a7cc63f..dcbdf4b 100644 --- a/RageCoop.Client/Util/PedExtensions.cs +++ b/RageCoop.Client/Util/PedExtensions.cs @@ -1,20 +1,14 @@ -using System; -using System.IO; -using System.Xml.Serialization; -using System.Collections.Generic; -using System.Runtime.InteropServices; -using RageCoop.Core; -using GTA; -using GTA.Native; +using GTA; using GTA.Math; -using System.Linq; -using System.Diagnostics; +using GTA.Native; +using RageCoop.Core; +using System.Collections.Generic; namespace RageCoop.Client { internal static partial class PedExtensions { - + public static bool IsBetween(this T item, T start, T end) { return Comparer.Default.Compare(item, start) >= 0 && Comparer.Default.Compare(item, end) <= 0; @@ -42,7 +36,7 @@ namespace RageCoop.Client return true; } - + #region PED @@ -61,7 +55,7 @@ namespace RageCoop.Client { return 1; } - + return 0; } @@ -135,7 +129,7 @@ namespace RageCoop.Client flags |=PedDataFlags.IsInCover; } - if(Function.Call(Hash.GET_PED_STEALTH_MOVEMENT, ped)) + if (Function.Call(Hash.GET_PED_STEALTH_MOVEMENT, ped)) { flags |= PedDataFlags.IsInStealthMode; } @@ -294,7 +288,7 @@ namespace RageCoop.Client } return result; } - public static bool IsTaskActive(this Ped p,TaskType task) + public static bool IsTaskActive(this Ped p, TaskType task) { return Function.Call(Hash.GET_IS_TASK_ACTIVE, p.Handle, task); } @@ -333,17 +327,17 @@ namespace RageCoop.Client { return (VehicleSeat)Function.Call(Hash.GET_SEAT_PED_IS_TRYING_TO_ENTER, p); } - + #endregion - - - - + + + + public static bool IsTurretSeat(this Vehicle veh, int seat) { if (!Function.Call(Hash.DOES_VEHICLE_HAVE_WEAPONS, veh.Handle)) @@ -392,7 +386,7 @@ namespace RageCoop.Client } - - + + } } diff --git a/RageCoop.Client/Util/TaskType.cs b/RageCoop.Client/Util/TaskType.cs index 0336269..f45cdd2 100644 --- a/RageCoop.Client/Util/TaskType.cs +++ b/RageCoop.Client/Util/TaskType.cs @@ -3,436 +3,436 @@ // This is up-to-date for b2372 internal enum TaskType { - CTaskHandsUp = 0, - CTaskClimbLadder = 1, - CTaskExitVehicle = 2, - CTaskCombatRoll = 3, - CTaskAimGunOnFoot = 4, - CTaskMovePlayer = 5, - CTaskPlayerOnFoot = 6, - CTaskWeapon = 8, - CTaskPlayerWeapon = 9, - CTaskPlayerIdles = 10, - CTaskAimGun = 12, - CTaskComplex = 12, - CTaskFSMClone = 12, - CTaskMotionBase = 12, - CTaskMove = 12, - CTaskMoveBase = 12, - CTaskNMBehaviour = 12, - CTaskNavBase = 12, - CTaskScenario = 12, - CTaskSearchBase = 12, - CTaskSearchInVehicleBase = 12, - CTaskShockingEvent = 12, - CTaskTrainBase = 12, - CTaskVehicleFSM = 12, - CTaskVehicleGoTo = 12, - CTaskVehicleMissionBase = 12, - CTaskVehicleTempAction = 12, - CTaskPause = 14, - CTaskDoNothing = 15, - CTaskGetUp = 16, - CTaskGetUpAndStandStill = 17, - CTaskFallOver = 18, - CTaskFallAndGetUp = 19, - CTaskCrawl = 20, - CTaskComplexOnFire = 25, - CTaskDamageElectric = 26, - CTaskTriggerLookAt = 28, - CTaskClearLookAt = 29, - CTaskSetCharDecisionMaker = 30, - CTaskSetPedDefensiveArea = 31, - CTaskUseSequence = 32, - CTaskMoveStandStill = 34, - CTaskComplexControlMovement = 35, - CTaskMoveSequence = 36, - CTaskAmbientClips = 38, - CTaskMoveInAir = 39, - CTaskNetworkClone = 40, - CTaskUseClimbOnRoute = 41, - CTaskUseDropDownOnRoute = 42, - CTaskUseLadderOnRoute = 43, - CTaskSetBlockingOfNonTemporaryEvents = 44, - CTaskForceMotionState = 45, - CTaskSlopeScramble = 46, - CTaskGoToAndClimbLadder = 47, - CTaskClimbLadderFully = 48, - CTaskRappel = 49, - CTaskVault = 50, - CTaskDropDown = 51, - CTaskAffectSecondaryBehaviour = 52, - CTaskAmbientLookAtEvent = 53, - CTaskOpenDoor = 54, - CTaskShovePed = 55, - CTaskSwapWeapon = 56, - CTaskGeneralSweep = 57, - CTaskPolice = 58, - CTaskPoliceOrderResponse = 59, - CTaskPursueCriminal = 60, - CTaskArrestPed = 62, - CTaskArrestPed2 = 63, - CTaskBusted = 64, - CTaskFirePatrol = 65, - CTaskHeliOrderResponse = 66, - CTaskHeliPassengerRappel = 67, - CTaskAmbulancePatrol = 68, - CTaskPoliceWantedResponse = 69, - CTaskSwat = 70, - CTaskSwatWantedResponse = 72, - CTaskSwatOrderResponse = 73, - CTaskSwatGoToStagingArea = 74, - CTaskSwatFollowInLine = 75, - CTaskWitness = 76, - CTaskGangPatrol = 77, - CTaskArmy = 78, - CTaskShockingEventWatch = 80, - CTaskShockingEventGoto = 82, - CTaskShockingEventHurryAway = 83, - CTaskShockingEventReactToAircraft = 84, - CTaskShockingEventReact = 85, - CTaskShockingEventBackAway = 86, - CTaskShockingPoliceInvestigate = 87, - CTaskShockingEventStopAndStare = 88, - CTaskShockingNiceCarPicture = 89, - CTaskShockingEventThreatResponse = 90, - CTaskTakeOffHelmet = 92, - CTaskCarReactToVehicleCollision = 93, - CTaskCarReactToVehicleCollisionGetOut = 95, - CTaskDyingDead = 97, - CTaskWanderingScenario = 100, - CTaskWanderingInRadiusScenario = 101, - CTaskMoveBetweenPointsScenario = 103, - CTaskChatScenario = 104, - CTaskCowerScenario = 106, - CTaskDeadBodyScenario = 107, - CTaskSayAudio = 114, - CTaskWaitForSteppingOut = 116, - CTaskCoupleScenario = 117, - CTaskUseScenario = 118, - CTaskUseVehicleScenario = 119, - CTaskUnalerted = 120, - CTaskStealVehicle = 121, - CTaskReactToPursuit = 122, - CTaskHitWall = 125, - CTaskCower = 126, - CTaskCrouch = 127, - CTaskMelee = 128, - CTaskMoveMeleeMovement = 129, - CTaskMeleeActionResult = 130, - CTaskMeleeUpperbodyAnims = 131, - CTaskMoVEScripted = 133, - CTaskScriptedAnimation = 134, - CTaskSynchronizedScene = 135, - CTaskComplexEvasiveStep = 137, - CTaskWalkRoundCarWhileWandering = 138, - CTaskComplexStuckInAir = 140, - CTaskWalkRoundEntity = 141, - CTaskMoveWalkRoundVehicle = 142, - CTaskReactToGunAimedAt = 144, - CTaskDuckAndCover = 146, - CTaskAggressiveRubberneck = 147, - CTaskInVehicleBasic = 150, - CTaskCarDriveWander = 151, - CTaskLeaveAnyCar = 152, - CTaskComplexGetOffBoat = 153, - CTaskCarSetTempAction = 155, - CTaskBringVehicleToHalt = 156, - CTaskCarDrive = 157, - CTaskPlayerDrive = 159, - CTaskEnterVehicle = 160, - CTaskEnterVehicleAlign = 161, - CTaskOpenVehicleDoorFromOutside = 162, - CTaskEnterVehicleSeat = 163, - CTaskCloseVehicleDoorFromInside = 164, - CTaskInVehicleSeatShuffle = 165, - CTaskExitVehicleSeat = 167, - CTaskCloseVehicleDoorFromOutside = 168, - CTaskControlVehicle = 169, - CTaskMotionInAutomobile = 170, - CTaskMotionOnBicycle = 171, - CTaskMotionOnBicycleController = 172, - CTaskMotionInVehicle = 173, - CTaskMotionInTurret = 174, - CTaskReactToBeingJacked = 175, - CTaskReactToBeingAskedToLeaveVehicle = 176, - CTaskTryToGrabVehicleDoor = 177, - CTaskGetOnTrain = 178, - CTaskGetOffTrain = 179, - CTaskRideTrain = 180, - CTaskMountThrowProjectile = 190, - CTaskGoToCarDoorAndStandStill = 195, - CTaskMoveGoToVehicleDoor = 196, - CTaskSetPedInVehicle = 197, - CTaskSetPedOutOfVehicle = 198, - CTaskVehicleMountedWeapon = 199, - CTaskVehicleGun = 200, - CTaskVehicleProjectile = 201, - CTaskSmashCarWindow = 204, - CTaskMoveGoToPoint = 205, - CTaskMoveAchieveHeading = 206, - CTaskMoveFaceTarget = 207, - CTaskComplexGoToPointAndStandStillTimed = 208, - CTaskMoveGoToPointAndStandStill = 208, - CTaskMoveFollowPointRoute = 209, - CTaskMoveSeekEntity_CEntitySeekPosCalculatorStandard = 210, - CTaskMoveSeekEntity_CEntitySeekPosCalculatorLastNavMeshIntersection = 211, - CTaskMoveSeekEntity_CEntitySeekPosCalculatorLastNavMeshIntersection2 = 212, - CTaskMoveSeekEntity_CEntitySeekPosCalculatorXYOffsetFixed = 213, - CTaskMoveSeekEntity_CEntitySeekPosCalculatorXYOffsetFixed2 = 214, - CTaskExhaustedFlee = 215, - CTaskGrowlAndFlee = 216, - CTaskScenarioFlee = 217, - CTaskSmartFlee = 218, - CTaskFlyAway = 219, - CTaskWalkAway = 220, - CTaskWander = 221, - CTaskWanderInArea = 222, - CTaskFollowLeaderInFormation = 223, - CTaskGoToPointAnyMeans = 224, - CTaskTurnToFaceEntityOrCoord = 225, - CTaskFollowLeaderAnyMeans = 226, - CTaskFlyToPoint = 228, - CTaskFlyingWander = 229, - CTaskGoToPointAiming = 230, - CTaskGoToScenario = 231, - CTaskSeekEntityAiming = 233, - CTaskSlideToCoord = 234, - CTaskSwimmingWander = 235, - CTaskMoveTrackingEntity = 237, - CTaskMoveFollowNavMesh = 238, - CTaskMoveGoToPointOnRoute = 239, - CTaskEscapeBlast = 240, - CTaskMoveWander = 241, - CTaskMoveBeInFormation = 242, - CTaskMoveCrowdAroundLocation = 243, - CTaskMoveCrossRoadAtTrafficLights = 244, - CTaskMoveWaitForTraffic = 245, - CTaskMoveGoToPointStandStillAchieveHeading = 246, - CTaskMoveGetOntoMainNavMesh = 251, - CTaskMoveSlideToCoord = 252, - CTaskMoveGoToPointRelativeToEntityAndStandStill = 253, - CTaskHelicopterStrafe = 254, - CTaskGetOutOfWater = 256, - CTaskMoveFollowEntityOffset = 259, - CTaskFollowWaypointRecording = 261, - CTaskMotionPed = 264, - CTaskMotionPedLowLod = 265, - CTaskHumanLocomotion = 268, - CTaskMotionBasicLocomotionLowLod = 269, - CTaskMotionStrafing = 270, - CTaskMotionTennis = 271, - CTaskMotionAiming = 272, - CTaskBirdLocomotion = 273, - CTaskFlightlessBirdLocomotion = 274, - CTaskFishLocomotion = 278, - CTaskQuadLocomotion = 279, - CTaskMotionDiving = 280, - CTaskMotionSwimming = 281, - CTaskMotionParachuting = 282, - CTaskMotionDrunk = 283, - CTaskRepositionMove = 284, - CTaskMotionAimingTransition = 285, - CTaskThrowProjectile = 286, - CTaskCover = 287, - CTaskMotionInCover = 288, - CTaskAimAndThrowProjectile = 289, - CTaskGun = 290, - CTaskAimFromGround = 291, - CTaskAimGunVehicleDriveBy = 295, - CTaskAimGunScripted = 296, - CTaskReloadGun = 298, - CTaskWeaponBlocked = 299, - CTaskEnterCover = 300, - CTaskExitCover = 301, - CTaskAimGunFromCoverIntro = 302, - CTaskAimGunFromCoverOutro = 303, - CTaskAimGunBlindFire = 304, - CTaskCombatClosestTargetInArea = 307, - CTaskCombatAdditionalTask = 308, - CTaskInCover = 309, - CTaskAimSweep = 313, - CTaskSharkCircle = 319, - CTaskSharkAttack = 320, - CTaskAgitated = 321, - CTaskAgitatedAction = 322, - CTaskConfront = 323, - CTaskIntimidate = 324, - CTaskShove = 325, - CTaskShoved = 326, - CTaskCrouchToggle = 328, - CTaskRevive = 329, - CTaskParachute = 335, - CTaskParachuteObject = 336, - CTaskTakeOffPedVariation = 337, - CTaskCombatSeekCover = 340, - CTaskCombatFlank = 342, - CTaskCombat = 343, - CTaskCombatMounted = 344, - CTaskMoveCircle = 345, - CTaskMoveCombatMounted = 346, - CTaskSearch = 347, - CTaskSearchOnFoot = 348, - CTaskSearchInAutomobile = 349, - CTaskSearchInBoat = 350, - CTaskSearchInHeli = 351, - CTaskThreatResponse = 352, - CTaskInvestigate = 353, - CTaskStandGuardFSM = 354, - CTaskPatrol = 355, - CTaskShootAtTarget = 356, - CTaskSetAndGuardArea = 357, - CTaskStandGuard = 358, - CTaskSeparate = 359, - CTaskStayInCover = 360, - CTaskVehicleCombat = 361, - CTaskVehiclePersuit = 362, - CTaskVehicleChase = 363, - CTaskDraggingToSafety = 364, - CTaskDraggedToSafety = 365, - CTaskVariedAimPose = 366, - CTaskMoveWithinAttackWindow = 367, - CTaskMoveWithinDefensiveArea = 368, - CTaskShootOutTire = 369, - CTaskShellShocked = 370, - CTaskBoatChase = 371, - CTaskBoatCombat = 372, - CTaskBoatStrafe = 373, - CTaskHeliChase = 374, - CTaskHeliCombat = 375, - CTaskSubmarineCombat = 376, - CTaskSubmarineChase = 377, - CTaskPlaneChase = 378, - CTaskTargetUnreachable = 379, - CTaskTargetUnreachableInInterior = 380, - CTaskTargetUnreachableInExterior = 381, - CTaskStealthKill = 382, - CTaskWrithe = 383, - CTaskAdvance = 384, - CTaskCharge = 385, - CTaskMoveToTacticalPoint = 386, - CTaskToHurtTransit = 387, - CTaskAnimatedHitByExplosion = 388, - CTaskNMRelax = 389, - CTaskNMPose = 391, - CTaskNMBrace = 392, - CTaskNMBuoyancy = 393, - CTaskNMInjuredOnGround = 394, - CTaskNMShot = 395, - CTaskNMHighFall = 396, - CTaskNMBalance = 397, - CTaskNMElectrocute = 398, - CTaskNMPrototype = 399, - CTaskNMExplosion = 400, - CTaskNMOnFire = 401, - CTaskNMScriptControl = 402, - CTaskNMJumpRollFromRoadVehicle = 403, - CTaskNMFlinch = 404, - CTaskNMSit = 405, - CTaskNMFallDown = 406, - CTaskBlendFromNM = 407, - CTaskNMControl = 408, - CTaskNMDangle = 409, - CTaskNMGenericAttach = 412, - CTaskNMDraggingToSafety = 414, - CTaskNMThroughWindscreen = 415, - CTaskNMRiverRapids = 416, - CTaskNMSimple = 417, - CTaskRageRagdoll = 418, - CTaskJumpVault = 421, - CTaskJump = 422, - CTaskFall = 423, - CTaskReactAimWeapon = 425, - CTaskChat = 426, - CTaskMobilePhone = 427, - CTaskReactToDeadPed = 428, - CTaskSearchForUnknownThreat = 430, - CTaskBomb = 432, - CTaskDetonator = 433, - CTaskAnimatedAttach = 435, - CTaskCutScene = 441, - CTaskReactToExplosion = 442, - CTaskReactToImminentExplosion = 443, - CTaskDiveToGround = 444, - CTaskReactAndFlee = 445, - CTaskSidestep = 446, - CTaskCallPolice = 447, - CTaskReactInDirection = 448, - CTaskReactToBuddyShot = 449, - CTaskVehicleGoToAutomobileNew = 454, - CTaskVehicleGoToPlane = 455, - CTaskVehicleGoToHelicopter = 456, - CTaskVehicleGoToSubmarine = 457, - CTaskVehicleGoToBoat = 458, - CTaskVehicleGoToPointAutomobile = 459, - CTaskVehicleGoToPointWithAvoidanceAutomobile = 460, - CTaskVehiclePursue = 461, - CTaskVehicleRam = 462, - CTaskVehicleSpinOut = 463, - CTaskVehicleApproach = 464, - CTaskVehicleThreePointTurn = 465, - CTaskVehicleDeadDriver = 466, - CTaskVehicleCruiseNew = 467, - CTaskVehicleCruiseBoat = 468, - CTaskVehicleStop = 469, - CTaskVehiclePullOver = 470, - CTaskVehiclePassengerExit = 471, - CTaskVehicleFlee = 472, - CTaskVehicleFleeAirborne = 473, - CTaskVehicleFleeBoat = 474, - CTaskVehicleFollowRecording = 475, - CTaskVehicleFollow = 476, - CTaskVehicleBlock = 477, - CTaskVehicleBlockCruiseInFront = 478, - CTaskVehicleBlockBrakeInFront = 479, - CTaskVehicleBlockBackAndForth = 478, - CTaskVehicleCrash = 481, - CTaskVehicleLand = 482, - CTaskVehicleLandPlane = 483, - CTaskVehicleHover = 484, - CTaskVehicleAttack = 485, - CTaskVehicleAttackTank = 486, - CTaskVehicleCircle = 487, - CTaskVehiclePoliceBehaviour = 488, - CTaskVehiclePoliceBehaviourHelicopter = 489, - CTaskVehiclePoliceBehaviourBoat = 490, - CTaskVehicleEscort = 491, - CTaskVehicleHeliProtect = 492, - CTaskVehiclePlayerDriveAutomobile = 494, - CTaskVehiclePlayerDriveBike = 495, - CTaskVehiclePlayerDriveBoat = 496, - CTaskVehiclePlayerDriveSubmarine = 497, - CTaskVehiclePlayerDriveSubmarineCar = 498, - CTaskVehiclePlayerDriveAmphibiousAutomobile = 499, - CTaskVehiclePlayerDrivePlane = 500, - CTaskVehiclePlayerDriveHeli = 501, - CTaskVehiclePlayerDriveAutogyro = 502, - CTaskVehiclePlayerDriveDiggerArm = 503, - CTaskVehiclePlayerDriveTrain = 504, - CTaskVehiclePlaneChase = 505, - CTaskVehicleNoDriver = 506, - CTaskVehicleAnimation = 507, - CTaskVehicleConvertibleRoof = 508, - CTaskVehicleParkNew = 509, - CTaskVehicleFollowWaypointRecording = 510, - CTaskVehicleGoToNavmesh = 511, - CTaskVehicleReactToCopSiren = 512, - CTaskVehicleGotoLongRange = 513, - CTaskVehicleWait = 514, - CTaskVehicleReverse = 515, - CTaskVehicleBrake = 516, - CTaskVehicleHandBrake = 517, - CTaskVehicleTurn = 518, - CTaskVehicleGoForward = 519, - CTaskVehicleSwerve = 520, - CTaskVehicleFlyDirection = 521, - CTaskVehicleHeadonCollision = 522, - CTaskVehicleBoostUseSteeringAngle = 523, - CTaskVehicleShotTire = 524, - CTaskVehicleBurnout = 525, - CTaskVehicleRevEngine = 526, - CTaskVehicleSurfaceInSubmarine = 527, - CTaskVehiclePullAlongside = 528, - CTaskVehicleTransformToSubmarine = 529, - CTaskAnimatedFallback = 530 + CTaskHandsUp = 0, + CTaskClimbLadder = 1, + CTaskExitVehicle = 2, + CTaskCombatRoll = 3, + CTaskAimGunOnFoot = 4, + CTaskMovePlayer = 5, + CTaskPlayerOnFoot = 6, + CTaskWeapon = 8, + CTaskPlayerWeapon = 9, + CTaskPlayerIdles = 10, + CTaskAimGun = 12, + CTaskComplex = 12, + CTaskFSMClone = 12, + CTaskMotionBase = 12, + CTaskMove = 12, + CTaskMoveBase = 12, + CTaskNMBehaviour = 12, + CTaskNavBase = 12, + CTaskScenario = 12, + CTaskSearchBase = 12, + CTaskSearchInVehicleBase = 12, + CTaskShockingEvent = 12, + CTaskTrainBase = 12, + CTaskVehicleFSM = 12, + CTaskVehicleGoTo = 12, + CTaskVehicleMissionBase = 12, + CTaskVehicleTempAction = 12, + CTaskPause = 14, + CTaskDoNothing = 15, + CTaskGetUp = 16, + CTaskGetUpAndStandStill = 17, + CTaskFallOver = 18, + CTaskFallAndGetUp = 19, + CTaskCrawl = 20, + CTaskComplexOnFire = 25, + CTaskDamageElectric = 26, + CTaskTriggerLookAt = 28, + CTaskClearLookAt = 29, + CTaskSetCharDecisionMaker = 30, + CTaskSetPedDefensiveArea = 31, + CTaskUseSequence = 32, + CTaskMoveStandStill = 34, + CTaskComplexControlMovement = 35, + CTaskMoveSequence = 36, + CTaskAmbientClips = 38, + CTaskMoveInAir = 39, + CTaskNetworkClone = 40, + CTaskUseClimbOnRoute = 41, + CTaskUseDropDownOnRoute = 42, + CTaskUseLadderOnRoute = 43, + CTaskSetBlockingOfNonTemporaryEvents = 44, + CTaskForceMotionState = 45, + CTaskSlopeScramble = 46, + CTaskGoToAndClimbLadder = 47, + CTaskClimbLadderFully = 48, + CTaskRappel = 49, + CTaskVault = 50, + CTaskDropDown = 51, + CTaskAffectSecondaryBehaviour = 52, + CTaskAmbientLookAtEvent = 53, + CTaskOpenDoor = 54, + CTaskShovePed = 55, + CTaskSwapWeapon = 56, + CTaskGeneralSweep = 57, + CTaskPolice = 58, + CTaskPoliceOrderResponse = 59, + CTaskPursueCriminal = 60, + CTaskArrestPed = 62, + CTaskArrestPed2 = 63, + CTaskBusted = 64, + CTaskFirePatrol = 65, + CTaskHeliOrderResponse = 66, + CTaskHeliPassengerRappel = 67, + CTaskAmbulancePatrol = 68, + CTaskPoliceWantedResponse = 69, + CTaskSwat = 70, + CTaskSwatWantedResponse = 72, + CTaskSwatOrderResponse = 73, + CTaskSwatGoToStagingArea = 74, + CTaskSwatFollowInLine = 75, + CTaskWitness = 76, + CTaskGangPatrol = 77, + CTaskArmy = 78, + CTaskShockingEventWatch = 80, + CTaskShockingEventGoto = 82, + CTaskShockingEventHurryAway = 83, + CTaskShockingEventReactToAircraft = 84, + CTaskShockingEventReact = 85, + CTaskShockingEventBackAway = 86, + CTaskShockingPoliceInvestigate = 87, + CTaskShockingEventStopAndStare = 88, + CTaskShockingNiceCarPicture = 89, + CTaskShockingEventThreatResponse = 90, + CTaskTakeOffHelmet = 92, + CTaskCarReactToVehicleCollision = 93, + CTaskCarReactToVehicleCollisionGetOut = 95, + CTaskDyingDead = 97, + CTaskWanderingScenario = 100, + CTaskWanderingInRadiusScenario = 101, + CTaskMoveBetweenPointsScenario = 103, + CTaskChatScenario = 104, + CTaskCowerScenario = 106, + CTaskDeadBodyScenario = 107, + CTaskSayAudio = 114, + CTaskWaitForSteppingOut = 116, + CTaskCoupleScenario = 117, + CTaskUseScenario = 118, + CTaskUseVehicleScenario = 119, + CTaskUnalerted = 120, + CTaskStealVehicle = 121, + CTaskReactToPursuit = 122, + CTaskHitWall = 125, + CTaskCower = 126, + CTaskCrouch = 127, + CTaskMelee = 128, + CTaskMoveMeleeMovement = 129, + CTaskMeleeActionResult = 130, + CTaskMeleeUpperbodyAnims = 131, + CTaskMoVEScripted = 133, + CTaskScriptedAnimation = 134, + CTaskSynchronizedScene = 135, + CTaskComplexEvasiveStep = 137, + CTaskWalkRoundCarWhileWandering = 138, + CTaskComplexStuckInAir = 140, + CTaskWalkRoundEntity = 141, + CTaskMoveWalkRoundVehicle = 142, + CTaskReactToGunAimedAt = 144, + CTaskDuckAndCover = 146, + CTaskAggressiveRubberneck = 147, + CTaskInVehicleBasic = 150, + CTaskCarDriveWander = 151, + CTaskLeaveAnyCar = 152, + CTaskComplexGetOffBoat = 153, + CTaskCarSetTempAction = 155, + CTaskBringVehicleToHalt = 156, + CTaskCarDrive = 157, + CTaskPlayerDrive = 159, + CTaskEnterVehicle = 160, + CTaskEnterVehicleAlign = 161, + CTaskOpenVehicleDoorFromOutside = 162, + CTaskEnterVehicleSeat = 163, + CTaskCloseVehicleDoorFromInside = 164, + CTaskInVehicleSeatShuffle = 165, + CTaskExitVehicleSeat = 167, + CTaskCloseVehicleDoorFromOutside = 168, + CTaskControlVehicle = 169, + CTaskMotionInAutomobile = 170, + CTaskMotionOnBicycle = 171, + CTaskMotionOnBicycleController = 172, + CTaskMotionInVehicle = 173, + CTaskMotionInTurret = 174, + CTaskReactToBeingJacked = 175, + CTaskReactToBeingAskedToLeaveVehicle = 176, + CTaskTryToGrabVehicleDoor = 177, + CTaskGetOnTrain = 178, + CTaskGetOffTrain = 179, + CTaskRideTrain = 180, + CTaskMountThrowProjectile = 190, + CTaskGoToCarDoorAndStandStill = 195, + CTaskMoveGoToVehicleDoor = 196, + CTaskSetPedInVehicle = 197, + CTaskSetPedOutOfVehicle = 198, + CTaskVehicleMountedWeapon = 199, + CTaskVehicleGun = 200, + CTaskVehicleProjectile = 201, + CTaskSmashCarWindow = 204, + CTaskMoveGoToPoint = 205, + CTaskMoveAchieveHeading = 206, + CTaskMoveFaceTarget = 207, + CTaskComplexGoToPointAndStandStillTimed = 208, + CTaskMoveGoToPointAndStandStill = 208, + CTaskMoveFollowPointRoute = 209, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorStandard = 210, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorLastNavMeshIntersection = 211, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorLastNavMeshIntersection2 = 212, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorXYOffsetFixed = 213, + CTaskMoveSeekEntity_CEntitySeekPosCalculatorXYOffsetFixed2 = 214, + CTaskExhaustedFlee = 215, + CTaskGrowlAndFlee = 216, + CTaskScenarioFlee = 217, + CTaskSmartFlee = 218, + CTaskFlyAway = 219, + CTaskWalkAway = 220, + CTaskWander = 221, + CTaskWanderInArea = 222, + CTaskFollowLeaderInFormation = 223, + CTaskGoToPointAnyMeans = 224, + CTaskTurnToFaceEntityOrCoord = 225, + CTaskFollowLeaderAnyMeans = 226, + CTaskFlyToPoint = 228, + CTaskFlyingWander = 229, + CTaskGoToPointAiming = 230, + CTaskGoToScenario = 231, + CTaskSeekEntityAiming = 233, + CTaskSlideToCoord = 234, + CTaskSwimmingWander = 235, + CTaskMoveTrackingEntity = 237, + CTaskMoveFollowNavMesh = 238, + CTaskMoveGoToPointOnRoute = 239, + CTaskEscapeBlast = 240, + CTaskMoveWander = 241, + CTaskMoveBeInFormation = 242, + CTaskMoveCrowdAroundLocation = 243, + CTaskMoveCrossRoadAtTrafficLights = 244, + CTaskMoveWaitForTraffic = 245, + CTaskMoveGoToPointStandStillAchieveHeading = 246, + CTaskMoveGetOntoMainNavMesh = 251, + CTaskMoveSlideToCoord = 252, + CTaskMoveGoToPointRelativeToEntityAndStandStill = 253, + CTaskHelicopterStrafe = 254, + CTaskGetOutOfWater = 256, + CTaskMoveFollowEntityOffset = 259, + CTaskFollowWaypointRecording = 261, + CTaskMotionPed = 264, + CTaskMotionPedLowLod = 265, + CTaskHumanLocomotion = 268, + CTaskMotionBasicLocomotionLowLod = 269, + CTaskMotionStrafing = 270, + CTaskMotionTennis = 271, + CTaskMotionAiming = 272, + CTaskBirdLocomotion = 273, + CTaskFlightlessBirdLocomotion = 274, + CTaskFishLocomotion = 278, + CTaskQuadLocomotion = 279, + CTaskMotionDiving = 280, + CTaskMotionSwimming = 281, + CTaskMotionParachuting = 282, + CTaskMotionDrunk = 283, + CTaskRepositionMove = 284, + CTaskMotionAimingTransition = 285, + CTaskThrowProjectile = 286, + CTaskCover = 287, + CTaskMotionInCover = 288, + CTaskAimAndThrowProjectile = 289, + CTaskGun = 290, + CTaskAimFromGround = 291, + CTaskAimGunVehicleDriveBy = 295, + CTaskAimGunScripted = 296, + CTaskReloadGun = 298, + CTaskWeaponBlocked = 299, + CTaskEnterCover = 300, + CTaskExitCover = 301, + CTaskAimGunFromCoverIntro = 302, + CTaskAimGunFromCoverOutro = 303, + CTaskAimGunBlindFire = 304, + CTaskCombatClosestTargetInArea = 307, + CTaskCombatAdditionalTask = 308, + CTaskInCover = 309, + CTaskAimSweep = 313, + CTaskSharkCircle = 319, + CTaskSharkAttack = 320, + CTaskAgitated = 321, + CTaskAgitatedAction = 322, + CTaskConfront = 323, + CTaskIntimidate = 324, + CTaskShove = 325, + CTaskShoved = 326, + CTaskCrouchToggle = 328, + CTaskRevive = 329, + CTaskParachute = 335, + CTaskParachuteObject = 336, + CTaskTakeOffPedVariation = 337, + CTaskCombatSeekCover = 340, + CTaskCombatFlank = 342, + CTaskCombat = 343, + CTaskCombatMounted = 344, + CTaskMoveCircle = 345, + CTaskMoveCombatMounted = 346, + CTaskSearch = 347, + CTaskSearchOnFoot = 348, + CTaskSearchInAutomobile = 349, + CTaskSearchInBoat = 350, + CTaskSearchInHeli = 351, + CTaskThreatResponse = 352, + CTaskInvestigate = 353, + CTaskStandGuardFSM = 354, + CTaskPatrol = 355, + CTaskShootAtTarget = 356, + CTaskSetAndGuardArea = 357, + CTaskStandGuard = 358, + CTaskSeparate = 359, + CTaskStayInCover = 360, + CTaskVehicleCombat = 361, + CTaskVehiclePersuit = 362, + CTaskVehicleChase = 363, + CTaskDraggingToSafety = 364, + CTaskDraggedToSafety = 365, + CTaskVariedAimPose = 366, + CTaskMoveWithinAttackWindow = 367, + CTaskMoveWithinDefensiveArea = 368, + CTaskShootOutTire = 369, + CTaskShellShocked = 370, + CTaskBoatChase = 371, + CTaskBoatCombat = 372, + CTaskBoatStrafe = 373, + CTaskHeliChase = 374, + CTaskHeliCombat = 375, + CTaskSubmarineCombat = 376, + CTaskSubmarineChase = 377, + CTaskPlaneChase = 378, + CTaskTargetUnreachable = 379, + CTaskTargetUnreachableInInterior = 380, + CTaskTargetUnreachableInExterior = 381, + CTaskStealthKill = 382, + CTaskWrithe = 383, + CTaskAdvance = 384, + CTaskCharge = 385, + CTaskMoveToTacticalPoint = 386, + CTaskToHurtTransit = 387, + CTaskAnimatedHitByExplosion = 388, + CTaskNMRelax = 389, + CTaskNMPose = 391, + CTaskNMBrace = 392, + CTaskNMBuoyancy = 393, + CTaskNMInjuredOnGround = 394, + CTaskNMShot = 395, + CTaskNMHighFall = 396, + CTaskNMBalance = 397, + CTaskNMElectrocute = 398, + CTaskNMPrototype = 399, + CTaskNMExplosion = 400, + CTaskNMOnFire = 401, + CTaskNMScriptControl = 402, + CTaskNMJumpRollFromRoadVehicle = 403, + CTaskNMFlinch = 404, + CTaskNMSit = 405, + CTaskNMFallDown = 406, + CTaskBlendFromNM = 407, + CTaskNMControl = 408, + CTaskNMDangle = 409, + CTaskNMGenericAttach = 412, + CTaskNMDraggingToSafety = 414, + CTaskNMThroughWindscreen = 415, + CTaskNMRiverRapids = 416, + CTaskNMSimple = 417, + CTaskRageRagdoll = 418, + CTaskJumpVault = 421, + CTaskJump = 422, + CTaskFall = 423, + CTaskReactAimWeapon = 425, + CTaskChat = 426, + CTaskMobilePhone = 427, + CTaskReactToDeadPed = 428, + CTaskSearchForUnknownThreat = 430, + CTaskBomb = 432, + CTaskDetonator = 433, + CTaskAnimatedAttach = 435, + CTaskCutScene = 441, + CTaskReactToExplosion = 442, + CTaskReactToImminentExplosion = 443, + CTaskDiveToGround = 444, + CTaskReactAndFlee = 445, + CTaskSidestep = 446, + CTaskCallPolice = 447, + CTaskReactInDirection = 448, + CTaskReactToBuddyShot = 449, + CTaskVehicleGoToAutomobileNew = 454, + CTaskVehicleGoToPlane = 455, + CTaskVehicleGoToHelicopter = 456, + CTaskVehicleGoToSubmarine = 457, + CTaskVehicleGoToBoat = 458, + CTaskVehicleGoToPointAutomobile = 459, + CTaskVehicleGoToPointWithAvoidanceAutomobile = 460, + CTaskVehiclePursue = 461, + CTaskVehicleRam = 462, + CTaskVehicleSpinOut = 463, + CTaskVehicleApproach = 464, + CTaskVehicleThreePointTurn = 465, + CTaskVehicleDeadDriver = 466, + CTaskVehicleCruiseNew = 467, + CTaskVehicleCruiseBoat = 468, + CTaskVehicleStop = 469, + CTaskVehiclePullOver = 470, + CTaskVehiclePassengerExit = 471, + CTaskVehicleFlee = 472, + CTaskVehicleFleeAirborne = 473, + CTaskVehicleFleeBoat = 474, + CTaskVehicleFollowRecording = 475, + CTaskVehicleFollow = 476, + CTaskVehicleBlock = 477, + CTaskVehicleBlockCruiseInFront = 478, + CTaskVehicleBlockBrakeInFront = 479, + CTaskVehicleBlockBackAndForth = 478, + CTaskVehicleCrash = 481, + CTaskVehicleLand = 482, + CTaskVehicleLandPlane = 483, + CTaskVehicleHover = 484, + CTaskVehicleAttack = 485, + CTaskVehicleAttackTank = 486, + CTaskVehicleCircle = 487, + CTaskVehiclePoliceBehaviour = 488, + CTaskVehiclePoliceBehaviourHelicopter = 489, + CTaskVehiclePoliceBehaviourBoat = 490, + CTaskVehicleEscort = 491, + CTaskVehicleHeliProtect = 492, + CTaskVehiclePlayerDriveAutomobile = 494, + CTaskVehiclePlayerDriveBike = 495, + CTaskVehiclePlayerDriveBoat = 496, + CTaskVehiclePlayerDriveSubmarine = 497, + CTaskVehiclePlayerDriveSubmarineCar = 498, + CTaskVehiclePlayerDriveAmphibiousAutomobile = 499, + CTaskVehiclePlayerDrivePlane = 500, + CTaskVehiclePlayerDriveHeli = 501, + CTaskVehiclePlayerDriveAutogyro = 502, + CTaskVehiclePlayerDriveDiggerArm = 503, + CTaskVehiclePlayerDriveTrain = 504, + CTaskVehiclePlaneChase = 505, + CTaskVehicleNoDriver = 506, + CTaskVehicleAnimation = 507, + CTaskVehicleConvertibleRoof = 508, + CTaskVehicleParkNew = 509, + CTaskVehicleFollowWaypointRecording = 510, + CTaskVehicleGoToNavmesh = 511, + CTaskVehicleReactToCopSiren = 512, + CTaskVehicleGotoLongRange = 513, + CTaskVehicleWait = 514, + CTaskVehicleReverse = 515, + CTaskVehicleBrake = 516, + CTaskVehicleHandBrake = 517, + CTaskVehicleTurn = 518, + CTaskVehicleGoForward = 519, + CTaskVehicleSwerve = 520, + CTaskVehicleFlyDirection = 521, + CTaskVehicleHeadonCollision = 522, + CTaskVehicleBoostUseSteeringAngle = 523, + CTaskVehicleShotTire = 524, + CTaskVehicleBurnout = 525, + CTaskVehicleRevEngine = 526, + CTaskVehicleSurfaceInSubmarine = 527, + CTaskVehiclePullAlongside = 528, + CTaskVehicleTransformToSubmarine = 529, + CTaskAnimatedFallback = 530 }; \ No newline at end of file diff --git a/RageCoop.Client/Util/Util.cs b/RageCoop.Client/Util/Util.cs index 08a1e87..2952024 100644 --- a/RageCoop.Client/Util/Util.cs +++ b/RageCoop.Client/Util/Util.cs @@ -1,17 +1,16 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Windows.Forms; +using GTA; using GTA.Math; -using System.Drawing; -using GTA; -using RageCoop.Core; using GTA.Native; +using RageCoop.Core; +using System; +using System.Drawing; using System.IO; -using System.Xml.Serialization; +using System.Linq; using System.Runtime.InteropServices; using System.Security.Cryptography; +using System.Text; +using System.Windows.Forms; +using System.Xml.Serialization; namespace RageCoop.Client { @@ -54,7 +53,7 @@ namespace RageCoop.Client public static unsafe void NativeMemory() { IntPtr address; - + address = Game.FindPattern("\x74\x0A\xF3\x0F\x11\xB3\x1C\x09\x00\x00\xEB\x25", "xxxxxx????xx"); if (address != IntPtr.Zero) { @@ -122,7 +121,7 @@ namespace RageCoop.Client #endregion - public static string SettingsPath= "Scripts\\RageCoop\\Data\\RageCoop.Client.Settings.xml"; + public static string SettingsPath = "Scripts\\RageCoop\\Data\\RageCoop.Client.Settings.xml"; public static Settings ReadSettings() { XmlSerializer ser = new XmlSerializer(typeof(Settings)); @@ -157,7 +156,7 @@ namespace RageCoop.Client { try { - string path = SettingsPath ; + string path = SettingsPath; Directory.CreateDirectory(Directory.GetParent(path).FullName); using (FileStream stream = new FileStream(path, File.Exists(path) ? FileMode.Truncate : FileMode.Create, FileAccess.ReadWrite)) @@ -198,7 +197,7 @@ namespace RageCoop.Client Function.Call(Hash.STOP_ENTITY_FIRE, e.Handle); } } - public static void SetFrozen(this Entity e,bool toggle) + public static void SetFrozen(this Entity e, bool toggle) { Function.Call(Hash.FREEZE_ENTITY_POSITION, e, toggle); } @@ -219,7 +218,7 @@ namespace RageCoop.Client return v; } - public static void ApplyForce(this Entity e,int boneIndex, Vector3 direction, Vector3 rotation = default(Vector3), ForceType forceType = ForceType.MaxForceRot2) + public static void ApplyForce(this Entity e, int boneIndex, Vector3 direction, Vector3 rotation = default(Vector3), ForceType forceType = ForceType.MaxForceRot2) { Function.Call(Hash.APPLY_FORCE_TO_ENTITY, e.Handle, forceType, direction.X, direction.Y, direction.Z, rotation.X, rotation.Y, rotation.Z, boneIndex, false, true, true, false, true); } @@ -242,12 +241,12 @@ namespace RageCoop.Client const UInt32 WM_KEYDOWN = 0x0100; public static void Reload() { - string reloadKey="None"; + string reloadKey = "None"; var lines = File.ReadAllLines("ScriptHookVDotNet.ini"); foreach (var l in lines) { var ss = l.Split('='); - if(ss.Length > 0 && ss[0]=="ReloadKey") + if (ss.Length > 0 && ss[0]=="ReloadKey") { reloadKey = ss[1]; } @@ -265,7 +264,7 @@ namespace RageCoop.Client } } lineList.Add("ReloadKey=Insert"); - File.WriteAllLines("ScriptHookVDotNet.ini",lineList.ToArray()); + File.WriteAllLines("ScriptHookVDotNet.ini", lineList.ToArray()); } Keys key = (Keys)Enum.Parse(typeof(Keys), reloadKey, true); @@ -278,14 +277,14 @@ namespace RageCoop.Client if (File.Exists(path)) { File.Delete(path); } if (File.Exists(Main.Logger.LogPath)) { File.Move(Main.Logger.LogPath, path); } } - catch(Exception ex) + catch (Exception ex) { GTA.UI.Notification.Show(ex.Message); } PostMessage(System.Diagnostics.Process.GetCurrentProcess().MainWindowHandle, WM_KEYDOWN, (int)key, 0); } - + [DllImport("user32.dll")] static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam); diff --git a/RageCoop.Client/Util/VehicleExtensions.cs b/RageCoop.Client/Util/VehicleExtensions.cs index 2791990..e55701d 100644 --- a/RageCoop.Client/Util/VehicleExtensions.cs +++ b/RageCoop.Client/Util/VehicleExtensions.cs @@ -1,12 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; +using GTA; using GTA.Native; using RageCoop.Core; -using GTA.Math; +using System; +using System.Collections.Generic; namespace RageCoop.Client { @@ -143,7 +139,7 @@ namespace RageCoop.Client RightHeadLightBroken = (byte)(veh.IsRightHeadLightBroken ? 1 : 0) }; } - + public static void SetDamageModel(this Vehicle veh, VehicleDamageModel model, bool leavedoors = true) { for (int i = 0; i < 8; i++) @@ -272,7 +268,7 @@ namespace RageCoop.Client { Function.Call(Hash.SET_VEHICLE_FLIGHT_NOZZLE_POSITION, plane, ratio); } - + #endregion } } diff --git a/RageCoop.Client/Util/WeaponUtil.cs b/RageCoop.Client/Util/WeaponUtil.cs index 64545a4..a7d043b 100644 --- a/RageCoop.Client/Util/WeaponUtil.cs +++ b/RageCoop.Client/Util/WeaponUtil.cs @@ -1,17 +1,13 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using GTA; -using GTA.Native; +using GTA; using GTA.Math; +using GTA.Native; +using System.Collections.Generic; namespace RageCoop.Client { internal class MuzzleInfo { - public MuzzleInfo(Vector3 pos,Vector3 forward) + public MuzzleInfo(Vector3 pos, Vector3 forward) { Position = pos; ForawardVector=forward; @@ -49,7 +45,7 @@ namespace RageCoop.Client } return p.Bones[Bone.SkelRightHand].Position; } - static long BulletsShot=0; + static long BulletsShot = 0; public static float GetWeaponDamage(this Ped P, uint hash) { @@ -199,7 +195,7 @@ namespace RageCoop.Client // RHINO case 782665360: - return new MuzzleInfo(v.Bones[35].Position,v.Bones[35].ForwardVector); + return new MuzzleInfo(v.Bones[35].Position, v.Bones[35].ForwardVector); default: return null; @@ -212,7 +208,7 @@ namespace RageCoop.Client var type = Function.Call(Hash.GET_WEAPON_DAMAGE_TYPE, vp); if (vp!=VehicleWeaponHash.Invalid) { - if(type==3) + if (type==3) { return false; } @@ -231,7 +227,7 @@ namespace RageCoop.Client (uint)WeaponHash.Railgun, 1638077257 }; - + public static readonly Dictionary MuzzleBoneIndexes = new Dictionary { {WeaponHash.HeavySniper,6}, @@ -300,7 +296,7 @@ namespace RageCoop.Client {WeaponHash.PumpShotgunMk2,7}, }; - + public static readonly HashSet ProjectileWeapons = new HashSet { WeaponHash.HomingLauncher, diff --git a/RageCoop.Client/WorldThread.cs b/RageCoop.Client/WorldThread.cs index b244937..b2f734c 100644 --- a/RageCoop.Client/WorldThread.cs +++ b/RageCoop.Client/WorldThread.cs @@ -1,8 +1,6 @@ -using System; -using System.Linq; -using RageCoop.Core; -using GTA; +using GTA; using GTA.Native; +using System; namespace RageCoop.Client { @@ -37,7 +35,7 @@ namespace RageCoop.Client if (!Networking.IsOnServer) { - return ; + return; } Game.DisableControlThisFrame(Control.FrontendPause); if (Main.Settings.DisableAlternatePause) @@ -120,9 +118,9 @@ namespace RageCoop.Client ped.Kill(); ped.Delete(); } - + } - + foreach (Vehicle veh in World.GetAllVehicles()) { SyncedVehicle v = veh.GetSyncEntity(); @@ -131,7 +129,7 @@ namespace RageCoop.Client // Don't delete player's vehicle continue; } - if((v== null) || (v.IsLocal&&veh.PopulationType!=EntityPopulationType.Mission)) + if ((v== null) || (v.IsLocal&&veh.PopulationType!=EntityPopulationType.Mission)) { Main.Logger.Debug($"Removing Vehicle {veh.Handle}. Reason:ClearTraffic");