Erweiterung Surgeon

This commit is contained in:
VegaZ
2021-04-26 23:02:28 +02:00
parent 666877a611
commit 0e1df9cf22
3 changed files with 297 additions and 50 deletions

View File

@@ -21,8 +21,8 @@ const localPlayer = mp.players.local;
export default function charSurgery(globalData: IGlobalData) {
var creatorHairMenu;
var creatorHairMenu: NativeUI.Menu;
var characterData: PlayerCharacterData;
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
@@ -129,7 +129,7 @@ export default function charSurgery(globalData: IGlobalData) {
//creatorHairMenu.AddItem(hairHighlightItem);
eyebrowColorItem = new UIMenuListItem("Augenbrauen Farbe", "Farbe deiner Augenbrauen", new ItemsCollection(hairColors));
creatorHairMenu.AddItem(eyebrowColorItem)
creatorHairMenu.AddItem(eyebrowColorItem);
beardColorItem = new UIMenuListItem("Farbe der Gesichtsbehaarung", "Farbe deiner Gesichtsbehaarung", new ItemsCollection(hairColors));
creatorHairMenu.AddItem(beardColorItem);
@@ -151,44 +151,101 @@ export default function charSurgery(globalData: IGlobalData) {
}
function resetParentsMenu(refresh = false) {
fatherItem.Index = 0;
motherItem.Index = 0;
similarityItem.Index = (currentGender === 0) ? 100 : 0;
skinSimilarityItem.Index = (currentGender === 0) ? 100 : 0;
fatherItem.Index = characterData.Father;
motherItem.Index = characterData.Mother;
similarityItem.Index = characterData.Similarity;//(currentGender === 0) ? 100 : 0;
skinSimilarityItem.Index = characterData.SkinSimilarity;//(currentGender === 0) ? 100 : 0;
updateParents();
if (refresh) creatorParentsMenu.RefreshIndex();
}
}
function resetFeaturesMenu(refresh = false) {
for (let i = 0; i < Data.featureNames.length; i++) {
featureItems[i].Index = 100;
featureItems[i].Index = loadedFeatures[i];
updateFaceFeature(i);
}
if (refresh) creatorFeaturesMenu.RefreshIndex();
}
var loadedFeatures;
var loadedAppearence;
var loadedAppearenceOpacity;
function loadCharacterData() {
loadedFeatures = [
characterData.NoseWidth,
characterData.NoseBottomHeight,
characterData.NoseTipLength,
characterData.NoseBridgeDepth,
characterData.NoseTipHeight,
characterData.NoseBroken,
characterData.BrowHeight,
characterData.BrowDepth,
characterData.CheekboneHeight,
characterData.CheekboneWidth,
characterData.CheekDepth,
characterData.EyeSize,
characterData.LipThickness,
characterData.JawWidth,
characterData.JawShape,
characterData.ChinHeight,
characterData.ChinDepth,
characterData.ChinWidth,
characterData.ChinIndent,
characterData.NeckWidth
];
loadedAppearence = [
characterData.Blemishes,
characterData.FacialHair,
characterData.Eyebrows,
characterData.Ageing,
characterData.Makeup,
characterData.Blush,
characterData.Complexion,
characterData.SunDamage,
characterData.Lipstick,
characterData.Freckles,
characterData.ChestHair
];
loadedAppearenceOpacity = [
characterData.BlemishesOpacity,
characterData.FacialHairOpacity,
characterData.EyebrowsOpacity,
characterData.AgeingOpacity,
characterData.MakeupOpacity,
characterData.BlushOpacity,
characterData.ComplexionOpacity,
characterData.SunDamageOpacity,
characterData.LipstickOpacity,
characterData.FrecklesOpacity,
characterData.ChestHairOpacity
];
}
function resetAppearanceMenu(refresh = false) {
for (let i = 0; i < Data.appearanceNames.length; i++) {
appearanceItems[i].Index = 0;
appearanceOpacityItems[i].Index = 100;
appearanceItems[i].Index = loadedAppearence[i];
appearanceOpacityItems[i].Index = loadedAppearenceOpacity[i];
updateAppearance(i);
}
if (refresh) creatorAppearanceMenu.RefreshIndex();
}
function resetHairAndColorsMenu(refresh = false) {
//hairItem.Index = 0;
//hairColorItem.Index = 0;
//hairHighlightItem.Index = 0;
eyebrowColorItem.Index = 0;
beardColorItem.Index = 0;
eyeColorItem.Index = 0;
blushColorItem.Index = 0;
lipstickColorItem.Index = 0;
chestHairColorItem.Index = 0;
eyebrowColorItem.Index = characterData.EyebrowColor;
beardColorItem.Index = characterData.BeardColor;
eyeColorItem.Index = characterData.EyeColor;
blushColorItem.Index = characterData.BlushColor;
lipstickColorItem.Index = characterData.LipstickColor;
chestHairColorItem.Index = characterData.ChestHairColor;
updateHairAndColors();
if (refresh) creatorHairMenu.RefreshIndex();
@@ -292,17 +349,17 @@ export default function charSurgery(globalData: IGlobalData) {
let appearanceData = [];
for (let i = 0; i < appearanceItems.length; i++) appearanceData.push({ Value: ((appearanceItems[i].Index === 0) ? 255 : appearanceItems[i].Index - 1), Opacity: appearanceOpacityItems[i].Index * 0.01 });
/*let hairAndColors = [
Data.hairList[currentGender][hairItem.Index].ID,
hairColorItem.Index,
hairHighlightItem.Index,
let hairAndColors = [
//Data.hairList[currentGender][hairItem.Index].ID,
//hairColorItem.Index,
//hairHighlightItem.Index,
eyebrowColorItem.Index,
beardColorItem.Index,
eyeColorItem.Index,
blushColorItem.Index,
lipstickColorItem.Index,
chestHairColorItem.Index
];*/
];
for (let i = 0; i < creatorMenus.length; i++) creatorMenus[i].Visible = false;
mp.gui.chat.show(true);
mp.game.ui.displayRadar(true);
@@ -312,7 +369,7 @@ export default function charSurgery(globalData: IGlobalData) {
localPlayer.setComponentVariation(2, Data.hairList[currentGender][hairItem.Index].ID, 0, 2);
mp.game.cam.renderScriptCams(false, false, 0, true, false);
creatorCamera.destroy(true);
mp.events.callRemote("SaveSurgery", currentGender, JSON.stringify(parentData), JSON.stringify(featureData), JSON.stringify(appearanceData));
mp.events.callRemote("SaveSurgery", currentGender, JSON.stringify(parentData), JSON.stringify(featureData), JSON.stringify(appearanceData), JSON.stringify(hairAndColors));
globalData.InMenu = false;
globalData.InMenu = false;
break;
@@ -328,6 +385,12 @@ export default function charSurgery(globalData: IGlobalData) {
});
function leaveCreator() {
//resetParentsMenu();
//resetFeaturesMenu();
//resetAppearanceMenu();
//resetHairAndColorsMenu();
mp.gui.chat.show(true);
mp.game.ui.displayRadar(true);
mp.game.ui.displayHud(true);
@@ -480,12 +543,12 @@ export default function charSurgery(globalData: IGlobalData) {
let hairItem;
let hairColorItem;
let hairHighlightItem;
let eyebrowColorItem;
let beardColorItem;
let eyeColorItem;
let blushColorItem;
let lipstickColorItem;
let chestHairColorItem;
let eyebrowColorItem: NativeUI.UIMenuListItem;
let beardColorItem: NativeUI.UIMenuListItem;
let eyeColorItem: NativeUI.UIMenuListItem;
let blushColorItem: NativeUI.UIMenuListItem;
let lipstickColorItem: NativeUI.UIMenuListItem;
let chestHairColorItem: NativeUI.UIMenuListItem;
creatorHairMenu = new Menu("Haar & Farben", "", new Point(0, screenRes.y / 3), null, null);
fillHairMenu();
@@ -557,10 +620,14 @@ export default function charSurgery(globalData: IGlobalData) {
creatorHairMenu.Visible = false;
creatorMenus.push(creatorHairMenu);
// CREATOR HAIR & COLORS END
var character;
// EVENTS
mp.events.add("toggleSurgery", () => {
mp.events.add("toggleSurgery", (jsonCharacterData: string) => {
if (!mp.cameras.exists(creatorCamera)) {
characterData = JSON.parse(jsonCharacterData);
loadCharacterData();
creatorCamera = mp.cameras.new("creatorCamera", creatorCoords.camera, new mp.Vector3(0, 0, 0), 45);
creatorCamera.pointAtCoord(creatorCoords.cameraLookAt.x, creatorCoords.cameraLookAt.y, creatorCoords.cameraLookAt.z);
creatorCamera.setActive(true);