diff --git a/DamageTrackerExample.sln b/DamageTrackerExample.sln index e8681c0..821ebc2 100644 --- a/DamageTrackerExample.sln +++ b/DamageTrackerExample.sln @@ -10,12 +10,13 @@ Global Release|Any CPU = Release|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {94C2148E-3005-4946-9C57-2CC4D8BC250B}.Debug|Any CPU.ActiveCfg = Release|Any CPU {94C2148E-3005-4946-9C57-2CC4D8BC250B}.Release|Any CPU.ActiveCfg = Release|Any CPU {94C2148E-3005-4946-9C57-2CC4D8BC250B}.Release|Any CPU.Build.0 = Release|Any CPU + {94C2148E-3005-4946-9C57-2CC4D8BC250B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {94C2148E-3005-4946-9C57-2CC4D8BC250B}.Debug|Any CPU.Build.0 = Debug|Any CPU {235E792C-67B2-4C94-A8D3-58168B828159}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {235E792C-67B2-4C94-A8D3-58168B828159}.Debug|Any CPU.Build.0 = Debug|Any CPU {235E792C-67B2-4C94-A8D3-58168B828159}.Release|Any CPU.ActiveCfg = Release|Any CPU {235E792C-67B2-4C94-A8D3-58168B828159}.Release|Any CPU.Build.0 = Release|Any CPU + {235E792C-67B2-4C94-A8D3-58168B828159}.Debug|Any CPU.Build.0 = Debug|Any CPU EndGlobalSection EndGlobal diff --git a/DamageTrackerExample/DamageTrackerExample.csproj b/DamageTrackerExample/DamageTrackerExample.csproj index bef4ee8..36e0fc8 100644 --- a/DamageTrackerExample/DamageTrackerExample.csproj +++ b/DamageTrackerExample/DamageTrackerExample.csproj @@ -34,7 +34,7 @@ - ..\..\DamageTrackerPlugin\DamageTrackerUtility\DamageTrackingFramework\bin\Release\DamageTrackerLib.dll + ..\..\..\DamageTrackerPlugin\DamageTrackerUtility\DamageTrackingFramework\bin\Release\DamageTrackerLib.dll diff --git a/DamageTrackerExample/Entry.cs b/DamageTrackerExample/Entry.cs index 0583690..07a14dd 100644 --- a/DamageTrackerExample/Entry.cs +++ b/DamageTrackerExample/Entry.cs @@ -21,8 +21,9 @@ public static void Main() { Game.DisplayNotification("DamageTrackerExample by Variapolis ~g~Successfully Loaded"); DamageTrackerService.Start(); - DamageTrackerService.OnPedTookDamage += HandleDamage; // C# Event from DamageTrackerService - DamageTrackerService.OnPlayerTookDamage += HandleDamage; // C# Event from DamageTrackerService + DamageTrackerService.OnPedTookDamage += HandlePedDamage; // C# Event from DamageTrackerService + DamageTrackerService.OnPlayerTookDamage += HandlePedDamage; // C# Event from DamageTrackerService + DamageTrackerService.OnVehicleTookDamage += HandleVehDamage; // C# Event from DamageTrackerService GameFiber.Hibernate(); } @@ -34,11 +35,18 @@ public static void OnUnload(bool Exit) } // This uses a delegate function from DamageTrackerLib - public delegate void PedTookDamageDelegate(Ped victimPed, Ped attackerPed, PedDamageInfo damageInfo) - private static void HandleDamage(Ped victim, Ped attacker, PedDamageInfo damageInfo) => + private static void HandlePedDamage(Ped victim, Ped attacker, PedDamageInfo damageInfo) => Game.DisplayHelp($"~w~Ped: {victim.Model.Name} (~r~{damageInfo.Damage} ~b~{damageInfo.ArmourDamage} ~w~Dmg ({(victim.IsAlive ? "~g~Alive" : "~r~Dead")}~w~) " + $"\n~w~Health: ~g~{victim.Health}/{victim.MaxHealth} Armor: ~b~{victim.Armor})" + $"\n~w~Attacker: ~r~{attacker?.Model.Name ?? "None"}" + $"\n~w~Weapon: ~y~{damageInfo.WeaponInfo.Hash.ToString()} {damageInfo.WeaponInfo.Type.ToString()} {damageInfo.WeaponInfo.Group.ToString()}" + $"\n~w~Bone: ~r~{damageInfo.BoneInfo.BoneId.ToString()} {damageInfo.BoneInfo.Limb.ToString()} {damageInfo.BoneInfo.BodyRegion.ToString()}"); + + private static void HandleVehDamage(Vehicle vehicle, Ped attacker, VehDamageInfo damageInfo) => + Game.DisplayHelp($"~w~Vehicle: {vehicle.Model.Name} (~r~{damageInfo.Damage} ~w~Dmg ({(vehicle.IsAlive ? "~g~Alive" : "~r~Dead")}~w~) " + + $"\n~w~Health: ~g~{vehicle.Health}/{vehicle.MaxHealth})" + + $"\n~w~Attacker: ~r~{attacker?.Model.Name ?? "None"}" + + $"\n~w~Weapon: ~y~{damageInfo.WeaponInfo.Hash.ToString()} {damageInfo.WeaponInfo.Type.ToString()} {damageInfo.WeaponInfo.Group.ToString()}" + + $"\n~w~Coll Loc: ~r~({damageInfo.LastCollisionPosition.X}, {damageInfo.LastCollisionPosition.Y}, {damageInfo.LastCollisionPosition.Z})"); } } \ No newline at end of file diff --git a/DamageTrackerLSPDFRExample/DamageTrackerLSPDFRExample.csproj b/DamageTrackerLSPDFRExample/DamageTrackerLSPDFRExample.csproj index 7270f17..7be5c1f 100644 --- a/DamageTrackerLSPDFRExample/DamageTrackerLSPDFRExample.csproj +++ b/DamageTrackerLSPDFRExample/DamageTrackerLSPDFRExample.csproj @@ -33,10 +33,10 @@ - ..\..\DamageTrackerPlugin\DamageTrackerUtility\DamageTrackingFramework\bin\Release\DamageTrackerLib.dll + ..\..\..\DamageTrackerPlugin\DamageTrackerUtility\DamageTrackingFramework\bin\Release\DamageTrackerLib.dll - ..\..\Dependencies\LSPD First Response.dll + ..\packages\LSPD First Response.dll ..\packages\RagePluginHook.1.98.0\lib\net472\RagePluginHook.dll diff --git a/DamageTrackerLSPDFRExample/Main.cs b/DamageTrackerLSPDFRExample/Main.cs index b652b91..6f966c6 100644 --- a/DamageTrackerLSPDFRExample/Main.cs +++ b/DamageTrackerLSPDFRExample/Main.cs @@ -18,24 +18,33 @@ private void HandleDutyChanged(bool onduty) if (onduty) { DamageTrackerService.Start(); - DamageTrackerService.OnPedTookDamage += HandleDamage; - DamageTrackerService.OnPlayerTookDamage += HandleDamage; + DamageTrackerService.OnPedTookDamage += HandlePedDamage; + DamageTrackerService.OnPlayerTookDamage += HandlePedDamage; + DamageTrackerService.OnVehicleTookDamage += HandleVehDamage; } else { DamageTrackerService.Stop(); - DamageTrackerService.OnPedTookDamage -= HandleDamage; - DamageTrackerService.OnPlayerTookDamage -= HandleDamage; + DamageTrackerService.OnPedTookDamage -= HandlePedDamage; + DamageTrackerService.OnPlayerTookDamage -= HandlePedDamage; + DamageTrackerService.OnVehicleTookDamage -= HandleVehDamage; } } - private static void HandleDamage(Ped victim, Ped attacker, PedDamageInfo damageInfo) => + private static void HandlePedDamage(Ped victim, Ped attacker, PedDamageInfo damageInfo) => Game.DisplayHelp($"~w~Ped: {victim.Model.Name} (~r~{damageInfo.Damage} ~b~{damageInfo.ArmourDamage} ~w~Dmg ({(victim.IsAlive ? "~g~Alive" : "~r~Dead")}~w~) " + $"\n~w~Health: ~g~{victim.Health}/{victim.MaxHealth} Armor: ~b~{victim.Armor})" + $"\n~w~Attacker: ~r~{attacker?.Model.Name ?? "None"}" + $"\n~w~Weapon: ~y~{damageInfo.WeaponInfo.Hash.ToString()} {damageInfo.WeaponInfo.Type.ToString()} {damageInfo.WeaponInfo.Group.ToString()}" + $"\n~w~Bone: ~r~{damageInfo.BoneInfo.BoneId.ToString()} {damageInfo.BoneInfo.Limb.ToString()} {damageInfo.BoneInfo.BodyRegion.ToString()}"); + private static void HandleVehDamage(Vehicle vehicle, Ped attacker, VehDamageInfo damageInfo) => + Game.DisplayHelp($"~w~Vehicle: {vehicle.Model.Name} (~r~{damageInfo.Damage} ~w~Dmg ({(vehicle.IsAlive ? "~g~Alive" : "~r~Dead")}~w~) " + + $"\n~w~Health: ~g~{vehicle.Health}/{vehicle.MaxHealth})" + + $"\n~w~Attacker: ~r~{attacker?.Model.Name ?? "None"}" + + $"\n~w~Weapon: ~y~{damageInfo.WeaponInfo.Hash.ToString()} {damageInfo.WeaponInfo.Type.ToString()} {damageInfo.WeaponInfo.Group.ToString()}" + + $"\n~w~Coll Loc: ~r~({damageInfo.LastCollisionPosition.X}, {damageInfo.LastCollisionPosition.Y}, {damageInfo.LastCollisionPosition.Z})"); + public override void Finally() => Game.DisplayNotification("DTF LSPDFR Example Unloaded."); } } \ No newline at end of file