diff --git a/ReallifeGamemode.Client/Interaction/clothes/female_torso_top_combination.json b/ReallifeGamemode.Client/Interaction/clothes/female_torso_top_combination.json
index 515c94eb..c335c35e 100644
--- a/ReallifeGamemode.Client/Interaction/clothes/female_torso_top_combination.json
+++ b/ReallifeGamemode.Client/Interaction/clothes/female_torso_top_combination.json
@@ -1,5 +1,12 @@
{
"combination": [
+ {
+ "_id": 0,
+ "Top": 0,
+ "Torso": 0,
+ "Undershirt": 2
+ },
+
{
"_id": 1,
"Top": 1,
diff --git a/ReallifeGamemode.Client/Interaction/clothes/male_torso_top_combination.json b/ReallifeGamemode.Client/Interaction/clothes/male_torso_top_combination.json
index eda5d4ed..3cde781c 100644
--- a/ReallifeGamemode.Client/Interaction/clothes/male_torso_top_combination.json
+++ b/ReallifeGamemode.Client/Interaction/clothes/male_torso_top_combination.json
@@ -1,12 +1,5 @@
{
"combination": [
-
- {
- "_id": 0,
- "Top": 0,
- "Torso": 0,
- "Undershirt": 15
- },
{
"_id": 1,
"Top": 1,
diff --git a/ReallifeGamemode.Client/Jobs/RefuseCollector.ts b/ReallifeGamemode.Client/Jobs/RefuseCollector.ts
new file mode 100644
index 00000000..2e2cd576
--- /dev/null
+++ b/ReallifeGamemode.Client/Jobs/RefuseCollector.ts
@@ -0,0 +1,155 @@
+export default function RefuseCollector() {
+
+ var State = false;
+ var Traegt = false;
+ var HintenVoll = false;
+ var MuellSack = null;
+ var BlipTonneHinten = null;
+ var CheckpointTonneHinten = null;
+ var ShapeTonneHinten = null;
+ var BlipTonneBase = null;
+ var CheckpointTonneBase = null;
+ var ShapeTonneBase = null;
+ var vehicle = null;
+
+ var BlipTonne = [];
+ var ShapeTonne = [];
+
+
+
+ mp.events.add('SERVER:MuellmannStatusTrue', () => {
+ State = true;
+ });
+
+ mp.events.add('SERVER:MuellmannStatusFalse', () => {
+ State = false;
+ });
+
+ mp.events.add('SERVER:MuellmannBCSErstellen', (jsonPosArr, veh) => {
+
+ let posArr = JSON.parse(jsonPosArr);
+ vehicle = veh;
+ for (var i = 0; i < posArr.length; i++) {
+ let pos = new mp.Vector3(posArr[i].x, posArr[i].y, posArr[i].z - 1)
+ BlipTonne.push(mp.blips.new(1, pos, { name: 'Müllmann', color: 45, shortRange: false }));
+ ShapeTonne.push(mp.colshapes.newSphere(posArr[i].x, posArr[i].y, posArr[i].z +0.5, 1.75));
+ }
+
+ BlipTonneBase = mp.blips.new(1, new mp.Vector3(-535.1912, -1713.742, 19.23861 - 1), { name: 'Müllmann', color: 5, shortRange: false });
+ CheckpointTonneBase = mp.markers.new(1, new mp.Vector3(-535.1912, -1713.742, 19.23861 - 1), 10, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [255, 255, 0, 150], visible: true, dimension: 0 });
+ ShapeTonneBase = mp.colshapes.newSphere(-535.1912, -1713.742, 19.23861 - 1, 10);
+ });
+ mp.events.add('SERVER:MuellmannBCSEntfernen', () => {
+
+ for (var i = 0; i < BlipTonne.length; i++) {
+ if (BlipTonne[i] == null) continue;
+ BlipTonne[i].destroy();
+ ShapeTonne[i].destroy();
+ }
+ BlipTonne = [];
+ ShapeTonne = [];
+
+ if (BlipTonneHinten) BlipTonneHinten.destroy();
+ BlipTonneHinten = null;
+ if (CheckpointTonneHinten) CheckpointTonneHinten.destroy();
+ CheckpointTonneHinten = null;
+ if (ShapeTonneHinten) ShapeTonneHinten.destroy();
+ ShapeTonneHinten = null;
+ if (BlipTonneBase) BlipTonneBase.destroy();
+ BlipTonneBase = null;
+ if (CheckpointTonneBase) CheckpointTonneBase.destroy();
+ CheckpointTonneBase = null;
+ if (ShapeTonneBase) ShapeTonneBase.destroy();
+ ShapeTonneBase = null;
+ Traegt = false;
+ });
+
+ mp.events.add("playerEnterColshape", (Shape, player) => {
+ //mp.events.callRemote('CLIENT:ImShape', JSON.stringify(Shape));
+ for (var i = 0; i < ShapeTonne.length; i++) {
+ if (Shape != ShapeTonne[i]) continue;
+ if (!Traegt) {
+ if (!HintenVoll) {
+ mp.events.callRemote('CLIENT:MuellmannImShape', JSON.stringify(Shape));
+ Traegt = true;
+ BlipTonne[i].destroy();
+ BlipTonne[i] = null;
+ ShapeTonne[i].destroy();
+ ShapeTonne[i] = null;
+ MuellSack = mp.objects.new(600967813, mp.players.local.position, { rotation: new mp.Vector3(0.0, 0.0, 0.0), alpha: 255, dimension: 0 });
+ MuellSack.attachTo(mp.players.local.handle, mp.players.local.getBoneIndex(6286), 0.45, -0.9, -0.075, 270.0, 0.0, 25.0, true, true, false, false, 0, true);
+
+ createMarker();
+ }
+ else {
+ mp.gui.chat.push("Der Müllwagen ist bereits voll! Fahre zur Base und lade ab!");
+ return;
+ }
+ }
+ else {
+ mp.gui.chat.push(`Du trägst bereits einen Müllsack!`);
+ return;
+ }
+ }
+ if (Shape == ShapeTonneHinten) {
+ if (Traegt) {
+
+ Traegt = false;
+ mp.events.callRemote('CLIENT:MuellmannAddSack');
+
+ if (BlipTonneHinten) BlipTonneHinten.destroy();
+ BlipTonneHinten = null;
+ if (CheckpointTonneHinten) CheckpointTonneHinten.destroy();
+ CheckpointTonneHinten = null;
+ if (ShapeTonneHinten) ShapeTonneHinten.destroy();
+ ShapeTonneHinten = null;
+ MuellSack.destroy();
+
+ }
+
+ }
+ else if (Shape == ShapeTonneBase) {
+ BlipTonneBase.setRoute(false);
+ mp.events.callRemote('CLIENT:MuellmannBaseSack');
+ }
+ });
+ mp.events.add("MuellmannUpdateColshape", (jsonColShape) => {
+ let ColShape = JSON.parse(jsonColShape);
+ for (var i = 0; i < ShapeTonne.length; i++) {
+ if (ColShape != ShapeTonne[i]) continue;
+ BlipTonne[i].destroy();
+ BlipTonne[i] = null;
+ ShapeTonne[i].destroy();
+ ShapeTonne[i] = null;
+ }
+
+
+ });
+
+ mp.events.add("SERVER:MuellmannZuBase", () => {
+ BlipTonneBase.setRoute(true);
+ BlipTonneBase.setRouteColour(5);
+ HintenVoll = true;
+ });
+
+ mp.events.add("SERVER:MuellmannWiederLeer", () => {
+ HintenVoll = false;
+ });
+
+ function createMarker() {
+ if (vehicle != null) {
+ const playerPos = vehicle.position;
+ let pos = new mp.Vector3(vehicle.position.x, vehicle.position.y - 5.5, vehicle.position.z - 1);
+ if (BlipTonneHinten) BlipTonneHinten.destroy();
+ BlipTonneHinten = null;
+ if (CheckpointTonneHinten) CheckpointTonneHinten.destroy();
+ CheckpointTonneHinten = null;
+ if (ShapeTonneHinten) ShapeTonneHinten.destroy();
+ ShapeTonneHinten = null;
+ BlipTonneHinten = mp.blips.new(1, pos, { name: 'Müllmann', color: 24, shortRange: false });
+ CheckpointTonneHinten = mp.markers.new(1, pos, 1, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [0, 255, 0, 255], visible: true, dimension: 0 });
+ ShapeTonneHinten = mp.colshapes.newSphere(vehicle.position.x, vehicle.position.y - 5.5, vehicle.position.z - 1, 2);
+ }
+ };
+
+}
\ No newline at end of file
diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts
index fab30534..ce111e3f 100644
--- a/ReallifeGamemode.Client/index.ts
+++ b/ReallifeGamemode.Client/index.ts
@@ -203,6 +203,9 @@ itemShopList(globalData);
import taximeterInput from './Gui/taximeter';
taximeterInput(globalData);
+import refuseCollector from './Jobs/RefuseCollector';
+refuseCollector();
+
require('./Gui/policedepartment');
interface VehicleData {
diff --git a/ReallifeGamemode.Client/util/Gangwar.ts b/ReallifeGamemode.Client/util/Gangwar.ts
index ee13e3b1..1dc2e32a 100644
--- a/ReallifeGamemode.Client/util/Gangwar.ts
+++ b/ReallifeGamemode.Client/util/Gangwar.ts
@@ -1,4 +1,6 @@
-export default function gangwarHandle(globalData: IGlobalData) {
+
+
+export default function gangwarHandle(globalData: IGlobalData) {
function inside(point, vs) {
let x = point[0],
@@ -48,7 +50,10 @@
attacker: string;
blip: BlipMp;
_colshape: ColshapeMp;
+ _marker: MarkerMp;
vector: Vector3Mp;
+ value: number;
+
_status: string;
_entered: boolean;
_isEntering: boolean;
@@ -60,17 +65,17 @@
leaderBlipVector: Vector3Mp;
leaderColShape: MarkerMp;
- constructor(name, id, x, y, range, color, rot, owner, edit, vector) {
- this._setup(name, id, x, y, range, color, rot, owner, edit, vector);
+ constructor(name, id, x, y, range, color, rot, owner, edit, vector, value) {
+ this._setup(name, id, x, y, range, color, rot, owner, edit, vector, value);
}
- _setup(name, id, x, y, range, color, rot, owner, edit, vector) {
-
+ _setup(name, id, x, y, range, color, rot, owner, edit, vector, value) {
+
var self = this;
self.name = name;
self.id = id;
self.range = range;
- self.setColor(owner);
+ self.setColor(owner);
self.x = x;
self.y = y;
self.rotation = rot;
@@ -86,12 +91,13 @@
self.loadArea();
self.attackBlip = null;
self.leaderBlip = null;
+ self.value = value;
if (vector != null) {
self.leaderBlipVector = JSON.parse(vector);
} else {
self.leaderBlipVector = null;
}
-
+
self.leaderColShape = null;
}
@@ -123,6 +129,7 @@
var self = this;
self.blip = mp.game.ui.addBlipForRadius(self.x, self.y, 1, self.range);
+
mp.game.invoke(Natives.SET_BLIP_SPRITE, self.blip, 5);
mp.game.invoke(Natives.SET_BLIP_ALPHA, self.blip, 70);
mp.game.invoke(Natives.SET_BLIP_COLOUR, self.blip, self.color);
@@ -136,12 +143,15 @@
if (self.edit == true) {
let vector3 = mp.players.local.getRotation(2);
self.rotation = Math.round(vector3.z);
+ //self.blip.setPosition(mp.players.local.position.x, mp.players.local.position.y, 1);
+
mp.game.invoke(Natives.SET_BLIP_COORDS, self.blip, mp.players.local.position.x, mp.players.local.position.y, 1);
self.x = mp.players.local.position.x;
self.y = mp.players.local.position.y;
}
- mp.game.invoke(Natives.SET_BLIP_ROTATION, self.blip, self.rotation);
-
+ //self.blip.setRotation(self.rotation);
+ mp.game.invoke(Natives.SET_BLIP_ROTATION, self.blip, self.rotation);
+
}
@@ -192,10 +202,10 @@
a += 0.001
}
*/
- }
-
+ }
+
}
-
+
if (self.isInsideArea()) {
mp.game.graphics.drawText(self.name, [self.x, self.y, mp.players.local.position.z + 20], {
@@ -205,7 +215,7 @@
outline: true,
centre: true
});
-
+
}
}
}
@@ -213,7 +223,7 @@
let dist = mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, mp.players.local.position.z, self.leaderBlipVector.x, self.leaderBlipVector.y, self.leaderBlipVector.z, false);
if (self.isInsideArea() && self._status != "attack" && dist <= 6) {
if (self.leaderBlipVector != null) {
- mp.game.graphics.drawText(self.name + "\n~y~Gang: ~s~" + self.owner + "\n~y~Wert: ~s~$~g~187", [self.leaderBlipVector.x, self.leaderBlipVector.y, self.leaderBlipVector.z], {
+ mp.game.graphics.drawText(self.name + "\n~y~Gang: ~s~" + self.owner + "\n~y~Wert: ~s~$~g~" + self.value, [self.leaderBlipVector.x, self.leaderBlipVector.y, self.leaderBlipVector.z], {
font: 7,
color: [255, 255, 255, 185],
scale: [0.4, 0.4],
@@ -223,11 +233,11 @@
}
}
}
-
+
}
- startGangWar() {
+ startGangWar() {
var self = this;
if (self._status == "normal") {
let dist = mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, 0, self.leaderBlipVector.x, self.leaderBlipVector.y, self.leaderBlipVector.z, false);
@@ -246,12 +256,14 @@
}
self._status = "attack";
self.attacker = args[1];
+ //self.blip.setFlashes(true);
mp.game.invoke(Natives.SET_BLIP_FLASHES, self.blip, true);
return;
}
if (status == "normal") {
self._status = "normal";
- mp.game.invoke(Natives.SET_BLIP_FLASHES, self.blip, false);
+ //self.blip.setFlashes(false);
+ mp.game.invoke(Natives.SET_BLIP_FLASHES, self.blip, false);
return;
}
if (status == "conquered") {
@@ -259,8 +271,10 @@
self._status = "normal";
self.owner = args[0];
self.attacker = null;
+ //self.blip.setFlashes(false);
mp.game.invoke(Natives.SET_BLIP_FLASHES, self.blip, false);
self.setColor(self.owner)
+ //self.blip.setColour(self.color);
mp.game.invoke(Natives.SET_BLIP_COLOUR, self.blip, self.color);
self.setLeaderColShape();
return;
@@ -296,19 +310,19 @@
self.setLeaderColShape();
mp.game.invoke(Natives.SET_BLIP_SPRITE, self.leaderBlip, 437);
mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, self.leaderBlip, false);
-
- }
+
+ }
}
setLeaderColShape() {
var self = this;
- let newVector = new mp.Vector3(self.leaderBlipVector.x, self.leaderBlipVector.y, self.leaderBlipVector.z - 2)
-
- self.leaderColShape = mp.markers.new(1, newVector, 2, {
- color: [255, 255, 0, 150],
- visible: true,
- dimension: 0
- });
+ let newVector = new mp.Vector3(self.leaderBlipVector.x, self.leaderBlipVector.y, self.leaderBlipVector.z - 2)
+
+ self.leaderColShape = mp.markers.new(1, newVector, 2, {
+ color: [255, 255, 0, 150],
+ visible: true,
+ dimension: 0
+ });
}
@@ -321,7 +335,7 @@
}
check() {
- var self = this
+ var self = this
if (self._entered == true) {
if (!self.isInsideArea() || (self.isNearGround() == false)) {
self._entered = false;
@@ -329,7 +343,7 @@
}
}
}
-
+
enter() {
var self = this;
self._timerCheck = setInterval(function () {
@@ -340,8 +354,8 @@
mp.game.audio.playSoundFrontend(1, "Enter_Capture_Zone", "DLC_Apartments_Drop_Zone_Sounds", true);
mp.game.graphics.stopScreenEffect("MinigameTransitionIn");
mp.game.graphics.startScreenEffect("MinigameTransitionOut", 500, false);
-
- }
+
+ }
mp.events.callRemote("Gangarea:Enter", JSON.stringify(self.id));
}
} else if (self._entered == true) {
@@ -350,7 +364,7 @@
if (self._status === "attack") {
mp.game.audio.playSoundFrontend(1, "Exit_Capture_Zone", "DLC_Apartments_Drop_Zone_Sounds", true);
mp.game.graphics.startScreenEffect("MinigameTransitionIn", 500, false);
- }
+ }
mp.events.callRemote("Gangarea:Leave", JSON.stringify(self.id));
}
}
@@ -360,7 +374,7 @@
leave() {
var self = this;
clearInterval(self._timerCheck);
-
+
self.check();
}
isNearGround() {
@@ -412,6 +426,11 @@
}
return false;
}
+
+ setValue(value) {
+ var self = this;
+ self.value = value;
+ }
}
var gangturfs = [];
@@ -453,23 +472,28 @@
let last_blip = mp.game.invoke(Natives.GET_FIRST_BLIP_INFO_ID, 5);
while (mp.game.invoke(Natives.DOES_BLIP_EXIST, last_blip)) {
- mp.game.ui.removeBlip(last_blip);
+ mp.game.invoke(Natives.SET_BLIP_SPRITE, last_blip, -1);
+ mp.game.ui.removeBlip(last_blip);
last_blip = mp.game.invoke(Natives.GET_NEXT_BLIP_INFO_ID, 5);
+ x++;
+ mp.gui.chat.push(""+x);
}
let last_attackBlip = mp.game.invoke(Natives.GET_FIRST_BLIP_INFO_ID, 378);
while (mp.game.invoke(Natives.DOES_BLIP_EXIST, last_attackBlip)) {
+ mp.game.invoke(Natives.SET_BLIP_SPRITE, last_attackBlip, -1);
mp.game.ui.removeBlip(last_attackBlip);
last_attackBlip = mp.game.invoke(Natives.GET_NEXT_BLIP_INFO_ID, 378);
}
let last_leaderBlip = mp.game.invoke(Natives.GET_FIRST_BLIP_INFO_ID, 437);
while (mp.game.invoke(Natives.DOES_BLIP_EXIST, last_leaderBlip)) {
+ mp.game.invoke(Natives.SET_BLIP_SPRITE, last_leaderBlip, -1);
mp.game.ui.removeBlip(last_leaderBlip);
last_leaderBlip = mp.game.invoke(Natives.GET_NEXT_BLIP_INFO_ID, 437);
}
}
-
+
mp.events.add('GangAreas:Create', (turfsJSON) => {
var turfs = JSON.parse(turfsJSON);
if (gangturfs.length > 0) {
@@ -481,15 +505,25 @@
turf.leaderColShape.destroy();
turf.leaderColShape = null;
}
+ if (turf._marker)
+ if (turf.blip != null) {
+ mp.game.ui.removeBlip(turf.blip);
+ }
+ if (turf.leaderBlip != null) {
+ mp.game.ui.removeBlip(turf.leaderBlip);
+ }
+ if (turf.attackBlip != null) {
+ mp.game.ui.removeBlip(turf.attackBlip);
+ }
});
}
clearBlips();
if (turfs.length > 0) {
-
+
gangturfs = [];
turfs.forEach(function (turf) {
if (turf.Id != undefined) {
- gangturfs[gangturfs.length] = new Gangturf(turf.Name, turf.Id, turf.X, turf.Y, turf.Range, turf.Color, turf.Rotation, turf.Owner, false, turf.Vector);
+ gangturfs[gangturfs.length] = new Gangturf(turf.Name, turf.Id, turf.X, turf.Y, turf.Range, turf.Color, turf.Rotation, turf.Owner, false, turf.Vector, turf.Value);
}
});
}
@@ -497,7 +531,7 @@
mp.events.add('ADMIN:CreateTurf', (rangeJSON) => {
var range = JSON.parse(rangeJSON);
- gangturfs[gangturfs.length] = new Gangturf("Reload For Name", -1, mp.players.local.position.x, mp.players.local.position.y, range, 0, mp.players.local.getHeading(), "Neutral", true, null);
+ gangturfs[gangturfs.length] = new Gangturf("Reload For Name", -1, mp.players.local.position.x, mp.players.local.position.y, range, 0, mp.players.local.getHeading(), "Neutral", true, null, 0);
});
mp.events.add('ADMIN:SetTurf', (name) => {
@@ -505,7 +539,7 @@
if (gangturfs[gangturfs.length - 1].id == -1) {
mp.events.callRemote("SERVER:SetTurf", JSON.stringify(gangturfs[gangturfs.length - 1].x), JSON.stringify(gangturfs[gangturfs.length - 1].y), JSON.stringify(gangturfs[gangturfs.length - 1].rotation), JSON.stringify(gangturfs[gangturfs.length - 1].range), name);
- }
+ }
});
mp.events.add('ADMIN:DeleteTurf', () => {
@@ -541,13 +575,13 @@
mp.events.add('CLIENT:Turf_LoadLeaderBlip', () => {
gangturfs.forEach(function (turf) {
- turf.setLeaderBlip(false);
+ turf.setLeaderBlip(false);
});
});
mp.events.add('ADMIN:Turf_CreateLeaderBlip', () => {
gangturfs.forEach(function (turf) {
- if (turf._entered == true) {
+ if (turf._entered == true) {
turf.setLeaderBlip(true);
}
});
@@ -556,8 +590,17 @@
mp.events.add('CLIENT:StartGangwar', () => {
gangturfs.forEach(function (turf) {
if (turf._entered == true) {
- turf.startGangWar();
+ turf.startGangWar();
}
});
});
+
+ mp.events.add('CLIENT:UpdateTurfValue', (jsonValues) => {
+ let values = JSON.parse(jsonValues);
+ for (var i = 0; i < gangturfs.length; i++) {
+ let turf = gangturfs[i];
+ turf.setValue(values[i]);
+ turf.render();
+ }
+ });
}
\ No newline at end of file
diff --git a/ReallifeGamemode.Database/Entities/Turfs.cs b/ReallifeGamemode.Database/Entities/Turfs.cs
index aa818e48..9ca8a6be 100644
--- a/ReallifeGamemode.Database/Entities/Turfs.cs
+++ b/ReallifeGamemode.Database/Entities/Turfs.cs
@@ -22,6 +22,9 @@ namespace ReallifeGamemode.Database.Entities
public float Range { get; set; }
public int Color { get; set; }
public string Vector { get; set; } = null;
+ public int Value {get; set;} = 0;
+ public int MaxValue { get; set; } = 0;
+ public bool Surplus { get; set; } = false;
}
}
diff --git a/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.Designer.cs b/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.Designer.cs
new file mode 100644
index 00000000..72a64fb7
--- /dev/null
+++ b/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.Designer.cs
@@ -0,0 +1,1443 @@
+//
+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("20200403035225_TurfSurplusValue")]
+ partial class TurfSurplusValue
+ {
+ protected override void BuildTargetModel(ModelBuilder modelBuilder)
+ {
+#pragma warning disable 612, 618
+ modelBuilder
+ .HasAnnotation("ProductVersion", "2.1.11-servicing-32099")
+ .HasAnnotation("Relational:MaxIdentifierLength", 64);
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.ATM", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Balance");
+
+ b.Property("Faulty");
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Id");
+
+ b.ToTable("ATMs");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Ban", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Applied");
+
+ b.Property("BannedBy");
+
+ b.Property("Reason");
+
+ b.Property("UntilDateTime");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Bans");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusinessBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Balance");
+
+ b.Property("BusinessId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BusinessId")
+ .IsUnique();
+
+ b.ToTable("BusinessBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusinessData", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BusinessId");
+
+ b.Property("Price");
+
+ b.HasKey("Id");
+
+ b.ToTable("BusinessData");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusRoute", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Description");
+
+ b.HasKey("Id");
+
+ b.ToTable("BusRoutes");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusRoutePoint", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BusRouteId");
+
+ b.Property("Description");
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BusRouteId");
+
+ b.ToTable("BusRoutesPoints");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Character", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Ageing");
+
+ b.Property("AgeingOpacity");
+
+ b.Property("BeardColor");
+
+ b.Property("Blemishes");
+
+ b.Property("BlemishesOpacity");
+
+ b.Property("Blush");
+
+ b.Property("BlushColor");
+
+ b.Property("BlushOpacity");
+
+ b.Property("BrowDepth");
+
+ b.Property("BrowHeight");
+
+ b.Property("CheekDepth");
+
+ b.Property("CheekboneHeight");
+
+ b.Property("CheekboneWidth");
+
+ b.Property("ChestHair");
+
+ b.Property("ChestHairColor");
+
+ b.Property("ChestHairOpacity");
+
+ b.Property("ChinDepth");
+
+ b.Property("ChinHeight");
+
+ b.Property("ChinIndent");
+
+ b.Property("ChinWidth");
+
+ b.Property("Complexion");
+
+ b.Property("ComplexionOpacity");
+
+ b.Property("EyeColor");
+
+ b.Property("EyeSize");
+
+ b.Property("EyebrowColor");
+
+ b.Property("Eyebrows");
+
+ b.Property("EyebrowsOpacity");
+
+ b.Property("FacialHair");
+
+ b.Property("FacialHairOpacity");
+
+ b.Property("Father");
+
+ b.Property("Freckles");
+
+ b.Property("FrecklesOpacity");
+
+ b.Property("Gender");
+
+ b.Property("Hair");
+
+ b.Property("HairColor");
+
+ b.Property("HairHighlightColor");
+
+ b.Property("JawShape");
+
+ b.Property("JawWidth");
+
+ b.Property("LipThickness");
+
+ b.Property("Lipstick");
+
+ b.Property("LipstickColor");
+
+ b.Property("LipstickOpacity");
+
+ b.Property("Makeup");
+
+ b.Property("MakeupOpacity");
+
+ b.Property("Mother");
+
+ b.Property("NeckWidth");
+
+ b.Property("NoseBottomHeight");
+
+ b.Property("NoseBridgeDepth");
+
+ b.Property("NoseBroken");
+
+ b.Property("NoseTipHeight");
+
+ b.Property("NoseTipLength");
+
+ b.Property("NoseWidth");
+
+ b.Property("Similarity");
+
+ b.Property("SkinSimilarity");
+
+ b.Property("SunDamage");
+
+ b.Property("SunDamageOpacity");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("Characters");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.CharacterCloth", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClothId");
+
+ b.Property("Duty");
+
+ b.Property("SlotId");
+
+ b.Property("SlotType");
+
+ b.Property("Texture");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("CharacterClothes");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.ClothCombination", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Gender");
+
+ b.Property("Top");
+
+ b.Property("Torso");
+
+ b.Property("Undershirt");
+
+ b.HasKey("Id");
+
+ b.ToTable("ClothCombinations");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Door", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Category");
+
+ b.Property("FactionId");
+
+ b.Property("Locked");
+
+ b.Property("Model");
+
+ b.Property("Name");
+
+ b.Property("Radius");
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("Doors");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.DutyCloth", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("ClothId");
+
+ b.Property("FactionId");
+
+ b.Property("Gender");
+
+ b.Property("SlotId");
+
+ b.Property("SlotType");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("DutyClothes");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Faction", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BankAccountId");
+
+ b.Property("Name")
+ .HasMaxLength(32);
+
+ b.Property("StateOwned");
+
+ b.Property("WeaponDealTime");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BankAccountId");
+
+ b.ToTable("Factions");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Balance");
+
+ b.Property("Bic")
+ .HasMaxLength(12);
+
+ b.Property("Iban")
+ .HasMaxLength(32);
+
+ b.HasKey("Id");
+
+ b.ToTable("FactionBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionRank", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("FactionId");
+
+ b.Property("Order");
+
+ b.Property("RankName");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("FactionRanks");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionWeapon", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Ammount");
+
+ b.Property("FactionId");
+
+ b.Property("Rank");
+
+ b.Property("SlotID");
+
+ b.Property("WeaponModel");
+
+ b.HasKey("Id");
+
+ b.HasIndex("FactionId");
+
+ b.ToTable("FactionWeapons");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.GotoPoint", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Description")
+ .HasMaxLength(32);
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Id");
+
+ b.ToTable("GotoPoints");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Group", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BankAccountId");
+
+ b.Property("Name");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BankAccountId");
+
+ b.ToTable("Groups");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.GroupBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Balance");
+
+ b.HasKey("Id");
+
+ b.ToTable("GroupBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.House", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("BankAccountId");
+
+ b.Property("CanRentIn");
+
+ b.Property("LastRentSetTime");
+
+ b.Property("OwnerId");
+
+ b.Property("Price");
+
+ b.Property("RentalFee");
+
+ b.Property("Type");
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Id");
+
+ b.HasIndex("BankAccountId");
+
+ b.HasIndex("OwnerId");
+
+ b.ToTable("Houses");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.HouseBankAccount", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Balance");
+
+ b.HasKey("Id");
+
+ b.ToTable("HouseBankAccounts");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.HouseRental", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("HouseId");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("HouseId");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("HouseRentals");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Interior", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("EnterPositionStr")
+ .HasColumnName("EnterPosition");
+
+ b.Property("ExitPositionStr")
+ .HasColumnName("ExitPosition");
+
+ b.Property("Name");
+
+ b.HasKey("Id");
+
+ b.ToTable("Interiors");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Location", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Description");
+
+ b.Property("Heading");
+
+ b.Property("X");
+
+ b.Property("Y");
+
+ b.Property("Z");
+
+ b.HasKey("Id");
+
+ b.ToTable("Locations");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Logs.BankAccountTransactionHistory", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Fee");
+
+ b.Property("MoneySent");
+
+ b.Property("NewReceiverBalance");
+
+ b.Property("NewSenderBalance");
+
+ b.Property("Origin")
+ .HasMaxLength(32);
+
+ b.Property("Receiver")
+ .HasMaxLength(32);
+
+ b.Property("ReceiverBalance");
+
+ b.Property("Sender")
+ .HasMaxLength(32);
+
+ b.Property("SenderBalance");
+
+ b.Property("Timestamp")
+ .ValueGeneratedOnAdd();
+
+ b.HasKey("Id");
+
+ b.ToTable("BankAccountTransactionLogs");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Logs.Death", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("CauseOfDeath")
+ .HasMaxLength(64);
+
+ b.Property("KillerHeading");
+
+ b.Property("KillerId");
+
+ b.Property("KillerPositionX");
+
+ b.Property("KillerPositionY");
+
+ b.Property("KillerPositionZ");
+
+ b.Property("Timestamp")
+ .ValueGeneratedOnAdd();
+
+ b.Property("VictimHeading");
+
+ b.Property("VictimId");
+
+ b.Property("VictimPositionX");
+
+ b.Property("VictimPositionY");
+
+ b.Property("VictimPositionZ");
+
+ b.HasKey("Id");
+
+ b.HasIndex("KillerId");
+
+ b.HasIndex("VictimId");
+
+ b.ToTable("DeathLogs");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.News", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Caption");
+
+ b.Property("Content");
+
+ b.Property("Timestamp");
+
+ b.Property("UserId");
+
+ b.HasKey("Id");
+
+ b.HasIndex("UserId");
+
+ b.ToTable("News");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedBlip", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Alpha");
+
+ b.Property("Color");
+
+ b.Property("Dimension");
+
+ b.Property("DrawDistance");
+
+ b.Property("Name");
+
+ b.Property("PositionX");
+
+ b.Property("PositionY");
+
+ b.Property("PositionZ");
+
+ b.Property("Rotation");
+
+ b.Property("Scale");
+
+ b.Property("ShortRange");
+
+ b.Property("Sprite");
+
+ b.HasKey("Id");
+
+ b.ToTable("Blips");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedMarker", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("ColorA");
+
+ b.Property("ColorB");
+
+ b.Property("ColorG");
+
+ b.Property("ColorR");
+
+ b.Property("Dimension");
+
+ b.Property("DirectionX");
+
+ b.Property("DirectionY");
+
+ b.Property("DirectionZ");
+
+ b.Property("PositionX");
+
+ b.Property("PositionY");
+
+ b.Property("PositionZ");
+
+ b.Property("RotationX");
+
+ b.Property("RotationY");
+
+ b.Property("RotationZ");
+
+ b.Property("Scale");
+
+ b.Property("Type");
+
+ b.Property("Visible");
+
+ b.HasKey("Id");
+
+ b.ToTable("Markers");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedPed", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Dimension");
+
+ b.Property("HashModel");
+
+ b.Property("Heading");
+
+ b.Property("PositionX");
+
+ b.Property("PositionY");
+
+ b.Property("PositionZ");
+
+ b.HasKey("Id");
+
+ b.ToTable("Peds");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedPickup", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property("Dimension");
+
+ b.Property("PositionX")
+ .HasMaxLength(128);
+
+ b.Property("PositionY");
+
+ b.Property("PositionZ");
+
+ b.Property("RespawnTime");
+
+ b.Property("RotationX");
+
+ b.Property("RotationY");
+
+ b.Property("RotationZ");
+
+ b.Property("Vehicle");
+
+ b.HasKey("Id");
+
+ b.ToTable("Pickups");
+ });
+
+ modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedTextLabel", b =>
+ {
+ b.Property("Id")
+ .ValueGeneratedOnAdd();
+
+ b.Property("Active");
+
+ b.Property