Skip to content

Commit fd02a56

Browse files
Merge branch 'development' into XdGoldenTigerOfficial-patch-7
2 parents 3b2287d + d92ebb7 commit fd02a56

File tree

7 files changed

+358
-18
lines changed

7 files changed

+358
-18
lines changed

SharedClasses/ConfigManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ public enum Setting
5454
vmenu_dynamic_weather_timer,
5555
vmenu_current_weather,
5656
vmenu_blackout_enabled,
57+
vmenu_vehicle_blackout_enabled,
5758
vmenu_weather_change_duration,
5859
vmenu_enable_snow,
5960

SharedClasses/PermissionsManager.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ public enum Permission
186186
WOAll,
187187
WODynamic,
188188
WOBlackout,
189+
WOVehBlackout,
189190
WOSetWeather,
190191
WORemoveClouds,
191192
WORandomizeClouds,

vMenu/EventManager.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace vMenuClient
1818
{
1919
public class EventManager : BaseScript
2020
{
21+
public static WeatherOptions WeatherOptionsMenu { get; private set; }
2122
public static bool IsSnowEnabled => GetSettingsBool(Setting.vmenu_enable_snow);
2223
public static int GetServerMinutes => MathUtil.Clamp(GetSettingsInt(Setting.vmenu_current_minute), 0, 59);
2324
public static int GetServerHours => MathUtil.Clamp(GetSettingsInt(Setting.vmenu_current_hour), 0, 23);
@@ -283,18 +284,29 @@ private async Task UpdateWeatherParticles()
283284
/// <returns></returns>
284285
private async Task WeatherSync()
285286
{
287+
if (MainMenu.WeatherOptionsMenu == null)
288+
{
289+
return;
290+
}
291+
292+
bool isEnabled = MainMenu.WeatherOptionsMenu.IsVehicleLightsEnabled;
293+
286294
await UpdateWeatherParticles();
287295
SetArtificialLightsState(IsBlackoutEnabled);
296+
SetArtificialLightsStateAffectsVehicles(!isEnabled);
297+
288298
if (GetNextWeatherType() != GetHashKey(GetServerWeather))
289299
{
290300
SetWeatherTypeOvertimePersist(GetServerWeather, (float)WeatherChangeTime);
291301
await Delay((WeatherChangeTime * 1000) + 2000);
292302

293303
TriggerEvent("vMenu:WeatherChangeComplete", GetServerWeather);
294304
}
305+
295306
await Delay(1000);
296307
}
297308

309+
298310
/// <summary>
299311
/// This function will take care of time sync. It'll be called once, and never stop.
300312
/// </summary>

vMenu/menus/MpPedCustomization.cs

Lines changed: 66 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2194,6 +2194,10 @@ private void CreateSavedPedsMenu()
21942194
var clonePed = new MenuItem("Clone Saved Character", "This will make a clone of your saved character. It will ask you to provide a name for that character. If that name is already taken the action will be canceled.");
21952195
var setAsDefaultPed = new MenuItem("Set As Default Character", "If you set this character as your default character, and you enable the 'Respawn As Default MP Character' option in the Misc Settings menu, then you will be set as this character whenever you (re)spawn.");
21962196
var renameCharacter = new MenuItem("Rename Saved Character", "You can rename this saved character. If the name is already taken then the action will be canceled.");
2197+
var saveCurrentPedAsCharacter = new MenuItem("Update Character Clothing", "This applies your current clothing to this saved ped. ~r~This will overwrite this saved ped's clothing.~w~ Only clothing is updated, no other appearance features.")
2198+
{
2199+
LeftIcon = MenuItem.Icon.WARNING
2200+
};
21972201
var delPed = new MenuItem("Delete Saved Character", "Deletes the selected saved character. This can not be undone!")
21982202
{
21992203
LeftIcon = MenuItem.Icon.WARNING
@@ -2204,6 +2208,7 @@ private void CreateSavedPedsMenu()
22042208
manageSavedCharacterMenu.AddMenuItem(setCategoryBtn);
22052209
manageSavedCharacterMenu.AddMenuItem(setAsDefaultPed);
22062210
manageSavedCharacterMenu.AddMenuItem(renameCharacter);
2211+
manageSavedCharacterMenu.AddMenuItem(saveCurrentPedAsCharacter);
22072212
manageSavedCharacterMenu.AddMenuItem(delPed);
22082213

22092214
MenuController.BindMenuItem(manageSavedCharacterMenu, createCharacterMenu, editPedBtn);
@@ -2290,6 +2295,30 @@ private void CreateSavedPedsMenu()
22902295
}
22912296
}
22922297
}
2298+
else if (item == saveCurrentPedAsCharacter)
2299+
{
2300+
if (saveCurrentPedAsCharacter.Label == "Are you sure?")
2301+
{
2302+
saveCurrentPedAsCharacter.Label = "";
2303+
var tmpCharacter = StorageManager.GetSavedMpCharacterData("mp_ped_" + selectedSavedCharacterManageName);
2304+
2305+
tmpCharacter = ReplacePedDataClothing(tmpCharacter);
2306+
2307+
if (StorageManager.SaveJsonData(tmpCharacter.SaveName, JsonConvert.SerializeObject(tmpCharacter), true))
2308+
{
2309+
Notify.Success($"This character's clothing has been updated!");
2310+
UpdateSavedPedsMenu();
2311+
}
2312+
else
2313+
{
2314+
Notify.Error("Unable to update this character's clothing. The reason is unknown.");
2315+
}
2316+
}
2317+
else
2318+
{
2319+
saveCurrentPedAsCharacter.Label = "Are you sure?";
2320+
}
2321+
}
22932322
else if (item == delPed)
22942323
{
22952324
if (delPed.Label == "Are you sure?")
@@ -2319,6 +2348,14 @@ private void CreateSavedPedsMenu()
23192348
delPed.Label = "";
23202349
}
23212350
}
2351+
2352+
if (item != saveCurrentPedAsCharacter)
2353+
{
2354+
if (saveCurrentPedAsCharacter.Label == "Are you sure?")
2355+
{
2356+
saveCurrentPedAsCharacter.Label = "";
2357+
}
2358+
}
23222359
};
23232360

23242361
// Update category preview icon
@@ -2387,7 +2424,13 @@ private void CreateSavedPedsMenu()
23872424
// reset the "are you sure" state.
23882425
manageSavedCharacterMenu.OnMenuClose += (sender) =>
23892426
{
2390-
manageSavedCharacterMenu.GetMenuItems().Last().Label = "";
2427+
foreach (MenuItem item in manageSavedCharacterMenu.GetMenuItems())
2428+
{
2429+
if (item.Label == "Are you sure?")
2430+
{
2431+
item.Label = "";
2432+
}
2433+
}
23912434
};
23922435

23932436
// Load selected category
@@ -2930,6 +2973,28 @@ private List<string> GetAllMpCharacterNames()
29302973
return names;
29312974
}
29322975

2976+
private MultiplayerPedData ReplacePedDataClothing(MultiplayerPedData character)
2977+
{
2978+
int handle = Game.PlayerPed.Handle;
2979+
2980+
// Drawables
2981+
for (int i = 0; i < 12; i++)
2982+
{
2983+
int drawable = GetPedDrawableVariation(handle, i);
2984+
int texture = GetPedTextureVariation(handle, i);
2985+
character.DrawableVariations.clothes[i] = new KeyValuePair<int, int>(drawable, texture);
2986+
}
2987+
2988+
for (int i = 0; i < 8; i++)
2989+
{
2990+
int prop = GetPedPropIndex(handle, i);
2991+
int texture = GetPedPropTextureIndex(handle, i);
2992+
character.PropVariations.props[i] = new KeyValuePair<int, int>(prop, texture);
2993+
}
2994+
2995+
return character;
2996+
}
2997+
29332998
internal void SetHeadBlend()
29342999
{
29353000
SetPedHeadBlendData(Game.PlayerPed.Handle, _dadSelection, _mumSelection, 0, _dadSelection, _mumSelection, 0, _shapeMixValue, _skinMixValue, 0f, false);

0 commit comments

Comments
 (0)