Chirurgen aufgeräumt, buggt aber noch hart
This commit is contained in:
@@ -384,7 +384,7 @@ export default function charCreator(globalData: IGlobalData) {
|
|||||||
let features = [];
|
let features = [];
|
||||||
for (let i = -1.0; i <= 1.01; i += 0.01) features.push(i.toFixed(2));
|
for (let i = -1.0; i <= 1.01; i += 0.01) features.push(i.toFixed(2));
|
||||||
|
|
||||||
let creatorFeaturesMenu = new Menu("Gesichtsz\u00fcge", "", new Point(0, screenRes.y / 3), null, null);
|
let creatorFeaturesMenu = new Menu("Gesichtsmerkmale", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
|
|
||||||
for (let i = 0; i < Data.featureNames.length; i++) {
|
for (let i = 0; i < Data.featureNames.length; i++) {
|
||||||
let tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
|
let tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
|
||||||
@@ -394,7 +394,7 @@ export default function charCreator(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
creatorFeaturesMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Zuf\u00e4llige Gesichtsz\u00fcge."));
|
creatorFeaturesMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Zuf\u00e4llige Gesichtsz\u00fcge."));
|
||||||
creatorFeaturesMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt Gesichtsz\u00fcge zur\u00fcck."));
|
creatorFeaturesMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt Gesichtsmerkmale zurück."));
|
||||||
|
|
||||||
creatorFeaturesMenu.ItemSelect.on((item, index) => {
|
creatorFeaturesMenu.ItemSelect.on((item, index) => {
|
||||||
switch (item.Text) {
|
switch (item.Text) {
|
||||||
|
|||||||
@@ -21,158 +21,65 @@ const localPlayer = mp.players.local;
|
|||||||
|
|
||||||
export default function charSurgery(globalData: IGlobalData) {
|
export default function charSurgery(globalData: IGlobalData) {
|
||||||
|
|
||||||
var creatorHairMenu: NativeUI.Menu;
|
var creatorCamera: CameraMp;
|
||||||
|
var newCharacter: PlayerCharacterData;
|
||||||
|
|
||||||
|
// color arrays
|
||||||
|
var hairColors = [];
|
||||||
|
for (var i = 0; i < Data.maxHairColor; i++) hairColors.push(i.toString());
|
||||||
|
|
||||||
|
var blushColors = [];
|
||||||
|
for (var i = 0; i < Data.maxBlushColor; i++) blushColors.push(i.toString());
|
||||||
|
|
||||||
|
var lipstickColors = [];
|
||||||
|
for (var i = 0; i < Data.maxLipstickColor; i++) lipstickColors.push(i.toString());
|
||||||
|
|
||||||
var characterData: PlayerCharacterData;
|
var characterData: PlayerCharacterData;
|
||||||
function getRandomInt(min, max) {
|
function getRandomInt(min, max) {
|
||||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||||
}
|
}
|
||||||
|
|
||||||
function colorForOverlayIdx(index) {
|
var creatorMainMenu: NativeUI.Menu;
|
||||||
let color;
|
var debugString = [0, 0, 0, 0, 0];
|
||||||
|
|
||||||
switch (index) {
|
mp.events.add("render", () => {
|
||||||
case 1:
|
mp.game.graphics.drawText(debugString.toString(), [0.5, 0.1],
|
||||||
color = beardColorItem.Index;
|
{
|
||||||
break;
|
font: 4,
|
||||||
|
color: [255, 255, 255, 255],
|
||||||
|
scale: [0.5, 0.5],
|
||||||
|
outline: true,
|
||||||
|
centre: false
|
||||||
|
})
|
||||||
|
});
|
||||||
|
|
||||||
case 2:
|
mp.events.add("toggleSurgery", (jsonCharacterData: string) => {
|
||||||
color = eyebrowColorItem.Index;
|
if (!mp.cameras.exists(creatorCamera)) {
|
||||||
break;
|
debugString[0] = 1;
|
||||||
|
characterData = JSON.parse(jsonCharacterData);
|
||||||
|
debugString[1] = 1;
|
||||||
|
loadCharacterData();
|
||||||
|
debugString[2] = 1;
|
||||||
|
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);
|
||||||
|
|
||||||
case 5:
|
globalData.InMenu = true;
|
||||||
color = blushColorItem.Index;
|
globalData.InMenu = true;
|
||||||
break;
|
mp.gui.chat.show(false);
|
||||||
|
mp.game.ui.displayRadar(false);
|
||||||
case 8:
|
mp.game.ui.displayHud(false);
|
||||||
color = lipstickColorItem.Index;
|
localPlayer.clearTasksImmediately();
|
||||||
break;
|
localPlayer.freezePosition(true);
|
||||||
|
mp.game.cam.renderScriptCams(true, false, 0, true, false);
|
||||||
case 10:
|
debugString[3] = 1;
|
||||||
color = chestHairColorItem.Index;
|
getCharacterMainMenu();
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
color = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateParents() {
|
|
||||||
localPlayer.setHeadBlendData(
|
|
||||||
// shape
|
|
||||||
Data.mothers[motherItem.Index],
|
|
||||||
Data.fathers[fatherItem.Index],
|
|
||||||
0,
|
|
||||||
|
|
||||||
// skin
|
|
||||||
Data.mothers[motherItem.Index],
|
|
||||||
Data.fathers[fatherItem.Index],
|
|
||||||
0,
|
|
||||||
|
|
||||||
// mixes
|
|
||||||
similarityItem.Index * 0.01,
|
|
||||||
skinSimilarityItem.Index * 0.01,
|
|
||||||
0.0,
|
|
||||||
|
|
||||||
false
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateFaceFeature(index) {
|
|
||||||
localPlayer.setFaceFeature(index, parseFloat(featureItems[index].SelectedValue));
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function updateAppearance(index) {
|
|
||||||
let overlayID = (appearanceItems[index].Index === 0) ? 255 : appearanceItems[index].Index - 1;
|
|
||||||
localPlayer.setHeadOverlay(index, overlayID, appearanceOpacityItems[index].Index * 0.01, colorForOverlayIdx(index), 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateHairAndColors() {
|
|
||||||
localPlayer.setComponentVariation(2, Data.hairList[currentGender][hairItem.Index].ID, 0, 2);
|
|
||||||
localPlayer.setHairColor(hairColorItem.Index, hairHighlightItem.Index);
|
|
||||||
localPlayer.setEyeColor(eyeColorItem.Index);
|
|
||||||
localPlayer.setHeadOverlayColor(1, 1, beardColorItem.Index, 0);
|
|
||||||
localPlayer.setHeadOverlayColor(2, 1, eyebrowColorItem.Index, 0);
|
|
||||||
localPlayer.setHeadOverlayColor(5, 2, blushColorItem.Index, 0);
|
|
||||||
localPlayer.setHeadOverlayColor(8, 2, lipstickColorItem.Index, 0);
|
|
||||||
localPlayer.setHeadOverlayColor(10, 1, chestHairColorItem.Index, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
function applyCreatorOutfit() {
|
|
||||||
if (currentGender === 0) {
|
|
||||||
localPlayer.setDefaultComponentVariation();
|
|
||||||
localPlayer.setComponentVariation(3, 15, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(4, 21, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(6, 34, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(8, 15, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(11, 15, 0, 2);
|
|
||||||
} else {
|
|
||||||
localPlayer.setDefaultComponentVariation();
|
|
||||||
localPlayer.setComponentVariation(3, 15, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(4, 10, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(6, 35, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(8, 15, 0, 2);
|
|
||||||
localPlayer.setComponentVariation(11, 15, 0, 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function fillHairMenu() {
|
|
||||||
//hairItem = new UIMenuListItem("Haar", "Deine Haare", new ItemsCollection(Data.hairList[currentGender].map(h => h.Name)));
|
|
||||||
//creatorHairMenu.AddItem(hairItem);
|
|
||||||
|
|
||||||
//hairColorItem = new UIMenuListItem("Haarfarbe", "Deine Haarfarbe", new ItemsCollection(hairColors));
|
|
||||||
//creatorHairMenu.AddItem(hairColorItem);
|
|
||||||
|
|
||||||
//hairHighlightItem = new UIMenuListItem("Haarstr\u00e4hnen", "Farbe deiner Haarstr\u00e4hnen", new ItemsCollection(hairColors));
|
|
||||||
//creatorHairMenu.AddItem(hairHighlightItem);
|
|
||||||
|
|
||||||
eyebrowColorItem = new UIMenuListItem("Augenbrauen Farbe", "Farbe deiner Augenbrauen", new ItemsCollection(hairColors));
|
|
||||||
creatorHairMenu.AddItem(eyebrowColorItem);
|
|
||||||
|
|
||||||
beardColorItem = new UIMenuListItem("Farbe der Gesichtsbehaarung", "Farbe deiner Gesichtsbehaarung", new ItemsCollection(hairColors));
|
|
||||||
creatorHairMenu.AddItem(beardColorItem);
|
|
||||||
|
|
||||||
eyeColorItem = new UIMenuListItem("Augenfarbe", "Farbe deiner Augen", new ItemsCollection(Data.eyeColors));
|
|
||||||
creatorHairMenu.AddItem(eyeColorItem);
|
|
||||||
|
|
||||||
blushColorItem = new UIMenuListItem("Rouge", "Farbe des Rouges.", new ItemsCollection(blushColors));
|
|
||||||
creatorHairMenu.AddItem(blushColorItem);
|
|
||||||
|
|
||||||
lipstickColorItem = new UIMenuListItem("Lippenstift Farbe", "Farbe deines Lippenstifts.", new ItemsCollection(lipstickColors));
|
|
||||||
creatorHairMenu.AddItem(lipstickColorItem);
|
|
||||||
|
|
||||||
chestHairColorItem = new UIMenuListItem("Farbe der Brustbehaarung", "Farbe deiner Brustbehaarung", new ItemsCollection(hairColors));
|
|
||||||
creatorHairMenu.AddItem(chestHairColorItem);
|
|
||||||
|
|
||||||
creatorHairMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Zuf\u00e4lliges Haar & Farben"));
|
|
||||||
creatorHairMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Zur\u00fccksetzen von Haar & Farben"));
|
|
||||||
}
|
|
||||||
|
|
||||||
function resetParentsMenu(refresh = false) {
|
|
||||||
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 = loadedFeatures[i];
|
|
||||||
updateFaceFeature(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (refresh) creatorFeaturesMenu.RefreshIndex();
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
var loadedFeatures;
|
var loadedFeatures;
|
||||||
var loadedAppearence;
|
var loadedAppearance;
|
||||||
var loadedAppearenceOpacity;
|
var loadedAppearanceOpacity;
|
||||||
|
|
||||||
function loadCharacterData() {
|
function loadCharacterData() {
|
||||||
loadedFeatures = [
|
loadedFeatures = [
|
||||||
@@ -197,7 +104,7 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
characterData.ChinIndent,
|
characterData.ChinIndent,
|
||||||
characterData.NeckWidth
|
characterData.NeckWidth
|
||||||
];
|
];
|
||||||
loadedAppearence = [
|
loadedAppearance = [
|
||||||
characterData.Blemishes,
|
characterData.Blemishes,
|
||||||
characterData.FacialHair,
|
characterData.FacialHair,
|
||||||
characterData.Eyebrows,
|
characterData.Eyebrows,
|
||||||
@@ -210,7 +117,7 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
characterData.Freckles,
|
characterData.Freckles,
|
||||||
characterData.ChestHair
|
characterData.ChestHair
|
||||||
];
|
];
|
||||||
loadedAppearenceOpacity = [
|
loadedAppearanceOpacity = [
|
||||||
characterData.BlemishesOpacity,
|
characterData.BlemishesOpacity,
|
||||||
characterData.FacialHairOpacity,
|
characterData.FacialHairOpacity,
|
||||||
characterData.EyebrowsOpacity,
|
characterData.EyebrowsOpacity,
|
||||||
@@ -226,86 +133,55 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function resetAppearanceMenu(refresh = false) {
|
function getCharacterMainMenu(): NativeUI.Menu {
|
||||||
for (let i = 0; i < Data.appearanceNames.length; i++) {
|
|
||||||
appearanceItems[i].Index = loadedAppearence[i];
|
|
||||||
appearanceOpacityItems[i].Index = loadedAppearenceOpacity[i];
|
|
||||||
updateAppearance(i);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (refresh) creatorAppearanceMenu.RefreshIndex();
|
creatorMainMenu = new Menu("Chirurg", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
}
|
creatorMainMenu.Visible = false;
|
||||||
|
|
||||||
function resetHairAndColorsMenu(refresh = false) {
|
var genderItem = new UIMenuListItem("Geschlecht", "~r~Dies setzt deine Einstellungen zurück.", new ItemsCollection(["Männlich", "Weiblich"]));
|
||||||
//hairItem.Index = 0;
|
|
||||||
//hairColorItem.Index = 0;
|
|
||||||
//hairHighlightItem.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();
|
|
||||||
}
|
|
||||||
|
|
||||||
let currentGender;
|
|
||||||
let creatorMenus: NativeUI.Menu[] = [];
|
|
||||||
let creatorCamera: CameraMp;
|
|
||||||
|
|
||||||
// color arrays
|
|
||||||
let hairColors = [];
|
|
||||||
for (let i = 0; i < Data.maxHairColor; i++) hairColors.push(i.toString());
|
|
||||||
|
|
||||||
let blushColors = [];
|
|
||||||
for (let i = 0; i < Data.maxBlushColor; i++) blushColors.push(i.toString());
|
|
||||||
|
|
||||||
let lipstickColors = [];
|
|
||||||
for (let i = 0; i < Data.maxLipstickColor; i++) lipstickColors.push(i.toString());
|
|
||||||
|
|
||||||
|
|
||||||
// CREATOR MAIN
|
|
||||||
let creatorMainMenu = new Menu("Chirurg", "", new Point(0, screenRes.y / 3), null, null);
|
|
||||||
let genderItem = new UIMenuListItem("Geschlecht", "~r~Dies setzt deine Einstellungen zur\u00fcck.", new ItemsCollection(["M\u00e4nnlich", "Weiblich"]));
|
|
||||||
creatorMainMenu.AddItem(genderItem);
|
creatorMainMenu.AddItem(genderItem);
|
||||||
creatorMainMenu.AddItem(new UIMenuItem("Eltern", "Eltern des Charakters."));
|
genderItem.Index = characterData.Gender == false ? 0 : 1;
|
||||||
creatorMainMenu.AddItem(new UIMenuItem("Gesichtsz\u00fcge", "Gesichtsz\u00fcge des Charakters."));
|
|
||||||
creatorMainMenu.AddItem(new UIMenuItem("Aussehen", "Aussehen des Charakters."));
|
|
||||||
creatorMainMenu.AddItem(new UIMenuItem("Haar & Farben", "Haare & Farben deines Charakters."));
|
|
||||||
|
|
||||||
let angles = [];
|
var parentsItem = new UIMenuItem("Eltern", "Eltern des Charakters.");
|
||||||
for (let i = -180.0; i <= 180.0; i += 5.0) angles.push(i.toFixed(1));
|
creatorMainMenu.AddItem(parentsItem);
|
||||||
let angleItem = new UIMenuListItem("Drehung", "", new ItemsCollection(angles));
|
creatorMainMenu.BindMenuToItem(getParentsMenu(creatorMainMenu), parentsItem);
|
||||||
|
|
||||||
|
var featureItem = new UIMenuItem("Gesichtszüge", "Gesichtszüge des Charakters.")
|
||||||
|
creatorMainMenu.AddItem(featureItem);
|
||||||
|
creatorMainMenu.BindMenuToItem(getFeaturesMenu(creatorMainMenu), featureItem);
|
||||||
|
|
||||||
|
var appearanceItem = new UIMenuItem("Aussehen", "Aussehen des Charakters.")
|
||||||
|
creatorMainMenu.AddItem(appearanceItem);
|
||||||
|
creatorMainMenu.BindMenuToItem(getAppearanceMenu(creatorMainMenu), appearanceItem);
|
||||||
|
|
||||||
|
var hairAndColorItem = new UIMenuItem("Haar & Farben", "Haare & Farben deines Charakters.")
|
||||||
|
creatorMainMenu.AddItem(hairAndColorItem);
|
||||||
|
creatorMainMenu.BindMenuToItem(getHairAndColorMenu(creatorMainMenu), hairAndColorItem);
|
||||||
|
|
||||||
|
//Charakterdrehung
|
||||||
|
var angles = [];
|
||||||
|
for (var i = -180.0; i <= 180.0; i += 5.0) angles.push(i.toFixed(1));
|
||||||
|
var angleItem = new UIMenuListItem("Drehung", "", new ItemsCollection(angles));
|
||||||
creatorMainMenu.AddItem(angleItem);
|
creatorMainMenu.AddItem(angleItem);
|
||||||
|
|
||||||
let saveItem = new UIMenuItem("Erstellen", "Erstellt deinen Charakter.");
|
var saveItem = new UIMenuItem("Erstellen", "Erstellt deinen Charakter.");
|
||||||
saveItem.BackColor = new Color(13, 71, 161);
|
saveItem.BackColor = new Color(13, 71, 161);
|
||||||
saveItem.HighlightedBackColor = new Color(25, 118, 210);
|
saveItem.HighlightedBackColor = new Color(25, 118, 210);
|
||||||
creatorMainMenu.AddItem(saveItem);
|
creatorMainMenu.AddItem(saveItem);
|
||||||
|
|
||||||
//let cancelItem = new UIMenuItem("Abbrechen", "Setzt alle \u00c4nderungen zur\u00fcck.");
|
|
||||||
//cancelItem.BackColor = new Color(213, 0, 0);
|
|
||||||
//cancelItem.HighlightedBackColor = new Color(229, 57, 53);
|
|
||||||
//creatorMainMenu.AddItem(cancelItem);
|
|
||||||
|
|
||||||
creatorMainMenu.ListChange.on((item, listIndex) => {
|
creatorMainMenu.ListChange.on((item, listIndex) => {
|
||||||
if (item === genderItem) {
|
if (item === genderItem) {
|
||||||
currentGender = listIndex;
|
newCharacter.Gender = listIndex;
|
||||||
mp.events.callRemote("creator_GenderChange", listIndex);
|
mp.events.callRemote("creator_GenderChange", listIndex);
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
localPlayer.clearTasksImmediately();
|
localPlayer.clearTasksImmediately();
|
||||||
applyCreatorOutfit();
|
applyCreatorOutfit();
|
||||||
angleItem.Index = 0;
|
angleItem.Index = 0;
|
||||||
resetParentsMenu(true);
|
resetParents();
|
||||||
resetFeaturesMenu(true);
|
//resetParentsMenu(true);
|
||||||
resetAppearanceMenu(true);
|
//resetFeaturesMenu(true);
|
||||||
|
//resetAppearanceMenu(true);
|
||||||
//creatorHairMenu.Clear();
|
|
||||||
//fillHairMenu();
|
|
||||||
//creatorHairMenu.RefreshIndex();
|
|
||||||
}, 200);
|
}, 200);
|
||||||
} else if (item === angleItem) {
|
} else if (item === angleItem) {
|
||||||
localPlayer.setHeading(parseFloat(angleItem.SelectedValue));
|
localPlayer.setHeading(parseFloat(angleItem.SelectedValue));
|
||||||
@@ -313,127 +189,48 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
creatorMainMenu.ItemSelect.on((item, index) => {
|
|
||||||
switch (index) {
|
|
||||||
case 1:
|
|
||||||
creatorMainMenu.Visible = false;
|
|
||||||
creatorParentsMenu.Visible = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2:
|
|
||||||
creatorMainMenu.Visible = false;
|
|
||||||
creatorFeaturesMenu.Visible = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 3:
|
|
||||||
creatorMainMenu.Visible = false;
|
|
||||||
creatorAppearanceMenu.Visible = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 4:
|
|
||||||
creatorMainMenu.Visible = false;
|
|
||||||
creatorHairMenu.Visible = true;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 5:
|
|
||||||
let parentData = {
|
|
||||||
Father: Data.fathers[fatherItem.Index],
|
|
||||||
Mother: Data.mothers[motherItem.Index],
|
|
||||||
Similarity: similarityItem.Index * 0.01,
|
|
||||||
SkinSimilarity: skinSimilarityItem.Index * 0.01
|
|
||||||
};
|
|
||||||
|
|
||||||
let featureData = [];
|
|
||||||
for (let i = 0; i < featureItems.length; i++) featureData.push(parseFloat(featureItems[i].SelectedValue));
|
|
||||||
|
|
||||||
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,
|
|
||||||
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);
|
|
||||||
mp.game.ui.displayHud(true);
|
|
||||||
localPlayer.freezePosition(false);
|
|
||||||
localPlayer.setDefaultComponentVariation();
|
|
||||||
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), JSON.stringify(hairAndColors));
|
|
||||||
globalData.InMenu = false;
|
|
||||||
globalData.InMenu = false;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 6:
|
|
||||||
leaveCreator();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
creatorMainMenu.MenuClose.on(() => {
|
creatorMainMenu.MenuClose.on(() => {
|
||||||
leaveCreator();
|
leaveCreator();
|
||||||
});
|
});
|
||||||
|
|
||||||
function leaveCreator() {
|
return creatorMainMenu;
|
||||||
|
|
||||||
//resetParentsMenu();
|
|
||||||
//resetFeaturesMenu();
|
|
||||||
//resetAppearanceMenu();
|
|
||||||
//resetHairAndColorsMenu();
|
|
||||||
|
|
||||||
mp.gui.chat.show(true);
|
|
||||||
mp.game.ui.displayRadar(true);
|
|
||||||
mp.game.ui.displayHud(true);
|
|
||||||
localPlayer.freezePosition(false);
|
|
||||||
mp.game.cam.renderScriptCams(false, false, 0, true, false);
|
|
||||||
creatorCamera.destroy(true);
|
|
||||||
mp.events.callRemote("surgeryLeave");
|
|
||||||
globalData.InMenu = false;
|
|
||||||
globalData.InMenu = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
creatorMainMenu.Visible = false;
|
function getParentsMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||||
creatorMenus.push(creatorMainMenu);
|
var similarities = [];
|
||||||
// CREATOR MAIN END
|
for (var i = 0; i <= 100; i++) similarities.push(i + "%");
|
||||||
|
|
||||||
// CREATOR PARENTS
|
var creatorParentsMenu = new Menu("Eltern", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
let similarities = [];
|
creatorParentsMenu.Visible = false;
|
||||||
for (let i = 0; i <= 100; i++) similarities.push(i + "%");
|
|
||||||
|
|
||||||
let creatorParentsMenu = new Menu("Eltern", "", new Point(0, screenRes.y / 3), null, null);
|
var fatherItem = new UIMenuListItem("Vater", "Dem Charakter sein Vadda.", new ItemsCollection(Data.fatherNames));
|
||||||
let fatherItem = new UIMenuListItem("Vater", "Dem Charakter sein Vadda.", new ItemsCollection(Data.fatherNames));
|
|
||||||
let motherItem = new UIMenuListItem("Mutter", "Dem Charakter seine Mudda.", new ItemsCollection(Data.motherNames));
|
|
||||||
let similarityItem = new UIMenuListItem("\u00c4hnlichkeit", "\u00c4hnlichkeit zu den Eltern.\n(niedriger = feminin, h\u00f6her = maskulin)", new ItemsCollection(similarities));
|
|
||||||
let skinSimilarityItem = new UIMenuListItem("Hautfarbe", "Hautfarben \u00c4hnlichkeit zu den Eltern.\n(niedriger = Mutter, h\u00f6her = Vater)", new ItemsCollection(similarities));
|
|
||||||
creatorParentsMenu.AddItem(fatherItem);
|
creatorParentsMenu.AddItem(fatherItem);
|
||||||
|
fatherItem.Index = characterData.Father;
|
||||||
|
|
||||||
|
var motherItem = new UIMenuListItem("Mutter", "Dem Charakter seine Mudda.", new ItemsCollection(Data.motherNames));
|
||||||
creatorParentsMenu.AddItem(motherItem);
|
creatorParentsMenu.AddItem(motherItem);
|
||||||
|
motherItem.Index = characterData.Mother;
|
||||||
|
|
||||||
|
var similarityItem = new UIMenuListItem("\u00c4hnlichkeit", "\u00c4hnlichkeit zu den Eltern.\n(niedriger = feminin, h\u00f6her = maskulin)", new ItemsCollection(similarities));
|
||||||
creatorParentsMenu.AddItem(similarityItem);
|
creatorParentsMenu.AddItem(similarityItem);
|
||||||
|
similarityItem.Index = characterData.Similarity;
|
||||||
|
|
||||||
|
var skinSimilarityItem = new UIMenuListItem("Hautfarbe", "Hautfarben \u00c4hnlichkeit zu den Eltern.\n(niedriger = Mutter, h\u00f6her = Vater)", new ItemsCollection(similarities));
|
||||||
creatorParentsMenu.AddItem(skinSimilarityItem);
|
creatorParentsMenu.AddItem(skinSimilarityItem);
|
||||||
creatorParentsMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Zuf\u00e4llige Eltern."));
|
skinSimilarityItem.Index = characterData.SkinSimilarity;
|
||||||
creatorParentsMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt die Eltern zur\u00fcck. :'("));
|
|
||||||
|
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt die Eltern zurück. :'(");
|
||||||
|
creatorParentsMenu.AddItem(resetItem);
|
||||||
|
|
||||||
creatorParentsMenu.ItemSelect.on((item, index) => {
|
creatorParentsMenu.ItemSelect.on((item, index) => {
|
||||||
switch (item.Text) {
|
switch (item) {
|
||||||
case "Zuf\u00e4llig":
|
case resetItem:
|
||||||
fatherItem.Index = getRandomInt(0, Data.fathers.length - 1);
|
fatherItem.Index = characterData.Father;
|
||||||
motherItem.Index = getRandomInt(0, Data.mothers.length - 1);
|
motherItem.Index = characterData.Mother;
|
||||||
similarityItem.Index = getRandomInt(0, 100);
|
similarityItem.Index = characterData.Similarity;//(currentGender === 0) ? 100 : 0;
|
||||||
skinSimilarityItem.Index = getRandomInt(0, 100);
|
skinSimilarityItem.Index = characterData.SkinSimilarity;//(currentGender === 0) ? 100 : 0;
|
||||||
updateParents();
|
resetParents();
|
||||||
break;
|
//creatorParentsMenu.RefreshIndex();
|
||||||
|
|
||||||
case "Zur\u00fccksetzen":
|
|
||||||
resetParentsMenu();
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@@ -442,40 +239,80 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
updateParents();
|
updateParents();
|
||||||
});
|
});
|
||||||
|
|
||||||
creatorParentsMenu.ParentMenu = creatorMainMenu;
|
creatorParentsMenu.RefreshIndex();
|
||||||
creatorParentsMenu.Visible = false;
|
return creatorParentsMenu;
|
||||||
creatorMenus.push(creatorParentsMenu);
|
}
|
||||||
// CREATOR PARENTS END
|
|
||||||
|
|
||||||
// CREATOR FEATURES
|
function updateParents() {
|
||||||
let featureItems = [];
|
localPlayer.setHeadBlendData(
|
||||||
let features = [];
|
// shape
|
||||||
for (let i = -1.0; i <= 1.01; i += 0.01) features.push(i.toFixed(2));
|
Data.mothers[newCharacter.Mother],
|
||||||
|
Data.fathers[newCharacter.Father],
|
||||||
|
0,
|
||||||
|
|
||||||
let creatorFeaturesMenu = new Menu("Gesichtsz\u00fcge", "", new Point(0, screenRes.y / 3), null, null);
|
// skin
|
||||||
|
Data.mothers[newCharacter.Mother],
|
||||||
|
Data.fathers[newCharacter.Father],
|
||||||
|
0,
|
||||||
|
|
||||||
for (let i = 0; i < Data.featureNames.length; i++) {
|
// mixes
|
||||||
let tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
|
newCharacter.Similarity * 0.01,
|
||||||
|
newCharacter.SkinSimilarity * 0.01,
|
||||||
|
0.0,
|
||||||
|
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function resetParents() {
|
||||||
|
localPlayer.setHeadBlendData(
|
||||||
|
// shape
|
||||||
|
Data.mothers[characterData.Mother],
|
||||||
|
Data.fathers[characterData.Father],
|
||||||
|
0,
|
||||||
|
|
||||||
|
// skin
|
||||||
|
Data.mothers[characterData.Mother],
|
||||||
|
Data.fathers[characterData.Father],
|
||||||
|
0,
|
||||||
|
|
||||||
|
// mixes
|
||||||
|
characterData.Similarity * 0.01,
|
||||||
|
characterData.SkinSimilarity * 0.01,
|
||||||
|
0.0,
|
||||||
|
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
var featureItems = [];
|
||||||
|
function getFeaturesMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||||
|
|
||||||
|
var features = [];
|
||||||
|
for (var i = -1.0; i <= 1.01; i += 0.01) features.push(i.toFixed(2));
|
||||||
|
|
||||||
|
var creatorFeaturesMenu = new Menu("Gesichtsmerkmale", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
|
creatorFeaturesMenu.Visible = false;
|
||||||
|
|
||||||
|
for (var i = 0; i < Data.featureNames.length; i++) {
|
||||||
|
var tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
|
||||||
tempFeatureItem.Index = 100;
|
tempFeatureItem.Index = 100;
|
||||||
featureItems.push(tempFeatureItem);
|
featureItems.push(tempFeatureItem);
|
||||||
creatorFeaturesMenu.AddItem(tempFeatureItem);
|
creatorFeaturesMenu.AddItem(tempFeatureItem);
|
||||||
|
tempFeatureItem.Index = loadedFeatures[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
creatorFeaturesMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Zuf\u00e4llige Gesichtsz\u00fcge."));
|
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt Gesichtsmerkmale zurück.");
|
||||||
creatorFeaturesMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt Gesichtsz\u00fcge zur\u00fcck."));
|
creatorFeaturesMenu.AddItem(resetItem);
|
||||||
|
|
||||||
creatorFeaturesMenu.ItemSelect.on((item, index) => {
|
creatorFeaturesMenu.ItemSelect.on((item, index) => {
|
||||||
switch (item.Text) {
|
switch (item) {
|
||||||
case "Zuf\u00e4llig":
|
case resetItem:
|
||||||
for (let i = 0; i < Data.featureNames.length; i++) {
|
for (var i = 0; i < Data.featureNames.length; i++) {
|
||||||
featureItems[i].Index = getRandomInt(0, 200);
|
featureItems[i].Index = loadedFeatures[i];
|
||||||
updateFaceFeature(i);
|
updateFaceFeature(i);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "Zur\u00fccksetzen":
|
|
||||||
resetFeaturesMenu();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -483,111 +320,115 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
updateFaceFeature(featureItems.indexOf(item));
|
updateFaceFeature(featureItems.indexOf(item));
|
||||||
});
|
});
|
||||||
|
|
||||||
creatorFeaturesMenu.ParentMenu = creatorMainMenu;
|
creatorFeaturesMenu.RefreshIndex();
|
||||||
creatorFeaturesMenu.Visible = false;
|
return creatorFeaturesMenu;
|
||||||
creatorMenus.push(creatorFeaturesMenu);
|
}
|
||||||
// CREATOR FEATURES END
|
|
||||||
|
|
||||||
// CREATOR APPEARANCE
|
function updateFaceFeature(index) {
|
||||||
let appearanceItems = [];
|
localPlayer.setFaceFeature(index, parseFloat(featureItems[index].SelectedValue));
|
||||||
let appearanceOpacityItems = [];
|
}
|
||||||
let opacities = [];
|
|
||||||
for (let i = 0; i <= 100; i++) opacities.push(i + "%");
|
|
||||||
|
|
||||||
let creatorAppearanceMenu = new Menu("Aussehen", "", new Point(0, screenRes.y / 3), null, null);
|
var appearanceItems = [];
|
||||||
|
var appearanceOpacityItems = [];
|
||||||
|
function getAppearanceMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||||
|
|
||||||
for (let i = 0; i < Data.appearanceNames.length; i++) {
|
|
||||||
let items = [];
|
|
||||||
for (let j = 0, max = mp.game.ped.getNumHeadOverlayValues(i); j <= max; j++) items.push(Data.appearanceItemNames[i][j] === undefined ? j.toString() : Data.appearanceItemNames[i][j]);
|
|
||||||
|
|
||||||
let tempAppearanceItem = new UIMenuListItem(Data.appearanceNames[i], "", new ItemsCollection(items));
|
var opacities = [];
|
||||||
|
for (var i = 0; i <= 100; i++) opacities.push(i + "%");
|
||||||
|
|
||||||
|
var creatorAppearanceMenu = new Menu("Aussehen", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
|
creatorAppearanceMenu.Visible = false;
|
||||||
|
|
||||||
|
for (var i = 0; i < Data.appearanceNames.length; i++) {
|
||||||
|
var items = [];
|
||||||
|
for (var j = 0, max = mp.game.ped.getNumHeadOverlayValues(i); j <= max; j++) items.push(Data.appearanceItemNames[i][j] === undefined ? j.toString() : Data.appearanceItemNames[i][j]);
|
||||||
|
|
||||||
|
var tempAppearanceItem = new UIMenuListItem(Data.appearanceNames[i], "", new ItemsCollection(items));
|
||||||
appearanceItems.push(tempAppearanceItem);
|
appearanceItems.push(tempAppearanceItem);
|
||||||
creatorAppearanceMenu.AddItem(tempAppearanceItem);
|
creatorAppearanceMenu.AddItem(tempAppearanceItem);
|
||||||
|
tempAppearanceItem.Index = loadedAppearance[i];
|
||||||
|
|
||||||
let tempAppearanceOpacityItem = new UIMenuListItem(Data.appearanceNames[i] + " Transparenz", "", new ItemsCollection(opacities));
|
var tempAppearanceOpacityItem = new UIMenuListItem(Data.appearanceNames[i] + " Transparenz", "", new ItemsCollection(opacities));
|
||||||
tempAppearanceOpacityItem.Index = 100;
|
tempAppearanceOpacityItem.Index = 100;
|
||||||
appearanceOpacityItems.push(tempAppearanceOpacityItem);
|
appearanceOpacityItems.push(tempAppearanceOpacityItem);
|
||||||
creatorAppearanceMenu.AddItem(tempAppearanceOpacityItem);
|
creatorAppearanceMenu.AddItem(tempAppearanceOpacityItem);
|
||||||
|
tempAppearanceOpacityItem.Index = loadedAppearanceOpacity[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
creatorAppearanceMenu.AddItem(new UIMenuItem("Zuf\u00e4llig", "~r~Zuf\u00e4lliges Aussehen."));
|
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt das Aussehen zurück.");
|
||||||
creatorAppearanceMenu.AddItem(new UIMenuItem("Zur\u00fccksetzen", "~r~Setzt das Aussehen zur\u00fcck."));
|
creatorAppearanceMenu.AddItem(resetItem);
|
||||||
|
|
||||||
creatorAppearanceMenu.ItemSelect.on((item, index) => {
|
creatorAppearanceMenu.ItemSelect.on((item, index) => {
|
||||||
switch (item.Text) {
|
switch (item) {
|
||||||
case "Zuf\u00e4llig":
|
case resetItem:
|
||||||
for (let i = 0; i < Data.appearanceNames.length; i++) {
|
|
||||||
appearanceItems[i].Index = getRandomInt(0, mp.game.ped.getNumHeadOverlayValues(i) - 1);
|
|
||||||
appearanceOpacityItems[i].Index = getRandomInt(0, 100);
|
|
||||||
updateAppearance(i);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "Zur\u00fccksetzen":
|
|
||||||
resetAppearanceMenu();
|
resetAppearanceMenu();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
creatorAppearanceMenu.ListChange.on((item, listIndex) => {
|
creatorAppearanceMenu.ListChange.on((item, listIndex) => {
|
||||||
let idx = (creatorAppearanceMenu.CurrentSelection % 2 === 0) ? (creatorAppearanceMenu.CurrentSelection / 2) : Math.floor(creatorAppearanceMenu.CurrentSelection / 2);
|
var idx = (creatorAppearanceMenu.CurrentSelection % 2 === 0) ? (creatorAppearanceMenu.CurrentSelection / 2) : Math.floor(creatorAppearanceMenu.CurrentSelection / 2);
|
||||||
updateAppearance(idx);
|
updateAppearance(idx);
|
||||||
});
|
});
|
||||||
|
|
||||||
creatorAppearanceMenu.ParentMenu = creatorMainMenu;
|
return creatorAppearanceMenu;
|
||||||
creatorAppearanceMenu.Visible = false;
|
}
|
||||||
creatorMenus.push(creatorAppearanceMenu);
|
|
||||||
// CREATOR APPEARANCE END
|
|
||||||
|
|
||||||
// CREATOR HAIR & COLORS
|
function updateAppearance(index) {
|
||||||
let hairItem;
|
var overlayID = (appearanceItems[index].Index === 0) ? 255 : appearanceItems[index].Index - 1;
|
||||||
let hairColorItem;
|
localPlayer.setHeadOverlay(index, overlayID, appearanceOpacityItems[index].Index * 0.01, colorForOverlayIdx(index), 0);
|
||||||
let hairHighlightItem;
|
}
|
||||||
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);
|
function resetAppearanceMenu(refresh = false) {
|
||||||
fillHairMenu();
|
for (var i = 0; i < Data.appearanceNames.length; i++) {
|
||||||
|
appearanceItems[i].Index = loadedAppearance[i];
|
||||||
|
appearanceOpacityItems[i].Index = loadedAppearanceOpacity[i];
|
||||||
|
updateAppearance(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getHairAndColorMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||||
|
|
||||||
|
var creatorHairMenu = new Menu("Haar & Farben", "", new Point(0, screenRes.y / 3), null, null);
|
||||||
|
creatorHairMenu.Visible = false;
|
||||||
|
|
||||||
|
var eyebrowColorItem = new UIMenuListItem("Augenbrauen Farbe", "Farbe deiner Augenbrauen", new ItemsCollection(hairColors));
|
||||||
|
creatorHairMenu.AddItem(eyebrowColorItem);
|
||||||
|
|
||||||
|
var beardColorItem = new UIMenuListItem("Farbe der Gesichtsbehaarung", "Farbe deiner Gesichtsbehaarung", new ItemsCollection(hairColors));
|
||||||
|
creatorHairMenu.AddItem(beardColorItem);
|
||||||
|
|
||||||
|
var eyeColorItem = new UIMenuListItem("Augenfarbe", "Farbe deiner Augen", new ItemsCollection(Data.eyeColors));
|
||||||
|
creatorHairMenu.AddItem(eyeColorItem);
|
||||||
|
|
||||||
|
var blushColorItem = new UIMenuListItem("Rouge", "Farbe des Rouges.", new ItemsCollection(blushColors));
|
||||||
|
creatorHairMenu.AddItem(blushColorItem);
|
||||||
|
|
||||||
|
var lipstickColorItem = new UIMenuListItem("Lippenstift Farbe", "Farbe deines Lippenstifts.", new ItemsCollection(lipstickColors));
|
||||||
|
creatorHairMenu.AddItem(lipstickColorItem);
|
||||||
|
|
||||||
|
var chestHairColorItem = new UIMenuListItem("Farbe der Brustbehaarung", "Farbe deiner Brustbehaarung", new ItemsCollection(hairColors));
|
||||||
|
creatorHairMenu.AddItem(chestHairColorItem);
|
||||||
|
|
||||||
|
var cancelItem = new UIMenuItem("Zurücksetzen", "~r~Zurücksetzen von Haar & Farben");
|
||||||
|
creatorHairMenu.AddItem(cancelItem);
|
||||||
|
|
||||||
creatorHairMenu.ItemSelect.on((item, index) => {
|
creatorHairMenu.ItemSelect.on((item, index) => {
|
||||||
switch (item.Text) {
|
switch (item) {
|
||||||
case "Zuf\u00e4llig":
|
case cancelItem:
|
||||||
//hairItem.Index = getRandomInt(0, Data.hairList[currentGender].length - 1);
|
eyebrowColorItem.Index = characterData.EyebrowColor;
|
||||||
//hairColorItem.Index = getRandomInt(0, Data.maxHairColor);
|
beardColorItem.Index = characterData.BeardColor;
|
||||||
//hairHighlightItem.Index = getRandomInt(0, Data.maxHairColor);
|
eyeColorItem.Index = characterData.EyeColor;
|
||||||
eyebrowColorItem.Index = getRandomInt(0, Data.maxHairColor);
|
blushColorItem.Index = characterData.BlushColor;
|
||||||
beardColorItem.Index = getRandomInt(0, Data.maxHairColor);
|
lipstickColorItem.Index = characterData.LipstickColor;
|
||||||
eyeColorItem.Index = getRandomInt(0, Data.maxEyeColor);
|
chestHairColorItem.Index = characterData.ChestHairColor;
|
||||||
blushColorItem.Index = getRandomInt(0, Data.maxBlushColor);
|
|
||||||
lipstickColorItem.Index = getRandomInt(0, Data.maxLipstickColor);
|
|
||||||
chestHairColorItem.Index = getRandomInt(0, Data.maxHairColor);
|
|
||||||
updateHairAndColors();
|
updateHairAndColors();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "Zur\u00fccksetzen":
|
|
||||||
resetHairAndColorsMenu();
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
creatorHairMenu.ListChange.on((item, listIndex) => {
|
creatorHairMenu.ListChange.on((item, listIndex) => {
|
||||||
if (item === hairItem) {
|
|
||||||
let hairStyle = Data.hairList[currentGender][listIndex];
|
|
||||||
localPlayer.setComponentVariation(2, hairStyle.ID, 0, 2);
|
|
||||||
} else {
|
|
||||||
switch (creatorHairMenu.CurrentSelection) {
|
switch (creatorHairMenu.CurrentSelection) {
|
||||||
/*case 1: // hair color
|
|
||||||
localPlayer.setHairColor(listIndex, hairHighlightItem.Index);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 2: // hair highlight color
|
|
||||||
localPlayer.setHairColor(hairColorItem.Index, listIndex);
|
|
||||||
break;*/
|
|
||||||
|
|
||||||
case 0: // eyebrow color
|
case 0: // eyebrow color
|
||||||
localPlayer.setHeadOverlayColor(2, 1, listIndex, 0);
|
localPlayer.setHeadOverlayColor(2, 1, listIndex, 0);
|
||||||
@@ -613,45 +454,78 @@ export default function charSurgery(globalData: IGlobalData) {
|
|||||||
localPlayer.setHeadOverlayColor(10, 1, listIndex, 0);
|
localPlayer.setHeadOverlayColor(10, 1, listIndex, 0);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return creatorHairMenu;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
creatorHairMenu.ParentMenu = creatorMainMenu;
|
function updateHairAndColors() {
|
||||||
creatorHairMenu.Visible = false;
|
localPlayer.setEyeColor(newCharacter.EyeColor);
|
||||||
creatorMenus.push(creatorHairMenu);
|
localPlayer.setHeadOverlayColor(1, 1, newCharacter.BeardColor, 0);
|
||||||
// CREATOR HAIR & COLORS END
|
localPlayer.setHeadOverlayColor(2, 1, newCharacter.EyebrowColor, 0);
|
||||||
|
localPlayer.setHeadOverlayColor(5, 2, newCharacter.BlushColor, 0);
|
||||||
var character;
|
localPlayer.setHeadOverlayColor(8, 2, newCharacter.LipstickColor, 0);
|
||||||
// EVENTS
|
localPlayer.setHeadOverlayColor(10, 1, newCharacter.ChestHairColor, 0);
|
||||||
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);
|
|
||||||
|
|
||||||
globalData.InMenu = true;
|
|
||||||
globalData.InMenu = true;
|
|
||||||
|
|
||||||
creatorMainMenu.Visible = true;
|
|
||||||
mp.gui.chat.show(false);
|
|
||||||
mp.game.ui.displayRadar(false);
|
|
||||||
mp.game.ui.displayHud(false);
|
|
||||||
localPlayer.clearTasksImmediately();
|
|
||||||
localPlayer.freezePosition(true);
|
|
||||||
mp.game.cam.renderScriptCams(true, false, 0, true, false);
|
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
|
||||||
/*
|
function colorForOverlayIdx(index) {
|
||||||
mp.events.add("sendToServer", (characterData) => {
|
var color;
|
||||||
mp.events.callRemote("creatorSave", characterData);
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
|
|
||||||
creatorMenus.forEach(menu => {
|
switch (index) {
|
||||||
menu.Visible = false;
|
case 1:
|
||||||
})
|
color = newCharacter.BeardColor;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
color = newCharacter.EyebrowColor;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 5:
|
||||||
|
color = newCharacter.BlushColor;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 8:
|
||||||
|
color = newCharacter.LipstickColor;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 10:
|
||||||
|
color = newCharacter.ChestHairColor;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
color = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
|
function applyCreatorOutfit() {
|
||||||
|
if (newCharacter.Gender === false) {
|
||||||
|
localPlayer.setDefaultComponentVariation();
|
||||||
|
localPlayer.setComponentVariation(3, 15, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(4, 21, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(6, 34, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(8, 15, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(11, 15, 0, 2);
|
||||||
|
} else {
|
||||||
|
localPlayer.setDefaultComponentVariation();
|
||||||
|
localPlayer.setComponentVariation(3, 15, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(4, 10, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(6, 35, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(8, 15, 0, 2);
|
||||||
|
localPlayer.setComponentVariation(11, 15, 0, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function leaveCreator() {
|
||||||
|
mp.gui.chat.show(true);
|
||||||
|
mp.game.ui.displayRadar(true);
|
||||||
|
mp.game.ui.displayHud(true);
|
||||||
|
localPlayer.freezePosition(false);
|
||||||
|
mp.game.cam.renderScriptCams(false, false, 0, true, false);
|
||||||
|
creatorCamera.destroy(true);
|
||||||
|
mp.events.callRemote("surgeryLeave");
|
||||||
|
globalData.InMenu = false;
|
||||||
|
globalData.InMenu = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user