Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Blood options in player options #414

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions SharedClasses/PermissionsManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,8 @@ public enum Permission
PONoRagdoll,
PONeverWanted,
POSetWanted,
POClearBlood,
POSetBlood,
POIgnored,
POStayInVehicle,
POMaxHealth,
Expand Down
35 changes: 35 additions & 0 deletions vMenu/menus/PlayerOptions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using System.Linq;

using CitizenFX.Core;
using CitizenFX.Core.Native;

using MenuAPI;

Expand Down Expand Up @@ -31,6 +32,9 @@ public class PlayerOptions
public bool PlayerIsIgnored { get; private set; } = UserDefaults.EveryoneIgnorePlayer;
public bool PlayerStayInVehicle { get; private set; } = UserDefaults.PlayerStayInVehicle;
public bool PlayerFrozen { get; private set; } = false;

public int PlayerBlood { get; private set; } = 0;

private readonly Menu CustomDrivingStyleMenu = new("Driving Style", "Custom Driving Style");

/// <summary>
Expand Down Expand Up @@ -62,6 +66,11 @@ private void CreateMenu()
var setWantedLevel = new MenuListItem("Set Wanted Level", wantedLevelList, GetPlayerWantedLevel(Game.Player.Handle), "Set your wanted level by selecting a value, and pressing enter.");
var setArmorItem = new MenuListItem("Set Armor Type", new List<string> { "No Armor", GetLabelText("WT_BA_0"), GetLabelText("WT_BA_1"), GetLabelText("WT_BA_2"), GetLabelText("WT_BA_3"), GetLabelText("WT_BA_4"), }, 0, "Set the armor level/type for your player.");

// Blood level options
var clearBloodBtn = new MenuItem("Clear Blood", "Clear the blood off your player.");
var bloodList = new List<string> { "BigHitByVehicle", "SCR_Torture", "SCR_TrevorTreeBang", "HOSPITAL_0", "HOSPITAL_1", "HOSPITAL_2", "HOSPITAL_3", "HOSPITAL_4", "HOSPITAL_5", "HOSPITAL_6", "HOSPITAL_7", "HOSPITAL_8", "HOSPITAL_9", "Explosion_Med", "Skin_Melee_0", "Explosion_Large", "Car_Crash_Light", "Car_Crash_Heavy", "Fall_Low", "Fall", "HitByVehicle", "BigRunOverByVehicle", "RunOverByVehicle", "TD_KNIFE_FRONT", "TD_KNIFE_FRONT_VA", "TD_KNIFE_FRONT_VB", "TD_KNIFE_REAR", "TD_KNIFE_REAR_VA", "TD_KNIFE_REAR_VB", "TD_KNIFE_STEALTH", "TD_MELEE_FRONT", "TD_MELEE_REAR", "TD_MELEE_STEALTH", "TD_MELEE_BATWAIST", "TD_melee_face_l", "MTD_melee_face_r", "MTD_melee_face_jaw", "TD_PISTOL_FRONT", "TD_PISTOL_FRONT_KILL", "TD_PISTOL_REAR", "TD_PISTOL_REAR_KILL", "TD_RIFLE_FRONT_KILL", "TD_RIFLE_NONLETHAL_FRONT", "TD_RIFLE_NONLETHAL_REAR", "TD_SHOTGUN_FRONT_KILL", "TD_SHOTGUN_REAR_KILL" };
var setBloodLevel = new MenuListItem("Set Blood Level", bloodList, PlayerBlood, "Sets your players blood level.");

var healPlayerBtn = new MenuItem("Heal Player", "Give the player max health.");
var cleanPlayerBtn = new MenuItem("Clean Player Clothes", "Clean your player clothes.");
var dryPlayerBtn = new MenuItem("Dry Player Clothes", "Make your player clothes dry.");
Expand Down Expand Up @@ -123,6 +132,14 @@ private void CreateMenu()
{
menu.AddMenuItem(setWantedLevel);
}
if (IsAllowed(Permission.POClearBlood))
{
menu.AddMenuItem(clearBloodBtn);
}
if (IsAllowed(Permission.POSetBlood))
{
menu.AddMenuItem(setBloodLevel);
}
if (IsAllowed(Permission.POIgnored))
{
menu.AddMenuItem(everyoneIgnoresPlayerCheckbox);
Expand Down Expand Up @@ -419,6 +436,11 @@ private void CreateMenu()
SetPlayerWantedLevel(Game.Player.Handle, listIndex, false);
SetPlayerWantedLevelNow(Game.Player.Handle, false);
}
// Set blood level
else if (listItem == setBloodLevel)
{
ApplyPedDamagePack(Game.PlayerPed.Handle, bloodList[listIndex], 100, 100);
}
// Player Scenarios
else if (listItem == playerScenarios)
{
Expand All @@ -440,6 +462,19 @@ private void CreateMenu()
// for the string "forcestop", if that's provided as th scenario name then it will forcefully clear the player task.
PlayScenario("forcestop");
}
else if (item == clearBloodBtn)
{
Game.PlayerPed.ClearBloodDamage();
Game.PlayerPed.ResetVisibleDamage();
// not ideal for removing visible bruises & scars, may have some sync issues but could not find an alternative method, anyone who does feel free to update

ClearPedDamageDecalByZone(Game.PlayerPed.Handle, 0, "ALL");
ClearPedDamageDecalByZone(Game.PlayerPed.Handle, 1, "ALL");
ClearPedDamageDecalByZone(Game.PlayerPed.Handle, 2, "ALL");
ClearPedDamageDecalByZone(Game.PlayerPed.Handle, 3, "ALL");
ClearPedDamageDecalByZone(Game.PlayerPed.Handle, 4, "ALL");
ClearPedDamageDecalByZone(Game.PlayerPed.Handle, 5, "ALL");
}
else if (item == healPlayerBtn)
{
Game.PlayerPed.Health = Game.PlayerPed.MaxHealth;
Expand Down
2 changes: 2 additions & 0 deletions vMenuServer/config/permissions.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,8 @@ add_ace builtin.everyone "vMenu.PlayerOptions.All" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.NoRagdoll" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.NeverWanted" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.SetWanted" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.ClearBlood" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.SetBlood" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.Ignored" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.StayInVehicle" allow
#add_ace builtin.everyone "vMenu.PlayerOptions.MaxHealth" allow
Expand Down