diff --git a/ReallifeGamemode.Client.Core/ReallifeGamemode.Client.Core.csproj b/ReallifeGamemode.Client.Core/ReallifeGamemode.Client.Core.csproj new file mode 100644 index 00000000..cb631906 --- /dev/null +++ b/ReallifeGamemode.Client.Core/ReallifeGamemode.Client.Core.csproj @@ -0,0 +1,7 @@ + + + + netcoreapp3.1 + + + diff --git a/ReallifeGamemode.Client/CharCreator/data.ts b/ReallifeGamemode.Client/CharCreator/data.ts index 83801bab..8d813356 100644 --- a/ReallifeGamemode.Client/CharCreator/data.ts +++ b/ReallifeGamemode.Client/CharCreator/data.ts @@ -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 = [ diff --git a/ReallifeGamemode.Client/CharCreator/main.ts b/ReallifeGamemode.Client/CharCreator/main.ts index daee8540..5294d9db 100644 --- a/ReallifeGamemode.Client/CharCreator/main.ts +++ b/ReallifeGamemode.Client/CharCreator/main.ts @@ -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.")); @@ -232,10 +237,13 @@ export default function charCreator(globalData: IGlobalData) { saveItem.HighlightedBackColor = new Color(25, 118, 210); 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); + if (isSurgery) { + let cancelItem = new UIMenuItem("Abbrechen", "Bricht die Operation ab"); + cancelItem.BackColor = new Color(213, 0, 0); + cancelItem.HighlightedBackColor = new Color(229, 57, 53); + creatorMainMenu.AddItem(cancelItem); + } + creatorMainMenu.ListChange.on((item, listIndex) => { if (item === genderItem) { @@ -308,30 +316,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 +391,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 +401,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 +559,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) { - 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); + 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 +590,67 @@ export default function charCreator(globalData: IGlobalData) { localPlayer.clearTasksImmediately(); localPlayer.freezePosition(true); mp.game.cam.renderScriptCams(true, false, 0, true, false); + applyCreatorOutfit(); + mp.events.callRemote("creator_GenderChange", 0); + } }); 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; + + } + + mp.events.add("render", () => { + if (mp.cameras.exists(creatorCamera)) disableInput(); + }); + + function disableInput() { + + //WASD + mp.game.controls.disableControlAction(0, 30, true); + mp.game.controls.disableControlAction(0, 31, true); + mp.game.controls.disableControlAction(0, 32, true); + mp.game.controls.disableControlAction(0, 33, true); + mp.game.controls.disableControlAction(0, 34, true); + mp.game.controls.disableControlAction(0, 35, true); + mp.game.controls.disableControlAction(0, 266, true); + mp.game.controls.disableControlAction(0, 267, true); + mp.game.controls.disableControlAction(0, 268, true); + mp.game.controls.disableControlAction(0, 269, true); + + //SPACE + mp.game.controls.disableControlAction(0, 22, true); + + //R + mp.game.controls.disableControlAction(0, 140, true); + mp.game.controls.disableControlAction(0, 263, true); + + //LMB + mp.game.controls.disableControlAction(0, 24, true); + mp.game.controls.disableControlAction(0, 257, true); + + //LEFT CTRL + mp.game.controls.disableControlAction(0, 36, true); + + //Q + mp.game.controls.disableControlAction(0, 44, true); + } } \ No newline at end of file diff --git a/ReallifeGamemode.Client/CharCreator/surgery.ts b/ReallifeGamemode.Client/CharCreator/surgery.ts new file mode 100644 index 00000000..b9f1d2b6 --- /dev/null +++ b/ReallifeGamemode.Client/CharCreator/surgery.ts @@ -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 = 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; + } +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/Gui/bigmap.ts b/ReallifeGamemode.Client/Gui/bigmap.ts new file mode 100644 index 00000000..4fd5e4c9 --- /dev/null +++ b/ReallifeGamemode.Client/Gui/bigmap.ts @@ -0,0 +1,55 @@ +import { GlobalData } from ".."; + +export default function bigmap() { + var bigmap = { status: 0, timer: null }; + + bigmap.status = 0; + bigmap.timer = null; + + mp.game.ui.setRadarZoom(1.0); + mp.game.ui.setRadarBigmapEnabled(false, false); + + mp.events.add("render", () => { + mp.game.controls.disableControlAction(0, 48, true); + if (mp.game.controls.isDisabledControlJustPressed(0, 48) && !GlobalData.InChat) { + if (bigmap.status === 0) { + mp.game.ui.setRadarZoom(0.0); + bigmap.status = 1; + + bigmap.timer = setTimeout(() => { + mp.game.ui.setRadarBigmapEnabled(false, true); + mp.game.ui.setRadarZoom(1.0); + + bigmap.status = 0; + bigmap.timer = null; + }, 10000); + } else if (bigmap.status === 1) { + if (bigmap.timer != null) { + clearTimeout(bigmap.timer); + bigmap.timer = null; + } + + mp.game.ui.setRadarBigmapEnabled(true, false); + mp.game.ui.setRadarZoom(0.0); + bigmap.status = 2; + + bigmap.timer = setTimeout(() => { + mp.game.ui.setRadarBigmapEnabled(false, true); + mp.game.ui.setRadarZoom(1.0); + + bigmap.status = 0; + bigmap.timer = null; + }, 10000); + } else { + if (bigmap.timer != null) { + clearTimeout(bigmap.timer); + bigmap.timer = null; + } + + mp.game.ui.setRadarBigmapEnabled(false, false); + mp.game.ui.setRadarZoom(1.0); + bigmap.status = 0; + } + } + }); +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts index 85b9e1ae..a648181b 100644 --- a/ReallifeGamemode.Client/Gui/blips.ts +++ b/ReallifeGamemode.Client/Gui/blips.ts @@ -1,6 +1,13 @@ -export default function playerBlips() { +import { afkStatus } from '../Player/antiafk'; +import { getWantedCount } from './wanteds'; + +export default function playerBlips() { var playerBlipMap: Map; var ready = false; + var escapeTimer = null; + + const PD_BLIP = 38; + const FIB_BLIP = 63; setInterval(() => { if (!ready) return; @@ -43,9 +50,30 @@ pBlip.setColour(isNaN(color) ? 0 : color); pBlip.setPosition(player.position.x, player.position.y, player.position.z); + + if ((color == PD_BLIP || color == FIB_BLIP || afkStatus)) { + if (escapeTimer) { + mp.events.call("SERVER:SetWantedFlash", false); + clearInterval(escapeTimer); + escapeTimer = null; + } + return; + } } - }); + + if (!escapeTimer && !afkStatus && getWantedCount() > 0) { + mp.events.call("SERVER:SetWantedFlash", true); + escapeTimer = setInterval(() => { + if (getWantedCount() == 0) { + clearInterval(escapeTimer); + escapeTimer = null; + return; + } + + mp.events.callRemote("CLIENT:EscapeWanted"); + }, 300000); //120000 -> 2 min , 300000 -> 5min + } }, 50); mp.events.add("playerReady", () => { diff --git a/ReallifeGamemode.Client/Gui/infobox.ts b/ReallifeGamemode.Client/Gui/infobox.ts index cf1ba033..5233c00d 100644 --- a/ReallifeGamemode.Client/Gui/infobox.ts +++ b/ReallifeGamemode.Client/Gui/infobox.ts @@ -308,8 +308,8 @@ export default function (globalData: IGlobalData): void { }) mp.game.graphics.drawRect(0.0, 0.555, 0.3, 0.11, 0, 0, 0, 70) } - } + if (editMode === true) { mp.game.graphics.drawText("~r~EDIT-MODE AKTIV", [0.5, 0], { @@ -356,7 +356,7 @@ export default function (globalData: IGlobalData): void { } if (noDmZone) { - mp.game.graphics.drawText("~r~NoDM Zone", [0.92, 0.7], + mp.game.graphics.drawText("~r~DM freie Zone", [0.92, 0.7], { font: 2, color: [255, 255, 255, 255], diff --git a/ReallifeGamemode.Client/Gui/notification.ts b/ReallifeGamemode.Client/Gui/notification.ts new file mode 100644 index 00000000..50b50780 --- /dev/null +++ b/ReallifeGamemode.Client/Gui/notification.ts @@ -0,0 +1,32 @@ +export default function notification() { + const _SET_NOTIFICATION_COLOR_NEXT = "0x39BBF623FC803EAC"; + const _SET_NOTIFICATION_BACKGROUND_COLOR = "0x92F0DA1E27DB96DC"; + + mp.events.add("BN_Show", (message, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) => { + if (textColor > -1) mp.game.invoke(_SET_NOTIFICATION_COLOR_NEXT, textColor); + if (bgColor > -1) mp.game.invoke(_SET_NOTIFICATION_BACKGROUND_COLOR, bgColor); + if (flashing) mp.game.ui.setNotificationFlashColor(flashColor[0], flashColor[1], flashColor[2], flashColor[3]); + + mp.game.gxt.set("BNOTIF_LONG_TEXT_ENTRY", `~a~${message}`); + mp.game.ui.setNotificationTextEntry("BNOTIF_LONG_TEXT_ENTRY"); + mp.game.ui.addTextComponentSubstringPlayerName(""); // needed for text color to work + mp.game.ui.drawNotification(flashing, true); + }); + + mp.events.add("BN_ShowWithPicture", (title, sender, message, notifPic, icon = 0, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) => { + if (textColor > -1) mp.game.invoke(_SET_NOTIFICATION_COLOR_NEXT, textColor); + if (bgColor > -1) mp.game.invoke(_SET_NOTIFICATION_BACKGROUND_COLOR, bgColor); + if (flashing) mp.game.ui.setNotificationFlashColor(flashColor[0], flashColor[1], flashColor[2], flashColor[3]); + mp.game.graphics.requestStreamedTextureDict(notifPic, true); + + mp.game.gxt.set("BNOTIF_LONG_TEXT_ENTRY_IMG", `~a~${message}`); + mp.game.ui.setNotificationTextEntry("BNOTIF_LONG_TEXT_ENTRY_IMG"); + mp.game.ui.addTextComponentSubstringPlayerName(""); // needed for text color to work + mp.game.ui.setNotificationMessage(notifPic, notifPic, flashing, icon, title, sender); + }); + + const notifications = { + show: (message, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) => mp.events.call("BN_Show", message, flashing, textColor, bgColor, flashColor), + showWithPicture: (title, sender, message, notifPic, icon = 0, flashing = false, textColor = -1, bgColor = -1, flashColor = [77, 77, 77, 200]) => mp.events.call("BN_ShowWithPicture", title, sender, message, notifPic, icon, flashing, textColor, bgColor, flashColor) + }; +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/Gui/playerlist.ts b/ReallifeGamemode.Client/Gui/playerlist.ts index 1d176cba..1d5009f3 100644 --- a/ReallifeGamemode.Client/Gui/playerlist.ts +++ b/ReallifeGamemode.Client/Gui/playerlist.ts @@ -5,38 +5,46 @@ */ export default function playerList(globalData: IGlobalData): void { - var playerlistBrowser: BrowserMp = null; - var pList; + var pList = []; + var loaded = false; var factionPlayersMap: Map = new Map(); const factionIds = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]; - mp.events.add("showPlayerlist", (playersJson) => { + mp.events.add("loadPlayerListCEF", () => { if (playerlistBrowser !== null) { playerlistBrowser.destroy(); - playerlistBrowser = null; - globalData.InMenu = false; - mp.gui.cursor.show(false, false); - mp.gui.chat.activate(true); } - else if (!globalData.InMenu) { + playerlistBrowser = mp.browsers.new('package://assets/html/onlinelist/index.html'); + }); + + mp.events.add("showPlayerlist", (playersJson) => { + if (!globalData.InMenu && !loaded) { globalData.InMenu = true; - playerlistBrowser = mp.browsers.new('package://assets/html/onlinelist/index.html'); + loaded = true; mp.gui.chat.activate(false); mp.gui.cursor.show(true, true); pList = JSON.parse(playersJson); + playerlistBrowser.execute(`showPlayerList()`); + } else if (loaded) { + globalData.InMenu = false; + loaded = false; + mp.gui.cursor.show(false, false); + mp.gui.chat.activate(true); + playerlistBrowser.execute(`closePlayerList()`); } }); mp.events.add("CEF:PlayerList_Loaded", () => { + playerlistBrowser.execute(`clear_row()`); + factionIds.forEach(f => { factionPlayersMap.set(f, 0); }); pList.forEach((player) => { - var facId = player.FactionId; - playerlistBrowser.execute(`addPlayerEntry('${player.Id}','${player.Name}', '${facId}','${player.Ping}');`); - factionPlayersMap.set(facId, factionPlayersMap.get(facId) + 1); + playerlistBrowser.execute(`addPlayerEntry('${player.Id}', '${player.Name}', '${player.FactionId}', '${player.Ping}');`); + factionPlayersMap.set(player.factionId, factionPlayersMap.get(player.factionId) + 1); }); factionPlayersMap.forEach((value, key) => { @@ -54,4 +62,4 @@ export default function playerList(globalData: IGlobalData): void { // table = table + tableRow; // }) // return document.write(table); -//} +//} \ No newline at end of file diff --git a/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts b/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts index b967f544..686d604f 100644 --- a/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts +++ b/ReallifeGamemode.Client/Gui/vehiclemenu/main.ts @@ -1,4 +1,4 @@ -import * as NativeUI from '../../libs/NativeUI'; +import * as NativeUI from '../../libs/NativeUI'; const Menu = NativeUI.Menu; const UIMenuItem = NativeUI.UIMenuItem; @@ -25,7 +25,7 @@ export default function vehicleMenu(globalData: IGlobalData) { } else if (!globalData.InMenu) { globalData.InMenu = true; - lastDriversBrowser = mp.browsers.new('package://assets/vehicle/lastPlayers.html'); + lastDriversBrowser = mp.browsers.new('package://assets/html/driver-history/index.html'); mp.gui.chat.activate(false); mp.gui.cursor.show(true, true); } @@ -50,52 +50,65 @@ export default function vehicleMenu(globalData: IGlobalData) { }); mp.events.add('ToggleVehicleMenu', () => { - if (menuBrowser !== null) { + if (globalData.InMenu && menuBrowser !== null) { menuBrowser.destroy(); menuBrowser = null; globalData.InMenu = false; mp.gui.chat.show(true); mp.gui.cursor.show(false, false); - mp.game.graphics.stopScreenEffect("FocusIn"); - mp.game.graphics.startScreenEffect("FocusOut", 0, false); return; + } else { + menuBrowser = mp.browsers.new("package://assets/html/interaction/index.html"); + mp.gui.chat.show(false); + globalData.InMenu = true; + mp.gui.cursor.show(true, true); } - - mp.game.graphics.stopScreenEffect("FocusOut"); - mp.game.graphics.startScreenEffect("FocusIn", 0, false); - menuBrowser = mp.browsers.new("package://assets/html/vehiclemenu/index.html"); - mp.gui.chat.show(false); - globalData.InMenu = true; - mp.gui.cursor.show(true, true); }); mp.events.add('doAction', (action) => { mp.events.call('ToggleVehicleMenu'); switch (action) { - case 8: // Motor + case 1: // Motor an-/ausschalten mp.events.callRemote("VehicleMenu_ToggleEngine"); break; - case 5: // Auf -/ Abschließen + case 2: // Gurt an-/ablegen + mp.events.callRemote("CLIENT:VehicleMenu_UseSeatbelt"); + break; + case 3: // Fahrzeug auf-/abschließen mp.events.callRemote("VehicleMenu_LockCar"); break; - case 3: // Türen - showDoorsMenu(); + case 4: // Fahrzeug tanken break; - case 7: // Parken + case 5: // Fahrzeug parken mp.events.callRemote("CLIENT:VehicleMenu_ParkCar"); break; + case 6: // Türen öffnen/schließen + showDoorsMenu(); + break; } }); + mp.events.add("SERVER:ChangeSeatbeltState", () => { + var currentState = mp.players.local.getConfigFlag(32, true); + currentState = !currentState; + mp.players.local.setConfigFlag(32, currentState); + var msg = `Sicherheitsgurt ${(currentState ? '~r~abgelegt' : '~g~angelegt')}`; + mp.events.call("BN_Show", msg); + }); + + mp.events.add(RageEnums.EventKey.PLAYER_LEAVE_VEHICLE, (vehicle, seat) => { + mp.players.local.setConfigFlag(32, true); + }); + function showDoorsMenu() { globalData.InMenu = true; var doorMenu = new Menu("Türen", "Türen verwalten", new Point(0, screenRes.y / 3), null, null); doorMenu.AddItem(new UIMenuListItem("Tür", "Welche Tür darf's sein?", new ItemsCollection([ - " Fahrertür", - " Beifahrertür", + "Fahrertür", + "Beifahrertür", "Hinten links", "Hinten rechts", "Motorhaube", @@ -109,10 +122,10 @@ export default function vehicleMenu(globalData: IGlobalData) { if (index === 0) { var doorId = -1; switch (item.SelectedItem.DisplayText) { - case " Fahrertür": + case "Fahrertür": doorId = 0; break; - case " Beifahrertür": + case "Beifahrertür": doorId = 1; break; case "Hinten links": @@ -144,4 +157,4 @@ export default function vehicleMenu(globalData: IGlobalData) { doorMenu.Open(); } -} \ No newline at end of file +} diff --git a/ReallifeGamemode.Client/Interaction/interactionmenu.ts b/ReallifeGamemode.Client/Interaction/interactionmenu.ts index 0eb1b053..6bff316d 100644 --- a/ReallifeGamemode.Client/Interaction/interactionmenu.ts +++ b/ReallifeGamemode.Client/Interaction/interactionmenu.ts @@ -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); } diff --git a/ReallifeGamemode.Client/Player/antiafk.ts b/ReallifeGamemode.Client/Player/antiafk.ts index 229cd705..c231d5f3 100644 --- a/ReallifeGamemode.Client/Player/antiafk.ts +++ b/ReallifeGamemode.Client/Player/antiafk.ts @@ -1,13 +1,12 @@ -export default function antiAfk(globalData: IGlobalData) { +export let afkStatus: boolean = false; + +export default function antiAfk(globalData: IGlobalData) { let lastPosition: Vector3Mp = mp.players.local.position; let afkCounter: number = 0; - let afkStatus: boolean = false; - setInterval(checkAfkPosition, 1000 * 10); function checkAfkPosition() { - if (!globalData.LoggedIn) { return; } diff --git a/ReallifeGamemode.Client/Player/keys.ts b/ReallifeGamemode.Client/Player/keys.ts index 92ffe3e0..c3b7fa1d 100644 --- a/ReallifeGamemode.Client/Player/keys.ts +++ b/ReallifeGamemode.Client/Player/keys.ts @@ -122,10 +122,10 @@ export default function keys(globalData: IGlobalData) { } }); - //X // Fahrzeug Verwaltung - Menü - mp.keys.bind(0x58, false, function () { - if (!globalData.InChat && !globalData.InMenu && !globalData.InTuning) { - mp.events.callRemote("keyPress:X"); + //Z // Fahrzeug Verwaltung - Menü + KeyBinder.bind("z", () => { + if (!globalData.InChat && !globalData.InTuning) { + mp.events.callRemote("keyPress:Z"); } }); diff --git a/ReallifeGamemode.Client/Player/polygons.ts b/ReallifeGamemode.Client/Player/polygons.ts index ea468a4b..6c755cbf 100644 --- a/ReallifeGamemode.Client/Player/polygons.ts +++ b/ReallifeGamemode.Client/Player/polygons.ts @@ -56,18 +56,25 @@ const muellbaseVector1 = new mp.Vector3(521.6251, -2194.5068, 5.985945); const muellbaseVector2 = new mp.Vector3(454.88348, -2158.1938, 5.9788494); const muellbaseVector3 = new mp.Vector3(529.06635, -2088.4097, 8.303088); +const krankenhausVector1 = new mp.Vector3(-508.50705, -351.24368, 34); +//const krankenhausVector2 = new mp.Vector3(-437.00146, -357.10526, 32.735916 +const krankenhausVector2 = new mp.Vector3(-442.62323, -356.99185, 33); +const krankenhausVector3 = new mp.Vector3(-448.9346, -297.23972, 33.68); +const krankenhausVector4 = new mp.Vector3(-504.952, -315.21698, 35.04881); + const polygon_busbase = polygons.add([busbaseVector1, busbaseVector2, busbaseVector3, busbaseVector4], 15, false, [255, 155, 0, 255], 0); const polygon_stadthalle = polygons.add([stadthalleVector1, stadthalleVector2, stadthalleVector3, stadthalleVector4], 15, false, [255, 155, 0, 255], 0); const polygon_fahrschule = polygons.add([fahrschuleVector1, fahrschuleVector2, fahrschuleVector3, fahrschuleVector4, fahrschuleVector5], 15, false, [255, 155, 0, 255], 0); const polygon_pilotAnfaenger = polygons.add([pilotAnfaengerVector1, pilotAnfaengerVector2, pilotAnfaengerVector3, pilotAnfaengerVector4], 15, false, [255, 155, 0, 255], 0); const polygon_pilotProfi = polygons.add([pilotProfiVector1, pilotProfiVector2, pilotProfiVector3, pilotProfiVector4], 15, false, [255, 155, 0, 255], 0); const polygon_muellbase = polygons.add([muellbaseVector1, muellbaseVector2, muellbaseVector3], 15, false, [255, 155, 0, 255], 0); +const polygon_krankenhaus = polygons.add([krankenhausVector1, krankenhausVector2, krankenhausVector3, krankenhausVector4], 50, false, [255, 155, 0, 255], 0); const polygon_prison = polygons.add([prisonVector1, prisonVector2, prisonVector3, prisonVector4, prisonVector5, prisonVector6, prisonVector7, prisonVector8, prisonVector9, prisonVector10, prisonVector11, prisonVector12, prisonVector13, prisonVector14, prisonVector15, prisonVector16, prisonVector17, prisonVector18, prisonVector19, prisonVector20, prisonVector21, prisonVector22, prisonVector23, prisonVector24], 40, false, [255, 155, 0, 255], 0); -export let listNoDMZones = [polygon_busbase, polygon_stadthalle, polygon_fahrschule, polygon_pilotAnfaenger, polygon_pilotProfi, polygon_muellbase]; +export let listNoDMZones = [polygon_busbase, polygon_stadthalle, polygon_fahrschule, polygon_pilotAnfaenger, polygon_pilotProfi, polygon_muellbase, polygon_krankenhaus]; export let isInAnyNoDMPolygon; export default function polygonHandler() { diff --git a/ReallifeGamemode.Client/Player/reportmenu.ts b/ReallifeGamemode.Client/Player/reportmenu.ts index bee77944..f71426c4 100644 --- a/ReallifeGamemode.Client/Player/reportmenu.ts +++ b/ReallifeGamemode.Client/Player/reportmenu.ts @@ -1,5 +1,4 @@ -import * as NativeUI from '../libs/NativeUI'; -import jailList from './criminalrelease'; +import * as NativeUI from '../libs/NativeUI'; import InputHelper from '../inputhelper'; const Menu = NativeUI.Menu; @@ -30,16 +29,11 @@ cancelItem.HighlightedBackColor = new Color(229, 57, 53); export default function reportList(globalData: IGlobalData) { var reportMenu: NativeUI.Menu; - var users; var reportTexts; - var user = ""; var reportText = ""; - - //Weapon Menu - mp.events.add('showReportMenu', (userTickets, TicketsArr) => { if (!globalData.InMenu) { @@ -95,9 +89,9 @@ export default function reportList(globalData: IGlobalData) { globalData.InMenu = true; - var types = ["Quick Report", "Ticket Report"]; + var types = ["Ticket", "Quick-Report"]; - reportMenu = new Menu("QuickReport/Ticket", "", new Point(0, screenRes.y / 3), null, null); + reportMenu = new Menu("Report", "", new Point(0, screenRes.y / 3), null, null); var typesItem = new UIMenuListItem("Typ", "", new ItemsCollection(types)); reportMenu.AddItem(typesItem); @@ -170,4 +164,4 @@ export default function reportList(globalData: IGlobalData) { } }); -} \ No newline at end of file +} diff --git a/ReallifeGamemode.Client/Player/weaponlist.ts b/ReallifeGamemode.Client/Player/weaponlist.ts index cba4f2d6..82062bfc 100644 --- a/ReallifeGamemode.Client/Player/weaponlist.ts +++ b/ReallifeGamemode.Client/Player/weaponlist.ts @@ -26,29 +26,24 @@ export default function weaponList(globalData: IGlobalData) { var weaponMenu: NativeUI.Menu; - - var primaries; var secondaries; var melees; var specialsWep; var time; var armor; - - var primary = ""; - var secondary = ""; - var melee = ""; - var specialWep = ""; - var timer = ""; - //Weapon Menu mp.events.add('showWeaponMenu', (primariesArr, secondariesArr, meleesArr, specialsArr, armorArr, jsonTime, jsonAmountInfos) => { if (!globalData.InMenu) { globalData.InMenu = true; - + var primary = ""; + var secondary = ""; + var melee = ""; + var specialWep = ""; + var timer = ""; primaries = primariesArr; secondaries = secondariesArr; melees = meleesArr; @@ -114,7 +109,6 @@ export default function weaponList(globalData: IGlobalData) { } }); - function getWeaponStockMenu(parentMenu: NativeUI.Menu, ): NativeUI.Menu { var weaponStockMenu = new NativeUI.Menu("Bestand","", new Point(0, screenRes.y / 3), null, null); diff --git a/ReallifeGamemode.Client/Tuning/colors.ts b/ReallifeGamemode.Client/Tuning/colors.ts index 2f5533d6..ccad0283 100644 --- a/ReallifeGamemode.Client/Tuning/colors.ts +++ b/ReallifeGamemode.Client/Tuning/colors.ts @@ -1,143 +1,174 @@ const vehicleColors = { - "Klassisch (Util)": { - "Schwarz": 15, - "Silber": 18, - "Dunkelsilber": 17, - "Schattensilber": 20, - "Metall": 19, - "Rot": 43, - "Hellrot": 44, - "Granatrot": 45, - "Gr\u00fcn": 57, - "Dunkelgr\u00fcn": 56, - "Blau": 77, - "Hellblau": 81, - "Dunkelblau": 75, - "Mitternachtsblau": 76, - "Meeresblau": 78, - "Leuchtendes Blau": 79, - "Braun": 108, - "Hellbraun": 109, - "Wei\u00df": 122 - }, - "Klassisch (Worn)": { - "Schwarz": 21, - "Graphit Schwarz": 22, - "Silber": 24, - "Silber Grau": 23, - "Silber Blau": 25, - "Schattensilber": 26, - "Rot": 46, - "Dunkelrot": 48, - "Goldrot": 47, - "Gr\u00fcn": 59, - "Dunkelgr\u00fcn": 58, - "Blau": 86, - "Hellblau": 87, - "Dunkelblau": 85, - "Babyblau": 157, - "Beige": 113, - "Braun": 114, - "Dunkelbraun": 115, - "Wei\u00df 1": 134, - "Wei\u00df 2": 121, - "Wei\u00df 3": 132, - "Orange": 123, - "Helleres Orange": 124 - }, - "Metallic": { - "Schwarz": 0, - "Graphit Schwarz": 1, - "Schwarzer Stahl": 2, - "Dunkles Silber": 3, - "Silber": 4, - "Blaues Silber": 5, - "Grauer Stahl": 6, - "Schattensilber": 7, - "Steinsilber": 8, - "Mitternachtssilber": 9, - "Metall": 10, - "Anthrazitgrau": 11, - "Rot": 27, - "Turin Rot": 28, - "Formel Rot": 29, - "Feuer Rot": 30, - "W\u00fcsten Rot": 33, - "Lava Rot": 150, - "Schwarz Rot": 143, - "Orange": 38, - "Helleres Orange": 138, - "Sonnenaufgang Orange": 36, - "Schokoorange": 104, - "Gr\u00fcn": 53, - "Hellgr\u00fcn": 139, - "Dunkelgr\u00fcn": 49, - "Renngr\u00fcn": 50, - "Meeresgr\u00fcn": 51, - "Olivgr\u00fcn": 52, - "Limettengr\u00fcn": 92, - "Blau": 64, - "Dunkelblau": 62, - "Hellblau": 70, - "Mitternachtsblau": 61, - "Babyblau": 140, - "Marineblau": 65, - "Hafenblau": 66, - "Diamantblau": 67, - "Surfblau": 68, - "Nautisches Blau": 69, - "Lila Blau": 71, - "Ultra Blau": 73, - "Schwarz Blau": 141, - "Gelb": 88, - "Renngelb": 89, - "Vogelgelb": 91, - "Champagner Grau": 93, - "Pueblo Beige": 94, - "Schokobraun": 96, - "Goldbraun": 97, - "Hellbraun": 98, - "Moosbraun": 100, - "Wei\u00df": 111, - "Sahnewei\u00df": 107, - "Frostwei\u00df": 112, - "Pink": 137, - "Lila": 145, - "Schwarz Lila": 142 - }, - "Matt": { - "Schwarz": 12, - "Grau": 13, - "Hellgrau": 14, - "Rot": 39, - "Dunkelrot": 40, - "Orange": 41, - "Gelb": 42, - "Limonengr\u00fcn": 55, - "Blau": 83, - "Dunkelblau": 82, - "Mitternachtsblau": 61, - "Gr\u00fcn": 128, - "Waldgr\u00fcn": 151, - "Laubgr\u00fcn": 155, - "Olivgr\u00fcn": 152, - "Braun": 129, - "Wei\u00df": 131, - "Lila": 148, - "Dunkellila": 149, - "W\u00fcstenbraun": 153, - "W\u00fcstenbr�une": 154 - }, - "Spezial": { - "Geb\u00fcrsteter Stahl": 117, - "Geb\u00fcrsteter schwarzer Stahl": 118, - "Geb\u00fcrstetes Aluminium": 119, - "Geb\u00fcrstetes Gold": 159, - "Gold": 37, - "Pures Gold": 158, - "Chrome": 120, - "Bronze": 90 - } + "Klassisch (Util)": { + "Black": 15, + "Black Poly": 16, + "Dark silver": 17, + "Silver": 18, + "Gun Metal": 19, + "Shadow Silver": 20, + "Red": 43, + "Bright Red": 44, + "Garnet Red": 45, + "Dark Green": 56, + "Green": 57, + "Dark Blue": 75, + "Midnight Blue": 76, + "Blue": 77, + "Sea Foam Blue": 78, + "Lightning blue": 79, + "Maui Blue Poly": 80, + "Bright Blue": 81, + "Brown": 108, + "Medium Brown": 109, + "Light Brown": 110, + "Off White": 122 + }, + "Klassisch (Worn)": { + "Black": 21, + "Graphite": 22, + "Silver Grey": 23, + "Silver": 24, + "Blue Silver": 25, + "Shadow Silver": 26, + "Red": 46, + "Golden Red": 47, + "Dark Red": 48, + "Dark Green": 58, + "Green": 59, + "Sea Wash": 60, + "Dark blue": 85, + "Blue": 86, + "Light blue": 87, + "Honey Beige": 113, + "Brown": 114, + "Dark Brown": 115, + "Straw Beige": 116, + "Off White": 121, + "Orange": 123, + "Light Orange": 124, + "Taxi Yellow": 126, + "Orange ": 130, + "White": 132, + "Olive Army Green": 133 + }, + "Metallic": { + "Black": 0, + "Graphite Black": 1, + "Black Steal": 2, + "Dark Silver": 3, + "Silver": 4, + "Blue Silver": 5, + "Steel Gray": 6, + "Shadow Silver": 7, + "Stone Silver": 8, + "Midnight Silver": 9, + "Gun Metal": 10, + "Anthracite Grey": 11, + "Red": 27, + "Torino Red": 28, + "Formula Red": 29, + "Blaze Red": 30, + "Graceful Red": 31, + "Garnet Red": 32, + "Desert Red": 33, + "Cabernet Red": 34, + "Candy Red": 35, + "Sunrise Orange": 36, + "Classic Gold": 37, + "Orange": 38, + "Dark Green": 49, + "Racing Green": 50, + "Sea Green": 51, + "Olive Green": 52, + "Green": 53, + "Gasoline Blue Green": 54, + "Midnight Blue": 61, + "Dark Blue": 62, + "Saxony Blue": 63, + "Blue": 64, + "Mariner Blue": 65, + "Harbor Blue": 66, + "Diamond Blue": 67, + "Surf Blue": 68, + "Nautical Blue": 69, + "Bright Blue": 70, + "Purple Blue": 71, + "Spinnaker Blue": 72, + "Ultra Blue": 73, + "Bright Blue ": 74, + "Taxi Yellow": 88, + "Race Yellow": 89, + "Bronze": 90, + "Yellow Bird": 91, + "Lime": 92, + "Champagne": 93, + "Pueblo Beige": 94, + "Dark Ivory": 95, + "Choco Brown": 96, + "Golden Brown": 97, + "Light Brown": 98, + "Straw Beige": 99, + "Moss Brown": 100, + "Biston Brown": 101, + "Beechwood": 102, + "Dark Beechwood": 103, + "Choco Orange": 104, + "Beach Sand": 105, + "Sun Bleeched Sand": 106, + "Cream": 107, + "White": 111, + "Frost White": 112, + "Securicor Green": 125, + "Vermillion Pink": 137, + "Black Blue": 141, + "Black Purple": 142, + "Black Red": 143, + "Purple": 145, + "Dark Blue V": 146, + "Lava Red": 150 + }, + "Matt": { + "Black": 12, + "Gray": 13, + "Light Grey": 14, + "Red": 39, + "Dark Red": 40, + "Orange": 41, + "Yellow": 42, + "Lime Green": 55, + "Dark Blue": 82, + "Blue": 83, + "Midnight Blue": 84, + "Green": 128, + "Brown": 129, + "White": 131, + "Purple": 148, + "Dark Purple": 149, + "Forest Green": 151, + "Olive Drab": 152, + "Desert Brown": 153, + "Desert Tan": 154, + "Foilage Green": 155 + }, + "Spezial": { + "Brushed Steel": 117, + "Brushed Black steel": 118, + "Brushed Aluminium": 119, + "Chrome": 120, + "Police Car Blue": 127, + "Pure White": 134, + "Hot Pink": 135, + "Salmon pink": 136, + "Orange": 138, + "Green": 139, + "Blue": 140, + "Hunter Green": 144, + "MODSHOP BLACK1": 147, + "DEFAULT ALLOY COLOR": 156, + "Epsilon Blue": 157, + "Pure Gold": 158, + "Brushed Gold": 159 + } }; export default vehicleColors; \ No newline at end of file diff --git a/ReallifeGamemode.Client/Tuning/main.ts b/ReallifeGamemode.Client/Tuning/main.ts index 9da9b31b..eeed93c8 100644 --- a/ReallifeGamemode.Client/Tuning/main.ts +++ b/ReallifeGamemode.Client/Tuning/main.ts @@ -22,11 +22,11 @@ export default function tuning(globalData: IGlobalData) { const disableInput = [75, 278, 279, 280, 281, 23, 59, 60, 71, 72, 74]; - const carModTypes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 22, -1, 25, 27, 28, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 46, 48, 69]; + const carModTypes = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 15, 18, 22, -2, -1, 25, 27, 28, 33, 34, 35, 38, 39, 40, 41, 42, 43, 44, 46, 48, 69]; const carModSlotName = [ { Slot: 0, Name: "Spoiler", Price: 1000 }, - { Slot: 1, Name: "Frontstoßstange", Price: 1500}, + { Slot: 1, Name: "Frontstoßstange", Price: 1500 }, { Slot: 2, Name: "Heckstoßstange", Price: 1500 }, { Slot: 3, Name: "Seitenschweller", Price: 1500 }, { Slot: 4, Name: "Auspuff", Price: 500 }, @@ -36,14 +36,14 @@ export default function tuning(globalData: IGlobalData) { { Slot: 8, Name: "Extra 1", Price: 2000 }, { Slot: 9, Name: "Extra 2", Price: 2000 }, { Slot: 10, Name: "Dach", Price: 1500 }, - { Slot: 11, Name: "Motor", Price: 50000 }, - { Slot: 12, Name: "Bremsen", Price: 30000 }, - { Slot: 13, Name: "Getriebe", Price: 15000 }, + { Slot: 11, Name: "Motor", BasePercentage: 20, PriceIncreasePerLevel: 7.5 }, + { Slot: 12, Name: "Bremsen", BasePercentage: 5, PriceIncreasePerLevel: 2.5 }, + { Slot: 13, Name: "Getriebe", BasePercentage: 10, PriceIncreasePerLevel: 2.5 }, { Slot: 14, Name: "Hupe", Price: 500 }, { Slot: 15, Name: "Federung", Price: 2000 }, - { Slot: 18, Name: "Turbo", Price: 40000 }, + { Slot: 18, Name: "Turbo", BasePercentage: 45, PriceIncreasePerLevel: 0 }, { Slot: 22, Name: "Licht", Price: 500 }, - { Slot: 23, Name: "Reifen", Price: 1000 }, + { Slot: -2, Name: "Reifen", Price: 2500 }, { Slot: -1, Name: "Lackierung", Price: 1000 }, { Slot: 25, Name: "Nummernschildhalter", Price: 500 }, { Slot: 27, Name: "Innenausstatung", Price: 500 }, @@ -117,6 +117,49 @@ export default function tuning(globalData: IGlobalData) { } ]; + const wheelTypes = [ + { + Name: "Sport", + Type: 0, + }, + { + Name: "Muscle", + Type: 1, + }, + { + Name: "Lowrider", + Type: 2, + }, + { + Name: "SUV", + Type: 3, + }, + { + Name: "Offroad", + Type: 4, + }, + { + Name: "Tuner", + Type: 5, + }, + { + Name: "High End", + Type: 7, + }, + { + Name: "Benny's Originals", + Type: 8, + }, + { + Name: "Benny's Bespoke", + Type: 9, + }, + { + Name: "Street", + Type: 11, + } + ]; + var mainMenu: NativeUI.Menu; mp.events.add('showTuningInfo', () => { @@ -162,10 +205,10 @@ export default function tuning(globalData: IGlobalData) { }); var currentMod = new Array(); - var currentActiveModItem = new Array(); + var currentActiveModItem = new Array(); var currentSelectedItem: VehicleModMenuItem = null; - mp.events.add("showTuningMenu", (noMoney) => { + mp.events.add("showTuningMenu", (noMoney, basePrice) => { mp.events.call("hideTuningInfo", false); mp.gui.chat.show(false); @@ -206,6 +249,13 @@ export default function tuning(globalData: IGlobalData) { mainMenu.AddItem(colorItem); mainMenu.BindMenuToItem(colorMenu, colorItem); + return; + } else if (modType == -2) { + var wheelsItem = new UIMenuItem("Reifen"); + var wheelsMenu = getWheelsMenu(localVehicle); + + mainMenu.AddItem(wheelsItem); + mainMenu.BindMenuToItem(wheelsMenu, wheelsItem); return; } @@ -226,9 +276,6 @@ export default function tuning(globalData: IGlobalData) { } } - var price = noMoney? 0 : getModSlotPrice(modType); - - if (mod === null) { mod = localVehicle.getMod(modType); } @@ -248,6 +295,7 @@ export default function tuning(globalData: IGlobalData) { currentMod[modType] = mod; for (var x = -1; x < modNum; x++) { + var price = noMoney ? 0 : getModSlotPrice(modType, basePrice, x); var modText = ""; if (x === -1) { modText = "Serie"; @@ -265,7 +313,7 @@ export default function tuning(globalData: IGlobalData) { modMenu.CurrentSelection = x; } else { - item.SetRightLabel("$"+ moneyformat(price)); + item.SetRightLabel("$" + moneyformat(price)); } } @@ -304,8 +352,6 @@ export default function tuning(globalData: IGlobalData) { }); }); - - mainMenu.ItemSelect.on((item: NativeUI.UIMenuItem, index: number) => { if (item === repairItem) { mp.events.callRemote("repairVehicle"); @@ -315,7 +361,9 @@ export default function tuning(globalData: IGlobalData) { mainMenu.Visible = true; mainMenu.MenuClose.on(() => { - localVehicle.setLights(0); + if (localVehicle && mp.vehicles.exists(localVehicle)) { + localVehicle.setLights(0); + } globalData.InTuning = false; globalData.InMenu = false; mp.events.call("hideTuningInfo", false); @@ -325,7 +373,7 @@ export default function tuning(globalData: IGlobalData) { mp.events.add("SERVER:Tuning_ModSucessfull", (modType: number, index: number) => { currentMod[modType] = index - 1; - currentActiveModItem[modType].SetRightLabel("$" + moneyformat(currentSelectedItem.price)); + currentActiveModItem[modType].SetRightLabel("$" + moneyformat(currentActiveModItem[modType].price)); currentActiveModItem[modType].SetRightBadge(NativeUI.BadgeStyle.None); currentSelectedItem.SetRightBadge(BadgeStyle.Car); currentSelectedItem.SetRightLabel(""); @@ -456,8 +504,21 @@ export default function tuning(globalData: IGlobalData) { return realModName; } - function getModSlotPrice(modType: number): number { - return carModSlotName.filter(x => x.Slot == modType)[0].Price; + function getModSlotPrice(modType: number, basePrice: number, modIndex?: number): number { + if (modIndex === -1) { + return 0; + } + + let price = 0; + let priceInfo = carModSlotName.filter(x => x.Slot == modType)[0]; + + if (priceInfo.BasePercentage) { + price = ((priceInfo.BasePercentage + priceInfo.PriceIncreasePerLevel * modIndex) / 100) * basePrice; + } else { + price = priceInfo.Price; + } + + return price; } function setHeadlightsColor(vehicle, index) { @@ -480,6 +541,99 @@ export default function tuning(globalData: IGlobalData) { } } + var currentWheelType = null; + var currentWheel = null; + var currentWheelItem: NativeUI.UIMenuItem = null; + var wheelPrice = getModSlotPrice(-2, 0, 0); + var currentSelectedWheelItem: NativeUI.UIMenuItem = null; + + function getWheelsMenu(vehicle: VehicleMp): NativeUI.Menu { + var wheelsMenu = new NativeUI.Menu("Reifen", "rollin on dem rims", new NativeUI.Point(0, screenRes.y / 3)); + + currentWheelType = vehicle.getWheelType(); + currentWheel = vehicle.getMod(23); + currentWheelItem = null; + + wheelTypes.forEach(wheelType => { + var type = wheelType.Type; + + var modsLoaded = false; + + var menuOpenTime: number = null; + + var typeItem = new UIMenuItem(wheelType.Name); + wheelsMenu.AddItem(typeItem); + + var wheelTypeMenu = new Menu(wheelType.Name, "skyr", new Point(0, screenRes.y / 3)); + + wheelsMenu.BindMenuToItem(wheelTypeMenu, typeItem); + + wheelTypeMenu.IndexChange.on((index: number) => { + vehicle.setMod(23, index); + }); + + wheelTypeMenu.MenuOpen.on(() => { + menuOpenTime = Date.now(); + vehicle.setWheelType(type); + if (modsLoaded) { + return; + } + + var wheelNums = vehicle.getNumMods(23); + + for (var i = 0; i < wheelNums; i++) { + var modText = ""; + + modText = mp.game.ui.getLabelText(vehicle.getModTextLabel(23, i)); + if (modText === "NULL") modText = getModName(vehicle, 23, i); + + var item = new VehicleModMenuItem(modText); + + if (type == currentWheelType && i == currentWheel) { + currentWheelItem = item; + currentWheelItem.SetRightBadge(BadgeStyle.Car); + } else { + item.SetRightLabel("$" + moneyformat(wheelPrice)); + } + + wheelTypeMenu.AddItem(item); + } + + modsLoaded = true; + }); + + wheelTypeMenu.ItemSelect.on((item, index: number) => { + if (Date.now() - menuOpenTime < 500 || item == currentWheelItem) { + return; + } + + currentSelectedWheelItem = item; + mp.events.callRemote("CLIENT:Tuning_SetVehicleWheels", type, index, wheelPrice); + }); + + wheelTypeMenu.MenuClose.on(() => { + vehicle.setWheelType(currentWheelType); + vehicle.setMod(23, currentWheel); + }) + }); + + return wheelsMenu; + } + + mp.events.add("SERVER:Tuning_SetWheelsSuccessfull", (type, index) => { + currentWheelType = type; + currentWheel = index; + + if (currentWheelItem) { + currentWheelItem.SetRightLabel("$" + moneyformat(wheelPrice)); + currentWheelItem.SetRightBadge(BadgeStyle.None); + } + + currentWheelItem = currentSelectedWheelItem; + currentWheelItem.SetRightBadge(BadgeStyle.Car); + currentWheelItem.SetRightLabel(""); + }) + function getColorMenu(): NativeUI.Menu { var currentColors = mp.players.local.vehicle.getColours(0, 0); @@ -489,7 +643,7 @@ export default function tuning(globalData: IGlobalData) { var primaryColor = getSingleColorMenu("Primärfarbe", currentPrimaryColor, primaryColorSelect, primaryColorChange); var secondaryColor = getSingleColorMenu("Sekundärfarbe", currentSecondaryColor, secondaryColorSelect, secondaryColorChange); - var menu = new Menu("Lackierungen", "Ändere die Farbe deines Fahrzeugs", new Point(0, screenRes.y / 3)); + var menu = new Menu("Lackierungen", "Fahrzeugfarbe ändern", new Point(0, screenRes.y / 3)); var primaryColorItem = new UIMenuItem("Primärfarbe"); var secondaryColorItem = new UIMenuItem("Sekundärfarbe"); @@ -512,7 +666,7 @@ export default function tuning(globalData: IGlobalData) { } function getSingleColorMenu(title: string, currentColor: number, onSelect: (color: number) => void, onChange: (color: number) => void): NativeUI.Menu { - var menu = new Menu(title, "Ändere die Farbe deines Fahrzeugs", new Point(0, screenRes.y / 3)); + var menu = new Menu(title, "Fahrzeugfarbe ändern", new Point(0, screenRes.y / 3)); var colorCategories = Object.keys(vehicleColors); @@ -522,7 +676,7 @@ export default function tuning(globalData: IGlobalData) { var categoryItem = new UIMenuItem(category); menu.AddItem(categoryItem); - var categoryMenu = new Menu(category, "Ändere die Farbe deines Fahrzeugs", new Point(0, screenRes.y / 3)); + var categoryMenu = new Menu(category, "Fahrzeugfarbe ändern", new Point(0, screenRes.y / 3)); var categoryColors = Object.keys(vehicleColors[category]); categoryColors.forEach(categoryColor => { @@ -578,6 +732,8 @@ export default function tuning(globalData: IGlobalData) { mp.events.callRemote("CLIENT:TuningManager_SetVehicleColor", false, color); } + + class VehicleModMenuItem extends UIMenuItem { public price: number; } diff --git a/ReallifeGamemode.Client/Tuning/sync.ts b/ReallifeGamemode.Client/Tuning/sync.ts index 1ff457cf..dd500d21 100644 --- a/ReallifeGamemode.Client/Tuning/sync.ts +++ b/ReallifeGamemode.Client/Tuning/sync.ts @@ -11,6 +11,12 @@ if (taxiLight) vehicle.setTaxiLights(taxiLight); var mod18 = vehicle.getVariable('mod18'); + var wheelType = vehicle.getVariable('wheelType'); + + if (wheelType !== undefined) { + vehicle.setWheelType(wheelType); + vehicle.setMod(23, vehicle.getMod(23)); + } if (mod18 !== undefined) { vehicle.toggleMod(18, mod18); @@ -22,8 +28,13 @@ if (!veh) { return; } + if (slot == -2) { + veh.setWheelType(newval); + } + else { + veh.toggleMod(slot, newval); + } - veh.toggleMod(slot, newval); }); mp.events.addDataHandler("vehicleTaxiLight", (entity: VehicleMp, state: boolean) => { diff --git a/ReallifeGamemode.Client/admin/spectate.ts b/ReallifeGamemode.Client/admin/spectate.ts index cf66bb43..532c54ad 100644 --- a/ReallifeGamemode.Client/admin/spectate.ts +++ b/ReallifeGamemode.Client/admin/spectate.ts @@ -1,12 +1,29 @@ -let cam: CameraMp = mp.cameras.new('spectateCam');; +let cam: CameraMp; + +let specPlayer: PlayerMp; + mp.events.add("SERVER:ADMIN_SPECTATE", (targetPlayer) => { - cam.attachTo(targetPlayer.handle, 10.0, 0.0, 10.0, true); - cam.setActive(true); + //cam.attachTo(targetPlayer.handle, 0, 1.0, 1.0, 1.0, 0, 0, 0, true, false, false, false, 0, false); + specPlayer = targetPlayer; + cam = mp.cameras.new('spectateCam'); + cam.attachTo(targetPlayer.handle, 0, -4, 1.5, true); + cam.pointAt(targetPlayer.handle, 0, 0, 0, true); + cam.setActive(true); + mp.game.cam.renderScriptCams(true, false, 0, true, false); + mp.players.local.attachTo(targetPlayer.handle, 0, 0, -4, 1, 0, 0, 0, true, false, false, false, 0, false); }); mp.events.add("SERVER:ADMIN_STOP_SPECTATE", () => { - if (cam.isActive() == true) { - cam.setActive(false); + if (mp.cameras.exists(cam)) { + cam.destroy(); + mp.game.cam.renderScriptCams(false, false, 0, true, false); + mp.players.local.detach(true, true); + } +}); + +mp.events.add("render", () => { + if (mp.cameras.exists(cam)) { + cam.setRot(0, 0, specPlayer.getRotation(0).z, 0); } }); \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/atm/atm.css b/ReallifeGamemode.Client/assets/css/atm/atm.css index e95e49ef..772c4d45 100644 --- a/ReallifeGamemode.Client/assets/css/atm/atm.css +++ b/ReallifeGamemode.Client/assets/css/atm/atm.css @@ -1,11 +1,11 @@ @font-face { font-family: 'OSL'; - src: url('package://assets/font/OSL.ttf') format('truetype'); + src: url('../../font/OSL.ttf') format('truetype'); } @font-face { font-family: 'OSB'; - src: url('package://assets/font/OpenSans-Bold.ttf') format('truetype'); + src: url('../../font/OpenSans-Bold.ttf') format('truetype'); } * { diff --git a/ReallifeGamemode.Client/assets/css/chat/main.css b/ReallifeGamemode.Client/assets/css/chat/main.css index 34bc6a52..1f9c7f5c 100644 --- a/ReallifeGamemode.Client/assets/css/chat/main.css +++ b/ReallifeGamemode.Client/assets/css/chat/main.css @@ -110,4 +110,4 @@ a { display: inline-block; width: 5.25em; } -/*# sourceMappingURL=main.css.map */ +/*# sourceMappingURL=main.css.map */ \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/chat/main.css.map b/ReallifeGamemode.Client/assets/css/chat/main.css.map index a30a22ea..bd92c0de 100644 --- a/ReallifeGamemode.Client/assets/css/chat/main.css.map +++ b/ReallifeGamemode.Client/assets/css/chat/main.css.map @@ -6,4 +6,4 @@ ], "names": [], "file": "main.css" -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/interaction/style.css b/ReallifeGamemode.Client/assets/css/interaction/style.css new file mode 100644 index 00000000..b86bbf1f --- /dev/null +++ b/ReallifeGamemode.Client/assets/css/interaction/style.css @@ -0,0 +1,109 @@ +html { + -webkit-box-sizing: border-box; + box-sizing: border-box; +} + +*, *:before, *:after { + -webkit-box-sizing: inherit; + box-sizing: inherit; +} + +html, body { + height: 100vh; + width: 100vw; +} + +body { + margin: 0; + position: relative; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; +} + +main { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + position: absolute; + bottom: 15vh; +} + +.vehicle-menu { + background-color: rgba(0, 0, 0, 0.5); + list-style: none; + margin: 0; + padding: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: horizontal; + -webkit-box-direction: normal; + -ms-flex-direction: row; + flex-direction: row; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + padding: .5em; + border-radius: 3px; + color: white; +} + +.vehicle-menu__item { + width: 8em; + padding: .5em; + border-radius: 3px; +} + +.vehicle-menu__item:not(:last-child) { + margin-right: .5em; +} + +.vehicle-menu__item:hover { + background-color: rgba(0, 0, 0, 0.125); +} + +.vehicle-menu__icon { + max-width: 3em; + height: auto; + -ms-flex-item-align: center; + -ms-grid-row-align: center; + align-self: center; +} + +.vehicle-menu__text { + text-align: center; + margin-top: .5em; +} + +.flex--column { + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; +} +/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/interaction/style.css.map b/ReallifeGamemode.Client/assets/css/interaction/style.css.map new file mode 100644 index 00000000..3d23dda6 --- /dev/null +++ b/ReallifeGamemode.Client/assets/css/interaction/style.css.map @@ -0,0 +1,9 @@ +{ + "version": 3, + "mappings": "AAAA,AAAA,IAAI,CAAC;EAAE,UAAU,EAAE,UAAU;CAAI;;AACjC,AAAA,CAAC,EAAE,CAAC,AAAA,OAAO,EAAE,CAAC,AAAA,MAAM,CAAC;EAAE,UAAU,EAAE,OAAO;CAAI;;AAE9C,AAAA,IAAI,EAAE,IAAI,CAAC;EACT,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;CACb;;AAED,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,CAAC;EACT,QAAQ,EAAE,QAAQ;EAClB,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,MAAM;EAEvB,WAAW,EAAE,oIAAoI;CAClJ;;AAED,AAAA,IAAI,CAAC;EACH,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EACnB,QAAQ,EAAE,QAAQ;EAClB,MAAM,EAAE,IAAI;CACb;;AAED,AAAA,aAAa,CAAC;EACZ,gBAAgB,EAAO,kBAAK;EAC5B,UAAU,EAAE,IAAI;EAChB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,CAAC;EAEV,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,GAAG;EACnB,eAAe,EAAE,MAAM;EACvB,WAAW,EAAE,MAAM;EACnB,OAAO,EAAE,IAAI;EAEb,aAAa,EAAE,GAAG;EAClB,KAAK,EAAE,KAAK;CAsBb;;AApBE,AAAD,mBAAO,CAAC;EACN,KAAK,EAAE,GAAG;EACV,OAAO,EAAE,IAAI;EACb,aAAa,EAAE,GAAG;CAInB;;AAPA,AAKC,mBALK,AAKJ,IAAK,CAAA,WAAW,EAAE;EAAE,YAAY,EAAE,IAAI;CAAI;;AAL5C,AAMC,mBANK,AAMJ,MAAM,CAAC;EAAE,gBAAgB,EAAO,oBAAK;CAAW;;AAGlD,AAAD,mBAAO,CAAC;EACN,SAAS,EAAE,GAAG;EACd,MAAM,EAAE,IAAI;EAEZ,UAAU,EAAE,MAAM;CACnB;;AAEA,AAAD,mBAAO,CAAC;EACN,UAAU,EAAE,MAAM;EAClB,UAAU,EAAE,IAAI;CACjB;;AAGH,AAAA,aAAa,CAAC;EACZ,OAAO,EAAE,IAAI;EACb,cAAc,EAAE,MAAM;CACvB", + "sources": [ + "style.scss" + ], + "names": [], + "file": "style.css" +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/interaction/style.scss b/ReallifeGamemode.Client/assets/css/interaction/style.scss new file mode 100644 index 00000000..591604ae --- /dev/null +++ b/ReallifeGamemode.Client/assets/css/interaction/style.scss @@ -0,0 +1,68 @@ +html { box-sizing: border-box; } +*, *:before, *:after { box-sizing: inherit; } + +html, body { + height: 100vh; + width: 100vw; +} + +body { + margin: 0; + position: relative; + display: flex; + flex-direction: row; + justify-content: center; + + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif; +} + +main { + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + position: absolute; + bottom: 15vh; +} + +.vehicle-menu { + background-color: rgba(black, .5); + list-style: none; + margin: 0; + padding: 0; + + display: flex; + flex-direction: row; + justify-content: center; + align-items: center; + padding: .5em; + + border-radius: 3px; + color: white; + + &__item { + width: 8em; + padding: .5em; + border-radius: 3px; + + &:not(:last-child) { margin-right: .5em; } + &:hover { background-color: rgba(black, .125); } + } + + &__icon { + max-width: 3em; + height: auto; + + align-self: center; + } + + &__text { + text-align: center; + margin-top: .5em; + } +} + +.flex--column { + display: flex; + flex-direction: column; +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/login/styles.css b/ReallifeGamemode.Client/assets/css/login/styles.css index 7385c7db..b6b607a0 100644 --- a/ReallifeGamemode.Client/assets/css/login/styles.css +++ b/ReallifeGamemode.Client/assets/css/login/styles.css @@ -47,7 +47,7 @@ body { header { height: 5em; margin-bottom: 2em; - background-image: url("package://assets/img/login/logo.png"); + background-image: url("../../img/login/logo.png"); background-repeat: no-repeat; background-position: center; background-size: contain; @@ -155,7 +155,7 @@ main form button.transparent:focus { main form button.transparent#submit { width: 3.25em; - background-image: url("package://assets/img/login/enter.png"); + background-image: url("../../img/login/enter.png"); background-repeat: no-repeat; background-position: right; background-size: contain; @@ -175,6 +175,10 @@ main form #alert.hidden { visibility: hidden; } +footer, .credits { + color: rgba(0, 0, 0, 0.5); +} + footer { height: -webkit-fit-content; height: -moz-fit-content; @@ -185,7 +189,6 @@ footer { align-self: center; position: fixed; bottom: 1em; - color: rgba(0, 0, 0, 0.5); } footer .link-list { @@ -199,6 +202,14 @@ footer .link-list { list-style: none; } +.credits { + position: absolute; + top: .25em; + right: .5em; + font-size: .8em; + font-weight: normal; +} + body.light { color: #333; } @@ -208,7 +219,7 @@ body.light main { } body.light header { - background-image: url("package://assets/img/login/logo-light.png"); + background-image: url("../../img/login/logo-light.png"); opacity: .75; } @@ -221,7 +232,7 @@ body.light form span#password-visibility::before { } body.light form button.transparent#submit { - background-image: url("package://assets/img/login/enter-dark.png"); + background-image: url("../../img/login/enter-dark.png"); } body.light form #alert { @@ -230,7 +241,7 @@ body.light form #alert { border: 1px solid rgba(255, 125, 125, 0.15); } -body.light footer { +body.light footer, body.light .credits { color: rgba(255, 255, 255, 0.5); } /*# sourceMappingURL=styles.css.map */ \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/login/styles.css.map b/ReallifeGamemode.Client/assets/css/login/styles.css.map index 66999e01..98d6a38e 100644 --- a/ReallifeGamemode.Client/assets/css/login/styles.css.map +++ b/ReallifeGamemode.Client/assets/css/login/styles.css.map @@ -1,9 +1,9 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "styles.scss" ], "names": [], "file": "styles.css" -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/login/styles.scss b/ReallifeGamemode.Client/assets/css/login/styles.scss index f4ecceaa..e796793b 100644 --- a/ReallifeGamemode.Client/assets/css/login/styles.scss +++ b/ReallifeGamemode.Client/assets/css/login/styles.scss @@ -34,7 +34,7 @@ header { height: 5em; margin-bottom: 2em; - background-image: url('package://assets/img/login/logo.png'); + background-image: url('../../img/login/logo.png'); background-repeat: no-repeat; background-position: center; background-size: contain; @@ -141,7 +141,7 @@ main { &#submit { width: 3.25em; - background-image: url('package://assets/img/login/enter.png'); + background-image: url('../../img/login/enter.png'); background-repeat: no-repeat; background-position: right; background-size: contain; @@ -166,6 +166,8 @@ main { } } +footer, .credits { color: rgba(0, 0, 0, .5); } + footer { height: fit-content; width: 60ch; @@ -174,8 +176,6 @@ footer { position: fixed; bottom: 1em; - color: rgba(0, 0, 0, .5); - .link-list { padding: 0; margin: 0; @@ -185,6 +185,14 @@ footer { } } +.credits { + position: absolute; + top: .25em; + right: .5em; + font-size: .8em; + font-weight: normal; +} + body.light { color: #333; @@ -193,7 +201,7 @@ body.light { } header { - background-image: url('package://assets/img/login/logo-light.png'); + background-image: url('../../img/login/logo-light.png'); opacity: .75; } @@ -210,7 +218,7 @@ body.light { button.transparent { &#submit { - background-image: url('package://assets/img/login/enter-dark.png'); + background-image: url('../../img/login/enter-dark.png'); } } @@ -221,7 +229,5 @@ body.light { } } - footer { - color: rgba(255, 255, 255, .5); - } + footer, .credits { color: rgba(255, 255, 255, .5); } } diff --git a/ReallifeGamemode.Client/assets/css/onlinelist/style.css b/ReallifeGamemode.Client/assets/css/onlinelist/style.css index 9daec4a7..b959ef3e 100644 --- a/ReallifeGamemode.Client/assets/css/onlinelist/style.css +++ b/ReallifeGamemode.Client/assets/css/onlinelist/style.css @@ -104,9 +104,22 @@ table th:last-child, table td:last-child { } table tr td { + position: relative; overflow: hidden; } +table tr td span.player__status { + position: absolute; + top: .45em; + right: 1em; + font-size: .9em; + font-weight: normal; + line-height: 1.15; + padding: .4em .5em; + background-color: rgba(255, 255, 255, 0.125); + border-radius: 3px; +} + table tr td:nth-child(1) { width: 7ch !important; } @@ -209,4 +222,12 @@ ol.inline.stats { ol.inline.stats abbr { text-decoration: none; } -/*# sourceMappingURL=style.css.map */ + +.show { + display: show; +} + +.hidden { + display: none; +} +/*# sourceMappingURL=style.css.map */ \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/onlinelist/style.css.map b/ReallifeGamemode.Client/assets/css/onlinelist/style.css.map index 8b21e62f..375dfcc9 100644 --- a/ReallifeGamemode.Client/assets/css/onlinelist/style.css.map +++ b/ReallifeGamemode.Client/assets/css/onlinelist/style.css.map @@ -1,6 +1,6 @@ { "version": 3, - "mappings": "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", + "mappings": "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", "sources": [ "style.scss" ], diff --git a/ReallifeGamemode.Client/assets/css/onlinelist/style.scss b/ReallifeGamemode.Client/assets/css/onlinelist/style.scss index 3887d166..9c815a47 100644 --- a/ReallifeGamemode.Client/assets/css/onlinelist/style.scss +++ b/ReallifeGamemode.Client/assets/css/onlinelist/style.scss @@ -80,8 +80,23 @@ table { tr { td { + position: relative; overflow: hidden; + span.player__status { + position: absolute; + top: .45em; + right: 1em; + + font-size: .9em; + font-weight: normal; + line-height: 1.15; + padding: .4em .5em; + + background-color: rgba(white, .125); + border-radius: 3px; + } + &:nth-child(1) { width: 7ch !important; } &:nth-child(2) { max-width: 36ch; @@ -140,4 +155,7 @@ ol.inline.stats { justify-content: center; abbr { text-decoration: none; } -} \ No newline at end of file +} + +.show { display: show; } +.hidden { display: none; } \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/css/vehiclemenu/style.css b/ReallifeGamemode.Client/assets/css/vehiclemenu/style.css index 6d928238..3b4e2db4 100644 --- a/ReallifeGamemode.Client/assets/css/vehiclemenu/style.css +++ b/ReallifeGamemode.Client/assets/css/vehiclemenu/style.css @@ -1,6 +1,6 @@ @font-face { font-family: 'OSL'; - src: url('package://assets/font/OpenSans-Bold.ttf') format('truetype'); + src: url('../../font/OpenSans-Bold.ttf') format('truetype'); } *:focus { diff --git a/ReallifeGamemode.Client/assets/html/Introduction/Introduction.html b/ReallifeGamemode.Client/assets/html/Introduction/Introduction.html index 497b8ce4..fc817986 100644 --- a/ReallifeGamemode.Client/assets/html/Introduction/Introduction.html +++ b/ReallifeGamemode.Client/assets/html/Introduction/Introduction.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -28,7 +28,7 @@ Steuerung:
T - Chat öffnen
M - Interaktionsmenü öffnen und schließen
- X - Fahrzeug auf-/abschließen sowie im Fahrzeuginteraktionsmenü öffnen
+ Z - Fahrzeug auf-/abschließen sowie im Fahrzeuginteraktionsmenü öffnen
N - Fahrzeugmotor Starten
O - Onlineliste öffnen/schließen
I - Inventar öffnen/schließen
@@ -39,6 +39,6 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/Playerlist/Tabliste.html b/ReallifeGamemode.Client/assets/html/Playerlist/Tabliste.html index 764b197a..d843ae26 100644 --- a/ReallifeGamemode.Client/assets/html/Playerlist/Tabliste.html +++ b/ReallifeGamemode.Client/assets/html/Playerlist/Tabliste.html @@ -23,7 +23,7 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/School/DrivingSchool.html b/ReallifeGamemode.Client/assets/html/School/DrivingSchool.html index d45b1e4a..5a53efbb 100644 --- a/ReallifeGamemode.Client/assets/html/School/DrivingSchool.html +++ b/ReallifeGamemode.Client/assets/html/School/DrivingSchool.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -33,6 +33,6 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/SimpleTextBox.html b/ReallifeGamemode.Client/assets/html/SimpleTextBox.html index 5837569a..cc32ed79 100644 --- a/ReallifeGamemode.Client/assets/html/SimpleTextBox.html +++ b/ReallifeGamemode.Client/assets/html/SimpleTextBox.html @@ -1,7 +1,7 @@  - - + + @@ -17,7 +17,7 @@ - - + + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/Wantedlist/wanteds.html b/ReallifeGamemode.Client/assets/html/Wantedlist/wanteds.html index a5163765..f245ef13 100644 --- a/ReallifeGamemode.Client/assets/html/Wantedlist/wanteds.html +++ b/ReallifeGamemode.Client/assets/html/Wantedlist/wanteds.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -32,7 +32,7 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/atm/index.html b/ReallifeGamemode.Client/assets/html/atm/index.html index 152092a5..c9a86fc0 100644 --- a/ReallifeGamemode.Client/assets/html/atm/index.html +++ b/ReallifeGamemode.Client/assets/html/atm/index.html @@ -3,9 +3,9 @@ - + @@ -292,8 +292,8 @@ - - + + - + + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html b/ReallifeGamemode.Client/assets/html/driver-history/index.html similarity index 75% rename from ReallifeGamemode.Client/assets/vehicle/lastPlayers.html rename to ReallifeGamemode.Client/assets/html/driver-history/index.html index 293f1c03..f189c480 100644 --- a/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html +++ b/ReallifeGamemode.Client/assets/html/driver-history/index.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -14,7 +14,7 @@
-

Letze Fahrer

+

Letze(r) Fahrer

    @@ -23,7 +23,7 @@
- - + + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/factionmanagement/ranks/index.html b/ReallifeGamemode.Client/assets/html/factionmanagement/ranks/index.html index d27f359e..7561a03f 100644 --- a/ReallifeGamemode.Client/assets/html/factionmanagement/ranks/index.html +++ b/ReallifeGamemode.Client/assets/html/factionmanagement/ranks/index.html @@ -9,7 +9,7 @@ - +
@@ -22,9 +22,9 @@
- - - - + + + + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/helpcommand/ahelp.html b/ReallifeGamemode.Client/assets/html/helpcommand/ahelp.html index 2b192fcd..669a014d 100644 --- a/ReallifeGamemode.Client/assets/html/helpcommand/ahelp.html +++ b/ReallifeGamemode.Client/assets/html/helpcommand/ahelp.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -66,6 +66,6 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/helpcommand/shelp.html b/ReallifeGamemode.Client/assets/html/helpcommand/shelp.html index d4e32c13..eab5e6a5 100644 --- a/ReallifeGamemode.Client/assets/html/helpcommand/shelp.html +++ b/ReallifeGamemode.Client/assets/html/helpcommand/shelp.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -42,6 +42,6 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/helpcommand/userhelp.html b/ReallifeGamemode.Client/assets/html/helpcommand/userhelp.html index 5459b629..39a6148d 100644 --- a/ReallifeGamemode.Client/assets/html/helpcommand/userhelp.html +++ b/ReallifeGamemode.Client/assets/html/helpcommand/userhelp.html @@ -5,7 +5,7 @@ Eingabe | Life of German - + @@ -40,6 +40,6 @@ - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inputhelper/index.html b/ReallifeGamemode.Client/assets/html/inputhelper/index.html index 335e30f4..fe3e0310 100644 --- a/ReallifeGamemode.Client/assets/html/inputhelper/index.html +++ b/ReallifeGamemode.Client/assets/html/inputhelper/index.html @@ -5,10 +5,10 @@ Eingabe | Life of German - - - - + + + + @@ -26,7 +26,7 @@ - + - + diff --git a/ReallifeGamemode.Client/assets/html/interaction/index.html b/ReallifeGamemode.Client/assets/html/interaction/index.html new file mode 100644 index 00000000..49d1a41e --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/interaction/index.html @@ -0,0 +1,59 @@ + + + + + + + + + Fahrzeugmenu + + + +
+
    +
  • +
    + + Motor
    an-/ausschalten
    +
    +
  • +
  • +
    + + Gurt
    an-/ablegen
    +
    +
  • +
  • +
    + + Fahrzeug
    auf-/abschließen
    +
    +
  • + +
  • +
    + + Fahrzeug
    parken
    +
    +
  • +
  • +
    + + Türen
    öffnen/schließen
    +
    +
  • +
+
+ + + + + diff --git a/ReallifeGamemode.Client/assets/html/inventory/inventory.html b/ReallifeGamemode.Client/assets/html/inventory/inventory.html index 5e537caf..23e0cc6f 100644 --- a/ReallifeGamemode.Client/assets/html/inventory/inventory.html +++ b/ReallifeGamemode.Client/assets/html/inventory/inventory.html @@ -10,76 +10,78 @@ -
-
+