Merge branch 'develop' of ssh://development.life-of-german.org:451/log-gtav/reallife-gamemode into develop
This commit is contained in:
@@ -2,32 +2,32 @@
|
||||
const mothers = [21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 45];
|
||||
const fatherNames = ["Benjamin", "Daniel", "Joshua", "Noah", "Andrew", "Juan", "Alex", "Isaac", "Evan", "Ethan", "Vincent", "Angel", "Diego", "Adrian", "Gabriel", "Michael", "Santiago", "Kevin", "Louis", "Samuel", "Anthony", "Claude", "Niko", "John"];
|
||||
const motherNames = ["Hannah", "Aubrey", "Jasmine", "Gisele", "Amelia", "Isabella", "Zoe", "Ava", "Camila", "Violet", "Sophia", "Evelyn", "Nicole", "Ashley", "Gracie", "Brianna", "Natalie", "Olivia", "Elizabeth", "Charlotte", "Emma", "Misty"];
|
||||
const featureNames = ["Nose Width", "Nose Bottom Height", "Nose Tip Length", "Nose Bridge Depth", "Nose Tip Height", "Nose Broken", "Brow Height", "Brow Depth", "Cheekbone Height", "Cheekbone Width", "Cheek Depth", "Eye Size", "Lip Thickness", "Jaw Width", "Jaw Shape", "Chin Height", "Chin Depth", "Chin Width", "Chin Indent", "Neck Width"];
|
||||
const appearanceNames = ["Blemishes", "Facial Hair", "Eyebrows", "Ageing", "Makeup", "Blush", "Complexion", "Sun Damage", "Lipstick", "Moles & Freckles", "Chest Hair"];
|
||||
const featureNames = ["Nasenbreite", "Nasenbodenhöhe", "Nasenspitzenlänge", "Nasenrückentiefe", "Nasenspitzenhöhe", "Nasenbruch", "Augenbrauenhöhe", "Augenbrauentiefe", "Wangenknochenhöhe", "Wangenknochenbreite", "Wangentiefe", "Augengröße", "Lippenvolumen", "Kieferweite", "Kieferform", "Kinnhöhe", "Kinntiefe", "Kinnweite", "Kinnbeule", "Nackenbreite"];
|
||||
const appearanceNames = ["Gesichtsmakel", "Gesichtsbehaarung", "Augenbrauen", "Alterung", "Makeup", "Errötungen", "Teint", "Sonnenschaden", "Lippenstift", "Muttermale & Sommersprossen", "Brustbehaarung"];
|
||||
|
||||
const appearanceItemNames = [
|
||||
// blemishes
|
||||
["None", "Measles", "Pimples", "Spots", "Break Out", "Blackheads", "Build Up", "Pustules", "Zits", "Full Acne", "Acne", "Cheek Rash", "Face Rash", "Picker", "Puberty", "Eyesore", "Chin Rash", "Two Face", "T Zone", "Greasy", "Marked", "Acne Scarring", "Full Acne Scarring", "Cold Sores", "Impetigo"],
|
||||
["Keine", "Masern", "Pickel", "Flecken", "Ausbruch", "Mitesser", "Aufbau", "Pusteln", "Pickel", "Vollakne", "Akne", "Wangenausschlag", "Gesichtsausschlag", "Picker", "Pubertät", "Schandfleck", "Kinnausschlag", "Zwei Gesichter", "T Zone", "Fettig", "Gekennzeichnet", "Aknenarben", "Vollakne Narben", "Fieberbläschen", "Eiterflechte"],
|
||||
// facial hair
|
||||
["None", "Light Stubble", "Balbo", "Circle Beard", "Goatee", "Chin", "Chin Fuzz", "Pencil Chin Strap", "Scruffy", "Musketeer", "Mustache", "Trimmed Beard", "Stubble", "Thin Circle Beard", "Horseshoe", "Pencil and 'Chops", "Chin Strap Beard", "Balbo and Sideburns", "Mutton Chops", "Scruffy Beard", "Curly", "Curly & Deep Stranger", "Handlebar", "Faustic", "Otto & Patch", "Otto & Full Stranger", "Light Franz", "The Hampstead", "The Ambrose", "Lincoln Curtain"],
|
||||
["Keine", "Leichte Stoppeln", "Balbo", "Kreis Bart", "Spitzbart", "Kinn", "Kinn Flaum", "Pencil Chin Strap", "Scruffy", "Musketier", "Schnurrbart", "Getrimmt", "Stoppelbart", "Dünner Kreis Bart", "Hufeisen", "Koteletten", "Kinnriemen Bart", "Balbo und Koteletten", "Koteletten 2", "Schäbiger Bart", "Lockig", "Lockig", "Lenker Bart", "Faustisch", "Otto & Patch", "Otto & Full Stranger", "Light Franz", "The Hampstead", "Der Ambrosius", "Lincoln Curtain"],
|
||||
// eyebrows
|
||||
["None", "Balanced", "Fashion", "Cleopatra", "Quizzical", "Femme", "Seductive", "Pinched", "Chola", "Triomphe", "Carefree", "Curvaceous", "Rodent", "Double Tram", "Thin", "Penciled", "Mother Plucker", "Straight and Narrow", "Natural", "Fuzzy", "Unkempt", "Caterpillar", "Regular", "Mediterranean", "Groomed", "Bushels", "Feathered", "Prickly", "Monobrow", "Winged", "Triple Tram", "Arched Tram", "Cutouts", "Fade Away", "Solo Tram"],
|
||||
["Keine", "Ausbalanciert", "Fashion", "Kleopatra", "Fragend", "Weiblich", "Verführerisch", "Geklemmt", "Chola", "Triomphe", "Sorglos", "Kurvenreich", "Nagetier", "Double Tram", "Dünn", "Gezeichnet", "Mother Plucker", "Gerade und schmal", "Natürlich", "Flaumig", "Ungepflegt", "Raupe", "Regulär", "Mediterran", "Gepflegt", "Scheffel", "Gefiedert", "Stachelig", "Monobraue", "Geflügelt", "Triple Tram", "Arched Tram", "Ausschnitte", "Verblassen", "Solo Tram"],
|
||||
// ageing
|
||||
["None", "Crow's Feet", "First Signs", "Middle Aged", "Worry Lines", "Depression", "Distinguished", "Aged", "Weathered", "Wrinkled", "Sagging", "Tough Life", "Vintage", "Retired", "Junkie", "Geriatric"],
|
||||
["Keine", "Krähenfüße ", "Erste Anzeichen", "Im mittleren Alter", "Sorgenfalten", "Depression", "Ausgezeichnet", "Alt", "Verwittert", "Faltig", "Durchhängen", "Hartes Leben", "Vintage", "Im Ruhestand", "Junkie", "Geriatrisch"],
|
||||
// makeup
|
||||
["None", "Smoky Black", "Bronze", "Soft Gray", "Retro Glam", "Natural Look", "Cat Eyes", "Chola", "Vamp", "Vinewood Glamour", "Bubblegum", "Aqua Dream", "Pin Up", "Purple Passion", "Smoky Cat Eye", "Smoldering Ruby", "Pop Princess"],
|
||||
["Keine", "Smoky Black", "Bronze", "Soft Gray", "Retro Glam", "Natural Look", "Cat Eyes", "Chola", "Vamp", "Vinewood Glamour", "Bubblegum", "Aqua Dream", "Pin Up", "Purple Passion", "Smoky Cat Eye", "Smoldering Ruby", "Pop Princess"],
|
||||
// blush
|
||||
["None", "Full", "Angled", "Round", "Horizontal", "High", "Sweetheart", "Eighties"],
|
||||
["Keine", "Voll", "Abgewinkelt", "Rund", "Horizontal", "Hoch", "Sweetheart", "Achtziger Jahre"],
|
||||
// complexion
|
||||
["None", "Rosy Cheeks", "Stubble Rash", "Hot Flush", "Sunburn", "Bruised", "Alchoholic", "Patchy", "Totem", "Blood Vessels", "Damaged", "Pale", "Ghostly"],
|
||||
["Keine", "Rosige Wangen", "Stoppelausschlag", "Hitzewallungen", "Sonnenbrand", "Gequetscht", "AlkoholikerIn", "Lückenhaft", "Totem", "Blutgefäße", "Beschädigt", "Blass", "Gespenstisch"],
|
||||
// sun damage
|
||||
["None", "Uneven", "Sandpaper", "Patchy", "Rough", "Leathery", "Textured", "Coarse", "Rugged", "Creased", "Cracked", "Gritty"],
|
||||
["Keine", "Ungleichmäßig", "Sandpapier", "Lückenhaft", "Rau", "Lederig", "Strukturiert", "Grob", "Robust", "Zerknittert", "Gebrochen", "Grobkörnig"],
|
||||
// lipstick
|
||||
["None", "Color Matte", "Color Gloss", "Lined Matte", "Lined Gloss", "Heavy Lined Matte", "Heavy Lined Gloss", "Lined Nude Matte", "Liner Nude Gloss", "Smudged", "Geisha"],
|
||||
["Keine", "Color Matte", "Color Gloss", "Lined Matte", "Lined Gloss", "Heavy Lined Matte", "Heavy Lined Gloss", "Lined Nude Matte", "Liner Nude Gloss", "Smudged", "Geisha"],
|
||||
// freckles
|
||||
["None", "Cherub", "All Over", "Irregular", "Dot Dash", "Over the Bridge", "Baby Doll", "Pixie", "Sun Kissed", "Beauty Marks", "Line Up", "Modelesque", "Occasional", "Speckled", "Rain Drops", "Double Dip", "One Sided", "Pairs", "Growth"],
|
||||
["Keine", "Cherub", "All Over", "Irregular", "Dot Dash", "Over the Bridge", "Baby Doll", "Pixie", "Sun Kissed", "Beauty Marks", "Line Up", "Modelesque", "Occasional", "Speckled", "Rain Drops", "Double Dip", "One Sided", "Pairs", "Growth"],
|
||||
// chest hair
|
||||
["None", "Natural", "The Strip", "The Tree", "Hairy", "Grisly", "Ape", "Groomed Ape", "Bikini", "Lightning Bolt", "Reverse Lightning", "Love Heart", "Chestache", "Happy Face", "Skull", "Snail Trail", "Slug and Nips", "Hairy Arms"]
|
||||
["Keine", "Natural", "The Strip", "The Tree", "Hairy", "Grisly", "Ape", "Groomed Ape", "Bikini", "Lightning Bolt", "Reverse Lightning", "Love Heart", "Chestache", "Happy Face", "Skull", "Snail Trail", "Slug and Nips", "Hairy Arms"]
|
||||
];
|
||||
|
||||
const hairList = [
|
||||
|
||||
@@ -23,6 +23,11 @@ const creatorCoords = {
|
||||
cameraLookAt: new mp.Vector3(402.8664, -996.4108, -98.5)
|
||||
};
|
||||
|
||||
const surgeryCoords = {
|
||||
camera: new mp.Vector3(265.6026, -1340.2378, 25.000),
|
||||
cameraLookAt: new mp.Vector3(266.472, -1339.1357, 25.000)
|
||||
};
|
||||
|
||||
const localPlayer = mp.players.local;
|
||||
|
||||
export default function charCreator(globalData: IGlobalData) {
|
||||
@@ -218,7 +223,7 @@ export default function charCreator(globalData: IGlobalData) {
|
||||
let genderItem = new UIMenuListItem("Geschlecht", "~r~Dies setzt deine Einstellungen zur\u00fcck.", new ItemsCollection(["M\u00e4nnlich", "Weiblich"]));
|
||||
creatorMainMenu.AddItem(genderItem);
|
||||
creatorMainMenu.AddItem(new UIMenuItem("Eltern", "Eltern des Charakters."));
|
||||
creatorMainMenu.AddItem(new UIMenuItem("Gesichtsz\u00fcge", "Gesichtsz\u00fcge des Charakters."));
|
||||
creatorMainMenu.AddItem(new UIMenuItem("Gesichtsmerkmale", "Gesichtsmerkmale des Charakters."));
|
||||
creatorMainMenu.AddItem(new UIMenuItem("Aussehen", "Aussehen des Charakters."));
|
||||
creatorMainMenu.AddItem(new UIMenuItem("Haar & Farben", "Haare & Farben deines Charakters."));
|
||||
|
||||
@@ -308,30 +313,29 @@ export default function charCreator(globalData: IGlobalData) {
|
||||
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);
|
||||
mp.events.callRemote("creatorSave", currentGender, JSON.stringify(parentData), JSON.stringify(featureData), JSON.stringify(appearanceData), JSON.stringify(hairAndColors));
|
||||
globalData.InMenu = false;
|
||||
globalData.InMenu = false;
|
||||
leaveCreator();
|
||||
break;
|
||||
|
||||
case 7:
|
||||
mp.events.callRemote("creator_Leave");
|
||||
globalData.InMenu = false;
|
||||
globalData.InMenu = false;
|
||||
if (isSurgery) mp.events.callRemote("surgeryLeave");
|
||||
leaveCreator();
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
creatorMainMenu.MenuClose.on(() => {
|
||||
mp.events.callRemote("creator_Leave");
|
||||
globalData.InMenu = false;
|
||||
globalData.InMenu = false;
|
||||
if (isSurgery) {
|
||||
mp.events.callRemote("surgeryLeave");
|
||||
leaveCreator();
|
||||
} else {
|
||||
creatorMainMenu.Open();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
creatorMainMenu.Visible = false;
|
||||
@@ -384,7 +388,7 @@ export default function charCreator(globalData: IGlobalData) {
|
||||
let features = [];
|
||||
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++) {
|
||||
let tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
|
||||
@@ -394,7 +398,7 @@ export default function charCreator(globalData: IGlobalData) {
|
||||
}
|
||||
|
||||
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) => {
|
||||
switch (item.Text) {
|
||||
@@ -552,12 +556,26 @@ export default function charCreator(globalData: IGlobalData) {
|
||||
creatorMenus.push(creatorHairMenu);
|
||||
// CREATOR HAIR & COLORS END
|
||||
|
||||
var isSurgery = false;
|
||||
|
||||
// EVENTS
|
||||
mp.events.add("toggleCreator", () => {
|
||||
if (creatorCamera === undefined) {
|
||||
mp.events.add("toggleCreator", (charExists) => {
|
||||
if (!mp.cameras.exists(creatorCamera)) {
|
||||
if (charExists) {
|
||||
creatorCamera = mp.cameras.new("creatorCamera", surgeryCoords.camera, new mp.Vector3(0, 0, 0), 45);
|
||||
creatorCamera.pointAtCoord(surgeryCoords.cameraLookAt.x, surgeryCoords.cameraLookAt.y, surgeryCoords.cameraLookAt.z);
|
||||
creatorCamera.setActive(true);
|
||||
isSurgery = true;
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
|
||||
resetAppearanceMenu();
|
||||
resetFeaturesMenu();
|
||||
resetHairAndColorsMenu();
|
||||
resetParentsMenu();
|
||||
|
||||
globalData.InMenu = true;
|
||||
globalData.InMenu = true;
|
||||
@@ -569,14 +587,29 @@ export default function charCreator(globalData: IGlobalData) {
|
||||
localPlayer.clearTasksImmediately();
|
||||
localPlayer.freezePosition(true);
|
||||
mp.game.cam.renderScriptCams(true, false, 0, true, false);
|
||||
applyCreatorOutfit();
|
||||
|
||||
}
|
||||
});
|
||||
|
||||
mp.events.add("sendToServer", (characterData) => {
|
||||
mp.events.callRemote("creatorSave", characterData);
|
||||
|
||||
});
|
||||
|
||||
creatorMenus.forEach(menu => {
|
||||
menu.Visible = false;
|
||||
})
|
||||
|
||||
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();
|
||||
globalData.InMenu = false;
|
||||
globalData.InMenu = false;
|
||||
if (isSurgery) isSurgery = false;
|
||||
}
|
||||
}
|
||||
534
ReallifeGamemode.Client/CharCreator/surgery.ts
Normal file
534
ReallifeGamemode.Client/CharCreator/surgery.ts
Normal file
@@ -0,0 +1,534 @@
|
||||
import * as NativeUI from '../libs/NativeUI';
|
||||
import * as Data from './data';
|
||||
|
||||
const Menu = NativeUI.Menu;
|
||||
const UIMenuItem = NativeUI.UIMenuItem;
|
||||
const UIMenuListItem = NativeUI.UIMenuListItem;
|
||||
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
|
||||
const BadgeStyle = NativeUI.BadgeStyle;
|
||||
const Point = NativeUI.Point;
|
||||
const ItemsCollection = NativeUI.ItemsCollection;
|
||||
const Color = NativeUI.Color;
|
||||
const Font = NativeUI.Font;
|
||||
var screenRes = mp.game.graphics.getScreenResolution(0, 0);
|
||||
|
||||
const creatorCoords = {
|
||||
camera: new mp.Vector3(265.6026, -1340.2378, 25.000),
|
||||
cameraLookAt: new mp.Vector3(266.472, -1339.1357, 25.000)
|
||||
};
|
||||
|
||||
const localPlayer = mp.players.local;
|
||||
|
||||
export default function charSurgery(globalData: IGlobalData) {
|
||||
|
||||
var creatorCamera: CameraMp;
|
||||
var activeSurgery: boolean = false;
|
||||
var saveCharacter: PlayerCharacterData;
|
||||
var characterData: PlayerCharacterData;
|
||||
|
||||
function getRandomInt(min, max) {
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
var creatorMainMenu: NativeUI.Menu;
|
||||
var debugString = [0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0];
|
||||
|
||||
mp.events.add("render", () => {
|
||||
mp.game.graphics.drawText(debugString.toString(), [0.5, 0.1],
|
||||
{
|
||||
font: 4,
|
||||
color: [255, 255, 255, 255],
|
||||
scale: [0.5, 0.5],
|
||||
outline: true,
|
||||
centre: false
|
||||
})
|
||||
});
|
||||
|
||||
mp.events.add("toggleSurgery", (jsonCharacterData: string) => {
|
||||
if (!mp.cameras.exists(creatorCamera)) {
|
||||
activeSurgery = true;
|
||||
debugString[0] = 1;
|
||||
characterData = JSON.parse(jsonCharacterData);
|
||||
saveCharacter = characterData;
|
||||
debugString[1] = 2;
|
||||
loadCharacterData();
|
||||
debugString[2] = 3;
|
||||
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;
|
||||
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);
|
||||
debugString[3] = 4;
|
||||
applyCreatorOutfit();
|
||||
getCharacterMainMenu();
|
||||
}
|
||||
});
|
||||
|
||||
var loadedFeatures;
|
||||
var loadedAppearance;
|
||||
var loadedAppearanceOpacity;
|
||||
|
||||
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
|
||||
];
|
||||
loadedAppearance = [
|
||||
characterData.Blemishes,
|
||||
characterData.FacialHair,
|
||||
characterData.Eyebrows,
|
||||
characterData.Ageing,
|
||||
characterData.Makeup,
|
||||
characterData.Blush,
|
||||
characterData.Complexion,
|
||||
characterData.SunDamage,
|
||||
characterData.Lipstick,
|
||||
characterData.Freckles,
|
||||
characterData.ChestHair
|
||||
];
|
||||
loadedAppearanceOpacity = [
|
||||
characterData.BlemishesOpacity,
|
||||
characterData.FacialHairOpacity,
|
||||
characterData.EyebrowsOpacity,
|
||||
characterData.AgeingOpacity,
|
||||
characterData.MakeupOpacity,
|
||||
characterData.BlushOpacity,
|
||||
characterData.ComplexionOpacity,
|
||||
characterData.SunDamageOpacity,
|
||||
characterData.LipstickOpacity,
|
||||
characterData.FrecklesOpacity,
|
||||
characterData.ChestHairOpacity
|
||||
];
|
||||
}
|
||||
|
||||
//HAUPTMENÜ
|
||||
function getCharacterMainMenu(): NativeUI.Menu {
|
||||
|
||||
creatorMainMenu = new Menu("Chirurg", "", new Point(0, screenRes.y / 3), null, null);
|
||||
creatorMainMenu.Visible = false;
|
||||
debugString[4] = 5;
|
||||
var genderItem = new UIMenuListItem("Geschlecht", "~r~Dies setzt deine Einstellungen zurück.", new ItemsCollection(["Männlich", "Weiblich"]));
|
||||
creatorMainMenu.AddItem(genderItem);
|
||||
genderItem.Index = characterData.Gender == false ? 0 : 1;
|
||||
debugString[5] = 6;
|
||||
var parentsItem = new UIMenuItem("Eltern", "Eltern des Charakters.");
|
||||
creatorMainMenu.AddItem(parentsItem);
|
||||
creatorMainMenu.BindMenuToItem(getParentsMenu(creatorMainMenu), parentsItem);
|
||||
debugString[6] = 7;
|
||||
var featureItem = new UIMenuItem("Gesichtsmerkmale", "Gesichtsmerkmale des Charakters.")
|
||||
creatorMainMenu.AddItem(featureItem);
|
||||
creatorMainMenu.BindMenuToItem(getFeaturesMenu(creatorMainMenu), featureItem);
|
||||
debugString[7] = 8;
|
||||
var appearanceItem = new UIMenuItem("Aussehen", "Aussehen des Charakters.")
|
||||
creatorMainMenu.AddItem(appearanceItem);
|
||||
creatorMainMenu.BindMenuToItem(getAppearanceMenu(creatorMainMenu), appearanceItem);
|
||||
debugString[8] = 9;
|
||||
var hairAndColorItem = new UIMenuItem("Haar & Farben", "Haare & Farben deines Charakters.")
|
||||
creatorMainMenu.AddItem(hairAndColorItem);
|
||||
creatorMainMenu.BindMenuToItem(getHairAndColorMenu(creatorMainMenu), hairAndColorItem);
|
||||
debugString[9] = 10;
|
||||
|
||||
//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);
|
||||
|
||||
var saveItem = new UIMenuItem("Operieren", "Der Chirurg macht die Arbeit, lehn dich zurück");
|
||||
saveItem.BackColor = new Color(13, 71, 161);
|
||||
saveItem.HighlightedBackColor = new Color(25, 118, 210);
|
||||
creatorMainMenu.AddItem(saveItem);
|
||||
|
||||
creatorMainMenu.ListChange.on((item, listIndex) => {
|
||||
if (item === genderItem) {
|
||||
saveCharacter.Gender = <boolean>listIndex;
|
||||
mp.events.callRemote("creator_GenderChange", listIndex);
|
||||
|
||||
setTimeout(() => {
|
||||
localPlayer.clearTasksImmediately();
|
||||
applyCreatorOutfit();
|
||||
angleItem.Index = 0;
|
||||
resetParents();
|
||||
resetFeatures();
|
||||
resetAppearance();
|
||||
|
||||
}, 200);
|
||||
} else if (item === angleItem) {
|
||||
localPlayer.setHeading(parseFloat(angleItem.SelectedValue));
|
||||
localPlayer.clearTasksImmediately();
|
||||
}
|
||||
});
|
||||
|
||||
creatorMainMenu.MenuClose.on(() => {
|
||||
leaveCreator();
|
||||
});
|
||||
creatorMainMenu.Visible = true;
|
||||
return creatorMainMenu;
|
||||
}
|
||||
|
||||
var fatherItem: NativeUI.UIMenuListItem;
|
||||
var motherItem: NativeUI.UIMenuListItem;
|
||||
var similarityItem: NativeUI.UIMenuListItem;
|
||||
var skinSimilarityItem: NativeUI.UIMenuListItem;
|
||||
var creatorParentsMenu: NativeUI.Menu;
|
||||
|
||||
//MENÜ FÜR ELTERN
|
||||
function getParentsMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||
var similarities = [];
|
||||
for (var i = 0; i <= 100; i++) similarities.push(i + "%");
|
||||
|
||||
creatorParentsMenu = new Menu("Eltern", "", new Point(0, screenRes.y / 3), null, null);
|
||||
creatorParentsMenu.Visible = false;
|
||||
|
||||
fatherItem = new UIMenuListItem("Vater", "Dem Charakter sein Vadda.", new ItemsCollection(Data.fatherNames));
|
||||
creatorParentsMenu.AddItem(fatherItem);
|
||||
//fatherItem.Index = characterData.Father;
|
||||
|
||||
motherItem = new UIMenuListItem("Mutter", "Dem Charakter seine Mudda.", new ItemsCollection(Data.motherNames));
|
||||
creatorParentsMenu.AddItem(motherItem);
|
||||
//motherItem.Index = characterData.Mother;
|
||||
|
||||
similarityItem = new UIMenuListItem("\u00c4hnlichkeit", "\u00c4hnlichkeit zu den Eltern.\n(niedriger = feminin, h\u00f6her = maskulin)", new ItemsCollection(similarities));
|
||||
creatorParentsMenu.AddItem(similarityItem);
|
||||
//similarityItem.Index = characterData.Similarity;
|
||||
|
||||
skinSimilarityItem = new UIMenuListItem("Hautfarbe", "Hautfarben \u00c4hnlichkeit zu den Eltern.\n(niedriger = Mutter, h\u00f6her = Vater)", new ItemsCollection(similarities));
|
||||
creatorParentsMenu.AddItem(skinSimilarityItem);
|
||||
//skinSimilarityItem.Index = characterData.SkinSimilarity;
|
||||
|
||||
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt die Eltern zurück. :'(");
|
||||
creatorParentsMenu.AddItem(resetItem);
|
||||
|
||||
creatorParentsMenu.ItemSelect.on((item, index) => {
|
||||
if (item == resetItem) {
|
||||
resetParents();
|
||||
}
|
||||
});
|
||||
|
||||
creatorParentsMenu.ListChange.on((item, listIndex) => {
|
||||
updateParents();
|
||||
});
|
||||
|
||||
debugString[10] = 11;
|
||||
|
||||
return creatorParentsMenu;
|
||||
}
|
||||
|
||||
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 resetParents(refresh = false) {
|
||||
fatherItem.Index = 0;//characterData.Father.valueOf();
|
||||
motherItem.Index = 0;//characterData.Mother.valueOf();
|
||||
similarityItem.Index = (characterData.Gender == false) ? 100 : 0; //characterData.Similarity.valueOf();//
|
||||
skinSimilarityItem.Index = (characterData.Gender == false) ? 100 : 0;//characterData.SkinSimilarity.valueOf();
|
||||
|
||||
updateParents();
|
||||
if (refresh) creatorParentsMenu.RefreshIndex();
|
||||
}
|
||||
|
||||
//Menü für Gesichtsmerkmale
|
||||
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;
|
||||
debugString[6] = 7;
|
||||
for (var i = 0; i < Data.featureNames.length; i++) {
|
||||
var tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
|
||||
tempFeatureItem.Index = 100;
|
||||
featureItems.push(tempFeatureItem);
|
||||
creatorFeaturesMenu.AddItem(tempFeatureItem);
|
||||
//tempFeatureItem.Index = loadedFeatures[i];
|
||||
}
|
||||
|
||||
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt Gesichtsmerkmale zurück.");
|
||||
creatorFeaturesMenu.AddItem(resetItem);
|
||||
|
||||
creatorFeaturesMenu.ItemSelect.on((item, index) => {
|
||||
switch (item) {
|
||||
case resetItem:
|
||||
resetFeatures();
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
creatorFeaturesMenu.ListChange.on((item, listIndex) => {
|
||||
updateFaceFeature(featureItems.indexOf(item));
|
||||
});
|
||||
|
||||
debugString[11] = 12;
|
||||
return creatorFeaturesMenu;
|
||||
}
|
||||
|
||||
function resetFeatures() {
|
||||
for (let i = 0; i < Data.featureNames.length; i++) {
|
||||
featureItems[i].Index = 100;
|
||||
updateFaceFeature(i);
|
||||
}
|
||||
}
|
||||
|
||||
function updateFaceFeature(index) {
|
||||
localPlayer.setFaceFeature(index, parseFloat(featureItems[index].SelectedValue));
|
||||
}
|
||||
|
||||
var appearanceItems = [];
|
||||
var appearanceOpacityItems = [];
|
||||
//Menü für Aussehen
|
||||
function getAppearanceMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||
|
||||
|
||||
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;
|
||||
debugString[7] = 8;
|
||||
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);
|
||||
creatorAppearanceMenu.AddItem(tempAppearanceItem);
|
||||
//tempAppearanceItem.Index = loadedAppearance[i];
|
||||
|
||||
var tempAppearanceOpacityItem = new UIMenuListItem(Data.appearanceNames[i] + " Transparenz", "", new ItemsCollection(opacities));
|
||||
tempAppearanceOpacityItem.Index = 100;
|
||||
appearanceOpacityItems.push(tempAppearanceOpacityItem);
|
||||
creatorAppearanceMenu.AddItem(tempAppearanceOpacityItem);
|
||||
//tempAppearanceOpacityItem.Index = loadedAppearanceOpacity[i];
|
||||
}
|
||||
|
||||
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt das Aussehen zurück.");
|
||||
creatorAppearanceMenu.AddItem(resetItem);
|
||||
|
||||
creatorAppearanceMenu.ItemSelect.on((item, index) => {
|
||||
switch (item) {
|
||||
case resetItem:
|
||||
resetAppearance();
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
creatorAppearanceMenu.ListChange.on((item, listIndex) => {
|
||||
var idx = (creatorAppearanceMenu.CurrentSelection % 2 === 0) ? (creatorAppearanceMenu.CurrentSelection / 2) : Math.floor(creatorAppearanceMenu.CurrentSelection / 2);
|
||||
updateAppearance(idx);
|
||||
});
|
||||
debugString[12] = 13;
|
||||
return creatorAppearanceMenu;
|
||||
}
|
||||
|
||||
function updateAppearance(index) {
|
||||
var overlayID = (appearanceItems[index].Index === 0) ? 255 : appearanceItems[index].Index - 1;
|
||||
localPlayer.setHeadOverlay(index, overlayID, appearanceOpacityItems[index].Index * 0.01, colorForOverlayIdx(index), 0);
|
||||
}
|
||||
|
||||
function resetAppearance(refresh = false) {
|
||||
for (var i = 0; i < Data.appearanceNames.length; i++) {
|
||||
appearanceItems[i].Index = loadedAppearance[i];
|
||||
appearanceOpacityItems[i].Index = loadedAppearanceOpacity[i];
|
||||
updateAppearance(i);
|
||||
}
|
||||
}
|
||||
|
||||
// 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());
|
||||
|
||||
//Menü für Haar & Farben
|
||||
function getHairAndColorMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
|
||||
|
||||
var creatorHairMenu = new Menu("Haar & Farben", "", new Point(0, screenRes.y / 3), null, null);
|
||||
creatorHairMenu.Visible = false;
|
||||
debugString[8] = 9;
|
||||
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) => {
|
||||
switch (item) {
|
||||
case cancelItem:
|
||||
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();
|
||||
break;
|
||||
}
|
||||
});
|
||||
|
||||
creatorHairMenu.ListChange.on((item, listIndex) => {
|
||||
switch (creatorHairMenu.CurrentSelection) {
|
||||
|
||||
case 0: // eyebrow color
|
||||
localPlayer.setHeadOverlayColor(2, 1, listIndex, 0);
|
||||
break;
|
||||
|
||||
case 1: // facial hair color
|
||||
localPlayer.setHeadOverlayColor(1, 1, listIndex, 0);
|
||||
break;
|
||||
|
||||
case 2: // eye color
|
||||
localPlayer.setEyeColor(listIndex);
|
||||
break;
|
||||
|
||||
case 3: // blush color
|
||||
localPlayer.setHeadOverlayColor(5, 2, listIndex, 0);
|
||||
break;
|
||||
|
||||
case 4: // lipstick color
|
||||
localPlayer.setHeadOverlayColor(8, 2, listIndex, 0);
|
||||
break;
|
||||
|
||||
case 5: // chest hair color
|
||||
localPlayer.setHeadOverlayColor(10, 1, listIndex, 0);
|
||||
break;
|
||||
}
|
||||
});
|
||||
debugString[13] = 14;
|
||||
return creatorHairMenu;
|
||||
}
|
||||
|
||||
function updateHairAndColors() {
|
||||
localPlayer.setEyeColor(saveCharacter.EyeColor);
|
||||
localPlayer.setHeadOverlayColor(1, 1, saveCharacter.BeardColor, 0);
|
||||
localPlayer.setHeadOverlayColor(2, 1, saveCharacter.EyebrowColor, 0);
|
||||
localPlayer.setHeadOverlayColor(5, 2, saveCharacter.BlushColor, 0);
|
||||
localPlayer.setHeadOverlayColor(8, 2, saveCharacter.LipstickColor, 0);
|
||||
localPlayer.setHeadOverlayColor(10, 1, saveCharacter.ChestHairColor, 0);
|
||||
}
|
||||
|
||||
function colorForOverlayIdx(index) {
|
||||
var color;
|
||||
|
||||
switch (index) {
|
||||
case 1:
|
||||
color = saveCharacter.BeardColor;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
color = saveCharacter.EyebrowColor;
|
||||
break;
|
||||
|
||||
case 5:
|
||||
color = saveCharacter.BlushColor;
|
||||
break;
|
||||
|
||||
case 8:
|
||||
color = saveCharacter.LipstickColor;
|
||||
break;
|
||||
|
||||
case 10:
|
||||
color = saveCharacter.ChestHairColor;
|
||||
break;
|
||||
|
||||
default:
|
||||
color = 0;
|
||||
}
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
function applyCreatorOutfit() {
|
||||
if (saveCharacter.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() {
|
||||
activeSurgery = false;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -132,6 +132,17 @@ export default function (globalData: IGlobalData) {
|
||||
item.SetRightLabel(moneyFormat(Number((p.financialInterest * 100).toFixed(3))) + "%");
|
||||
paycheckMenu.AddItem(item);
|
||||
|
||||
item = new UIMenuItem("Gesamt");
|
||||
if (p.amount >= 0) {
|
||||
item.SetRightLabel("~g~+ $" + moneyFormat(Number(p.amount.toFixed(2))));
|
||||
} else {
|
||||
item.SetRightLabel("~r~- $" + moneyFormat(Number(p.amount.toFixed(2))));
|
||||
}
|
||||
item.BackColor = new Color(0, 0, 0);
|
||||
item.HighlightedBackColor = new Color(0, 0, 0);
|
||||
item.HighlightedForeColor = new Color(255, 255, 255);
|
||||
paycheckMenu.AddItem(item)
|
||||
|
||||
menu.AddItem(paycheckItem);
|
||||
menu.BindMenuToItem(paycheckMenu, paycheckItem);
|
||||
}
|
||||
|
||||
3
ReallifeGamemode.Client/dlcpacks/drafterintcept/dlc.rpf
Normal file
3
ReallifeGamemode.Client/dlcpacks/drafterintcept/dlc.rpf
Normal file
@@ -0,0 +1,3 @@
|
||||
version https://git-lfs.github.com/spec/v1
|
||||
oid sha256:a4100176763845d0d863b7e4782dd8ba3e316a078084704c80eba2e565b1edc6
|
||||
size 106824192
|
||||
62
ReallifeGamemode.Client/global.d.ts
vendored
62
ReallifeGamemode.Client/global.d.ts
vendored
@@ -95,3 +95,65 @@ declare type RentcarProperty = {
|
||||
Name: string;
|
||||
Price: number;
|
||||
}
|
||||
|
||||
declare type PlayerCharacterData = {
|
||||
Gender: boolean;
|
||||
Father: number;
|
||||
Mother: number;
|
||||
Similarity: number;
|
||||
SkinSimilarity: number;
|
||||
|
||||
NoseWidth: number;
|
||||
NoseBottomHeight: number;
|
||||
NoseTipLength: number;
|
||||
NoseBridgeDepth: number;
|
||||
NoseTipHeight: number;
|
||||
NoseBroken: number;
|
||||
BrowHeight: number;
|
||||
BrowDepth: number;
|
||||
CheekboneHeight: number;
|
||||
CheekboneWidth: number;
|
||||
CheekDepth: number;
|
||||
EyeSize: number;
|
||||
LipThickness: number;
|
||||
JawWidth: number;
|
||||
JawShape: number;
|
||||
ChinHeight: number;
|
||||
ChinDepth: number;
|
||||
ChinWidth: number;
|
||||
ChinIndent: number;
|
||||
NeckWidth: number;
|
||||
|
||||
Blemishes: number;
|
||||
BlemishesOpacity: number;
|
||||
FacialHair: number;
|
||||
FacialHairOpacity: number;
|
||||
Eyebrows: number;
|
||||
EyebrowsOpacity: number;
|
||||
Ageing: number;
|
||||
AgeingOpacity: number;
|
||||
Makeup: number;
|
||||
MakeupOpacity: number;
|
||||
Blush: number;
|
||||
BlushOpacity: number;
|
||||
Complexion: number;
|
||||
ComplexionOpacity: number;
|
||||
SunDamage: number;
|
||||
SunDamageOpacity: number;
|
||||
Lipstick: number;
|
||||
LipstickOpacity: number;
|
||||
Freckles: number;
|
||||
FrecklesOpacity: number;
|
||||
ChestHair: number;
|
||||
ChestHairOpacity: number;
|
||||
|
||||
Hair: number;
|
||||
HairColor: number;
|
||||
HairHighlightColor: number;
|
||||
EyebrowColor: number;
|
||||
BeardColor: number;
|
||||
EyeColor: number;
|
||||
BlushColor: number;
|
||||
LipstickColor: number;
|
||||
ChestHairColor: number;
|
||||
}
|
||||
@@ -271,6 +271,9 @@ ammunation(globalData);
|
||||
import handsup from './Player/handsup';
|
||||
handsup();
|
||||
|
||||
//import charSurgery from './CharCreator/surgery';
|
||||
//charSurgery(globalData);
|
||||
|
||||
import spawnschutz from './Player/spawnschutz';
|
||||
spawnschutz();
|
||||
|
||||
|
||||
@@ -98,5 +98,7 @@ export default function rentCar(globalData: IGlobalData) {
|
||||
|
||||
mp.events.add('abortRentcarTimer', () => {
|
||||
clearInterval(payTimer);
|
||||
totalBill = 0;
|
||||
totalTime = 0;
|
||||
});
|
||||
}
|
||||
@@ -1,5 +1,23 @@
|
||||
export default function waypointUtil() {
|
||||
mp.events.add("SERVER:Util_setWaypoint", (x, y) => {
|
||||
|
||||
let x_saved: number;
|
||||
let y_saved: number;
|
||||
let z_saved: number;
|
||||
let waypointSet: boolean;
|
||||
|
||||
mp.events.add("SERVER:Util_setWaypoint", (x, y, z) => {
|
||||
mp.game.ui.setNewWaypoint(x, y);
|
||||
});
|
||||
|
||||
mp.events.add("playerCreateWaypoint", (position) => {
|
||||
x_saved = position.x;
|
||||
y_saved = position.y;
|
||||
z_saved = position.z;
|
||||
waypointSet = true;
|
||||
mp.events.callRemote("SERVER:waypointToDriver", position.x, position.y);
|
||||
});
|
||||
|
||||
mp.events.add("playerRemoveWaypoint", () => {
|
||||
waypointSet = false;
|
||||
});
|
||||
}
|
||||
@@ -127,6 +127,8 @@ namespace ReallifeGamemode.Database.Entities
|
||||
|
||||
public int warn { get; set; } = 0;
|
||||
|
||||
public bool FreeSurgery { get; set; } = true;
|
||||
|
||||
[NotMapped]
|
||||
public Player Player
|
||||
{
|
||||
|
||||
2176
ReallifeGamemode.Database/Migrations/20210420165544_Surgery.Designer.cs
generated
Normal file
2176
ReallifeGamemode.Database/Migrations/20210420165544_Surgery.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
110
ReallifeGamemode.Database/Migrations/20210420165544_Surgery.cs
Normal file
110
ReallifeGamemode.Database/Migrations/20210420165544_Surgery.cs
Normal file
@@ -0,0 +1,110 @@
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
namespace ReallifeGamemode.Database.Migrations
|
||||
{
|
||||
public partial class Surgery : Migration
|
||||
{
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ChatLogs_Users_UserId",
|
||||
table: "ChatLogs");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ChatLogs_Factions_FactionId",
|
||||
table: "ChatLogs");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ChatLogs_Groups_GroupId",
|
||||
table: "ChatLogs");
|
||||
|
||||
migrationBuilder.AddColumn<bool>(
|
||||
name: "FreeSurgery",
|
||||
table: "Users",
|
||||
nullable: false,
|
||||
defaultValue: false);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "UserId",
|
||||
table: "ChatLogs",
|
||||
nullable: false,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ChatLogs_Users_UserId",
|
||||
table: "ChatLogs",
|
||||
column: "UserId",
|
||||
principalTable: "Users",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ChatLogs_Factions_FactionId",
|
||||
table: "ChatLogs",
|
||||
column: "FactionId",
|
||||
principalTable: "Factions",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ChatLogs_Groups_GroupId",
|
||||
table: "ChatLogs",
|
||||
column: "GroupId",
|
||||
principalTable: "Groups",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Cascade);
|
||||
}
|
||||
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ChatLogs_Users_UserId",
|
||||
table: "ChatLogs");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ChatLogs_Factions_FactionId",
|
||||
table: "ChatLogs");
|
||||
|
||||
migrationBuilder.DropForeignKey(
|
||||
name: "FK_ChatLogs_Groups_GroupId",
|
||||
table: "ChatLogs");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "FreeSurgery",
|
||||
table: "Users");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "UserId",
|
||||
table: "ChatLogs",
|
||||
type: "int",
|
||||
nullable: true,
|
||||
oldClrType: typeof(int));
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ChatLogs_Users_UserId",
|
||||
table: "ChatLogs",
|
||||
column: "UserId",
|
||||
principalTable: "Users",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ChatLogs_Factions_FactionId",
|
||||
table: "ChatLogs",
|
||||
column: "FactionId",
|
||||
principalTable: "Factions",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
|
||||
migrationBuilder.AddForeignKey(
|
||||
name: "FK_ChatLogs_Groups_GroupId",
|
||||
table: "ChatLogs",
|
||||
column: "GroupId",
|
||||
principalTable: "Groups",
|
||||
principalColumn: "Id",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1453,6 +1453,9 @@ namespace ReallifeGamemode.Database.Migrations
|
||||
b.Property<bool>("FlyingLicensePlane")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<bool>("FreeSurgery")
|
||||
.HasColumnType("tinyint(1)");
|
||||
|
||||
b.Property<int?>("GroupId")
|
||||
.HasColumnType("int");
|
||||
|
||||
|
||||
@@ -132,6 +132,11 @@ namespace ReallifeGamemode.Server.Bank
|
||||
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
if (player.GetUser().PlayedMinutes < 180)
|
||||
{
|
||||
player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
|
||||
return;
|
||||
}
|
||||
if (player.GetUser(dbContext) == target.GetUser(dbContext))
|
||||
{
|
||||
player.SendNotification($"~r~Du kannst dir selber kein Geld überweisen.");
|
||||
|
||||
@@ -314,6 +314,12 @@ namespace ReallifeGamemode.Server.Commands
|
||||
player.TriggerEvent("toggleTSupportMode", false);
|
||||
player.SetData("SAdminduty", false);
|
||||
ChatService.SendMessage(player, "!{#ee4d2e}** " + "Du befindest dich nicht mehr im T-Support");
|
||||
|
||||
if (user.GetData<bool>("adminUnshow") == true)
|
||||
{
|
||||
user.SetData("adminUnshow", false);
|
||||
player.TriggerEvent("toggleAdminUnshowMode", false);
|
||||
}
|
||||
}
|
||||
user.SetBlipAndNametagColor();
|
||||
}
|
||||
|
||||
@@ -371,22 +371,22 @@ namespace ReallifeGamemode.Server.Events
|
||||
//Stadthalle
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[1].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.stadthalleVehicleProperties), "stadthalle");
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.stadthalleVehicleProperties), "lamesa");
|
||||
}
|
||||
//Knast
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[2].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.knastVehicleProperties), "knast");
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.knastVehicleProperties), "stadthalle");
|
||||
}
|
||||
//Paleto
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[3].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.paletoVehicleProperties), "paleto");
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.paletoVehicleProperties), "knast");
|
||||
}
|
||||
//Lamesa
|
||||
else if (player.Position.DistanceTo(PositionManager.rentcarPoints[4].Position) <= 1.5)
|
||||
{
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.paletoVehicleProperties), "lamesa");
|
||||
player.TriggerEvent("showRentcarMenu", JsonConvert.SerializeObject(Rentcar.paletoVehicleProperties), "paleto");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -583,6 +583,34 @@ namespace ReallifeGamemode.Server.Events
|
||||
nearestAmmunationPoint.Ammunation.LoadShopNUI(player);
|
||||
}
|
||||
}
|
||||
if (CharacterCreator.surgeryPoint.DistanceTo(player.Position) <= 1.5)
|
||||
{
|
||||
var freeSurgery = player.GetUser().FreeSurgery;
|
||||
if(freeSurgery == false && player.GetUser().BankAccount.Balance < 15000)
|
||||
{
|
||||
ChatService.ErrorMessage(player, "Du benötigst $15.000 auf dem Bankkonto um die Operation durchzuführen");
|
||||
return;
|
||||
}
|
||||
ChatService.SendMessage(player, "~r~ACHTUNG! Dadurch wird dein alter Charakter gelöscht. Du kannst dir hiermit einen neuen erstellen.");
|
||||
ChatService.SendMessage(player, "Beim Wechsel des Geschlechts verlierst du ebenfalls deine gekaufte Kleidung");
|
||||
if (freeSurgery == true)
|
||||
{
|
||||
ChatService.SendMessage(player, "Du kannst deinen Charakter dieses mal kostenlos erstellen");
|
||||
}
|
||||
else
|
||||
{
|
||||
ChatService.SendMessage(player, "Die Änderung des Charakters kostet ~g~$15.000");
|
||||
}
|
||||
ChatService.SendMessage(player, "Du kannst die Charaktererstellung wieder verlassen und behältst deinen alten Charakter!");
|
||||
ChatService.SendMessage(player, "Bitte starte mit ~g~J");
|
||||
|
||||
player.SetData<bool>("charSurgery", true);
|
||||
NAPI.Task.Run(() =>
|
||||
{
|
||||
if (player.GetData<bool>("charSurgery") == true) player.ResetData("charSurgery");
|
||||
player.SendNotification("~r~Chirurg-Angebot abgebrochen.");
|
||||
}, 30000);
|
||||
}
|
||||
if (user.FactionLeader)
|
||||
{
|
||||
player.TriggerEvent("CLIENT:StartGangwar");
|
||||
@@ -667,6 +695,12 @@ namespace ReallifeGamemode.Server.Events
|
||||
return;
|
||||
}
|
||||
|
||||
if(player.GetData<bool>("charSurgery") == true)
|
||||
{
|
||||
CharacterCreator.StartSurgery(player);
|
||||
player.SetData("charSurgery",false);
|
||||
}
|
||||
|
||||
User u = player.GetUser();
|
||||
|
||||
if (u.JobId == null) return;
|
||||
|
||||
@@ -79,7 +79,7 @@ namespace ReallifeGamemode.Server.Events
|
||||
currentPlayerCreatorDimension++;
|
||||
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
|
||||
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
player.TriggerEvent("toggleCreator");
|
||||
player.TriggerEvent("toggleCreator",false);
|
||||
player.SafeTeleport(new Vector3(402.8664, -996.4108, -99.00027));
|
||||
//player.Position = new Vector3(user.PositionX, user.PositionY, user.PositionZ);
|
||||
|
||||
|
||||
39
ReallifeGamemode.Server/Events/Waypoint.cs
Normal file
39
ReallifeGamemode.Server/Events/Waypoint.cs
Normal file
@@ -0,0 +1,39 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
using ReallifeGamemode.Services;
|
||||
|
||||
namespace ReallifeGamemode.Server.Events
|
||||
{
|
||||
class Waypoint : Script
|
||||
{
|
||||
[RemoteEvent("SERVER:waypointToDriver")]
|
||||
public void setWaypointToDriver(Player player, float x, float y)
|
||||
{
|
||||
if (!player.IsInVehicle)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (player.VehicleSeat == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Entity entity = NAPI.Vehicle.GetVehicleDriver(player.Vehicle);
|
||||
Player driver = PlayerService.GetPlayerByNameOrId(entity.Value.ToString());
|
||||
|
||||
if (driver == null || entity == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
driver.TriggerEvent("SERVER:Util_setWaypoint", x, y);
|
||||
driver.SendNotification(player.Name + " hat dir eine Markierung auf der Karte gesetzt");
|
||||
player.SendNotification("Du hast " + driver.Name + " eine Markierung auf der Karte gesetzt");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,27 @@
|
||||
using System.Linq;
|
||||
using GTANetworkAPI;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using ReallifeGamemode.Database.Entities;
|
||||
using ReallifeGamemode.Database.Models;
|
||||
using ReallifeGamemode.Server.Events;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
|
||||
namespace ReallifeGamemode.Server.Managers
|
||||
{
|
||||
public class CharacterCreator : Script
|
||||
{
|
||||
public static Vector3 surgeryPoint = new Vector3(258.581, -1345.1406, 24.5378);
|
||||
|
||||
public CharacterCreator()
|
||||
{
|
||||
var point = surgeryPoint;
|
||||
NAPI.Marker.CreateMarker(1, new Vector3(point.X, point.Y, point.Z - 2), new Vector3(point.X, point.Y, point.Z + 1),
|
||||
new Vector3(0, 0, 0), 2, new Color(255, 255, 255, 50), false, 0);
|
||||
NAPI.TextLabel.CreateTextLabel("Chirurg - Dr\u00fccke ~y~E", point, 7, 1, 0, new Color(255, 255, 255), false, 0);
|
||||
}
|
||||
|
||||
|
||||
[RemoteEvent("creator_GenderChange")]
|
||||
public void changeGender(Player player, int gender)
|
||||
{
|
||||
@@ -50,27 +64,27 @@ namespace ReallifeGamemode.Server.Managers
|
||||
float neckWidth = jFeatureData.Value<float>(19);
|
||||
|
||||
byte blemishes = jAppearanceData[0].Value<byte>("Value");
|
||||
float blemishesOpacity = jAppearanceData[0].Value<byte>("Opacity");
|
||||
float blemishesOpacity = jAppearanceData[0].Value<float>("Opacity");
|
||||
byte facialHair = jAppearanceData[1].Value<byte>("Value");
|
||||
float facialHairOpacity = jAppearanceData[1].Value<byte>("Opacity");
|
||||
float facialHairOpacity = jAppearanceData[1].Value<float>("Opacity");
|
||||
byte eyebrows = jAppearanceData[2].Value<byte>("Value");
|
||||
float eyebrowsOpacity = jAppearanceData[2].Value<byte>("Opacity");
|
||||
float eyebrowsOpacity = jAppearanceData[2].Value<float>("Opacity");
|
||||
byte ageing = jAppearanceData[3].Value<byte>("Value");
|
||||
float ageingOpacity = jAppearanceData[3].Value<byte>("Opacity");
|
||||
float ageingOpacity = jAppearanceData[3].Value<float>("Opacity");
|
||||
byte makeup = jAppearanceData[4].Value<byte>("Value");
|
||||
float makeupOpacity = jAppearanceData[4].Value<byte>("Opacity");
|
||||
float makeupOpacity = jAppearanceData[4].Value<float>("Opacity");
|
||||
byte blush = jAppearanceData[5].Value<byte>("Value");
|
||||
float blushOpacity = jAppearanceData[5].Value<byte>("Opacity");
|
||||
float blushOpacity = jAppearanceData[5].Value<float>("Opacity");
|
||||
byte complexion = jAppearanceData[6].Value<byte>("Value");
|
||||
float complexionOpacity = jAppearanceData[6].Value<byte>("Opacity");
|
||||
float complexionOpacity = jAppearanceData[6].Value<float>("Opacity");
|
||||
byte sunDamage = jAppearanceData[7].Value<byte>("Value");
|
||||
float sunDamageOpacity = jAppearanceData[7].Value<byte>("Opacity");
|
||||
float sunDamageOpacity = jAppearanceData[7].Value<float>("Opacity");
|
||||
byte lipstick = jAppearanceData[8].Value<byte>("Value");
|
||||
float lipstickOpacity = jAppearanceData[8].Value<byte>("Opacity");
|
||||
float lipstickOpacity = jAppearanceData[8].Value<float>("Opacity");
|
||||
byte freckles = jAppearanceData[9].Value<byte>("Value");
|
||||
float frecklesOpacity = jAppearanceData[9].Value<byte>("Opacity");
|
||||
float frecklesOpacity = jAppearanceData[9].Value<float>("Opacity");
|
||||
byte chestHair = jAppearanceData[10].Value<byte>("Value");
|
||||
float chestHairOpacity = jAppearanceData[10].Value<byte>("Opacity");
|
||||
float chestHairOpacity = jAppearanceData[10].Value<float>("Opacity");
|
||||
|
||||
byte hair = jHairAndColorData.Value<byte>(0);
|
||||
byte hairColor = jHairAndColorData.Value<byte>(1);
|
||||
@@ -82,8 +96,26 @@ namespace ReallifeGamemode.Server.Managers
|
||||
byte lipstickColor = jHairAndColorData.Value<byte>(7);
|
||||
byte chestHairColor = jHairAndColorData.Value<byte>(8);
|
||||
|
||||
var charExists = false;
|
||||
var genderSwap = false;
|
||||
|
||||
using (var saveCharacter = new DatabaseContext())
|
||||
{
|
||||
|
||||
var userId = player.GetUser(saveCharacter).Id;
|
||||
var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId);
|
||||
|
||||
var oldChar = saveCharacter.Characters.FirstOrDefault(c => c.UserId == user.Id);
|
||||
|
||||
if (user.CharacterId != null)
|
||||
{
|
||||
charExists = true;
|
||||
if (oldChar.Gender != gender)
|
||||
{
|
||||
genderSwap = true;
|
||||
}
|
||||
}
|
||||
|
||||
var character = new Database.Entities.Character
|
||||
{
|
||||
UserId = player.GetUser().Id,
|
||||
@@ -148,14 +180,21 @@ namespace ReallifeGamemode.Server.Managers
|
||||
ChestHairColor = chestHairColor
|
||||
};
|
||||
|
||||
|
||||
saveCharacter.Characters.Add(character);
|
||||
saveCharacter.SaveChanges();
|
||||
|
||||
var userId = player.GetUser().Id;
|
||||
var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId);
|
||||
|
||||
|
||||
user.CharacterId = character.Id;
|
||||
|
||||
if (genderSwap)
|
||||
{
|
||||
var charClothes = saveCharacter.CharacterClothes.Where(c => c.UserId == user.Id);
|
||||
saveCharacter.RemoveRange(charClothes);
|
||||
saveCharacter.SaveChanges();
|
||||
}
|
||||
|
||||
for (var x = 1; x <= 11; x++)
|
||||
{
|
||||
var s = 0;
|
||||
@@ -219,6 +258,8 @@ namespace ReallifeGamemode.Server.Managers
|
||||
break;
|
||||
};
|
||||
}
|
||||
if (!charExists || genderSwap)
|
||||
{
|
||||
var createClothes = new Database.Entities.CharacterCloth()
|
||||
{
|
||||
UserId = userId,
|
||||
@@ -230,12 +271,25 @@ namespace ReallifeGamemode.Server.Managers
|
||||
};
|
||||
saveCharacter.CharacterClothes.Add(createClothes);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
if (charExists)
|
||||
{
|
||||
if (user.FreeSurgery == true)
|
||||
{
|
||||
user.FreeSurgery = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
user.BankAccount.Balance -= 15000;
|
||||
}
|
||||
saveCharacter.Remove(oldChar);
|
||||
}
|
||||
saveCharacter.SaveChanges();
|
||||
}
|
||||
//HeadOverlay makeupHo = new HeadOverlay()
|
||||
@@ -254,10 +308,17 @@ namespace ReallifeGamemode.Server.Managers
|
||||
//};
|
||||
//player.SetHeadOverlay(4, makeupHo);
|
||||
//player.SetHeadOverlay(5, blushHo);
|
||||
if (charExists)
|
||||
{
|
||||
LeaveSurgery(player);
|
||||
}
|
||||
else
|
||||
{
|
||||
player.SafeTeleport(Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING, true);
|
||||
player.TriggerEvent("draw", player.Name, player.Handle.Value);
|
||||
player.Dimension = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Wendet den Character eines Spielers auf diesen an
|
||||
@@ -409,5 +470,224 @@ namespace ReallifeGamemode.Server.Managers
|
||||
NAPI.Player.SetPlayerEyeColor(player, character.EyeColor);
|
||||
}
|
||||
}
|
||||
public static void StartSurgery(Player player)
|
||||
{
|
||||
/*
|
||||
Character c = player.GetUser().GetCharacter();
|
||||
|
||||
var PlayerCharacterData = new
|
||||
{
|
||||
Gender = c.Gender,
|
||||
Father = c.Father,
|
||||
Mother = c.Mother,
|
||||
Similarity = c.Similarity,
|
||||
SkinSimilarity = c.SkinSimilarity,
|
||||
|
||||
NoseWidth = c.NoseWidth,
|
||||
NoseBottomHeight = c.NoseBottomHeight,
|
||||
NoseTipLength = c.NoseTipLength,
|
||||
NoseBridgeDepth = c.NoseBridgeDepth,
|
||||
NoseTipHeight = c.NoseTipHeight,
|
||||
NoseBroken = c.NoseBroken,
|
||||
BrowHeight = c.BrowHeight,
|
||||
BrowDepth = c.BrowDepth,
|
||||
CheekboneHeight = c.CheekboneHeight,
|
||||
CheekboneWidth = c.CheekboneWidth,
|
||||
CheekDepth = c.CheekDepth,
|
||||
EyeSize = c.EyeSize,
|
||||
LipThickness = c.LipThickness,
|
||||
JawWidth = c.JawWidth,
|
||||
JawShape = c.JawShape,
|
||||
ChinHeight = c.ChinHeight,
|
||||
ChinDepth = c.ChinDepth,
|
||||
ChinWidth = c.ChinWidth,
|
||||
ChinIndent = c.ChinIndent,
|
||||
NeckWidth = c.NeckWidth,
|
||||
|
||||
Blemishes = c.Blemishes,
|
||||
BlemishesOpacity = c.BlemishesOpacity,
|
||||
FacialHair = c.FacialHair,
|
||||
FacialHairOpacity = c.FacialHairOpacity,
|
||||
Eyebrows = c.Eyebrows,
|
||||
EyebrowsOpacity = c.EyebrowsOpacity,
|
||||
Ageing = c.Ageing,
|
||||
AgeingOpacity = c.AgeingOpacity,
|
||||
Makeup = c.Makeup,
|
||||
MakeupOpacity = c.MakeupOpacity,
|
||||
Blush = c.Blush,
|
||||
BlushOpacity = c.BlushOpacity,
|
||||
Complexion = c.Complexion,
|
||||
ComplexionOpacity = c.ComplexionOpacity,
|
||||
SunDamage = c.SunDamage,
|
||||
SunDamageOpacity = c.SunDamageOpacity,
|
||||
Lipstick = c.Lipstick,
|
||||
LipstickOpacity = c.LipstickOpacity,
|
||||
Freckles = c.Freckles,
|
||||
FrecklesOpacity = c.FrecklesOpacity,
|
||||
ChestHair = c.ChestHair,
|
||||
ChestHairOpacity = c.ChestHairOpacity,
|
||||
|
||||
Hair = c.Hair,
|
||||
HairColor = c.HairColor,
|
||||
HairHighlightColor = c.HairHighlightColor,
|
||||
EyebrowColor = c.EyebrowColor,
|
||||
BeardColor = c.BeardColor,
|
||||
EyeColor = c.EyeColor,
|
||||
BlushColor = c.BlushColor,
|
||||
LipstickColor = c.LipstickColor,
|
||||
ChestHairColor = c.ChestHairColor
|
||||
};*/
|
||||
|
||||
var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
currentPlayerCreatorDimension++;
|
||||
NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension);
|
||||
player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension");
|
||||
player.SafeTeleport(new Vector3(266.472, -1339.1357, 24.5378));
|
||||
player.Heading = 146.35101f;
|
||||
player.TriggerEvent("toggleCreator", true);
|
||||
}
|
||||
|
||||
[RemoteEvent("surgeryLeave")]
|
||||
public static void LeaveSurgery(Player player)
|
||||
{
|
||||
player.Dimension = 0;
|
||||
player.SafeTeleport(new Vector3(258.581, -1345.1406, 24.5378), Main.DEFAULT_SPAWN_HEADING, true);
|
||||
ApplyCharacter(player);
|
||||
UpdateCharacterCloth.LoadCharacterDefaults(player);
|
||||
}
|
||||
[RemoteEvent("SaveSurgery")]
|
||||
public static void SaveSurgery(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData)
|
||||
{
|
||||
player.SafeTeleport(new Vector3(258.581, -1345.1406, 24.5378), Main.DEFAULT_SPAWN_HEADING, true);
|
||||
var jParentData = JObject.Parse(parentData);
|
||||
var jFeatureData = JArray.Parse(featureData);
|
||||
var jAppearanceData = JArray.Parse(appearanceData);
|
||||
var jHairAndColorData = JArray.Parse(hairAndColorData);
|
||||
|
||||
byte father = jParentData.Value<byte>("Father");
|
||||
byte mother = jParentData.Value<byte>("Mother");
|
||||
float similarity = jParentData.Value<float>("Similarity");
|
||||
float skinSimilarity = jParentData.Value<float>("SkinSimilarity");
|
||||
|
||||
float noseWidth = jFeatureData.Value<float>(0);
|
||||
float noseBottomHeight = jFeatureData.Value<float>(1);
|
||||
float noseTipLength = jFeatureData.Value<float>(2);
|
||||
float noseBridgeDepth = jFeatureData.Value<float>(3);
|
||||
float noseTipHeight = jFeatureData.Value<float>(4);
|
||||
float noseBroken = jFeatureData.Value<float>(5);
|
||||
float browHeight = jFeatureData.Value<float>(6);
|
||||
float browDepth = jFeatureData.Value<float>(7);
|
||||
float cheekboneHeight = jFeatureData.Value<float>(8);
|
||||
float cheekboneWidth = jFeatureData.Value<float>(9);
|
||||
float cheekDepth = jFeatureData.Value<float>(10);
|
||||
float eyeSize = jFeatureData.Value<float>(11);
|
||||
float lipThickness = jFeatureData.Value<float>(12);
|
||||
float jawWidth = jFeatureData.Value<float>(13);
|
||||
float jawShape = jFeatureData.Value<float>(14);
|
||||
float chinHeight = jFeatureData.Value<float>(15);
|
||||
float chinDepth = jFeatureData.Value<float>(16);
|
||||
float chinWidth = jFeatureData.Value<float>(17);
|
||||
float chinIndent = jFeatureData.Value<float>(18);
|
||||
float neckWidth = jFeatureData.Value<float>(19);
|
||||
|
||||
byte blemishes = jAppearanceData[0].Value<byte>("Value");
|
||||
float blemishesOpacity = jAppearanceData[0].Value<byte>("Opacity");
|
||||
byte facialHair = jAppearanceData[1].Value<byte>("Value");
|
||||
float facialHairOpacity = jAppearanceData[1].Value<byte>("Opacity");
|
||||
byte eyebrows = jAppearanceData[2].Value<byte>("Value");
|
||||
float eyebrowsOpacity = jAppearanceData[2].Value<byte>("Opacity");
|
||||
byte ageing = jAppearanceData[3].Value<byte>("Value");
|
||||
float ageingOpacity = jAppearanceData[3].Value<byte>("Opacity");
|
||||
byte makeup = jAppearanceData[4].Value<byte>("Value");
|
||||
float makeupOpacity = jAppearanceData[4].Value<byte>("Opacity");
|
||||
byte blush = jAppearanceData[5].Value<byte>("Value");
|
||||
float blushOpacity = jAppearanceData[5].Value<byte>("Opacity");
|
||||
byte complexion = jAppearanceData[6].Value<byte>("Value");
|
||||
float complexionOpacity = jAppearanceData[6].Value<byte>("Opacity");
|
||||
byte sunDamage = jAppearanceData[7].Value<byte>("Value");
|
||||
float sunDamageOpacity = jAppearanceData[7].Value<byte>("Opacity");
|
||||
byte lipstick = jAppearanceData[8].Value<byte>("Value");
|
||||
float lipstickOpacity = jAppearanceData[8].Value<byte>("Opacity");
|
||||
byte freckles = jAppearanceData[9].Value<byte>("Value");
|
||||
float frecklesOpacity = jAppearanceData[9].Value<byte>("Opacity");
|
||||
byte chestHair = jAppearanceData[10].Value<byte>("Value");
|
||||
float chestHairOpacity = jAppearanceData[10].Value<byte>("Opacity");
|
||||
|
||||
//byte hair = jHairAndColorData.Value<byte>(0);
|
||||
//byte hairColor = jHairAndColorData.Value<byte>(1);
|
||||
//byte hairHighlightColor = jHairAndColorData.Value<byte>(2);
|
||||
byte eyebrowColor = jHairAndColorData.Value<byte>(0);
|
||||
byte beardColor = jHairAndColorData.Value<byte>(1);
|
||||
byte eyeColor = jHairAndColorData.Value<byte>(2);
|
||||
byte blushColor = jHairAndColorData.Value<byte>(3);
|
||||
byte lipstickColor = jHairAndColorData.Value<byte>(4);
|
||||
byte chestHairColor = jHairAndColorData.Value<byte>(5);
|
||||
|
||||
using (var saveCharacter = new DatabaseContext())
|
||||
{
|
||||
var character = new Database.Entities.Character
|
||||
{
|
||||
UserId = player.GetUser().Id,
|
||||
Gender = gender,
|
||||
Father = father,
|
||||
Mother = mother,
|
||||
Similarity = similarity,
|
||||
SkinSimilarity = skinSimilarity,
|
||||
|
||||
NoseWidth = noseWidth,
|
||||
NoseBottomHeight = noseBottomHeight,
|
||||
NoseTipLength = noseTipLength,
|
||||
NoseBridgeDepth = noseBridgeDepth,
|
||||
NoseTipHeight = noseTipHeight,
|
||||
NoseBroken = noseBroken,
|
||||
BrowHeight = browHeight,
|
||||
BrowDepth = browDepth,
|
||||
CheekboneHeight = cheekboneHeight,
|
||||
CheekboneWidth = cheekboneWidth,
|
||||
CheekDepth = cheekDepth,
|
||||
EyeSize = eyeSize,
|
||||
LipThickness = lipThickness,
|
||||
JawWidth = jawWidth,
|
||||
JawShape = jawShape,
|
||||
ChinHeight = chinHeight,
|
||||
ChinDepth = chinDepth,
|
||||
ChinWidth = chinWidth,
|
||||
ChinIndent = chinIndent,
|
||||
NeckWidth = neckWidth,
|
||||
|
||||
Blemishes = blemishes,
|
||||
BlemishesOpacity = blemishesOpacity,
|
||||
FacialHair = facialHair,
|
||||
FacialHairOpacity = facialHairOpacity,
|
||||
Eyebrows = eyebrows,
|
||||
EyebrowsOpacity = eyebrowsOpacity,
|
||||
Ageing = ageing,
|
||||
AgeingOpacity = ageingOpacity,
|
||||
Makeup = makeup,
|
||||
MakeupOpacity = makeupOpacity,
|
||||
Blush = blush,
|
||||
BlushOpacity = blushOpacity,
|
||||
Complexion = complexion,
|
||||
ComplexionOpacity = complexionOpacity,
|
||||
SunDamage = sunDamage,
|
||||
SunDamageOpacity = sunDamageOpacity,
|
||||
Lipstick = lipstick,
|
||||
LipstickOpacity = lipstickOpacity,
|
||||
Freckles = freckles,
|
||||
FrecklesOpacity = frecklesOpacity,
|
||||
ChestHair = chestHair,
|
||||
ChestHairOpacity = chestHairOpacity,
|
||||
|
||||
EyebrowColor = eyebrowColor,
|
||||
BeardColor = beardColor,
|
||||
EyeColor = eyeColor,
|
||||
BlushColor = blushColor,
|
||||
LipstickColor = lipstickColor,
|
||||
ChestHairColor = chestHairColor
|
||||
};
|
||||
}
|
||||
|
||||
ApplyCharacter(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -752,6 +752,12 @@ namespace ReallifeGamemode.Server.Managers
|
||||
[RemoteEvent("CLIENT:InteractionMenu_Pay")]
|
||||
public void InteractionMenu_Pay(Player player, string jsonNameOrId, string stringAmount)
|
||||
{
|
||||
if (player.GetUser().PlayedMinutes < 180)
|
||||
{
|
||||
player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
|
||||
return;
|
||||
}
|
||||
|
||||
string nameOrId = (string)JsonConvert.DeserializeObject(jsonNameOrId);
|
||||
int amount;
|
||||
try
|
||||
|
||||
@@ -776,6 +776,8 @@ namespace ReallifeGamemode.Server.Managers
|
||||
"vicechee", //mod
|
||||
"sheriffcoqm", //mod
|
||||
"polcoquette", //mod
|
||||
"pdrafter", //mod
|
||||
"pdrafter2", //mod
|
||||
};
|
||||
|
||||
private static readonly Dictionary<int, ushort> _serverVehicles = new Dictionary<int, ushort>();
|
||||
|
||||
Reference in New Issue
Block a user