-
+
+
-
0 / 250 Kilogramm
+ 0 / 0 Kilogramm
Fahrzeug
@@ -193,9 +193,11 @@
mp.trigger("CEF:callVehicleInventory");
}
- function setVehicleItems(jsonItemArr) {
+ function setVehicleItems(jsonItemArr, trunkSize) {
var parsedItemArr = JSON.parse(jsonItemArr)
vehInv = [];
+ $('#trunkSize').html(trunkSize / 1000);
+
for (var i = 0; i < parsedItemArr.length; i++) {
var item = parsedItemArr[i];
var newItem = { Name: item.Name, ID: item.ItemId, Amount: item.Amount, Category: 0 };
@@ -463,7 +465,7 @@
blueButtonImg.setAttribute("class", "blueImg");
blueButton.appendChild(blueButtonImg);
- var listLength = list.length;
+ var listLength = list.getElementsByTagName("li").length;
var row = 1;
@@ -483,7 +485,7 @@
row = 6;
}
- var Litem = document.createElement("div");
+ var Litem = document.createElement("li");
Litem.setAttribute("class", "item" + row);
Litem.setAttribute("id", i);
Litem.setAttribute("name", "List" + item.Category);
@@ -505,7 +507,7 @@
while (child) {
e.removeChild(child);
child = e.lastElementChild;
- } console.log(handelInv);
+ }
for (var i = 0; i < vehInv.length; i++) {
var item = vehInv[i];
@@ -533,7 +535,7 @@
blueButtonImg.setAttribute("class", "blueImg");
blueButton.appendChild(blueButtonImg);
- var listLength = list.length;
+ var listLength = list.getElementsByTagName("li").length;
var row = 1;
diff --git a/ReallifeGamemode.Client/assets/html/vehiclemenu/script.js b/ReallifeGamemode.Client/assets/html/vehiclemenu/script.js
new file mode 100644
index 00000000..82dbf11f
--- /dev/null
+++ b/ReallifeGamemode.Client/assets/html/vehiclemenu/script.js
@@ -0,0 +1,16 @@
+
+
+
+function ad_row(id, name, faction, ping) {
+ var table_id = "t1";
+ var table = document.getElementById(table_id);
+ var rows = table.getElementsByTagName('tr').length;
+ var tr = table.insertRow(rows);
+ var td1 = document.createElement('td');
+ var td2 = document.createElement('td');
+ var td3 = document.createElement('td');
+ var td4 = document.createElement('td');
+ var test = faction;
+ td1.innerHTML = ''+driver;
+ tr.appendChild(td1);
+}
\ No newline at end of file
diff --git a/ReallifeGamemode.Client/assets/html/vehiclemenu/style.css b/ReallifeGamemode.Client/assets/html/vehiclemenu/style.css
new file mode 100644
index 00000000..aa5f9d4f
--- /dev/null
+++ b/ReallifeGamemode.Client/assets/html/vehiclemenu/style.css
@@ -0,0 +1,67 @@
+/* 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;
+}
+
+
+
+
diff --git a/ReallifeGamemode.Client/assets/html/wanteds/index.html b/ReallifeGamemode.Client/assets/html/wanteds/index.html
index c374c5a1..dc979115 100644
--- a/ReallifeGamemode.Client/assets/html/wanteds/index.html
+++ b/ReallifeGamemode.Client/assets/html/wanteds/index.html
@@ -1,60 +1,99 @@
-
-
- Wanteds
-
-
+ #wanteds img {
+ width: 25px;
+ height: 25px;
+ margin-right: 5px;
+ filter: drop-shadow(0px 0px 1px #000000);
+ -webkit-filter: drop-shadow(0px 0px 1px #000000);
+ -moz-filter: drop-shadow(0px 0px 1px #000000);
+ }
+
+ #wanteds span {
+ color: white;
+ font-family: "Pricedown", sans-serif;
+ font-size: 2.5em;
+ line-height: 1;
+ -webkit-text-stroke: 1px black;
+ margin-top: -5px;
+ }
+
- ${infoLine} `;
+ listTag.append(listItemTag);
+ });
+}
+
+close.onclick = function closeWindow() {
+ mp.trigger('removeLookMenu');
+}
\ No newline at end of file
diff --git a/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html b/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html
new file mode 100644
index 00000000..293f1c03
--- /dev/null
+++ b/ReallifeGamemode.Client/assets/vehicle/lastPlayers.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Eingabe | Life of German
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/ReallifeGamemode.Client/assets/vehicle/style.css b/ReallifeGamemode.Client/assets/vehicle/style.css
new file mode 100644
index 00000000..aa5f9d4f
--- /dev/null
+++ b/ReallifeGamemode.Client/assets/vehicle/style.css
@@ -0,0 +1,67 @@
+/* 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;
+}
+
+
+
+
diff --git a/ReallifeGamemode.Client/dlcpacks/ballas_weaponrack/dlc.rpf b/ReallifeGamemode.Client/dlcpacks/ballas_weaponrack/dlc.rpf
new file mode 100644
index 00000000..64c9675b
--- /dev/null
+++ b/ReallifeGamemode.Client/dlcpacks/ballas_weaponrack/dlc.rpf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6c1a845cfe60c75b75dd72add91c3bb7e6890c4df6cb10649be3740416b34d17
+size 3076608
diff --git a/ReallifeGamemode.Client/dlcpacks/fibpack/dlc.rpf b/ReallifeGamemode.Client/dlcpacks/fibpack/dlc.rpf
new file mode 100644
index 00000000..19d56440
--- /dev/null
+++ b/ReallifeGamemode.Client/dlcpacks/fibpack/dlc.rpf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:5e4f54ec27530515452c0ef05241bd26ba70d13451ac24eb799ff3c6b18f42ec
+size 98724352
diff --git a/ReallifeGamemode.Client/global.d.ts b/ReallifeGamemode.Client/global.d.ts
index 2242dd17..576f9826 100644
--- a/ReallifeGamemode.Client/global.d.ts
+++ b/ReallifeGamemode.Client/global.d.ts
@@ -4,6 +4,7 @@
InMenu: boolean,
InChat: boolean,
LoggedIn: boolean,
+ IsAfk: boolean,
}
declare type AccountData = {
@@ -74,4 +75,17 @@ declare type FactionMember = {
declare type FactionRank = {
+}
+
+declare type Weapon = {
+ WeaponModel: string;
+ CategoryId: number;
+ SlotID: number;
+ Ammo: number;
+ Price: number;
+}
+
+declare type WeaponCategory = {
+ Category: number;
+ Weapons: Weapon[];
}
\ No newline at end of file
diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts
index 303729b5..5a2a287f 100644
--- a/ReallifeGamemode.Client/index.ts
+++ b/ReallifeGamemode.Client/index.ts
@@ -14,6 +14,7 @@ let globalData: IGlobalData = {
HideGui: false,
InChat: false,
LoggedIn: false,
+ IsAfk: false,
get InMenu(): boolean {
return inMenu;
@@ -258,6 +259,12 @@ animationSync();
import antiCheat from './admin/anticheat';
antiCheat(globalData);
+import antiAfk from './Player/antiafk';
+antiAfk(globalData);
+
+import ammunation from './Interaction/ammunation/ammunation';
+ammunation(globalData);
+
require('./Gui/policedepartment');
require('./Gui/helptext');
diff --git a/ReallifeGamemode.Client/inventory/inventory.ts b/ReallifeGamemode.Client/inventory/inventory.ts
index 964068e7..b36c7f8d 100644
--- a/ReallifeGamemode.Client/inventory/inventory.ts
+++ b/ReallifeGamemode.Client/inventory/inventory.ts
@@ -8,6 +8,7 @@
var offerItemArr;
var tradeItemArr;
var vehItemArr;
+ var trunkSize;
var loaded = false;
@@ -36,18 +37,18 @@
var tradeItemWeight;
mp.events.add('openInventory', () => {
- globalData.InMenu = true;
- mp.gui.cursor.show(true, true);
- itemArr = [];
- vehItemArr = [];
- invBrowser = mp.browsers.new('package://assets/html/inventory/inventory.html');
+ globalData.InMenu = true;
+ mp.gui.cursor.show(true, true);
+ itemArr = [];
+ vehItemArr = [];
+ 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);
+ invBrowser.destroy()
+ invBrowser = null;
+ globalData.InMenu = false;
+ loaded = false;
+ mp.gui.cursor.show(false, false);
return;
});
@@ -60,18 +61,24 @@
});
mp.events.addDataHandler("backpackItems", (entity: EntityMp, jsonItemArr) => {
- if (entity.handle != mp.players.local.handle) return;
+ if (entity != mp.players.local) return;
itemArr = JSON.parse(jsonItemArr);
if (loaded)
invBrowser.execute(`setBackpackItems('${JSON.stringify(itemArr)}',true)`);
});
+ mp.events.addDataHandler("setVehicleTrunk", (entity: EntityMp, size) => {
+ if (entity != mp.players.local) return;
+ trunkSize = size;
+ });
+
mp.events.addDataHandler("vehicleItems", (entity: EntityMp, jsonItemArr) => {
if (entity != mp.players.local) return;
vehItemArr = JSON.parse(jsonItemArr);
- if (loaded)
- invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}')`);
+ if (loaded) {
+ invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}', '${trunkSize}')`);
+ }
});
mp.events.add("CEF:InventoryLoaded", () => {
@@ -79,7 +86,7 @@
if (vehItemArr.length != 0) {
invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}')`);
}
-
+
//invBrowser.execute(`setTradeItems('${JSON.stringify(tradeItemArr)}')`);
//invBrowser.execute(`setOfferItems('${JSON.stringify(offerItemArr)}')`);
loaded = true;
@@ -98,7 +105,7 @@
});
mp.events.add("CEF:useItem", (type, amount, id) => {
- mp.events.callRemote("itemInteract", type, amount, id);
+ mp.events.callRemote("itemInteract", type, amount, id);
});
mp.events.add("removeItem", (id, amount) => {
@@ -110,7 +117,7 @@
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)}')`);
+ invBrowser.execute(`alertGreen('${JSON.stringify(amount)}','${JSON.stringify(name)}')`);
mp.events.call("closeInventory");
}
});
@@ -136,7 +143,6 @@
}
});
-
mp.events.add("CEF:acceptTrade", () => {
if (invBrowser !== null) {
mp.events.callRemote('acceptTrade');
diff --git a/ReallifeGamemode.Client/package-lock.json b/ReallifeGamemode.Client/package-lock.json
index fae2ae51..5e72cabf 100644
--- a/ReallifeGamemode.Client/package-lock.json
+++ b/ReallifeGamemode.Client/package-lock.json
@@ -2471,6 +2471,27 @@
"to-regex": "^3.0.1"
}
},
+ "neato-emoji-converter": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/neato-emoji-converter/-/neato-emoji-converter-1.1.2.tgz",
+ "integrity": "sha512-w3cTUXmawqnD8hRFP2sptCrPoymsFO0epmVQzy3mrhvKZToAIZji3/Wa6H3WoVxL5jdimGFzvnq+LEFoEjybpg==",
+ "requires": {
+ "emoji-toolkit": "^5.0.5",
+ "lodash.toarray": "^4.4.0"
+ },
+ "dependencies": {
+ "emoji-toolkit": {
+ "version": "5.0.5",
+ "resolved": "https://registry.npmjs.org/emoji-toolkit/-/emoji-toolkit-5.0.5.tgz",
+ "integrity": "sha512-I57/yzEll8mIczqUCv2DaBhF61eBKtOwUN/7bxFPjwtwoVB9FnkRoabQRLZS6+KeSZNscw0av8o/N7tfy59PUg=="
+ },
+ "lodash.toarray": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/lodash.toarray/-/lodash.toarray-4.4.0.tgz",
+ "integrity": "sha1-JMS/zWsvuji/0FlNsRedjptlZWE="
+ }
+ }
+ },
"neo-async": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz",
diff --git a/ReallifeGamemode.Client/package.json b/ReallifeGamemode.Client/package.json
index 501e5304..835b65c2 100644
--- a/ReallifeGamemode.Client/package.json
+++ b/ReallifeGamemode.Client/package.json
@@ -24,6 +24,7 @@
]
},
"dependencies": {
+ "neato-emoji-converter": "^1.1.2",
"ragemp-better-bindings": "^1.0.4"
}
}
diff --git a/ReallifeGamemode.Database/Entities/UserWeapon.cs b/ReallifeGamemode.Database/Entities/UserWeapon.cs
new file mode 100644
index 00000000..d981f8b6
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/UserWeapon.cs
@@ -0,0 +1,25 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities
+{
+ public partial class UserWeapon
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+
+ [ForeignKey("User")]
+ public int UserId { get; set; }
+ public User User { get; set; }
+
+ [ForeignKey("Weapon")]
+ public int WeaponId { get; set; }
+ public Weapon Weapon { get; set; }
+
+ public int Ammo { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Weapon.cs b/ReallifeGamemode.Database/Entities/Weapon.cs
new file mode 100644
index 00000000..586a74ce
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Weapon.cs
@@ -0,0 +1,26 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+using GTANetworkAPI;
+
+namespace ReallifeGamemode.Database.Entities
+{
+ public partial class Weapon
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string WeaponModel { get; set; }
+ [ForeignKey("WeaponCategory")]
+ public int CategoryId { get; set; }
+ public WeaponCategory WeaponCategory { get; set; }
+ public int SlotID { get; set; }
+ public int Ammo { get; set; }
+ public float Price { get; set; }
+
+ public bool Legal { get; set; }
+ public bool AmmunationActive { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/WeaponCategory.cs b/ReallifeGamemode.Database/Entities/WeaponCategory.cs
new file mode 100644
index 00000000..342aee7a
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/WeaponCategory.cs
@@ -0,0 +1,17 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities
+{
+ public partial class WeaponCategory
+ {
+ [Key]
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public int Id { get; set; }
+ public string Category { get; set; }
+
+ }
+}
diff --git a/ReallifeGamemode.Database/Migrations/20210413201146_Ammunations.Designer.cs b/ReallifeGamemode.Database/Migrations/20210413201146_Ammunations.Designer.cs
new file mode 100644
index 00000000..88c55e55
--- /dev/null
+++ b/ReallifeGamemode.Database/Migrations/20210413201146_Ammunations.Designer.cs
@@ -0,0 +1,1975 @@
+//
+using System;
+using Microsoft.EntityFrameworkCore;
+using Microsoft.EntityFrameworkCore.Infrastructure;
+using Microsoft.EntityFrameworkCore.Migrations;
+using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
+using ReallifeGamemode.Database.Models;
+
+namespace ReallifeGamemode.Database.Migrations
+{
+ [DbContext(typeof(DatabaseContext))]
+ [Migration("20210413201146_Ammunations")]
+ partial class Ammunations
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "3.1.3")
+ .HasAnnotation("PropertyAccessMode", PropertyAccessMode.PreferFieldDuringConstruction)
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.ATM", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Balance")
+ .HasColumnType("int");
+
+ b.Property("Faulty")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("X")
+ .HasColumnType("float");
+
+ b.Property("Y")
+ .HasColumnType("float");
+
+ b.Property("Z")
+ .HasColumnType("float");
+
+ b.HasKey("Id");
+
+ b.ToTable("ATMs");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Ban", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Applied")
+ .HasColumnType("int");
+
+ b.Property("BannedBy")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Reason")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("UntilDateTime")
+ .HasColumnType("int");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Bans");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusRoute", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.HasKey("Id");
+
+ b.ToTable("BusRoutes");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusRoutePoint", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("BusRouteId")
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("X")
+ .HasColumnType("float");
+
+ b.Property("Y")
+ .HasColumnType("float");
+
+ b.Property("Z")
+ .HasColumnType("float");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BusRouteId");
+
+ b.ToTable("BusRoutesPoints");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusinessBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Balance")
+ .HasColumnType("int");
+
+ b.Property("BusinessId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BusinessId")
+ .IsUnique();
+
+ b.ToTable("BusinessBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusinessData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("BusinessId")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("BusinessData");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Character", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Ageing")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("AgeingOpacity")
+ .HasColumnType("float");
+
+ b.Property("BeardColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Blemishes")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("BlemishesOpacity")
+ .HasColumnType("float");
+
+ b.Property("Blush")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("BlushColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("BlushOpacity")
+ .HasColumnType("float");
+
+ b.Property("BrowDepth")
+ .HasColumnType("float");
+
+ b.Property("BrowHeight")
+ .HasColumnType("float");
+
+ b.Property("CheekDepth")
+ .HasColumnType("float");
+
+ b.Property("CheekboneHeight")
+ .HasColumnType("float");
+
+ b.Property("CheekboneWidth")
+ .HasColumnType("float");
+
+ b.Property("ChestHair")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("ChestHairColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("ChestHairOpacity")
+ .HasColumnType("float");
+
+ b.Property("ChinDepth")
+ .HasColumnType("float");
+
+ b.Property("ChinHeight")
+ .HasColumnType("float");
+
+ b.Property("ChinIndent")
+ .HasColumnType("float");
+
+ b.Property("ChinWidth")
+ .HasColumnType("float");
+
+ b.Property("Complexion")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("ComplexionOpacity")
+ .HasColumnType("float");
+
+ b.Property("EyeColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("EyeSize")
+ .HasColumnType("float");
+
+ b.Property("EyebrowColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Eyebrows")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("EyebrowsOpacity")
+ .HasColumnType("float");
+
+ b.Property("FacialHair")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("FacialHairOpacity")
+ .HasColumnType("float");
+
+ b.Property("Father")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Freckles")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("FrecklesOpacity")
+ .HasColumnType("float");
+
+ b.Property("Gender")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Hair")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("HairColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("HairHighlightColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("JawShape")
+ .HasColumnType("float");
+
+ b.Property("JawWidth")
+ .HasColumnType("float");
+
+ b.Property("LipThickness")
+ .HasColumnType("float");
+
+ b.Property("Lipstick")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("LipstickColor")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("LipstickOpacity")
+ .HasColumnType("float");
+
+ b.Property("Makeup")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("MakeupOpacity")
+ .HasColumnType("float");
+
+ b.Property("Mother")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("NeckWidth")
+ .HasColumnType("float");
+
+ b.Property("NoseBottomHeight")
+ .HasColumnType("float");
+
+ b.Property("NoseBridgeDepth")
+ .HasColumnType("float");
+
+ b.Property("NoseBroken")
+ .HasColumnType("float");
+
+ b.Property("NoseTipHeight")
+ .HasColumnType("float");
+
+ b.Property("NoseTipLength")
+ .HasColumnType("float");
+
+ b.Property("NoseWidth")
+ .HasColumnType("float");
+
+ b.Property("Similarity")
+ .HasColumnType("float");
+
+ b.Property("SkinSimilarity")
+ .HasColumnType("float");
+
+ b.Property("SunDamage")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("SunDamageOpacity")
+ .HasColumnType("float");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Characters");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.CharacterCloth", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("ClothId")
+ .HasColumnType("int");
+
+ b.Property("Duty")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("SlotId")
+ .HasColumnType("int");
+
+ b.Property("SlotType")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Texture")
+ .HasColumnType("int");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("CharacterClothes");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.ClothCombination", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Gender")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Top")
+ .HasColumnType("int");
+
+ b.Property("Torso")
+ .HasColumnType("int");
+
+ b.Property("Undershirt")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("ClothCombinations");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Door", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Category")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("FactionId")
+ .HasColumnType("int");
+
+ b.Property("Locked")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Model")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Radius")
+ .HasColumnType("float");
+
+ b.Property("X")
+ .HasColumnType("float");
+
+ b.Property("Y")
+ .HasColumnType("float");
+
+ b.Property("Z")
+ .HasColumnType("float");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("Doors");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.DutyCloth", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("ClothId")
+ .HasColumnType("int");
+
+ b.Property("FactionId")
+ .HasColumnType("int");
+
+ b.Property("Gender")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("SlotId")
+ .HasColumnType("int");
+
+ b.Property("SlotType")
+ .HasColumnType("tinyint unsigned");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("DutyClothes");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Faction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("BankAccountId")
+ .HasColumnType("int");
+
+ b.Property("GangOwned")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Name")
+ .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
+ .HasMaxLength(32);
+
+ b.Property("StateOwned")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("WeaponDealTime")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BankAccountId");
+
+ b.ToTable("Factions");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Balance")
+ .HasColumnType("int");
+
+ b.Property("Bic")
+ .HasColumnType("varchar(12) CHARACTER SET utf8mb4")
+ .HasMaxLength(12);
+
+ b.Property("Iban")
+ .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
+ .HasMaxLength(32);
+
+ b.HasKey("Id");
+
+ b.ToTable("FactionBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionRank", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("FactionId")
+ .HasColumnType("int");
+
+ b.Property("Order")
+ .HasColumnType("int");
+
+ b.Property("RankName")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("FactionRanks");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionWeapon", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Ammount")
+ .HasColumnType("int");
+
+ b.Property("FactionId")
+ .HasColumnType("int");
+
+ b.Property("Rank")
+ .HasColumnType("int");
+
+ b.Property("SlotID")
+ .HasColumnType("int");
+
+ b.Property("WeaponModel")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("FactionWeapons");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.GotoPoint", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Description")
+ .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
+ .HasMaxLength(32);
+
+ b.Property("X")
+ .HasColumnType("float");
+
+ b.Property("Y")
+ .HasColumnType("float");
+
+ b.Property("Z")
+ .HasColumnType("float");
+
+ b.HasKey("Id");
+
+ b.ToTable("GotoPoints");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Group", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("BankAccountId")
+ .HasColumnType("int");
+
+ b.Property("Name")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BankAccountId");
+
+ b.ToTable("Groups");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.GroupBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Balance")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("GroupBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.House", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("BankAccountId")
+ .HasColumnType("int");
+
+ b.Property("CanRentIn")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("LastRentSetTime")
+ .HasColumnType("datetime(6)");
+
+ b.Property("OwnerId")
+ .HasColumnType("int");
+
+ b.Property("Price")
+ .HasColumnType("int");
+
+ b.Property("RentalFee")
+ .HasColumnType("int");
+
+ b.Property("Type")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("X")
+ .HasColumnType("float");
+
+ b.Property("Y")
+ .HasColumnType("float");
+
+ b.Property("Z")
+ .HasColumnType("float");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BankAccountId");
+
+ b.HasIndex("OwnerId");
+
+ b.ToTable("Houses");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.HouseBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Balance")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("HouseBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.HouseRental", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("HouseId")
+ .HasColumnType("int");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("HouseId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("HouseRentals");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Interior", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("EnterPositionStr")
+ .HasColumnName("EnterPosition")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("ExitPositionStr")
+ .HasColumnName("ExitPosition")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Name")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.HasKey("Id");
+
+ b.ToTable("Interiors");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Location", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Description")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Heading")
+ .HasColumnType("double");
+
+ b.Property("X")
+ .HasColumnType("double");
+
+ b.Property("Y")
+ .HasColumnType("double");
+
+ b.Property("Z")
+ .HasColumnType("double");
+
+ b.HasKey("Id");
+
+ b.ToTable("Locations");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Logs.BankAccountTransactionHistory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Fee")
+ .HasColumnType("int");
+
+ b.Property("MoneySent")
+ .HasColumnType("int");
+
+ b.Property("NewReceiverBalance")
+ .HasColumnType("int");
+
+ b.Property("NewSenderBalance")
+ .HasColumnType("int");
+
+ b.Property("Origin")
+ .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
+ .HasMaxLength(32);
+
+ b.Property("Receiver")
+ .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
+ .HasMaxLength(32);
+
+ b.Property("ReceiverBalance")
+ .HasColumnType("int");
+
+ b.Property("Sender")
+ .HasColumnType("varchar(32) CHARACTER SET utf8mb4")
+ .HasMaxLength(32);
+
+ b.Property("SenderBalance")
+ .HasColumnType("int");
+
+ b.Property("Timestamp")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ b.HasKey("Id");
+
+ b.ToTable("BankAccountTransactionLogs");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Logs.Death", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("CauseOfDeath")
+ .HasColumnType("varchar(64) CHARACTER SET utf8mb4")
+ .HasMaxLength(64);
+
+ b.Property("KillerHeading")
+ .HasColumnType("float");
+
+ b.Property("KillerId")
+ .HasColumnType("int");
+
+ b.Property("KillerPositionX")
+ .HasColumnType("float");
+
+ b.Property("KillerPositionY")
+ .HasColumnType("float");
+
+ b.Property("KillerPositionZ")
+ .HasColumnType("float");
+
+ b.Property("Timestamp")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("datetime(6)");
+
+ b.Property("VictimHeading")
+ .HasColumnType("float");
+
+ b.Property("VictimId")
+ .HasColumnType("int");
+
+ b.Property("VictimPositionX")
+ .HasColumnType("float");
+
+ b.Property("VictimPositionY")
+ .HasColumnType("float");
+
+ b.Property("VictimPositionZ")
+ .HasColumnType("float");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KillerId");
+
+ b.HasIndex("VictimId");
+
+ b.ToTable("DeathLogs");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.News", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Caption")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Content")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Timestamp")
+ .HasColumnType("int");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("News");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedBlip", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Alpha")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Color")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Dimension")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("DrawDistance")
+ .HasColumnType("float");
+
+ b.Property("Name")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("PositionX")
+ .HasColumnType("float");
+
+ b.Property("PositionY")
+ .HasColumnType("float");
+
+ b.Property("PositionZ")
+ .HasColumnType("float");
+
+ b.Property("Rotation")
+ .HasColumnType("float");
+
+ b.Property("Scale")
+ .HasColumnType("float");
+
+ b.Property("ShortRange")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Sprite")
+ .HasColumnType("smallint");
+
+ b.HasKey("Id");
+
+ b.ToTable("Blips");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedMarker", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("ColorA")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("ColorB")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("ColorG")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("ColorR")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Dimension")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("DirectionX")
+ .HasColumnType("float");
+
+ b.Property("DirectionY")
+ .HasColumnType("float");
+
+ b.Property("DirectionZ")
+ .HasColumnType("float");
+
+ b.Property("PositionX")
+ .HasColumnType("float");
+
+ b.Property("PositionY")
+ .HasColumnType("float");
+
+ b.Property("PositionZ")
+ .HasColumnType("float");
+
+ b.Property("RotationX")
+ .HasColumnType("float");
+
+ b.Property("RotationY")
+ .HasColumnType("float");
+
+ b.Property("RotationZ")
+ .HasColumnType("float");
+
+ b.Property("Scale")
+ .HasColumnType("float");
+
+ b.Property("Type")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("Visible")
+ .HasColumnType("tinyint(1)");
+
+ b.HasKey("Id");
+
+ b.ToTable("Markers");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedPed", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Dimension")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("HashModel")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Heading")
+ .HasColumnType("float");
+
+ b.Property("PositionX")
+ .HasColumnType("float");
+
+ b.Property("PositionY")
+ .HasColumnType("float");
+
+ b.Property("PositionZ")
+ .HasColumnType("float");
+
+ b.Property("Type")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.ToTable("Peds");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedPickup", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("int");
+
+ b.Property("Active")
+ .HasColumnType("tinyint(1)");
+
+ b.Property("Dimension")
+ .HasColumnType("tinyint unsigned");
+
+ b.Property("PositionX")
+ .HasColumnType("float")
+ .HasMaxLength(128);
+
+ b.Property("PositionY")
+ .HasColumnType("float");
+
+ b.Property("PositionZ")
+ .HasColumnType("float");
+
+ b.Property("RespawnTime")
+ .HasColumnType("int");
+
+ b.Property
-
10
-
+
+
10
+
-
-
+
+
\ No newline at end of file
diff --git a/ReallifeGamemode.Client/assets/vehicle/application.js b/ReallifeGamemode.Client/assets/vehicle/application.js
new file mode 100644
index 00000000..024717a1
--- /dev/null
+++ b/ReallifeGamemode.Client/assets/vehicle/application.js
@@ -0,0 +1,26 @@
+
+let close = document.getElementById('close');
+
+$(document).ready(function () {
+ mp.trigger("CEF:VehicleLook_Loaded");
+});
+
+function setDrivers(driversJson) {
+ var drivers = JSON.parse(driversJson);
+ var listTag = $("#drivers-list");
+ drivers.forEach(driver => {
+ var name = driver.Name;
+ var dateTime = new Date(driver.Time);
+
+ var date = `${dateTime.getDay()}.${dateTime.getMonth()}.${dateTime.getFullYear()}`;
+ var time = `${dateTime.getHours()}:${dateTime.getMinutes()}:${dateTime.getSeconds()}`;
+
+ var infoLine = `${name} am ${date} um ${time} Uhr`;
+ var listItemTag = `
+
+ Letze Fahrer
+
+
+
+