diff --git a/ReallifeGamemode.Client/Gui/blips.ts b/ReallifeGamemode.Client/Gui/blips.ts
index 1c44de47..85b9e1ae 100644
--- a/ReallifeGamemode.Client/Gui/blips.ts
+++ b/ReallifeGamemode.Client/Gui/blips.ts
@@ -26,13 +26,24 @@
}
let pBlip = playerBlipMap.get(player);
if (player.isDead()) {
- pBlip.setSprite(303);
+ pBlip.setSprite(274);
+ pBlip.setScale(0.7);
} else {
pBlip.setSprite(1);
+ pBlip.setScale(0.7);
}
let color = player.getVariable("blipColor");
- pBlip.setColour(isNaN(color) ? 0 : color);
- pBlip.setPosition(player.position.x, player.position.y, player.position.z);
+
+ if (color == -1) {
+ pBlip.setAlpha(0);
+ player.setAlpha(0);
+ } else {
+ pBlip.setAlpha(200);
+ player.setAlpha(255);
+
+ pBlip.setColour(isNaN(color) ? 0 : color);
+ pBlip.setPosition(player.position.x, player.position.y, player.position.z);
+ }
});
}, 50);
diff --git a/ReallifeGamemode.Client/Gui/infobox.ts b/ReallifeGamemode.Client/Gui/infobox.ts
index eb8a65fa..5e53bb15 100644
--- a/ReallifeGamemode.Client/Gui/infobox.ts
+++ b/ReallifeGamemode.Client/Gui/infobox.ts
@@ -14,6 +14,8 @@ export default function (globalData: IGlobalData): void {
var draw = false;
var editMode = false;
var adutyMode = false;
+ var adminUnshow = false;
+ var adminTSupport = false;
var dutyMode = false;
let jailTime = 0;
let att_score = 0;
@@ -62,6 +64,14 @@ export default function (globalData: IGlobalData): void {
adutyMode = toggle;
});
+ mp.events.add('toggleTSupportMode', (toggle) => {
+ adminTSupport = toggle;
+ });
+
+ mp.events.add('toggleAdminUnshowMode', (toggle) => {
+ adminUnshow = toggle;
+ });
+
mp.events.add("toggleEditMode", (toggle) => {
editMode = toggle;
});
@@ -300,16 +310,6 @@ export default function (globalData: IGlobalData): void {
centre: false
})
}
- if (adutyMode === true) {
- mp.game.graphics.drawText("~r~SUPPORT", [0.92, 0.6],
- {
- font: 2,
- color: [0, 255, 255, 255],
- scale: [0.7, 0.7],
- outline: true,
- centre: false
- })
- }
if (dutyMode === true) {
mp.game.graphics.drawText("~r~Duty", [0.92, 0.55],
{
@@ -320,7 +320,31 @@ export default function (globalData: IGlobalData): void {
centre: false
})
}
-
+ if (adutyMode === true) {
+ var adutyText = "~r~SUPPORT";
+ if (adminTSupport) {
+ adutyText = "SUPPORT";
+ }
+ mp.game.graphics.drawText(adutyText, [0.92, 0.6],
+ {
+ font: 2,
+ color: [0, 229, 238, 255],
+ scale: [0.7, 0.7],
+ outline: true,
+ centre: false
+ })
+ }
+ if (adminUnshow) {
+ mp.game.graphics.drawText("~r~UNSHOW", [0.92, 0.65],
+ {
+ font: 2,
+ color: [0, 255, 255, 255],
+ scale: [0.7, 0.7],
+ outline: true,
+ centre: false
+ })
+ }
+
if (countdown > 0) {
var now = Date.now();
var diff = Math.trunc((now - cdTimestamp) / 1000);
diff --git a/ReallifeGamemode.Client/Gui/nametags.ts b/ReallifeGamemode.Client/Gui/nametags.ts
index 97fd1cc5..1c106922 100644
--- a/ReallifeGamemode.Client/Gui/nametags.ts
+++ b/ReallifeGamemode.Client/Gui/nametags.ts
@@ -19,7 +19,7 @@ const colors = [
{ id: 2, color: [200, 0, 0, alpha] }, //lsed
{ id: 3, color: [0, 0, 170, alpha] }, //fib
{ id: 4, color: [255, 180, 0, alpha] }, //trucker
- { id: 5, color: [255, 255, 255, alpha] }, //terroristen
+ { id: 5, color: [255, 255, 100, alpha] }, //vagos
{ id: 6, color: [255, 255, 255, alpha] }, //hitman
{ id: 7, color: [0, 64, 0, alpha] }, //grove
{ id: 8, color: [171, 0, 150, alpha] }, //ballas
@@ -49,6 +49,10 @@ export default function customNametags() {
let colorId = game.players.at(player.remoteId).nametagColor;
+ if (colorId === -3) {
+ return;
+ }
+
let color = colors.find(c => c.id === colorId).color;
let nametagText = player.name + " (" + player.remoteId + ")";
diff --git a/ReallifeGamemode.Client/Player/antiafk.ts b/ReallifeGamemode.Client/Player/antiafk.ts
index b8060c0c..1db1251f 100644
--- a/ReallifeGamemode.Client/Player/antiafk.ts
+++ b/ReallifeGamemode.Client/Player/antiafk.ts
@@ -30,7 +30,7 @@
}
}
- if (afkCounter >= 30) {
+ if (afkCounter >= 60) {
afkStatus = true;
globalData.IsAfk = afkStatus;
setServerAfkStatus(afkStatus);
diff --git a/ReallifeGamemode.Client/admin/anticheat.ts b/ReallifeGamemode.Client/admin/anticheat.ts
index 0eaf4fed..44807c32 100644
--- a/ReallifeGamemode.Client/admin/anticheat.ts
+++ b/ReallifeGamemode.Client/admin/anticheat.ts
@@ -183,6 +183,8 @@
var loop = Behaviour.secs()
mp.events.add("render", () => {
+ mp.game.player.setHealthRechargeMultiplier(0);
+
Behaviour.health = Number(mp.players.local.getHealth()) + Number(mp.players.local.getArmour())
if (loop < Behaviour.secs()) {
if (Behaviour.active) {
diff --git a/ReallifeGamemode.Client/util/Gangwar.ts b/ReallifeGamemode.Client/util/Gangwar.ts
index 102908c0..f9136552 100644
--- a/ReallifeGamemode.Client/util/Gangwar.ts
+++ b/ReallifeGamemode.Client/util/Gangwar.ts
@@ -111,6 +111,11 @@
self.colorZone_r = 22;
self.colorZone_g = 87;
self.colorZone_b = 0;
+ } else if (owner === "Vagos") {
+ self.color = 33;
+ self.colorZone_r = 255;
+ self.colorZone_g = 255;
+ self.colorZone_b = 100;
} else if (owner === "Neutral") {
self.color = 0;
self.colorZone_r = 255;
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/ChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/ChatLogEntry.cs
new file mode 100644
index 00000000..815c51cf
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/ChatLogEntry.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public abstract class ChatLogEntry
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public long Id { get; set; }
+
+ [ForeignKey(nameof(UserId))]
+ public User User { get; set; }
+
+ public int UserId { get; set; }
+
+ public string Text { get; set; }
+
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public DateTime Time { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/DepartmentChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/DepartmentChatLogEntry.cs
new file mode 100644
index 00000000..625812d4
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/DepartmentChatLogEntry.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class DepartmentChatLogEntry : ChatLogEntry
+ {
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/FactionChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/FactionChatLogEntry.cs
new file mode 100644
index 00000000..b71e1767
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/FactionChatLogEntry.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class FactionChatLogEntry : ChatLogEntry
+ {
+ [ForeignKey(nameof(Faction))]
+ public int FactionId { get; set; }
+
+ public Faction Faction { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/GangChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/GangChatLogEntry.cs
new file mode 100644
index 00000000..8df7c95e
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/GangChatLogEntry.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class GangChatLogEntry : ChatLogEntry
+ {
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/GroupChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/GroupChatLogEntry.cs
new file mode 100644
index 00000000..75768a04
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/GroupChatLogEntry.cs
@@ -0,0 +1,15 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class GroupChatLogEntry : ChatLogEntry
+ {
+ public int GroupId { get; set; }
+
+ [ForeignKey(nameof(GroupId))]
+ public Group Group { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/LeaderChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/LeaderChatLogEntry.cs
new file mode 100644
index 00000000..ab1052c2
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/LeaderChatLogEntry.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class LeaderChatLogEntry : ChatLogEntry
+ {
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/LocalChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/LocalChatLogEntry.cs
new file mode 100644
index 00000000..1d68b01a
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/LocalChatLogEntry.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class LocalChatLogEntry : ChatLogEntry
+ {
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/NewsChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/NewsChatLogEntry.cs
new file mode 100644
index 00000000..80cc617c
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/NewsChatLogEntry.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class NewsChatLogEntry : ChatLogEntry
+ {
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/Chat/OChatLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/Chat/OChatLogEntry.cs
new file mode 100644
index 00000000..4a9dbbe7
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/Chat/OChatLogEntry.cs
@@ -0,0 +1,10 @@
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs.Chat
+{
+ public class OChatLogEntry : ChatLogEntry
+ {
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/CommandLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/CommandLogEntry.cs
new file mode 100644
index 00000000..903c5565
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/CommandLogEntry.cs
@@ -0,0 +1,19 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs
+{
+ public class CommandLogEntry
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public long Id { get; set; }
+
+ public User User { get; set; }
+
+ public string Command { get; set; }
+
+ public DateTime Time { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/LogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/LogEntry.cs
new file mode 100644
index 00000000..0b025ba2
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/LogEntry.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs
+{
+ public class LogEntry
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public long Id { get; set; }
+
+ public User User { get; set; }
+
+ public int UserId { get; set; }
+
+ public User AffectedBy { get; set; }
+
+ public int? AffectedById { get; set; }
+
+ public Faction AffectedFaction { get; set; }
+
+ public int? AffectedFactionId { get; set; }
+
+ public string Message { get; set; }
+
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public DateTime Time { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Entities/Logs/LoginLogoutLogEntry.cs b/ReallifeGamemode.Database/Entities/Logs/LoginLogoutLogEntry.cs
new file mode 100644
index 00000000..56a5ef79
--- /dev/null
+++ b/ReallifeGamemode.Database/Entities/Logs/LoginLogoutLogEntry.cs
@@ -0,0 +1,27 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations.Schema;
+using System.Text;
+
+namespace ReallifeGamemode.Database.Entities.Logs
+{
+ public class LoginLogoutLogEntry
+ {
+ [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
+ public long Id { get; set; }
+
+ public string Username { get; set; }
+
+ public string SocialClubName { get; set; }
+
+ public User User { get; set; }
+
+ public long PlayerId { get; set; }
+
+ public string IpAddress { get; set; }
+
+ public bool LoginLogout { get; set; }
+
+ public DateTime Time { get; set; }
+ }
+}
diff --git a/ReallifeGamemode.Database/Migrations/20210419090246_CommandLogs.Designer.cs b/ReallifeGamemode.Database/Migrations/20210419090246_CommandLogs.Designer.cs
new file mode 100644
index 00000000..7652c2e8
--- /dev/null
+++ b/ReallifeGamemode.Database/Migrations/20210419090246_CommandLogs.Designer.cs
@@ -0,0 +1,2010 @@
+//
+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("20210419090246_CommandLogs")]
+ partial class CommandLogs
+ {
+ 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.CommandLogEntry", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd()
+ .HasColumnType("bigint");
+
+ b.Property("Command")
+ .HasColumnType("longtext CHARACTER SET utf8mb4");
+
+ b.Property("Time")
+ .HasColumnType("datetime(6)");
+
+ b.Property("UserId")
+ .HasColumnType("int");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("CommandLogs");
+ });
+
+ 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