Merge branch 'develop' into 'master'

0.8.0

See merge request log-gtav/reallife-gamemode!67
This commit is contained in:
hydrant
2021-05-08 23:44:18 +00:00
135 changed files with 8163 additions and 1113 deletions

View File

@@ -0,0 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
</PropertyGroup>
</Project>

View File

@@ -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 = [

View File

@@ -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);
}
}

View File

@@ -0,0 +1,534 @@
import * as NativeUI from '../libs/NativeUI';
import * as Data from './data';
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const UIMenuCheckboxItem = NativeUI.UIMenuCheckboxItem;
const BadgeStyle = NativeUI.BadgeStyle;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
const Color = NativeUI.Color;
const Font = NativeUI.Font;
var screenRes = mp.game.graphics.getScreenResolution(0, 0);
const creatorCoords = {
camera: new mp.Vector3(265.6026, -1340.2378, 25.000),
cameraLookAt: new mp.Vector3(266.472, -1339.1357, 25.000)
};
const localPlayer = mp.players.local;
export default function charSurgery(globalData: IGlobalData) {
var creatorCamera: CameraMp;
var activeSurgery: boolean = false;
var saveCharacter: PlayerCharacterData;
var characterData: PlayerCharacterData;
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var creatorMainMenu: NativeUI.Menu;
var debugString = [0, 0, 0, 0, 0,0,0,0,0,0,0,0,0,0];
mp.events.add("render", () => {
mp.game.graphics.drawText(debugString.toString(), [0.5, 0.1],
{
font: 4,
color: [255, 255, 255, 255],
scale: [0.5, 0.5],
outline: true,
centre: false
})
});
mp.events.add("toggleSurgery", (jsonCharacterData: string) => {
if (!mp.cameras.exists(creatorCamera)) {
activeSurgery = true;
debugString[0] = 1;
characterData = JSON.parse(jsonCharacterData);
saveCharacter = characterData;
debugString[1] = 2;
loadCharacterData();
debugString[2] = 3;
creatorCamera = mp.cameras.new("creatorCamera", creatorCoords.camera, new mp.Vector3(0, 0, 0), 45);
creatorCamera.pointAtCoord(creatorCoords.cameraLookAt.x, creatorCoords.cameraLookAt.y, creatorCoords.cameraLookAt.z);
creatorCamera.setActive(true);
globalData.InMenu = true;
globalData.InMenu = true;
mp.gui.chat.show(false);
mp.game.ui.displayRadar(false);
mp.game.ui.displayHud(false);
localPlayer.clearTasksImmediately();
localPlayer.freezePosition(true);
mp.game.cam.renderScriptCams(true, false, 0, true, false);
debugString[3] = 4;
applyCreatorOutfit();
getCharacterMainMenu();
}
});
var loadedFeatures;
var loadedAppearance;
var loadedAppearanceOpacity;
function loadCharacterData() {
loadedFeatures = [
characterData.NoseWidth,
characterData.NoseBottomHeight,
characterData.NoseTipLength,
characterData.NoseBridgeDepth,
characterData.NoseTipHeight,
characterData.NoseBroken,
characterData.BrowHeight,
characterData.BrowDepth,
characterData.CheekboneHeight,
characterData.CheekboneWidth,
characterData.CheekDepth,
characterData.EyeSize,
characterData.LipThickness,
characterData.JawWidth,
characterData.JawShape,
characterData.ChinHeight,
characterData.ChinDepth,
characterData.ChinWidth,
characterData.ChinIndent,
characterData.NeckWidth
];
loadedAppearance = [
characterData.Blemishes,
characterData.FacialHair,
characterData.Eyebrows,
characterData.Ageing,
characterData.Makeup,
characterData.Blush,
characterData.Complexion,
characterData.SunDamage,
characterData.Lipstick,
characterData.Freckles,
characterData.ChestHair
];
loadedAppearanceOpacity = [
characterData.BlemishesOpacity,
characterData.FacialHairOpacity,
characterData.EyebrowsOpacity,
characterData.AgeingOpacity,
characterData.MakeupOpacity,
characterData.BlushOpacity,
characterData.ComplexionOpacity,
characterData.SunDamageOpacity,
characterData.LipstickOpacity,
characterData.FrecklesOpacity,
characterData.ChestHairOpacity
];
}
//HAUPTMENÜ
function getCharacterMainMenu(): NativeUI.Menu {
creatorMainMenu = new Menu("Chirurg", "", new Point(0, screenRes.y / 3), null, null);
creatorMainMenu.Visible = false;
debugString[4] = 5;
var genderItem = new UIMenuListItem("Geschlecht", "~r~Dies setzt deine Einstellungen zurück.", new ItemsCollection(["Männlich", "Weiblich"]));
creatorMainMenu.AddItem(genderItem);
genderItem.Index = characterData.Gender == false ? 0 : 1;
debugString[5] = 6;
var parentsItem = new UIMenuItem("Eltern", "Eltern des Charakters.");
creatorMainMenu.AddItem(parentsItem);
creatorMainMenu.BindMenuToItem(getParentsMenu(creatorMainMenu), parentsItem);
debugString[6] = 7;
var featureItem = new UIMenuItem("Gesichtsmerkmale", "Gesichtsmerkmale des Charakters.")
creatorMainMenu.AddItem(featureItem);
creatorMainMenu.BindMenuToItem(getFeaturesMenu(creatorMainMenu), featureItem);
debugString[7] = 8;
var appearanceItem = new UIMenuItem("Aussehen", "Aussehen des Charakters.")
creatorMainMenu.AddItem(appearanceItem);
creatorMainMenu.BindMenuToItem(getAppearanceMenu(creatorMainMenu), appearanceItem);
debugString[8] = 9;
var hairAndColorItem = new UIMenuItem("Haar & Farben", "Haare & Farben deines Charakters.")
creatorMainMenu.AddItem(hairAndColorItem);
creatorMainMenu.BindMenuToItem(getHairAndColorMenu(creatorMainMenu), hairAndColorItem);
debugString[9] = 10;
//Charakterdrehung
var angles = [];
for (var i = -180.0; i <= 180.0; i += 5.0) angles.push(i.toFixed(1));
var angleItem = new UIMenuListItem("Drehung", "", new ItemsCollection(angles));
creatorMainMenu.AddItem(angleItem);
var saveItem = new UIMenuItem("Operieren", "Der Chirurg macht die Arbeit, lehn dich zurück");
saveItem.BackColor = new Color(13, 71, 161);
saveItem.HighlightedBackColor = new Color(25, 118, 210);
creatorMainMenu.AddItem(saveItem);
creatorMainMenu.ListChange.on((item, listIndex) => {
if (item === genderItem) {
saveCharacter.Gender = <boolean>listIndex;
mp.events.callRemote("creator_GenderChange", listIndex);
setTimeout(() => {
localPlayer.clearTasksImmediately();
applyCreatorOutfit();
angleItem.Index = 0;
resetParents();
resetFeatures();
resetAppearance();
}, 200);
} else if (item === angleItem) {
localPlayer.setHeading(parseFloat(angleItem.SelectedValue));
localPlayer.clearTasksImmediately();
}
});
creatorMainMenu.MenuClose.on(() => {
leaveCreator();
});
creatorMainMenu.Visible = true;
return creatorMainMenu;
}
var fatherItem: NativeUI.UIMenuListItem;
var motherItem: NativeUI.UIMenuListItem;
var similarityItem: NativeUI.UIMenuListItem;
var skinSimilarityItem: NativeUI.UIMenuListItem;
var creatorParentsMenu: NativeUI.Menu;
//MENÜ FÜR ELTERN
function getParentsMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
var similarities = [];
for (var i = 0; i <= 100; i++) similarities.push(i + "%");
creatorParentsMenu = new Menu("Eltern", "", new Point(0, screenRes.y / 3), null, null);
creatorParentsMenu.Visible = false;
fatherItem = new UIMenuListItem("Vater", "Dem Charakter sein Vadda.", new ItemsCollection(Data.fatherNames));
creatorParentsMenu.AddItem(fatherItem);
//fatherItem.Index = characterData.Father;
motherItem = new UIMenuListItem("Mutter", "Dem Charakter seine Mudda.", new ItemsCollection(Data.motherNames));
creatorParentsMenu.AddItem(motherItem);
//motherItem.Index = characterData.Mother;
similarityItem = new UIMenuListItem("\u00c4hnlichkeit", "\u00c4hnlichkeit zu den Eltern.\n(niedriger = feminin, h\u00f6her = maskulin)", new ItemsCollection(similarities));
creatorParentsMenu.AddItem(similarityItem);
//similarityItem.Index = characterData.Similarity;
skinSimilarityItem = new UIMenuListItem("Hautfarbe", "Hautfarben \u00c4hnlichkeit zu den Eltern.\n(niedriger = Mutter, h\u00f6her = Vater)", new ItemsCollection(similarities));
creatorParentsMenu.AddItem(skinSimilarityItem);
//skinSimilarityItem.Index = characterData.SkinSimilarity;
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt die Eltern zurück. :'(");
creatorParentsMenu.AddItem(resetItem);
creatorParentsMenu.ItemSelect.on((item, index) => {
if (item == resetItem) {
resetParents();
}
});
creatorParentsMenu.ListChange.on((item, listIndex) => {
updateParents();
});
debugString[10] = 11;
return creatorParentsMenu;
}
function updateParents() {
localPlayer.setHeadBlendData(
// shape
Data.mothers[motherItem.Index],
Data.fathers[fatherItem.Index],
0,
// skin
Data.mothers[motherItem.Index],
Data.fathers[fatherItem.Index],
0,
// mixes
similarityItem.Index * 0.01,
skinSimilarityItem.Index * 0.01,
0.0,
false
);
}
function resetParents(refresh = false) {
fatherItem.Index = 0;//characterData.Father.valueOf();
motherItem.Index = 0;//characterData.Mother.valueOf();
similarityItem.Index = (characterData.Gender == false) ? 100 : 0; //characterData.Similarity.valueOf();//
skinSimilarityItem.Index = (characterData.Gender == false) ? 100 : 0;//characterData.SkinSimilarity.valueOf();
updateParents();
if (refresh) creatorParentsMenu.RefreshIndex();
}
//Menü für Gesichtsmerkmale
var featureItems = [];
function getFeaturesMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
var features = [];
for (var i = -1.0; i <= 1.01; i += 0.01) features.push(i.toFixed(2));
var creatorFeaturesMenu = new Menu("Gesichtsmerkmale", "", new Point(0, screenRes.y / 3), null, null);
creatorFeaturesMenu.Visible = false;
debugString[6] = 7;
for (var i = 0; i < Data.featureNames.length; i++) {
var tempFeatureItem = new UIMenuListItem(Data.featureNames[i], "", new ItemsCollection(features));
tempFeatureItem.Index = 100;
featureItems.push(tempFeatureItem);
creatorFeaturesMenu.AddItem(tempFeatureItem);
//tempFeatureItem.Index = loadedFeatures[i];
}
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt Gesichtsmerkmale zurück.");
creatorFeaturesMenu.AddItem(resetItem);
creatorFeaturesMenu.ItemSelect.on((item, index) => {
switch (item) {
case resetItem:
resetFeatures();
break;
}
});
creatorFeaturesMenu.ListChange.on((item, listIndex) => {
updateFaceFeature(featureItems.indexOf(item));
});
debugString[11] = 12;
return creatorFeaturesMenu;
}
function resetFeatures() {
for (let i = 0; i < Data.featureNames.length; i++) {
featureItems[i].Index = 100;
updateFaceFeature(i);
}
}
function updateFaceFeature(index) {
localPlayer.setFaceFeature(index, parseFloat(featureItems[index].SelectedValue));
}
var appearanceItems = [];
var appearanceOpacityItems = [];
//Menü für Aussehen
function getAppearanceMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
var opacities = [];
for (var i = 0; i <= 100; i++) opacities.push(i + "%");
var creatorAppearanceMenu = new Menu("Aussehen", "", new Point(0, screenRes.y / 3), null, null);
creatorAppearanceMenu.Visible = false;
debugString[7] = 8;
for (var i = 0; i < Data.appearanceNames.length; i++) {
var items = [];
for (var j = 0, max = mp.game.ped.getNumHeadOverlayValues(i); j <= max; j++) items.push(Data.appearanceItemNames[i][j] === undefined ? j.toString() : Data.appearanceItemNames[i][j]);
var tempAppearanceItem = new UIMenuListItem(Data.appearanceNames[i], "", new ItemsCollection(items));
appearanceItems.push(tempAppearanceItem);
creatorAppearanceMenu.AddItem(tempAppearanceItem);
//tempAppearanceItem.Index = loadedAppearance[i];
var tempAppearanceOpacityItem = new UIMenuListItem(Data.appearanceNames[i] + " Transparenz", "", new ItemsCollection(opacities));
tempAppearanceOpacityItem.Index = 100;
appearanceOpacityItems.push(tempAppearanceOpacityItem);
creatorAppearanceMenu.AddItem(tempAppearanceOpacityItem);
//tempAppearanceOpacityItem.Index = loadedAppearanceOpacity[i];
}
var resetItem = new UIMenuItem("Zurücksetzen", "~r~Setzt das Aussehen zurück.");
creatorAppearanceMenu.AddItem(resetItem);
creatorAppearanceMenu.ItemSelect.on((item, index) => {
switch (item) {
case resetItem:
resetAppearance();
break;
}
});
creatorAppearanceMenu.ListChange.on((item, listIndex) => {
var idx = (creatorAppearanceMenu.CurrentSelection % 2 === 0) ? (creatorAppearanceMenu.CurrentSelection / 2) : Math.floor(creatorAppearanceMenu.CurrentSelection / 2);
updateAppearance(idx);
});
debugString[12] = 13;
return creatorAppearanceMenu;
}
function updateAppearance(index) {
var overlayID = (appearanceItems[index].Index === 0) ? 255 : appearanceItems[index].Index - 1;
localPlayer.setHeadOverlay(index, overlayID, appearanceOpacityItems[index].Index * 0.01, colorForOverlayIdx(index), 0);
}
function resetAppearance(refresh = false) {
for (var i = 0; i < Data.appearanceNames.length; i++) {
appearanceItems[i].Index = loadedAppearance[i];
appearanceOpacityItems[i].Index = loadedAppearanceOpacity[i];
updateAppearance(i);
}
}
// color arrays
var hairColors = [];
for (var i = 0; i < Data.maxHairColor; i++) hairColors.push(i.toString());
var blushColors = [];
for (var i = 0; i < Data.maxBlushColor; i++) blushColors.push(i.toString());
var lipstickColors = [];
for (var i = 0; i < Data.maxLipstickColor; i++) lipstickColors.push(i.toString());
//Menü für Haar & Farben
function getHairAndColorMenu(parentMenu: NativeUI.Menu): NativeUI.Menu {
var creatorHairMenu = new Menu("Haar & Farben", "", new Point(0, screenRes.y / 3), null, null);
creatorHairMenu.Visible = false;
debugString[8] = 9;
var eyebrowColorItem = new UIMenuListItem("Augenbrauen Farbe", "Farbe deiner Augenbrauen", new ItemsCollection(hairColors));
creatorHairMenu.AddItem(eyebrowColorItem);
var beardColorItem = new UIMenuListItem("Farbe der Gesichtsbehaarung", "Farbe deiner Gesichtsbehaarung", new ItemsCollection(hairColors));
creatorHairMenu.AddItem(beardColorItem);
var eyeColorItem = new UIMenuListItem("Augenfarbe", "Farbe deiner Augen", new ItemsCollection(Data.eyeColors));
creatorHairMenu.AddItem(eyeColorItem);
var blushColorItem = new UIMenuListItem("Rouge", "Farbe des Rouges.", new ItemsCollection(blushColors));
creatorHairMenu.AddItem(blushColorItem);
var lipstickColorItem = new UIMenuListItem("Lippenstift Farbe", "Farbe deines Lippenstifts.", new ItemsCollection(lipstickColors));
creatorHairMenu.AddItem(lipstickColorItem);
var chestHairColorItem = new UIMenuListItem("Farbe der Brustbehaarung", "Farbe deiner Brustbehaarung", new ItemsCollection(hairColors));
creatorHairMenu.AddItem(chestHairColorItem);
var cancelItem = new UIMenuItem("Zurücksetzen", "~r~Zurücksetzen von Haar & Farben");
creatorHairMenu.AddItem(cancelItem);
creatorHairMenu.ItemSelect.on((item, index) => {
switch (item) {
case cancelItem:
eyebrowColorItem.Index = characterData.EyebrowColor;
beardColorItem.Index = characterData.BeardColor;
eyeColorItem.Index = characterData.EyeColor;
blushColorItem.Index = characterData.BlushColor;
lipstickColorItem.Index = characterData.LipstickColor;
chestHairColorItem.Index = characterData.ChestHairColor;
updateHairAndColors();
break;
}
});
creatorHairMenu.ListChange.on((item, listIndex) => {
switch (creatorHairMenu.CurrentSelection) {
case 0: // eyebrow color
localPlayer.setHeadOverlayColor(2, 1, listIndex, 0);
break;
case 1: // facial hair color
localPlayer.setHeadOverlayColor(1, 1, listIndex, 0);
break;
case 2: // eye color
localPlayer.setEyeColor(listIndex);
break;
case 3: // blush color
localPlayer.setHeadOverlayColor(5, 2, listIndex, 0);
break;
case 4: // lipstick color
localPlayer.setHeadOverlayColor(8, 2, listIndex, 0);
break;
case 5: // chest hair color
localPlayer.setHeadOverlayColor(10, 1, listIndex, 0);
break;
}
});
debugString[13] = 14;
return creatorHairMenu;
}
function updateHairAndColors() {
localPlayer.setEyeColor(saveCharacter.EyeColor);
localPlayer.setHeadOverlayColor(1, 1, saveCharacter.BeardColor, 0);
localPlayer.setHeadOverlayColor(2, 1, saveCharacter.EyebrowColor, 0);
localPlayer.setHeadOverlayColor(5, 2, saveCharacter.BlushColor, 0);
localPlayer.setHeadOverlayColor(8, 2, saveCharacter.LipstickColor, 0);
localPlayer.setHeadOverlayColor(10, 1, saveCharacter.ChestHairColor, 0);
}
function colorForOverlayIdx(index) {
var color;
switch (index) {
case 1:
color = saveCharacter.BeardColor;
break;
case 2:
color = saveCharacter.EyebrowColor;
break;
case 5:
color = saveCharacter.BlushColor;
break;
case 8:
color = saveCharacter.LipstickColor;
break;
case 10:
color = saveCharacter.ChestHairColor;
break;
default:
color = 0;
}
return color;
}
function applyCreatorOutfit() {
if (saveCharacter.Gender === false) {
localPlayer.setDefaultComponentVariation();
localPlayer.setComponentVariation(3, 15, 0, 2);
localPlayer.setComponentVariation(4, 21, 0, 2);
localPlayer.setComponentVariation(6, 34, 0, 2);
localPlayer.setComponentVariation(8, 15, 0, 2);
localPlayer.setComponentVariation(11, 15, 0, 2);
} else {
localPlayer.setDefaultComponentVariation();
localPlayer.setComponentVariation(3, 15, 0, 2);
localPlayer.setComponentVariation(4, 10, 0, 2);
localPlayer.setComponentVariation(6, 35, 0, 2);
localPlayer.setComponentVariation(8, 15, 0, 2);
localPlayer.setComponentVariation(11, 15, 0, 2);
}
}
function leaveCreator() {
activeSurgery = false;
mp.gui.chat.show(true);
mp.game.ui.displayRadar(true);
mp.game.ui.displayHud(true);
localPlayer.freezePosition(false);
mp.game.cam.renderScriptCams(false, false, 0, true, false);
creatorCamera.destroy(true);
mp.events.callRemote("surgeryLeave");
globalData.InMenu = false;
globalData.InMenu = false;
}
}

View File

@@ -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;
}
}
});
}

View File

@@ -1,6 +1,13 @@
export default function playerBlips() {
import { afkStatus } from '../Player/antiafk';
import { getWantedCount } from './wanteds';
export default function playerBlips() {
var playerBlipMap: Map<PlayerMp, BlipMp>;
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", () => {

View File

@@ -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],

View File

@@ -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)
};
}

View File

@@ -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<number, number> = new Map<number, number>();
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);
//}
//}

View File

@@ -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();
}
}
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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");
}
});

View File

@@ -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() {

View File

@@ -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) {
}
});
}
}

View File

@@ -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);

View File

@@ -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<62>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;

View File

@@ -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<number>();
var currentActiveModItem = new Array<NativeUI.UIMenuItem>();
var currentActiveModItem = new Array<VehicleModMenuItem>();
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;
}

View File

@@ -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) => {

View File

@@ -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);
}
});

View File

@@ -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');
}
* {

View File

@@ -110,4 +110,4 @@ a {
display: inline-block;
width: 5.25em;
}
/*# sourceMappingURL=main.css.map */
/*# sourceMappingURL=main.css.map */

View File

@@ -6,4 +6,4 @@
],
"names": [],
"file": "main.css"
}
}

View File

@@ -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 */

View File

@@ -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"
}

View File

@@ -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;
}

View File

@@ -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 */

View File

@@ -1,9 +1,9 @@
{
"version": 3,
"mappings": "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",
"mappings": "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",
"sources": [
"styles.scss"
],
"names": [],
"file": "styles.css"
}
}

View File

@@ -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); }
}

View File

@@ -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 */

View File

@@ -1,6 +1,6 @@
{
"version": 3,
"mappings": "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",
"mappings": "AAAA,AAAA,IAAI,CAAC;EACH,UAAU,EAAE,UAAU;EACtB,MAAM,EAAE,KAAK;EACb,UAAU,EAAE,WAAW;EACvB,WAAW,EAAE,IAAI;CAClB;;AAED,AAAA,IAAI,EAAE,IAAI,CAAC;EAAE,MAAM,EAAE,KAAK;CAAI;;AAC9B,AAAA,CAAC,EAAE,CAAC,AAAA,OAAO,EAAE,CAAC,AAAA,MAAM,CAAC;EAAE,UAAU,EAAE,OAAO;CAAI;;AAE9C,AAAA,IAAI,CAAC;EACH,MAAM,EAAE,WAAW;EAEnB,KAAK,EAAE,IAAI;EACX,KAAK,EAAE,KAAK;EAEZ,WAAW,EAAE,oIAAoI;EACjJ,SAAS,EAAE,GAAG;CACf;;AAED,AAAA,EAAE,EAAE,EAAE,CAAC;EACL,MAAM,EAAE,KAAK;EACb,WAAW,EAAE,CAAC;CACf;;AAED,AAAA,EAAE,CAAC;EAAE,SAAS,EAAE,MAAM;CAAI;;AAC1B,AAAA,EAAE,CAAC;EAAE,SAAS,EAAE,OAAO;CAAI;;AAE3B,AAAA,QAAQ,CAAC;EACP,OAAO,EAAE,IAAI;EACb,eAAe,EAAE,aAAa;EAC9B,WAAW,EAAE,UAAU;EACvB,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,SAAS;CACnB;;AAED,AAAA,SAAS,CAAC;EACR,QAAQ,EAAE,MAAM;EAChB,GAAG,EAAE,CAAC;EACN,OAAO,EAAE,CAAC;EAEV,SAAS,EAAE,IAAI;EACf,gBAAgB,EAAE,OAAO;EAEzB,OAAO,EAAE,KAAK;CACf;;AAED,AAAA,QAAQ,CAAC;EACP,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,IAAI;EAChB,UAAU,EAAE,MAAM;EAElB,aAAa,EAAE,KAAK;EACpB,gBAAgB,EAAO,mBAAK;CAG7B;;AATD,AAQE,QARM,AAQL,mBAAmB,CAAC;EAAE,OAAO,EAAE,IAAI;CAAI;;AAG1C,AAAA,KAAK,CAAC;EACJ,eAAe,EAAE,QAAQ;EACzB,KAAK,EAAE,IAAI;EACX,aAAa,EAAE,OAAO;CAqDvB;;AAxDD,AAKE,KALG,CAKH,EAAE,CAAC;EACD,QAAQ,EAAE,MAAM;EAChB,GAAG,EAAE,GAAG;EACR,UAAU,EAAE,IAAI;EAChB,OAAO,EAAE,CAAC;EAEV,gBAAgB,EAAE,OAAO;EACzB,UAAU,EAAE,iBAAiB;CAC9B;;AAbH,AAeE,KAfG,CAeH,EAAE,EAfJ,KAAK,CAeC,EAAE,CAAC;EACL,OAAO,EAAE,SAAS;CAInB;;AApBH,AAkBI,KAlBC,CAeH,EAAE,AAGC,YAAY,EAlBjB,KAAK,CAeC,EAAE,AAGH,YAAY,CAAC;EAAE,YAAY,EAAE,GAAG;CAAI;;AAlBzC,AAmBI,KAnBC,CAeH,EAAE,AAIC,WAAW,EAnBhB,KAAK,CAeC,EAAE,AAIH,WAAW,CAAC;EAAE,aAAa,EAAE,GAAG;CAAI;;AAnBzC,AAuBI,KAvBC,CAsBH,EAAE,CACA,EAAE,CAAC;EACD,QAAQ,EAAE,QAAQ;EAClB,QAAQ,EAAE,MAAM;CA2BjB;;AApDL,AA2BM,KA3BD,CAsBH,EAAE,CACA,EAAE,CAIA,IAAI,AAAA,eAAe,CAAC;EAClB,QAAQ,EAAE,QAAQ;EAClB,GAAG,EAAE,KAAK;EACV,KAAK,EAAE,GAAG;EAEV,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,MAAM;EACnB,WAAW,EAAE,IAAI;EACjB,OAAO,EAAE,SAAS;EAElB,gBAAgB,EAAO,0BAAK;EAC5B,aAAa,EAAE,GAAG;CACnB;;AAvCP,AAyCM,KAzCD,CAsBH,EAAE,CACA,EAAE,AAkBC,UAAW,CAAA,CAAC,EAAE;EAAE,KAAK,EAAE,cAAc;CAAI;;AAzChD,AA0CM,KA1CD,CAsBH,EAAE,CACA,EAAE,AAmBC,UAAW,CAAA,CAAC,EAAE;EACb,SAAS,EAAE,IAAI;EACf,WAAW,EAAE,IAAI;EACjB,UAAU,EAAE,IAAI;EAChB,WAAW,EAAE,MAAM;CAGpB;;AAjDP,AAgDQ,KAhDH,CAsBH,EAAE,CACA,EAAE,AAmBC,UAAW,CAAA,CAAC,CAMV,mBAAmB,CAAC;EAAE,OAAO,EAAE,IAAI;CAAI;;AAhDhD,AAkDM,KAlDD,CAsBH,EAAE,CACA,EAAE,AA2BC,UAAW,CAAA,CAAC,EAAE;EAAE,KAAK,EAAE,eAAe;CAAI;;AAlDjD,AAmDM,KAnDD,CAsBH,EAAE,CACA,EAAE,AA4BC,UAAW,CAAA,CAAC,EAAE;EAAE,KAAK,EAAE,eAAe;CAAI;;AAnDjD,AAsDI,KAtDC,CAsBH,EAAE,AAgCC,UAAW,CAAA,IAAI,EAAE;EAAE,gBAAgB,EAAE,mBAAkB;CAAI;;AAIhE,AACE,MADI,AACH,QAAQ,CAAC;EACR,OAAO,EAAE,EAAE;EACX,MAAM,EAAE,KAAK;EACb,KAAK,EAAE,KAAK;EACZ,aAAa,EAAE,GAAG;EAClB,OAAO,EAAE,YAAY;EACrB,KAAK,EAAE,OAAO;EACd,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,0BAA0B;EAE5C,YAAY,EAAE,IAAI;EAClB,aAAa,EAAE,GAAG;CACnB;;AAEA,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,KAAkB;CAAI;;AACtD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAe;CAAI;;AACnD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAc;CAAI;;AAClD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAc;CAAI;;AAClD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAgB;CAAI;;AACpD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAgB;CAAI;;AACpD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,KAAkB;CAAI;;AACtD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAa;CAAI;;AACjD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAgB;CAAI;;AACpD,AAAD,SAAI,AAAA,QAAQ,CAAC;EAAE,gBAAgB,EAAE,OAAgB;CAAI;;AAGvD,AAAA,EAAE,AAAA,OAAO,CAAC;EACR,OAAO,EAAE,IAAI;EAEb,UAAU,EAAE,KAAK;EACjB,eAAe,EAAE,IAAI;EACrB,MAAM,EAAE,CAAC;EACT,OAAO,EAAE,KAAK;CAGf;;AATD,AAQE,EARA,AAAA,OAAO,CAQP,EAAE,AAAA,IAAK,CAAA,WAAW,EAAE;EAAE,YAAY,EAAE,GAAG;CAAI;;AAG7C,AAAA,EAAE,AAAA,OAAO,AAAA,MAAM,CAAC;EACd,eAAe,EAAE,MAAM;CAGxB;;AAJD,AAGE,EAHA,AAAA,OAAO,AAAA,MAAM,CAGb,IAAI,CAAC;EAAE,eAAe,EAAE,IAAI;CAAI;;AAGlC,AAAA,KAAK,CAAC;EAAE,OAAO,EAAE,IAAI;CAAI;;AACzB,AAAA,OAAO,CAAC;EAAE,OAAO,EAAE,IAAI;CAAI",
"sources": [
"style.scss"
],

View File

@@ -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; }
}
}
.show { display: show; }
.hidden { display: none; }

View File

@@ -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 {

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/Introduction/style.css" />
<link rel="stylesheet" href="../../css/Introduction/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -28,7 +28,7 @@
Steuerung: <br />
T - Chat öffnen <br />
M - Interaktionsmenü öffnen und schließen <br />
X - Fahrzeug auf-/abschließen sowie im Fahrzeuginteraktionsmenü öffnen <br />
Z - Fahrzeug auf-/abschließen sowie im Fahrzeuginteraktionsmenü öffnen <br />
N - Fahrzeugmotor Starten <br />
O - Onlineliste öffnen/schließen <br />
I - Inventar öffnen/schließen <br />
@@ -39,6 +39,6 @@
<a target="_blank" id="close"></a>
</main>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="package://assets/js/Introduction/application.js"></script>
<script src="../../js/Introduction/application.js"></script>
</body>
</html>

View File

@@ -23,7 +23,7 @@
</table>
</div>
</div>
<script src="package://assets/js/jquery-3.3.1.min.js" type="text/javascript"></script>
<script src="../../js/jquery-3.3.1.min.js" type="text/javascript"></script>
<script src="./script.js"></script>
</body>
</html>

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/Introduction/style.css" />
<link rel="stylesheet" href="../../css/Introduction/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -33,6 +33,6 @@
<a target="_blank" id="close"></a>
</main>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="package://assets/js/School/application.js"></script>
<script src="../../js/School/application.js"></script>
</body>
</html>

View File

@@ -1,7 +1,7 @@
<html>
<head>
<link rel="stylesheet" href="package://assets/css/login/style.css" />
<link rel="stylesheet" href="package://assets/css/jquery-ui.min.css" />
<link rel="stylesheet" href="../../css/login/style.css" />
<link rel="stylesheet" href="../../css/jquery-ui.min.css" />
<meta charset="utf-8" />
</head>
<body>
@@ -17,7 +17,7 @@
</div> <!-- /form -->
</form>
<script type="text/javascript" src="package://assets/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="package://assets/js/jquery-ui.min.js"></script>
<script type="text/javascript" src="../../js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../js/jquery-ui.min.js"></script>
</body>
</html>

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/Introduction/style.css" />
<link rel="stylesheet" href="../../css/Introduction/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -32,7 +32,7 @@
<a target="_blank" id="close"></a>
</main>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="package://assets/js/wantedlist/application.js"></script>
<script src="../../js/wantedlist/application.js"></script>
<script src="./script.js"></script>
</body>
</html>

View File

@@ -3,9 +3,9 @@
<!-- Header -->
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="package://assets/css/atm/atm.css">
<link rel="stylesheet" href="../../css/atm/atm.css">
<audio id="click">
<source src="package://assets/sound/atm/click.ogg" type="audio/ogg">
<source src="../../sound/atm/click.ogg" type="audio/ogg">
</audio>
</head>
<!-- Content -->
@@ -292,8 +292,8 @@
<!-- Footer -->
<div id="invisible" style="display:none"></div>
<script src="package://assets/js/jquery-3.1.1.min.js"></script>
<script src="package://assets/js/bootstrap.min.js"></script>
<script src="../../js/jquery-3.1.1.min.js"></script>
<script src="../../js/bootstrap.min.js"></script>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script type="text/javascript">

View File

@@ -1,7 +1,7 @@
<html>
<head>
<link rel="stylesheet" type="text/css" href="package://assets/css/chat/checkbox.css" media="screen">
<link rel="stylesheet" type="text/css" href="package://assets/css/chat/main.css" media="screen">
<link rel="stylesheet" type="text/css" href="../../css/chat/checkbox.css" media="screen">
<link rel="stylesheet" type="text/css" href="../../css/chat/main.css" media="screen">
<meta charset="utf-8" />
</head>
@@ -10,7 +10,7 @@
<ul id="chat_messages"></ul>
</div>
<script type="text/javascript" src="package://assets/js/chat/jquery-1.11.3.min.js"></script>
<script src="package://assets/js/chat/main.js"></script>
<script type="text/javascript" src="../../js/chat/jquery-1.11.3.min.js"></script>
<script src="../../js/chat/main.js"></script>
</body>
</html>

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/Introduction/style.css" />
<link rel="stylesheet" href="../../css/Introduction/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -14,7 +14,7 @@
<body>
<main>
<div class="input-main">
<h1>Letze Fahrer</h1>
<h1>Letze(r) Fahrer</h1>
</div>
<div id="content" class="form" role="form">
<ul id="drivers-list">
@@ -23,7 +23,7 @@
</div>
<a id="close" href="#"></a>
</main>
<script src="../js/jquery-3.3.1.min.js"></script>
<script src="./application.js"></script>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/driver-history/application.js"></script>
</body>
</html>

View File

@@ -9,7 +9,7 @@
<head>
<meta charset="utf-8" />
<title></title>
<link rel="stylesheet" href="package://assets/css/factionmanagement/ranks/style.css" />
<link rel="stylesheet" href="../../css/factionmanagement/ranks/style.css" />
</head>
<body>
<div class="table">
@@ -22,9 +22,9 @@
<button class="save-btn">Speichern</button>
</div>
<script src="package://assets/js/jquery-3.3.1.min.js"></script>
<script src="package://assets/js/jquery.tablednd.0.8.min.js"></script>
<script src="package://assets/js/jquery.gettable.js"></script>
<script src="package://assets/js/factionmanagement/ranks/script.js"></script>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/jquery.tablednd.0.8.min.js"></script>
<script src="../../js/jquery.gettable.js"></script>
<script src="../../js/factionmanagement/ranks/script.js"></script>
</body>
</html>

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/helpcommand/style.css" />
<link rel="stylesheet" href="../../css/helpcommand/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -66,6 +66,6 @@
<a target="_blank" id="close"></a>
</main>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="package://assets/js/helpcommand/application.js"></script>
<script src="../../js/helpcommand/application.js"></script>
</body>
</html>

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/helpcommand/style.css" />
<link rel="stylesheet" href="../../css/helpcommand/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -42,6 +42,6 @@
<a target="_blank" id="close"></a>
</main>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="package://assets/js/helpcommand/application.js"></script>
<script src="../../js/helpcommand/application.js"></script>
</body>
</html>

View File

@@ -5,7 +5,7 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/helpcommand/style.css" />
<link rel="stylesheet" href="../../css/helpcommand/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
@@ -40,6 +40,6 @@
<a target="_blank" id="close"></a>
</main>
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="package://assets/js/helpcommand/application_userhelp.js"></script>
<script src="../../js/helpcommand/application_userhelp.js"></script>
</body>
</html>

View File

@@ -5,10 +5,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Eingabe | Life of German</title>
<link rel="stylesheet" href="package://assets/css/inputhelper/style.css" />
<link rel="stylesheet" href="package://assets/font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="package://assets/font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="package://assets/font/roboto-mono/include_500.css">
<link rel="stylesheet" href="../../css/inputhelper/style.css" />
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
</head>
<body>
@@ -26,7 +26,7 @@
<!--<a target="_blank" id="close"></a>-->
</main>
<script type="text/javascript" src="package://assets/js/jquery-3.3.1.min.js"></script>
<script type="text/javascript" src="../../js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function () {
mp.trigger('cef_request_title');
@@ -48,6 +48,6 @@
$('.input-main h1').text(title);
}
</script>
<script src="package://assets/js/inputhelper/application.js"></script>
<script src="../../js/inputhelper/application.js"></script>
</body>
</html>

View File

@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../../css/interaction/style.css">
<title>Fahrzeugmenu</title>
</head>
<body>
<main>
<ul class="vehicle-menu">
<li class="vehicle-menu__item" tabindex="1">
<div class="flex--column">
<img class="vehicle-menu__icon" src="../../img/interaction/engine.png"></img>
<span class="vehicle-menu__text">Motor<br>an-/ausschalten</span>
</div>
</li>
<li class="vehicle-menu__item" tabindex="2">
<div class="flex--column">
<img class="vehicle-menu__icon" src="../../img/interaction/belt.png"></img>
<span class="vehicle-menu__text">Gurt<br>an-/ablegen</span>
</div>
</li>
<li class="vehicle-menu__item" tabindex="3">
<div class="flex--column">
<img class="vehicle-menu__icon" src="../../img/interaction/key.png"></img>
<span class="vehicle-menu__text">Fahrzeug<br>auf-/abschließen</span>
</div>
</li>
<!--
<li class="vehicle-menu__item" tabindex="4">
<div class="flex--column">
<img class="vehicle-menu__icon" src="../../img/interaction/gas-station.png"></img>
<span class="vehicle-menu__text">Fahrzeug<br>tanken</span>
</div>
</li>
-->
<li class="vehicle-menu__item" tabindex="5">
<div class="flex--column">
<img class="vehicle-menu__icon" src="../../img/interaction/parking.png"></img>
<span class="vehicle-menu__text">Fahrzeug<br>parken</span>
</div>
</li>
<li class="vehicle-menu__item" tabindex="6">
<div class="flex--column">
<img class="vehicle-menu__icon" src="../../img/interaction/car-door.png"></img>
<span class="vehicle-menu__text">Türen<br>öffnen/schließen</span>
</div>
</li>
</ul>
</main>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/interaction/main.js"></script>
</body>
</html>

View File

@@ -10,76 +10,78 @@
<body>
<div class="alerts" id='alertbox'>
</div>
<div name="inventory" class="inventory hidden">
<div class="sidebar">
<ul>
<li name="side1" class="sidebaritem1" onclick="switchSite('backpackClass')">
<img class="sideicon1" src="img/backpack/backpack.svg"><p class="bartext">Rucksack</p>
</li>
<li name="side2" class="sidebaritem2" onclick="getVehicle()">
<img class="sideicon2" src="img/backpack/car.svg"><p class="bartext">Fahrzeug</p>
</li>
<!-- <li name="side3" class="sidebaritem3" onclick="switchSite('tradeClass')"><img class="sideicon4" src="img/backpack/trading.svg"><p class="bartext">Handel</p></li>
<li name="side4" class="sidebaritem4 hidden" onclick="switchSite('handelClass')"><img class="sideicon4" src="img/backpack/trading.svg"><p class="bartext">Handeln</p></li>
<li name="side5" class="sidebaritem5 hidden" onclick="getTrade()"><img class="sideicon4" src="img/backpack/save-money.svg"><p class="bartext">Anfrage</p></li> -->
<li name="side6" class="sidebaritem6 hidden" onclick="switchSite('backClass')">
<img class="sideicon4" src="img/backpack/back.svg"><p class="bartext">Zurück</p>
</li>
</ul>
</div>
<div class="alerts" id='alertbox'>
</div>
<div name="backpackClass" class="backpack">
<div class="main">
<div class="Betrag" style="display: none;">
<div class="BoxBlue">
<input type="text" id="tf_zahl" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
<button id="tf_cancle" onclick="">Schließen</button>
<button id="tf_submitZahl" onclick="">Bestätigen</button>
<img class="blueIcon1" src="img/backpack/trash2.svg"></img>
<div class="sidebar">
<ul>
<li name="side1" class="sidebaritem1" onclick="switchSite('backpackClass')">
<img class="sideicon1" src="img/backpack/backpack.svg"><p class="bartext">Rucksack</p>
</li>
<li name="side2" class="sidebaritem2" onclick="getVehicle()">
<img class="sideicon2" src="img/backpack/car.svg"><p class="bartext">Fahrzeug</p>
</li>
<!-- <li name="side3" class="sidebaritem3" onclick="switchSite('tradeClass')"><img class="sideicon4" src="img/backpack/trading.svg"><p class="bartext">Handel</p></li>
<li name="side4" class="sidebaritem4 hidden" onclick="switchSite('handelClass')"><img class="sideicon4" src="img/backpack/trading.svg"><p class="bartext">Handeln</p></li>
<li name="side5" class="sidebaritem5 hidden" onclick="getTrade()"><img class="sideicon4" src="img/backpack/save-money.svg"><p class="bartext">Anfrage</p></li> -->
<li name="side6" class="sidebaritem6 hidden" onclick="switchSite('backClass')">
<img class="sideicon4" src="img/backpack/back.svg"><p class="bartext">Zurück</p>
</li>
</ul>
</div>
<div name="backpackClass" class="backpack">
<div class="main">
<div class="Betrag" style="display: none;">
<div class="BoxBlue">
<input type="text" id="tf_zahl" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
<button id="tf_cancle" onclick="">Schließen</button>
<button id="tf_submitZahl" onclick="">Bestätigen</button>
<img class="blueIcon1" src="img/backpack/trash2.svg"></img>
</div>
</div>
</div>
<div class="Betrag2" style="display: none;">
<div class="BoxBlue">
<input type="text" id="tf_zahl2" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
<div class="Betrag2" style="display: none;">
<div class="BoxBlue">
<input type="text" id="tf_zahl2" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
<button id="tf_cancle2" onclick="">Schließen</button>
<button id="tf_submitZahlToVehicle" onclick="">Zum Fahrzeug transferieren</button>
<img class="blueIcon1" src="img/backpack/car.svg"></img>
<button id="tf_cancle2" onclick="">Schließen</button>
<button id="tf_submitZahlToVehicle" onclick="">Zum Fahrzeug transferieren</button>
<img class="blueIcon1" src="img/backpack/car.svg"></img>
</div>
</div>
<div class="title">
<div class="titlecount"><span id="count1">0</span> / 40 Kilogramm</div>
<div class="titletext">Rucksack</div>
</div>
<div class="items">
<ul id="List0"></ul>
</div>
</div>
<div class="title">
<div class="titlecount"><span id="count1">0</span> / 40 Kilogramm</div>
<div class="titletext">Rucksack</div>
</div>
<div class="items">
<ul id="List0"></ul>
</div>
</div>
</div>
<div name="vehClass" class="veh hidden">
<div class="main">
<div class="title">
<div class="titlecount"><span id="count2">0</span> / <span id="trunkSize">0</span> Kilogramm</div>
<div class="titletext">Fahrzeug</div>
</div>
<div class="Betrag4" style="display: none;">
<div class="BoxBlue">
<div name="vehClass" class="veh hidden">
<div class="main">
<div class="title">
<div class="titlecount"><span id="count2">0</span> / <span id="trunkSize">0</span> Kilogramm</div>
<div class="titletext">Fahrzeug</div>
</div>
<div class="Betrag4" style="display: none;">
<div class="BoxBlue">
<img class="blueIcon1" src="img/backpack/backpack.svg">
<button id="tf_cancle4" onclick="">Schließen</button><input type="text" id="tf_zahl4" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
<button id="tf_submitZahl4" onclick="">Zum Rucksack transferieren</button>
<img class="blueIcon1" src="img/backpack/backpack.svg">
<button id="tf_cancle4" onclick="">Schließen</button><input type="text" id="tf_zahl4" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
<button id="tf_submitZahl4" onclick="">Zum Rucksack transferieren</button>
</div>
</div>
<div class="items">
<ul id="List4"></ul>
</div>
</div>
<div class="items">
<ul id="List4"></ul>
</div>
</div>
</div>
<!-- <div name="handelClass" class="handel hidden">
<!-- <div name="handelClass" class="handel hidden">
<div class="main">
<div class="Betrag3" style="display:none;">
<input type="text" id="tf_zahl3" name="number" placeholder="Betrag eingeben" min="1" step="1" oninput="this.value=this.value.replace(/[^0-9]/g,'');">
@@ -107,7 +109,8 @@
</div>
</div> -->
<div id="invisible" style="display: none"></div>
<div id="invisible" style="display: none"></div>
</div>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script>
@@ -176,6 +179,20 @@
var vehInvItem = [];
function showInventory() {
lastClass = "backpackClass";
document.getElementsByName("backpackClass")[0].classList.remove("hidden");
document.getElementsByName("vehClass")[0].classList.remove("hidden");
document.getElementsByName("vehClass")[0].classList.toggle("hidden");
//document.getElementsByName("handelClass")[0].style.visibility = "hidden";
document.getElementsByName("inventory")[0].classList.remove("hidden");
}
function closeInventory() {
document.getElementsByName("inventory")[0].classList.toggle("hidden");
}
function setBackpackItems(jsonItemArr) {
console.log(jsonItemArr);
var parsedItemArr = JSON.parse(jsonItemArr)

View File

@@ -1,12 +1,12 @@
<html>
<head>
<link rel="stylesheet" href="package://assets/css/licenses/schein.css">
<link rel="stylesheet" href="../../css/licenses/schein.css">
</head>
<body scroll="no">
<div id="schein">
<img src="package://assets/img/licenses/schein.png">
<img src="../../img/licenses/schein.png">
<div id="name">
@@ -22,6 +22,6 @@
</div>
<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<script src="package://assets/js/licenses/scheine.js"></script>
<script src="../../js/licenses/scheine.js"></script>
</body>
</html>

View File

@@ -5,10 +5,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Login | Life of German</title>
<link rel="stylesheet" href="package://assets/css/login/styles.css">
<link rel="stylesheet" href="package://assets/font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="package://assets/font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="package://assets/font/roboto-mono/include_500.css">
<link rel="stylesheet" href="../../css/login/styles.css">
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
</head>
<body class="light">
@@ -43,7 +43,9 @@
</ul>
</footer>
<script src="package://assets/js/jquery-3.3.1.min.js"></script>
<script src="package://assets/js/login/application.js"></script>
<a href="https://icons8.com/icons/material-outlined" class="credits">Icons von icons8.com</a>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/login/application.js"></script>
</body>
</html>

View File

@@ -5,10 +5,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Registrierung | Life of German</title>
<link rel="stylesheet" href="package://assets/css/login/styles.css">
<link rel="stylesheet" href="package://assets/font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="package://assets/font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="package://assets/font/roboto-mono/include_500.css">
<link rel="stylesheet" href="../../css/login/styles.css">
<link rel="stylesheet" href="../../font/font-awesome/css/fontawesome.min.css">
<link rel="stylesheet" href="../../font/font-awesome/css/regular.min.css">
<link rel="stylesheet" href="../../font/roboto-mono/include_500.css">
</head>
<body class="light">
@@ -50,7 +50,9 @@
</ul>
</footer>
<script src="package://assets/js/jquery-3.3.1.min.js"></script>
<script src="package://assets/js/login/application.js"></script>
<a href="https://icons8.com/icons/material-outlined" class="credits">Icons von icons8.com</a>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/login/application.js"></script>
</body>
</html>

View File

@@ -1,4 +1,4 @@
<!DOCTYPE html>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
@@ -8,44 +8,47 @@
<link rel="stylesheet" href="../../css/onlinelist/style.css">
</head>
<body>
<div class="wrapper">
<div class="heading">
<h1>Spielerliste</h1>
<h2>Spieler: <span id="player-count">0</span></h2>
<div name="OnlineList" class="onlineList hidden">
<div class="wrapper">
<div class="heading">
<h1>Spielerliste</h1>
<h2>Spieler: <span id="player-count">0</span></h2>
</div>
<div class="factions">
<ol class="inline stats">
<li><span class="group group--1">LSPD</span>: <span id="1">0</span></li>
<li><span class="group group--3">FIB</span>: <span id="3">0</span></li>
<li><span class="group group--2">LSED</span>: <span id="2">0</span></li>
<li><span class="group group--7">GSF</span>: <span id="7">0</span></li>
<li><span class="group group--8">FYB</span>: <span id="8">0</span></li>
<li><span class="group group--5">LSV</span>: <span id="5">0</span></li>
<li><span class="group group--9">WZN</span>: <span id="9">0</span></li>
<li><span class="group group--0">ZIVI</span>: <span id="0">0</span></li>
</ol>
</div>
<table>
<thead>
<tr>
<th data-sort="int">ID</th>
<th data-sort="string">Name</th>
<th data-sort="string">Fraktion</th>
<th data-sort="int">Ping (ms)</th>
<tr>
</thead>
<tbody id="players">
</tbody>
</table>
</div>
</div>
<div class="factions">
<ol class="inline stats">
<li><span class="group group--1">LSPD</span>: <span id="1">0</span></li>
<li><span class="group group--3">FIB</span>: <span id="3">0</span></li>
<li><span class="group group--2">LSED</span>: <span id="2">0</span></li>
<li><span class="group group--7">GSF</span>: <span id="7">0</span></li>
<li><span class="group group--8">FYB</span>: <span id="8">0</span></li>
<li><span class="group group--5">LSV</span>: <span id="5">0</span></li>
<li><span class="group group--9">WZN</span>: <span id="9">0</span></li>
<li><span class="group group--0">ZIVI</span>: <span id="0">0</span></li>
</ol>
</div>
<table>
<thead>
<tr>
<th data-sort="int">ID</th>
<th data-sort="string">Name</th>
<th data-sort="string">Fraktion</th>
<th data-sort="int">Ping (ms)</th>
<tr>
</thead>
<tbody id="players">
</tbody>
</table>
</div>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/onlinelist/stupidtable.min.js"></script>
<script src="../../js/onlinelist/script.js"></script>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/onlinelist/stupidtable.min.js"></script>
<script src="../../js/onlinelist/script.js"></script>
</body>
</html>

View File

@@ -7,7 +7,7 @@
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="package://assets/css/save/blip/style.css" />
<link rel="stylesheet" href="../../css/save/blip/style.css" />
</head>
<body>
@@ -66,7 +66,7 @@
</div>
</div>
</div>
<script src="package://assets/js/jquery-3.3.1.min.js"></script>
<script src="package://assets/js/save/blip/script.js" type="text/javascript"></script>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script src="../../js/save/blip/script.js" type="text/javascript"></script>
</body>
</html>

View File

@@ -17,7 +17,7 @@
<script>
function playSound(soundname, typ, volume) {
var sound = new Howl({
src: ['package://assets/sound/' + soundname + '.'+ typ],
src: ['../../sound/' + soundname + '.'+ typ],
loop: false,
volume: volume
})

View File

@@ -4,7 +4,7 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="package://assets/css/vehiclemenu/style.css">
<link rel="stylesheet" href="../../css/vehiclemenu/style.css">
</head>
<body>
@@ -19,7 +19,7 @@
<div class="bg"></div>
<div class="label">
<p>Schließen</p>
<img class="m" src="package://assets/img/vehiclemenu/exit.png">
<img class="m" src="../../img/vehiclemenu/exit.png">
</div>
</li>
<li class="" tabindex="2">
@@ -29,7 +29,7 @@
<div class="bg"></div>
<div class="label">
<!--<p>Geld Geben</p>
<img class="m4" src="package://assets/img/vehiclemenu/i9.png">-->
<img class="m4" src="../../img/vehiclemenu/i9.png">-->
</div>
</li>
<li class="" tabindex="3">
@@ -39,7 +39,7 @@
<div class="bg"></div>
<div class="label">
<p>Türen öffnen / schließen</p>
<img class="m6" src="package://assets/img/vehiclemenu/door.png">
<img class="m6" src="../../img/vehiclemenu/door.png">
</div>
</li>
<li class="" tabindex="4">
@@ -49,7 +49,7 @@
<div class="bg"></div>
<div class="label">
<!--<p>Lizenzen zeigen</p>
<img class="m6" src="package://assets/img/vehiclemenu/i11.png">-->
<img class="m6" src="../../img/vehiclemenu/i11.png">-->
</div>
</li>
<li class="" tabindex="5">
@@ -59,7 +59,7 @@
<div class="bg"></div>
<div class="label">
<p>Auf -/ Abschließen</p>
<img class="m" src="package://assets/img/vehiclemenu/lock.png">
<img class="m" src="../../img/vehiclemenu/lock.png">
</div>
</li>
<li class="" tabindex="6">
@@ -69,7 +69,7 @@
<div class="bg"></div>
<div class="label">
<p>Tanken</p>
<img class="m2" src="package://assets/img/vehiclemenu/fill.png">
<img class="m2" src="../../img/vehiclemenu/fill.png">
</div>
</li>
<li class="" tabindex="7">
@@ -79,7 +79,7 @@
<div class="bg"></div>
<div class="label">
<p>Fahrzeug parken</p>
<img class="m" src="package://assets/img/vehiclemenu/park.png">
<img class="m" src="../../img/vehiclemenu/park.png">
</div>
</li>
<li class="" tabindex="8">
@@ -89,7 +89,7 @@
<div class="bg"></div>
<div class="label">
<p>Motor betätigen</p>
<img class="m" src="package://assets/img/vehiclemenu/power.png">
<img class="m" src="../../img/vehiclemenu/power.png">
</div>
</li>
<li class="" tabindex="9">
@@ -99,12 +99,12 @@
<div class="bg"></div>
<div class="label">
<!--<p>Durchsuchen</p>
<img class="m5" src="package://assets/img/vehiclemenu/i14.png">-->
<img class="m5" src="../../img/vehiclemenu/i14.png">-->
</div>
</li>
</ul>
</div>
<script src="package://assets/js/jquery-3.3.1.min.js"></script>
<script src="../../js/jquery-3.3.1.min.js"></script>
<!--<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>-->
<script>
$(document).ready(function () {

View File

@@ -8,7 +8,7 @@
<style>
@font-face {
font-family: 'Pricedown';
src: url('package://assets/font/Pricedown.ttf');
src: url('../../font/Pricedown.ttf');
}
html, body {
@@ -48,10 +48,10 @@
<body>
<div id="wanteds" style="display: none;">
<img src="package://assets/img/wanteds/star.svg" id="wanted-star"> <span id="wanted-count">10</span>
<img src="../../img/wanteds/star.svg" id="wanted-star"> <span id="wanted-count">10</span>
</div>
<script src="package://assets/js/jquery-3.3.1.min.js"></script>
<script src="../../js/jquery-3.3.1.min.js"></script>
<script type="text/javascript">
function setWanteds(count) {
if (count === 0) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 680 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 490 B

View File

@@ -0,0 +1 @@
https://icons8.com/icons/material-outlined

Binary file not shown.

After

Width:  |  Height:  |  Size: 508 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 446 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 524 B

View File

@@ -1,7 +1,7 @@
let chat =
{
size: 0,
history_limit: 50,
history_limit: 150,
container: null,
input: null,
enabled: false,

View File

@@ -0,0 +1,8 @@
$(document).ready(function () {
$("li.vehicle-menu__item").click(function () {
var action = parseInt($(this).attr("tabindex"));
//console.log(action);
mp.trigger('doAction', action);
});
});

View File

@@ -29,7 +29,18 @@ $(document).ready(function () {
});
});
function customizeNamePrompt(name) {
$('main h2').html("Willkommen auf Life of German!");
$('main p').html('Wir freuen uns, sehr dass Du auf unseren Server gestoßen bist!<br>Leider hast Du noch keinen eigenen Namen im RAGE:MP-Clienten festgelegt.<br><br>Bevor Du auf unserem Server starten kannst, musst Du das nachholen. Befolge hierzu die folgenden Schritte:<br><ol style="margin-top: .25em"><li>Spiel schließen (F1 drücken und das Fenster schließen)</li><li>Rockstar Games Launcher schließen</li><li>RAGE:MP-Client starten</li><li>Oben rechts auf das Symbol für Einstellungen klicken</li><li>Unter dem Punkt "Allgemein" > "Name wählen" kannst Du nun einen eigenen Namen festlegen</li><li>Jetzt kannst Du auf unserem Server spielen</li></ol>Solltest Du weitere Hilfe benötigen, kannst Du uns im TeamSpeak über die RAGE:MP Support-Anmeldung kontaktieren: <strong>ts.log.ac</strong>');
$('main form').remove();
}
function setPlayerName(name) {
if (name.toLowerCase().startsWith("weirdnewbie")) {
customizeNamePrompt();
return false;
}
$('span#name').html(name);
}
@@ -41,4 +52,4 @@ function showError(error) {
function disableLightMode() {
$("body").removeClass("light");
}
}

View File

@@ -1,5 +1,4 @@
window.onbeforeunload = () => { window.scrollTo(0, 0); }
$(document).ready(function () { mp.trigger('CEF:PlayerList_Loaded'); });
setPlayerCount = (factionId, value) => {
if (factionId == -1) {
@@ -9,6 +8,19 @@ setPlayerCount = (factionId, value) => {
}
}
function showPlayerList() {
document.getElementsByName("OnlineList")[0].classList.remove("hidden");
mp.events.call("CEF:PlayerList_Loaded");
window.scrollTo(0, 0);
}
function closePlayerList() {
document.getElementsByName("OnlineList")[0].classList.toggle("hidden");
}
function clear_row() {
document.getElementById('players').innerHTML = '';
}
function getFactionNameByFactionId(factionId) {
switch (parseInt(factionId)) {
case 1: return "LSPD";

View File

@@ -1,67 +0,0 @@
/* style.css für Tabliste */
.greyFont {
color: gray;
font-size: 14px;
width: 250px;
}
div {
user-select: none;
}
body {
overflow: hidden;
font-family: 'Roboto', sans-serif;
font-weight: 500;
color: #222;
margin: 0;
padding: 0;
}
h2 {
font-family: 'Roboto', sans-serif;
font-weight: 700;
font-size: 18px;
color: white;
margin:5px;
padding: 5px;
border: 1px solid #808080;
width: 20.75em;
}
.TabWrapper {
background: rgba(0,0,0,0.6);
height: 600px;
width: 600px;
display: block;
padding: 5px;
position: absolute;
left: 32%;
top: 10%;
}
th, td {
color: white;
font-size: 18px;
width:10%;
text-align: left;
}
.scroll {
height: 600px;
width: 600px;
font-size: 12px;
overflow: auto;
}
.force-overflow {
min-height: 600px;
}
#style1::-webkit-scrollbar {
width: 10px;
background-color: #F5F5F5;
}
#style1::-webkit-scrollbar-thumb {
background-color: #FF0040;
}

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6f1478ada7534b954caaec991bb2a3a24767b978de82533965e0c21c3d02831f
size 8491

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:82a3c95809185d4b5c6cc532257ac53a65498fb4ca29eec574dc109a6103542c
size 42496

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:6c1a845cfe60c75b75dd72add91c3bb7e6890c4df6cb10649be3740416b34d17
size 3076608

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:d7c638247cd28299585423da1746b80f7262daa3e86ffafd9d3254b9a66ef8e2
size 38912

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:47bcdf0ebccd66fce417009ed5e5652a05f1ee538d83b029366efcd30dd22fb4
size 38912

View File

@@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:e350a25ff37d9d2d13a628558e96cb8fe91c5e5ad210d5f2697d1c981b7976f9
size 110010880

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:b37467f388864d04bcde0d8a303c76b701816e90e7661e17d060aa4aff165143
size 118272

View File

@@ -89,4 +89,71 @@ declare type Weapon = {
declare type WeaponCategory = {
Category: number;
Weapons: Weapon[];
}
declare type RentcarProperty = {
Name: string;
Price: number;
}
declare type PlayerCharacterData = {
Gender: boolean;
Father: number;
Mother: number;
Similarity: number;
SkinSimilarity: number;
NoseWidth: number;
NoseBottomHeight: number;
NoseTipLength: number;
NoseBridgeDepth: number;
NoseTipHeight: number;
NoseBroken: number;
BrowHeight: number;
BrowDepth: number;
CheekboneHeight: number;
CheekboneWidth: number;
CheekDepth: number;
EyeSize: number;
LipThickness: number;
JawWidth: number;
JawShape: number;
ChinHeight: number;
ChinDepth: number;
ChinWidth: number;
ChinIndent: number;
NeckWidth: number;
Blemishes: number;
BlemishesOpacity: number;
FacialHair: number;
FacialHairOpacity: number;
Eyebrows: number;
EyebrowsOpacity: number;
Ageing: number;
AgeingOpacity: number;
Makeup: number;
MakeupOpacity: number;
Blush: number;
BlushOpacity: number;
Complexion: number;
ComplexionOpacity: number;
SunDamage: number;
SunDamageOpacity: number;
Lipstick: number;
LipstickOpacity: number;
Freckles: number;
FrecklesOpacity: number;
ChestHair: number;
ChestHairOpacity: number;
Hair: number;
HairColor: number;
HairHighlightColor: number;
EyebrowColor: number;
BeardColor: number;
EyeColor: number;
BlushColor: number;
LipstickColor: number;
ChestHairColor: number;
}

View File

@@ -208,7 +208,7 @@ import PilotRouteList from './Jobs/PilotRouteSelect';
PilotRouteList(globalData);
import weapondamageUtil from './util/weapondamage';
weapondamageUtil();
weapondamageUtil(globalData);
import soundUtil from './util/sound';
soundUtil();
@@ -271,9 +271,20 @@ ammunation(globalData);
import handsup from './Player/handsup';
handsup();
//import charSurgery from './CharCreator/surgery';
//charSurgery(globalData);
import spawnschutz from './Player/spawnschutz';
spawnschutz();
import bigmap from './Gui/bigmap';
bigmap();
import notification from './Gui/notification';
notification();
import rentCar from './util/rentcar';
rentCar(globalData);
require('./Gui/policedepartment');
require('./Gui/helptext');
@@ -287,4 +298,4 @@ interface VehicleData {
export {
VehicleData
}
}

View File

@@ -12,51 +12,27 @@
var loaded = false;
mp.events.add('inventoryShow', () => {
if (invBrowser !== null) {
invBrowser.destroy()
invBrowser = null;
globalData.InMenu = false;
loaded = false;
mp.gui.cursor.show(false, false);
return;
}
if (!globalData.InMenu) {
globalData.InMenu = true;
mp.gui.cursor.show(true, true);
itemArr = [];
vehItemArr = [];
invBrowser = mp.browsers.new('package://assets/html/inventory/inventory.html');
}
});
var offer = 0;
var tradeItemID;
var tradeItemAmount;
var tradeItemName;
var tradeItemWeight;
mp.events.add('openInventory', () => {
globalData.InMenu = true;
mp.gui.cursor.show(true, true);
mp.events.add('loadInventoryCEF', () => {
itemArr = [];
vehItemArr = [];
if (invBrowser !== null) {
invBrowser.destroy
}
invBrowser = mp.browsers.new('package://assets/html/inventory/inventory.html');
});
mp.events.add('closeInventory', () => {
invBrowser.destroy()
invBrowser = null;
globalData.InMenu = false;
loaded = false;
mp.gui.cursor.show(false, false);
return;
});
mp.events.addDataHandler("tradeOffer", (entity, value) => {
if (entity.type === "player") {
offer = parseInt(value);
if (invBrowser != null)
invBrowser.execute(`changeTradeStatus('${JSON.stringify(offer)}')`);
mp.events.add('inventoryShow', () => {
if (!globalData.InMenu && !loaded) {
globalData.InMenu = true;
mp.gui.cursor.show(true, true);
loaded = true;
invBrowser.execute(`showInventory()`);
} else if (loaded) {
globalData.InMenu = false;
mp.gui.cursor.show(false, false);
loaded = false;
invBrowser.execute(`closeInventory()`);
}
});
@@ -81,17 +57,6 @@
}
});
mp.events.add("CEF:InventoryLoaded", () => {
invBrowser.execute(`setBackpackItems('${JSON.stringify(itemArr)}')`);
if (vehItemArr.length != 0) {
invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}')`);
}
//invBrowser.execute(`setTradeItems('${JSON.stringify(tradeItemArr)}')`);
//invBrowser.execute(`setOfferItems('${JSON.stringify(offerItemArr)}')`);
loaded = true;
});
mp.events.add("CEF:callVehicleInventory", () => {
mp.events.callRemote("CLIENT:getVehicleInventory")
});
@@ -117,8 +82,8 @@
mp.events.add("aproveUse", (amount, name) => {
if (invBrowser !== null) {
mp.game.audio.playSoundFrontend(1, "LOCAL_PLYR_CASH_COUNTER_COMPLETE", "DLC_HEISTS_GENERAL_FRONTEND_SOUNDS", true);
invBrowser.execute(`alertGreen('${JSON.stringify(amount)}','${JSON.stringify(name)}')`);
mp.events.call("closeInventory");
//invBrowser.execute(`alertGreen('${JSON.stringify(amount)}','${JSON.stringify(name)}')`);
//mp.events.call("inventoryShow");
}
});
@@ -171,16 +136,4 @@
mp.events.add("CEF:UseItemInv", (itemId) => {
mp.events.callRemote('invUseItem', itemId);
});
mp.events.add("CEF:tradeItem", (money, User, tradeItems, tradeItemAmount) => {
if (invBrowser !== null) {
try {
invBrowser.destroy()
invBrowser = null;
mp.events.callRemote('tradeItem', 0, User, tradeItems, tradeItemAmount);
} finally {
mp.gui.cursor.show(false, false);
}
}
});
}

View File

@@ -1,4 +1,6 @@
export default function gangwarHandle(globalData: IGlobalData) {
var gangwarKillCounter = 0;
function inside(point, vs) {
let x = point[0],
y = point[1];
@@ -625,4 +627,12 @@
//turf.render();
}
});
mp.events.add("gangWarKillNotification", (deathPlayername) => {
mp.events.call("BN_Show", "~y~GANGWAR~w~: Du hast ~r~" + deathPlayername + " ~w~getötet. Kills: " + ++gangwarKillCounter);
});
mp.events.add("resetKillcounter", () => {
gangwarKillCounter = 0;
});
}

View File

@@ -87,7 +87,7 @@ export default function animationSync() {
mp.events.addDataHandler("AnimationData", (entity, string) => {
entity.clearTasksImmediately();
if (animationBreakTimer) {
clearInterval(animationBreakTimer);
clearTimeout(animationBreakTimer);
animationBreakTimer = null;
}
if (string == null) {
@@ -109,13 +109,12 @@ export default function animationSync() {
if (mp.players.local == entity) {
if (!endless) {
animationBreakTimer = setInterval(() => breakAnimation(name), 120000);
animationBreakTimer = setTimeout(() => breakAnimation(name), 120000);
}
if (!loop) {
let a = setInterval(function () {
clearInterval(a);
mp.game.wait(500);
let a = setTimeout(function () {
clearTimeout(a);
mp.events.callRemote("CLIENT:ClearAnimationData", true);
}, duration);
}
@@ -126,7 +125,7 @@ export default function animationSync() {
let { animName, msg } = animationBreakMessage.find(c => c.animName == name)
if (msg)
mp.events.call("renderTextOnScreen", msg);
mp.events.call("BN_Show", msg);
clearInterval(animationBreakTimer);
animationBreakTimer = null;

View File

@@ -0,0 +1,104 @@
import * as NativeUI from '../libs/NativeUI';
const Menu = NativeUI.Menu;
const UIMenuItem = NativeUI.UIMenuItem;
const UIMenuListItem = NativeUI.UIMenuListItem;
const Point = NativeUI.Point;
const ItemsCollection = NativeUI.ItemsCollection;
const Color = NativeUI.Color;
let screenRes = mp.game.graphics.getScreenResolution(0, 0);
let sendItem = new UIMenuItem("Mieten", "Fahrzeug Mieten");
sendItem.BackColor = new Color(13, 71, 161);
sendItem.HighlightedBackColor = new Color(25, 118, 210);
let cancelItem = new UIMenuItem("Abbrechen", "");
cancelItem.BackColor = new Color(213, 0, 0);
cancelItem.HighlightedBackColor = new Color(229, 57, 53);
export default function rentCar(globalData: IGlobalData) {
var rentcarMenu: NativeUI.Menu;
var vehiclesToRent: RentcarProperty[] = [];
var vehicleNames: string[] = [];
var vehiclePrices: number[] = [];
var selectedIndex: number;
var payTimer;
var totalTime: number = 0;
var totalBill: number = 0;
mp.events.add('showRentcarMenu', (vehiclestring, rentcarLocation) => {
if (globalData.InMenu) {
return;
}
globalData.InMenu = true;
vehiclesToRent = JSON.parse(vehiclestring);
vehicleNames = [];
vehiclePrices = [];
for (let entry of vehiclesToRent) {
vehicleNames.push(entry.Name);
vehiclePrices.push(entry.Price);
}
rentcarMenu = new Menu("Fahrzeugverleih", "", new Point(0, screenRes.y / 3), null, null);
rentcarMenu.AddItem(new UIMenuListItem("Fahrzeug", "$" + vehiclePrices[0] + " alle 3 Minuten", new ItemsCollection(vehicleNames)));
rentcarMenu.AddItem(sendItem);
rentcarMenu.AddItem(cancelItem);
rentcarMenu.Visible = true;
//outeText = "Route 1";
selectedIndex = 0;
rentcarMenu.ListChange.on((item: NativeUI.UIMenuListItem, index) => {
switch (item.Text) {
case "Fahrzeug":
item.Description = "$" + vehiclePrices[index] + " alle 3 Minuten";
selectedIndex = index;
//item.Description = item.SelectedValue;
break;
}
});
rentcarMenu.ItemSelect.on((item) => {
if (item.Text === "Mieten") {
mp.events.callRemote("SERVER:rentcarBooked", vehicleNames[selectedIndex], vehiclePrices[selectedIndex], rentcarLocation);
rentcarMenu.Close();
globalData.InMenu = false;
} else if (item.Text === "Abbrechen") {
rentcarMenu.Close();
globalData.InMenu = false;
}
});
rentcarMenu.MenuClose.on(() => {
globalData.InMenu = false;
});
});
mp.events.add('triggerRentcarTimer', (interval, pricePerInterval) => {
totalBill = pricePerInterval;
mp.events.callRemote("SERVER:updateRentCarBill", totalBill, totalTime);
clearInterval(payTimer);
payTimer = setInterval(() => {
totalTime += interval;
totalBill += pricePerInterval;
mp.events.callRemote("SERVER:updateRentCarBill", totalBill, totalTime);
}, interval * 1000);
});
mp.events.add('abortRentcarTimer', () => {
clearInterval(payTimer);
totalBill = 0;
totalTime = 0;
});
}

View File

@@ -1,5 +1,65 @@
export default function waypointUtil() {
let x_saved: number;
let y_saved: number;
let z_saved: number;
let waypointSet: boolean;
mp.events.add("SERVER:Util_setWaypoint", (x, y) => {
mp.game.ui.setNewWaypoint(x, y);
});
mp.events.add("playerCreateWaypoint", (position) => {
x_saved = position.x;
y_saved = position.y;
z_saved = position.z;
waypointSet = true;
mp.events.callRemote("SERVER:waypointToDriver", position.x, position.y);
});
mp.events.add("playerRemoveWaypoint", () => {
waypointSet = false;
});
var timer;
var val: number;
var timeoutConter: number;
mp.events.add("tpToWaypoint", () => {
if (!waypointSet) {
return;
}
val = 1000;
timeoutConter = 0;
let getGroundZ = mp.game.gameplay.getGroundZFor3dCoord(x_saved, y_saved, z_saved, 0, false);
if (getGroundZ == 0) {
mp.players.local.position = new mp.Vector3(x_saved, y_saved, val);
mp.players.local.freezePosition(true);
timer = setInterval(function () {
getGroundZ = mp.game.gameplay.getGroundZFor3dCoord(x_saved, y_saved, val, 0, false);
mp.players.local.freezePosition(false);
mp.players.local.position = new mp.Vector3(x_saved, y_saved, val);
if (getGroundZ == 0) {
timeoutConter++;
val -= 100;
mp.players.local.freezePosition(true);
} else {
mp.players.local.position = new mp.Vector3(x_saved, y_saved, getGroundZ);
clearInterval(timer);
}
if (timeoutConter >= 20) {
mp.players.local.freezePosition(false);
clearInterval(timer);
}
}, 250);
} else {
mp.players.local.position = new mp.Vector3(x_saved, y_saved, getGroundZ);
}
});
}

View File

@@ -18,7 +18,7 @@ function isTargetInPolygon(pos): boolean {
return false;
}
export default function weapondamageUtil() {
export default function weapondamageUtil(globalData: IGlobalData) {
let blockInput = false;
mp.players.local.setSuffersCriticalHits(false);
@@ -32,6 +32,10 @@ export default function weapondamageUtil() {
return true;
}
if (globalData.IsAfk == true && getWantedCount() === 0) {
return true;
}
if (spawnschutzEnabled && getWantedCount() === 0) {
return true;
}

View File

@@ -7,4 +7,6 @@
$root = $PSScriptRoot
dotnet tool update dotnet-ef --global
dotnet ef migrations add $MigrationName --project "$root\ReallifeGamemode.Database.csproj" --startup-project "$root\..\ReallifeGamemode.Server\ReallifeGamemode.Server.csproj" --configuration "Database"
dotnet ef migrations add $MigrationName --project "$root\ReallifeGamemode.Database.csproj" --startup-project "$root\..\ReallifeGamemode.Server\ReallifeGamemode.Server.csproj" --configuration "Database"
pause

View File

@@ -22,6 +22,7 @@ namespace ReallifeGamemode.Database.Entities
public float Y { get; set; }
public float Z { get; set; }
public float Radius { get; set; }
public bool AlwaysOpen { get; set; }
[NotMapped]
public Vector3 Position => new Vector3(X, Y, Z);

View File

@@ -127,6 +127,8 @@ namespace ReallifeGamemode.Database.Entities
public int warn { get; set; } = 0;
public bool FreeSurgery { get; set; } = true;
[NotMapped]
public Player Player
{

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,110 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ReallifeGamemode.Database.Migrations
{
public partial class Surgery : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_ChatLogs_Users_UserId",
table: "ChatLogs");
migrationBuilder.DropForeignKey(
name: "FK_ChatLogs_Factions_FactionId",
table: "ChatLogs");
migrationBuilder.DropForeignKey(
name: "FK_ChatLogs_Groups_GroupId",
table: "ChatLogs");
migrationBuilder.AddColumn<bool>(
name: "FreeSurgery",
table: "Users",
nullable: false,
defaultValue: false);
migrationBuilder.AlterColumn<int>(
name: "UserId",
table: "ChatLogs",
nullable: false,
oldClrType: typeof(int),
oldType: "int",
oldNullable: true);
migrationBuilder.AddForeignKey(
name: "FK_ChatLogs_Users_UserId",
table: "ChatLogs",
column: "UserId",
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_ChatLogs_Factions_FactionId",
table: "ChatLogs",
column: "FactionId",
principalTable: "Factions",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
migrationBuilder.AddForeignKey(
name: "FK_ChatLogs_Groups_GroupId",
table: "ChatLogs",
column: "GroupId",
principalTable: "Groups",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_ChatLogs_Users_UserId",
table: "ChatLogs");
migrationBuilder.DropForeignKey(
name: "FK_ChatLogs_Factions_FactionId",
table: "ChatLogs");
migrationBuilder.DropForeignKey(
name: "FK_ChatLogs_Groups_GroupId",
table: "ChatLogs");
migrationBuilder.DropColumn(
name: "FreeSurgery",
table: "Users");
migrationBuilder.AlterColumn<int>(
name: "UserId",
table: "ChatLogs",
type: "int",
nullable: true,
oldClrType: typeof(int));
migrationBuilder.AddForeignKey(
name: "FK_ChatLogs_Users_UserId",
table: "ChatLogs",
column: "UserId",
principalTable: "Users",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_ChatLogs_Factions_FactionId",
table: "ChatLogs",
column: "FactionId",
principalTable: "Factions",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
migrationBuilder.AddForeignKey(
name: "FK_ChatLogs_Groups_GroupId",
table: "ChatLogs",
column: "GroupId",
principalTable: "Groups",
principalColumn: "Id",
onDelete: ReferentialAction.Restrict);
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,23 @@
using Microsoft.EntityFrameworkCore.Migrations;
namespace ReallifeGamemode.Database.Migrations
{
public partial class AddDoorAlwaysOpenFlag : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "AlwaysOpen",
table: "Doors",
nullable: false,
defaultValue: false);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "AlwaysOpen",
table: "Doors");
}
}
}

View File

@@ -398,6 +398,9 @@ namespace ReallifeGamemode.Database.Migrations
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<bool>("AlwaysOpen")
.HasColumnType("tinyint(1)");
b.Property<string>("Category")
.HasColumnType("longtext CHARACTER SET utf8mb4");
@@ -1450,6 +1453,9 @@ namespace ReallifeGamemode.Database.Migrations
b.Property<bool>("FlyingLicensePlane")
.HasColumnType("tinyint(1)");
b.Property<bool>("FreeSurgery")
.HasColumnType("tinyint(1)");
b.Property<int?>("GroupId")
.HasColumnType("int");

View File

@@ -1,4 +1,5 @@
$root = $PSScriptRoot
dotnet tool update dotnet-ef --global
dotnet ef database update --project "$root\ReallifeGamemode.Database.csproj" --startup-project "$root\..\ReallifeGamemode.Server\ReallifeGamemode.Server.csproj" --configuration "Database"
dotnet ef database update --project "$root\ReallifeGamemode.Database.csproj" --startup-project "$root\..\ReallifeGamemode.Server\ReallifeGamemode.Server.csproj" --configuration "Database"
pause

View File

@@ -132,6 +132,11 @@ namespace ReallifeGamemode.Server.Bank
using (var dbContext = new DatabaseContext())
{
if (player.GetUser().PlayedMinutes < 180)
{
player.SendNotification("~r~Du kannst Geld erst ab 3 Spielstunden vergeben");
return;
}
if (player.GetUser(dbContext) == target.GetUser(dbContext))
{
player.SendNotification($"~r~Du kannst dir selber kein Geld überweisen.");

View File

@@ -172,7 +172,7 @@ namespace ReallifeGamemode.Server.Commands
#region Support
[Command("tog", "~m~Benutzung: ~s~/tog [Typ = ~g~IP~s~, ~g~deathlogs~s~, ~g~LC~s~, ~g~Connect~s~, ~g~D~s~, ~g~GA~s~, ~g~All~s~]", GreedyArg = true)]
[Command("tog", "~m~Benutzung: ~s~/tog [Typ = ~g~ip~s~, ~g~deathlogs~s~, ~g~lc~s~, ~g~connect~s~, ~g~d~s~, ~g~ga~s~, ~g~all~s~]", GreedyArg = true)]
public void CmdAdminTog(Player player, string typ, string option1 = null, string option2 = null)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
@@ -187,12 +187,12 @@ namespace ReallifeGamemode.Server.Commands
if (player.HasData("togip"))
{
player.ResetData("togip");
player.SendNotification("~g~[Info]~w~ Ip´s werden nun ausgeblendet.");
player.SendNotification("Die IP-Adressen sind nun ~r~deaktiviert~s~.");
}
else
{
player.SetData("togip", true);
player.SendNotification("~g~[Info]~w~ Ip´s werden nun angezeigt.");
player.SendNotification("Die IP-Adressen sind nun ~g~aktiviert~s~.");
}
break;
@@ -200,12 +200,12 @@ namespace ReallifeGamemode.Server.Commands
if (player.HasData("togdeath"))
{
player.ResetData("togdeath");
player.SendNotification("~g~[Info]~w~ Deathlogs werden nun ausgeblendet.");
player.SendNotification("Du hast die Todesbenachrichtigungen ~r~deaktiviert~s~.");
}
else
{
player.SetData("togdeath", true);
player.SendNotification("~g~[Info]~w~ Deathlogs werden nun angezeigt.");
player.SendNotification("Du hast die Todesbenachrichtigungen ~g~aktiviert~s~.");
}
break;
@@ -213,12 +213,12 @@ namespace ReallifeGamemode.Server.Commands
if (player.HasData("toglc"))
{
player.ResetData("toglc");
player.SendNotification("~g~[Info]~w~ Leaderchat wird nun ausgeblendet.");
player.SendNotification("Du hast den /lc-Chat ~r~deaktiviert~s~.");
}
else
{
player.SetData("toglc", true);
player.SendNotification("~g~[Info]~w~ Leaderchat wird nun angezeigt.");
player.SendNotification("Du hast den /lc-Chat ~g~aktiviert~s~.");
}
break;
@@ -226,40 +226,40 @@ namespace ReallifeGamemode.Server.Commands
if (player.HasData("togconnect"))
{
player.ResetData("togconnect");
player.SendNotification("~g~[Info]~w~ Connect-Logs werden nun ausgeblendet.");
player.SendNotification("Du hast die Connect-Nachrichten ~r~deaktiviert~s~.");
}
else
{
player.SetData("togconnect", true);
player.SendNotification("~g~[Info]~w~ Connect-Logs werden nun angezeigt.");
player.SendNotification("Du hast die Connect-Nachrichten ~g~aktiviert~s~.");
}
break;
case "d":
if (player.HasData("togd"))
{
player.ResetData("togd");
player.SendNotification("~g~[Info]~w~ D-Chat wird nun ausgeblendet.");
player.SendNotification("Du hast den /d-Chat ~r~deaktiviert~s~.");
}
else
{
player.SetData("togd", true);
player.SendNotification("~g~[Info]~w~ D-Chat wird nun angezeigt.");
player.SendNotification("Du hast den /d-Chat ~g~aktiviert~s~.");
}
break;
case "ga":
if (player.HasData("togga"))
{
player.ResetData("togga");
player.SendNotification("~g~[Info]~w~ GA-Chat wird nun ausgeblendet.");
player.SendNotification("Du hast den /ga-Chat ~r~deaktiviert~s~.");
}
else
{
player.SetData("togga", true);
player.SendNotification("~g~[Info]~w~ GA-Chat wird nun angezeigt.");
player.SendNotification("Du hast den /ga-Chat ~g~aktiviert~s~.");
}
break;
case "all":
if(!player.HasData("togall"))
if (!player.HasData("togall"))
{
player.SetData("togip", true);
player.SetData("togdeath", true);
@@ -270,7 +270,7 @@ namespace ReallifeGamemode.Server.Commands
player.SetData("togga", true);
player.SetData("togall", true);
player.SendNotification("~g~[Info]~s~ Alle Logs wurden eingeschaltet");
player.SendNotification("Du hast alle Benachrichtigungen ~g~aktiviert~s~.");
}
else
{
@@ -283,7 +283,7 @@ namespace ReallifeGamemode.Server.Commands
player.ResetData("togga");
player.ResetData("togall");
player.SendNotification("~g~[Info]~s~ Alle Logs wurden ausgeschaltet");
player.SendNotification("Du hast alle Benachrichtigungen ~r~deaktiviert~s~.");
}
break;
}
@@ -314,6 +314,12 @@ namespace ReallifeGamemode.Server.Commands
player.TriggerEvent("toggleTSupportMode", false);
player.SetData("SAdminduty", false);
ChatService.SendMessage(player, "!{#ee4d2e}** " + "Du befindest dich nicht mehr im T-Support");
if (user.GetData<bool>("adminUnshow") == true)
{
user.SetData("adminUnshow", false);
player.TriggerEvent("toggleAdminUnshowMode", false);
}
}
user.SetBlipAndNametagColor();
}
@@ -351,7 +357,7 @@ namespace ReallifeGamemode.Server.Commands
[Command("o", "~m~Benutzung: ~s~/o [Nachricht]", GreedyArg = true)]
public void CmdAdminO(Player player, string message)
{
if(!player.IsLoggedIn())
if (!player.IsLoggedIn())
{
return;
}
@@ -470,11 +476,11 @@ namespace ReallifeGamemode.Server.Commands
msg = Regex.Replace(msg, "(~[a-zA-Z]~)|(!{(.*)})", "");
ChatService.SendMessage(player, "~y~PM an " + target.Name + ": " + msg + " ");
string Message = "~y~PM von " + player.GetUser().AdminLevel.GetName() + " " + player.Name + ": " + msg + "";
string Message = "~y~PM von " + player.GetUser().AdminLevel.GetName() + " " + player.Name + ": " + msg;
ChatService.SendMessage(target, Message);
}
[Command("skick", "~m~Benutzung: ~s~/skick [Player] [Grund]", GreedyArg = true)]
[Command("skick", "~m~Benutzung: ~s~/skick [Spieler] [Grund]", GreedyArg = true)]
public void CmdAdminSKick(Player player, string targetname, string reason)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true)
@@ -497,14 +503,14 @@ namespace ReallifeGamemode.Server.Commands
}
string adminPlayername = NAPI.Player.GetPlayerName(player);
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
ChatService.SendMessage(target, "~r~INFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt (Grund: " + reason + ").");
NAPI.Task.Run(() =>
{
target.Kick();
}, 2500);
ChatService.BroadcastAdmin("~y~SKICK: ~w~" + target.Name + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason, AdminLevel.SUPPORTER);
ChatService.BroadcastAdmin("~y~SKICK: ~w~" + target.Name + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt (Grund: " + reason + ").", AdminLevel.SUPPORTER);
}
[Command("clearchat", "~m~Benutzung: ~s~/clearchat")]
@@ -544,6 +550,40 @@ namespace ReallifeGamemode.Server.Commands
#endregion Support
#region Admin
[Command("towaypoint", "~m~Benutzung: ~s~/towaypoint", Alias = "tow")]
public void CmdAdminToWaypoint(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
player.TriggerEvent("tpToWaypoint");
}
[Command("remspawnschutz", "~m~Benutzung: ~s~/rmss [Target]", Alias = "rmss")]
public void CmdAdminRmss(Player player, String targetname)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
ChatService.NotAuthorized(player);
return;
}
Player target = PlayerService.GetPlayerByNameOrId(targetname);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
target.SendChatMessage(player.Name + " hat deinen Spawnschutz entfernt");
player.SendChatMessage("Du hast den Spawnschutz von " + target.Name + " entfernt");
target.TriggerEvent("abortSpawnschutz");
}
[Command("remspawnschutz", "~m~Benutzung: ~s~/rmss [Target]")]
public void CmdAdminRmss(Player player, String targetname)
@@ -838,14 +878,14 @@ namespace ReallifeGamemode.Server.Commands
string adminPlayername = NAPI.Player.GetPlayerName(player);
ChatService.SendMessage(target, "~r~KICKINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt: " + reason);
ChatService.SendMessage(target, "~r~INFO: ~w~Du wurdest von " + adminPlayername + " vom Server gekickt (Grund: " + reason + ").");
NAPI.Task.Run(() =>
{
target.Kick();
}, 2500);
ChatService.Broadcast("~y~INFO: ~w~" + target.Name + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt: " + reason);
ChatService.Broadcast("!{#FF4040}[KICK] ~w~" + target.Name + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " gekickt (Grund: " + reason + ").");
}
[Command("warn", "~m~Benutzung: ~s~/warn [Player] [Grund]", GreedyArg = true)]
@@ -875,13 +915,13 @@ namespace ReallifeGamemode.Server.Commands
dbContext.SaveChanges();
if (userwarn.warn >= 3)
{
ChatService.BroadcastAdmin("~y~INFO: Das war der 3. Warn - bitte bannen!", AdminLevel.ADMIN);
ChatService.BroadcastAdmin("~y~INFO: ~w~" + targetPlayername + " hat jetzt drei Warns bitte bannen!", AdminLevel.ADMIN);
}
}
ChatService.SendMessage(target, "~r~WARNINFO: ~w~Du wurdest von " + adminPlayername + " verwarnt: " + reason);
ChatService.SendMessage(target, "!{#FF4040}[WARN] ~w~Du wurdest von " + adminPlayername + " verwarnt (Grund: " + reason + ").");
ChatService.BroadcastAdmin("~y~INFO: ~w~" + targetPlayername + " wurde von " + player.GetUser().AdminLevel.GetName() + " " + adminPlayername + " verwarnt: " + reason, AdminLevel.ADMIN);
ChatService.BroadcastAdmin("~y~INFO: " + targetPlayername + " ~w~wurde von " + player.GetUser().AdminLevel.GetName() + " ~y~" + adminPlayername + " ~w~verwarnt (Grund: " + reason + ").", AdminLevel.ADMIN);
}
[Command("ip", "~m~Benutzung: ~s~/ip [Spieler]")]
@@ -899,11 +939,11 @@ namespace ReallifeGamemode.Server.Commands
ChatService.PlayerNotFound(player);
return;
}
ChatService.SendMessage(player, "IP von ~y~" + NAPI.Player.GetPlayerName(target) + ": ~g~" + target.Address);
ChatService.SendMessage(player, "~y~IP: ~w~Die IP-Adresse von ~y~" + NAPI.Player.GetPlayerName(target) + " ~w~lautet: ~y~" + target.Address);
}
[Command("ban", "~m~Benutzung: ~s~/ban [User] [Grund] [Zeit in Minuten(0 für Permanent)]", GreedyArg = true)]
public void CmdAdminBan(Player admin, string user, string reason, string strmins = "0")
[Command("ban", "~m~Benutzung: ~s~/ban [User] [Zeit in Minuten (0 = Permanent)] [Grund]", GreedyArg = true)]
public void CmdAdminBan(Player admin, string user, string strmins, string reason)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
{
@@ -934,11 +974,11 @@ namespace ReallifeGamemode.Server.Commands
reason = Regex.Replace(reason, "(~[a-zA-Z]~)|(!{(.*)})", "");
string adminPlayername = NAPI.Player.GetPlayerName(admin);
String banMessage = "~r~BANINFO: ~w~Du wurdest von " + adminPlayername + " vom Server gebannt: " + reason;
String banMessage = "~r~INFO: ~w~Du wurdest von " + adminPlayername + " permanent vom Server gebannt (Grund: " + reason + ").";
if (mins > 0)
{
banMessage = "~r~BANINFO: ~w~Du wurdest von " + adminPlayername + " für " + mins + " Minuten vom Server gebannt: " + reason;
banMessage = "~r~INFO: ~w~Du wurdest von " + adminPlayername + " für " + mins + " Minuten vom Server gebannt (Grund: " + reason + ").";
}
ChatService.SendMessage(target, banMessage);
@@ -949,7 +989,7 @@ namespace ReallifeGamemode.Server.Commands
}, 2500);
}
[Command("unban", "~m~Benutzung: ~s~/unban [Name] ")]
[Command("unban", "~m~Benutzung: ~s~/unban [Name]")]
public void CmdAdminUnban(Player admin, string userName)
{
if (!admin.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
@@ -998,7 +1038,7 @@ namespace ReallifeGamemode.Server.Commands
user.UnbanPlayer();
}
string message = "~b~[ADMIN] ~s~Der Spieler ~y~" + user.Name + " ~s~wurde von ~y~" + admin.Name + " ~s~entbannt.";
string message = "~y~INFO: ~w~Der Spieler ~y~" + user.Name + " ~w~wurde von ~y~" + admin.Name + " ~w~entbannt.";
ChatService.BroadcastAdmin(message, AdminLevel.ADMIN);
}
@@ -1180,7 +1220,7 @@ namespace ReallifeGamemode.Server.Commands
return;
}
target.RemoveAllWeapons();
ChatService.SendMessage(target, "~b~Deine Waffen wurden dir von " + player.Name + "(Admin) abgenommen");
ChatService.SendMessage(target, "~b~Deine Waffen wurden dir von " + player.Name + " (Admin) abgenommen");
ChatService.SendMessage(player, "~b~Dem Spieler " + target.Name + " wurden erfolgreich alle Waffen abgenommen ");
}
@@ -1509,33 +1549,6 @@ namespace ReallifeGamemode.Server.Commands
Medic.delReviveTask(target);
}
[Command("aunshow", "~m~Benutzung:~s~ /aunshow")]
public void CmdAdminUnshow(Player player)
{
User user = player.GetUser();
if (!user.IsAdmin(AdminLevel.HEADADMIN))
{
ChatService.NotAuthorized(player);
return;
}
bool currentStatus = user.GetData<bool>("adminUnshow");
currentStatus = !currentStatus;
user.SetData("adminUnshow", currentStatus);
player.TriggerEvent("toggleAdminUnshowMode", currentStatus);
user.SetBlipAndNametagColor();
if(currentStatus)
{
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun Unshow");
}
else
{
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun nicht mehr Unshow");
}
}
[Command("setap", "~m~Benutzung: ~s~/setap [Spieler] (Armor)")]
public void CmdAdminSetAP(Player player, string name, int armor = 100)
{
@@ -1809,12 +1822,16 @@ namespace ReallifeGamemode.Server.Commands
[Command("spectate", "~m~Benutzung: ~s~/spectate [NAME/ID]", Alias = "spec")]
public void CmdAdminSpectate(Player player, string targetname = null)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN) ?? true)
User user = player.GetUser();
if (!user.IsAdmin(AdminLevel.ADMIN))
{
ChatService.NotAuthorized(player);
return;
}
Player target;
bool currentStatus = player.GetData<bool>("adminUnshow");
if (targetname != null)
{
target = PlayerService.GetPlayerByNameOrId(targetname);
@@ -1823,14 +1840,71 @@ namespace ReallifeGamemode.Server.Commands
ChatService.PlayerNotFound(player);
return;
}
player.TriggerEvent("SERVER:ADMIN_SPECTATE", target);
if (target.Name == player.Name)
{
ChatService.ErrorMessage(player, "Du kannst dich nicht selbst spectaten");
return;
}
if (!currentStatus)
{
currentStatus = !currentStatus;
player.SetData("adminUnshow", currentStatus);
}
player.TriggerEvent("toggleAdminUnshowMode", currentStatus);
player.SetData<Vector3>("specPosition", player.Position);
player.SafeTeleport(target.Position);
NAPI.Task.Run(() =>
{
player.TriggerEvent("SERVER:ADMIN_SPECTATE", target);
}, 100);
}
else
{
currentStatus = !currentStatus;
player.SetData("adminUnshow", currentStatus);
player.TriggerEvent("SERVER:ADMIN_STOP_SPECTATE");
}
player.TriggerEvent("toggleAdminUnshowMode", currentStatus);
player.SafeTeleport(player.GetData<Vector3>("specPosition"));
}
user.SetBlipAndNametagColor();
}
[Command("aunshow", "~m~Benutzung:~s~ /aunshow")]
public void CmdAdminUnshow(Player player)
{
User user = player.GetUser();
if (!user.IsAdmin(AdminLevel.HEADADMIN))
{
ChatService.NotAuthorized(player);
return;
}
if (!player.IsTSupport())
{
ChatService.ErrorMessage(player, "Du bist nicht im T-Support");
return;
}
bool currentStatus = player.GetData<bool>("adminUnshow");
currentStatus = !currentStatus;
player.SetData("adminUnshow", currentStatus);
player.TriggerEvent("toggleAdminUnshowMode", currentStatus);
user.SetBlipAndNametagColor();
if (currentStatus)
{
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun Unshow");
}
else
{
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du bist nun nicht mehr Unshow");
}
}
#endregion Admin
@@ -2162,18 +2236,15 @@ namespace ReallifeGamemode.Server.Commands
return;
}
Weather weatherBefore = NAPI.World.GetWeather();
NAPI.World.SetWeather(weather);
Weather weatherAfter = NAPI.World.GetWeather();
Weather weatherBefore = World.WeatherSync.Weather;
World.WeatherSync.SetWeather(weather);
Weather weatherAfter = World.WeatherSync.Weather;
ChatService.SendMessage(player, "~w~Wetter geändert: " + weatherAfter);
if (!weatherBefore.Equals(weatherAfter))
{
ChatService.SendMessage(player, "~w~Wetter geändert: " + NAPI.World.GetWeather());
NAPI.Notification.SendNotificationToAll("Das Wetter wurde von ~g~" + player.Name + " ~s~auf ~g~" + NAPI.World.GetWeather() + "~s~ geändert.", true);
}
else
{
ChatService.SendMessage(player, "~w~Das Wetter konnte nicht geändert werden");
NAPI.Notification.SendNotificationToAll("Das Wetter wurde von ~g~" + player.Name + " ~s~auf ~g~" + weatherAfter + "~s~ geändert.", true);
}
}
@@ -3562,10 +3633,10 @@ namespace ReallifeGamemode.Server.Commands
}
}
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du hast ein Payday gedroppt.");
ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du hast einen PayDay gedroppt.");
}
[Command("setwage", "~m~Benutzung: ~s~/setwage [Name/Id] [Lohn]")]
[Command("setwage", "~m~Benutzung: ~s~/setwage [Spieler] [Lohn]")]
public void CmdAdminSetWage(Player player, string nameOrId, int wage)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
@@ -3759,13 +3830,14 @@ namespace ReallifeGamemode.Server.Commands
player.SendChatMessage("~m~Benutzung:~s~ /business [price] [Option]");
}
[Command("checkstats", "~m~Benutzung:~s~ /checkstats [Name / ID]")]
[Command("checkstats", "~m~Benutzung:~s~ /checkstats [Spieler]")]
public void CmdAdminCheckStats(Player player, string nameOrId)
{
User user = player.GetUser();
if (!user.IsAdmin(AdminLevel.SUPPORTER))
{
ChatService.NotAuthorized(player);
return;
}
Player target = PlayerService.GetPlayerByNameOrId(nameOrId);
@@ -3782,7 +3854,18 @@ namespace ReallifeGamemode.Server.Commands
bool bikeLicense = targetUser.DriverLicenseBike;
bool flyingLicense = targetUser.FlyingLicensePlane;
bool weaponLicense = targetUser.WeaponLicense;
ChatService.SendMessage(player, $"Stats von {target.Name} - HandMoney: {handmoney.ToMoneyString()}, BankMoney: {bankmoney.ToMoneyString()}, DriverLicense: {driverLicense.ToString()}, BikeLicense: {bikeLicense.ToString()}, FlyingLicense: {flyingLicense.ToString()}, WeaponLicense: {weaponLicense.ToString()}");
int playedHours = targetUser.PlayedMinutes / 60;
string playedHoursString = "";
int jailTime = targetUser.JailTime;
if (user.IsAdmin(AdminLevel.HEADADMIN)) {
playedHoursString = playedHours.ToString();
} else {
int newbiePlayedHoursThreshold = GlobalHelper.newbiePlayedMinutesThreshold / 60;
playedHoursString = playedHours > newbiePlayedHoursThreshold ? (newbiePlayedHoursThreshold + "+") : playedHours.ToString();
}
ChatService.SendMessage(player, $"Statistiken von {target.Name} - HandMoney: {handmoney.ToMoneyString()}, BankMoney: {bankmoney.ToMoneyString()}, DriverLicense: {driverLicense.ToString()}, BikeLicense: {bikeLicense.ToString()}, FlyingLicense: {flyingLicense.ToString()}, WeaponLicense: {weaponLicense.ToString()}, playedHours: {playedHoursString}, JailTime: {jailTime.ToString()}");
}
#endregion ALevel1337
@@ -3899,10 +3982,16 @@ namespace ReallifeGamemode.Server.Commands
[RemoteEvent("Noclip")]
public void Noclip(Player player)
{
if (!player.GetUser()?.IsAdmin(AdminLevel.HEADADMIN) ?? true)
if (!player.GetUser().IsAdmin(AdminLevel.HEADADMIN))
{
return;
}
if (!player.IsTSupport())
{
ChatService.ErrorMessage(player, "Du bist nicht im T-Support");
return;
}
if (player.HasData("Adminduty") && player.GetData<bool>("Adminduty"))
player.TriggerEvent("ADMIN:NoClip");
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
@@ -82,15 +82,15 @@ namespace ReallifeGamemode.Server.Commands
message = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", "");
string rank = string.Empty;
string factionName = string.Empty;
if (f?.GangOwned == true)
{
rank = user.FactionRank.RankName;
factionName = user.Faction.Name + " " + user.FactionRank.RankName;
}
else
{
rank = "[ADMIN]";
factionName = "ADMIN";
}
var logEntry = new GangChatLogEntry()
@@ -102,7 +102,7 @@ namespace ReallifeGamemode.Server.Commands
dbContext.GangChatLogs.Add(logEntry);
dbContext.SaveChanges();
string broadcastMessage = "!{FF0000}** " + rank + " " + player.Name + ": " + message + " **";
string broadcastMessage = "!{E52222}** [" + factionName + "] " + player.Name + ": " + message + " **";
using (var context = new DatabaseContext())
{
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.GangOwned), true, (admin) => admin.HasData("togga"));
@@ -166,11 +166,11 @@ namespace ReallifeGamemode.Server.Commands
if (f?.StateOwned ?? false)
{
factionName = user.FactionRank.RankName;
factionName = user.Faction.Name + " " + user.FactionRank.RankName;
}
else
{
factionName = "[ADMIN]";
factionName = "ADMIN";
}
var logEntry = new DepartmentChatLogEntry()
@@ -182,7 +182,7 @@ namespace ReallifeGamemode.Server.Commands
dbContext.DepartmentChatLogs.Add(logEntry);
dbContext.SaveChanges();
string broadcastMessage = "!{CC3333}** " + factionName + " " + player.Name + ": " + message + ", over **";
string broadcastMessage = "!{CC3333}** [" + factionName + "] " + player.Name + ": " + message + ", over **";
using (var context = new DatabaseContext())
{
ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned), true, (admin) => admin.HasData("togd"));
@@ -511,7 +511,7 @@ namespace ReallifeGamemode.Server.Commands
#region Staatsfraktionen (LSPD / FBI) Commands
[Command("m", "~m~Benutzung: ~s~/m [Message]", GreedyArg = true)]
[Command("m", "~m~Benutzung: ~s~/m [Nachricht]", GreedyArg = true)]
public void CmdFactionMegaphone(Player player, string message)
{
User user = player.GetUser();
@@ -533,7 +533,7 @@ namespace ReallifeGamemode.Server.Commands
return;
}
ChatService.SendInRange(player.Position, 50, "!{#FFFF00}[" + player.GetUser().Faction.Name + " " + player.Name + ": !{#FFFF00}" + message + "]");
ChatService.SendInRange(player.Position, 50, "!{#FFFF00}Megafon (" + player.Name + "): " + message);
}
[Command("cuff", "~m~Benutzung: ~s~/cuff")]

View File

@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using GTANetworkAPI;
using Newtonsoft.Json;
using ReallifeGamemode.Database.Entities;
@@ -16,7 +17,26 @@ using ReallifeGamemode.Services;
namespace ReallifeGamemode.Server.Commands
{
internal class UserCommands : Script
{
{
[Command("rent", "~m~rent stop")]
public void CmdUserStopRent(Player player, String option = "") {
if (!player.IsLoggedIn()) return;
if (option != "stop")
{
player.SendChatMessage("Mit \"/rent stop\" kannst du die Miete kündigen");
return;
}
if (!player.HasData("hasRentcar"))
{
ChatService.ErrorMessage(player, "Du hast zurzeit kein Fahrzeug gemietet");
return;
}
Rentcar.cancelRent(player);
}
[Command("eventport", "~m~eventport")]
public void CmdUserEventport(Player player, String option = "")
{
@@ -71,6 +91,42 @@ namespace ReallifeGamemode.Server.Commands
player.SendNotification("Du hast dich zum Event teleportiert");
}
[Command("sms", "~m~Benutzung: ~s~/sms [Spieler] [Nachricht]", GreedyArg = true)]
public void CmdUserSMS(Player player, string name, string msg)
{
if (!player.IsLoggedIn()) return;
Player target = PlayerService.GetPlayerByNameOrId(name);
if (target == null || !target.IsLoggedIn())
{
ChatService.PlayerNotFound(player);
return;
}
if (target == player)
{
ChatService.ErrorMessage(player, "Du kannst dir keine SMS schreiben");
return;
}
using (var dbContext = new DatabaseContext())
{
User user = player.GetUser(dbContext);
if (user.BankAccount.Balance < 5) {
ChatService.ErrorMessage(player, "Dafür hast du nicht genug Geld auf deinem Bankkonto");
return;
}
user.BankAccount.Balance -= 5;
dbContext.SaveChanges();
}
msg = Regex.Replace(msg, "(~[a-zA-Z]~)|(!{(.*)})", "");
ChatService.SendMessage(player, $"~y~SMS ~w~an ~y~{ target.Name }~w~: { msg }");
ChatService.SendMessage(target, $"~y~SMS ~w~von ~y~{ player.Name }~w~: { msg }");
}
[Command("look", "~m~look")]
public void CmdUserLook(Player player)
{
@@ -178,7 +234,7 @@ namespace ReallifeGamemode.Server.Commands
{
player.SendChatMessage("E - Interagieren (ATM, Türen, Shops, Friseur etc.");
player.SendChatMessage("M - Interaktionsmenü öffnen und schließen");
player.SendChatMessage("X - Fahrzeug auf -/ abschließen sowie im Fahrzeuginteraktionsmenü öffnen");
player.SendChatMessage("Z - Fahrzeug auf -/ abschließen sowie im Fahrzeuginteraktionsmenü öffnen");
player.SendChatMessage("N - Fahrzeugmotor Starten");
player.SendChatMessage("O - Onlineliste öffnen / schließen");
player.SendChatMessage("I - Inventar öffnen / schließen");

View File

@@ -71,7 +71,7 @@ namespace ReallifeGamemode.Server.DrivingSchool
new Vector3(-255.55, -1419.48, 32.75),
new Vector3(-369.08, -1415.37, 29.68),
new Vector3(-114.48, -1251.43, 37.59),
new Vector3(59.22, -1261.71, 29.84),
new Vector3(70.312744, -1250.7972, 29.84),
new Vector3(39.12, -1165.28, 29.87),
new Vector3(-307.52, -1200.85, 37.79),
new Vector3(-441.79, -1251.67, 46.37),

View File

@@ -78,6 +78,11 @@ namespace ReallifeGamemode.Server.Events
player.TriggerEvent("CLIENT:AddPed", 3, "s_m_m_pilot_01", -1621.4542236328125, -3152.724365234375, 13.991769790649414, 50.73009490966797, 0, false, true, 0, "none", true, true, true);//Ped_Pilot LS Airport
player.TriggerEvent("CLIENT:AddPed", 4, "u_m_o_finguru_01", -534.4425659179688, -2145.747314453125, 5.992100715637207, 53.96156692504883, 0, false, true, 0, "none", true, true, true);//Ped Busfahrer
player.TriggerEvent("CLIENT:AddPed", 5, "csb_prolsec", 1690.84, 2591.17 , 45.91, -2.66, 0, false, true, 0, "none", true, true, true);//Ped Knast
player.TriggerEvent("CLIENT:AddPed", 6, "ig_siemonyetarian", -1023.1589, -2693.6948, 13.98, 173.95613, 0, false, true, 0, "none", true, true, true);//Ped Rentcar NoobSpawn
player.TriggerEvent("CLIENT:AddPed", 7, "ig_siemonyetarian", -369.1589, -230.92816, 36.028805, 150.26433, 0, false, true, 0, "none", true, true, true);//Ped Rentcar KH/Stadthalle
player.TriggerEvent("CLIENT:AddPed", 8, "ig_siemonyetarian", 1222.0868, 2726.5286, 38.00415, 113.77263, 0, false, true, 0, "none", true, true, true);//Ped Rentcar Knast
player.TriggerEvent("CLIENT:AddPed", 9, "ig_siemonyetarian", -215.4218292236328, 6218.90478515625, 31.491567611694336, -135.07437133789062, 0, false, true, 0, "none", true, true, true);//Ped Rentcar Paleto
player.TriggerEvent("CLIENT:AddPed", 10, "ig_siemonyetarian", 818.239990234375, -1040.833984375, 26.750696182250977, 3.0542829036712646, 0, false, true, 0, "none", true, true, true);//Ped Rentcar Lamesa
TimeSpan currentTime = TimeManager.CurrentTime;
bool disableLightMode = currentTime > LightModeTimeFrom && currentTime < LightModeTimeTo;

View File

@@ -79,6 +79,7 @@ namespace ReallifeGamemode.Server.Events
var playerInGangwar = player.HasData("inGangWar");
var killerInGangwar = killer.HasData("inGangWar");
NAPI.Util.ConsoleOutput($"OnPlayerDeath - Player {player.Name} died - PlayerInGangwar = {playerInGangwar}, KillerInGangwar = {killerInGangwar}");
if (playerInGangwar && killerInGangwar)
{
@@ -148,7 +149,7 @@ namespace ReallifeGamemode.Server.Events
if (copNearby)
{
user.SetJailTime(true, dbContext);
Jail.Check_PutBehindBars(user, "cell");
Jail.Check_PutBehindBars(user, JailInLocations.InCell);
ChatService.HQMessage(user.Name + " wurde ins Gefängnis eingeliefert.");
}
else

Some files were not shown because too many files have changed in this diff Show More