From efbff34c21bc53018c24d5d0c06decadf3bf84cd Mon Sep 17 00:00:00 2001 From: Siga Date: Sun, 10 May 2020 19:19:53 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Miese=20Corona=20Zeiten=20push=20f=C3=BCr?= =?UTF-8?q?=20Lenhardt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Interaction/elevator.ts | 3 - .../Jobs/RefuseCollector.ts | 50 +- .../assets/html/inventory/css/inventory.css | 96 +- .../assets/html/inventory/inventory.html | 600 ++---- .../core/rage-mp/entities.ts | 86 +- ReallifeGamemode.Client/core/rage-mp/game.ts | 6 +- ReallifeGamemode.Client/game.ts | 20 +- ReallifeGamemode.Client/index.ts | 13 +- .../inventory/inventory.ts | 100 +- ReallifeGamemode.Client/util/Gangwar.ts | 80 +- .../Entities/Saves/SavedPed.cs | 1 + .../DatabaseContextModelSnapshot.cs | 2 + .../Business/AirplaneDealerBusiness.cs | 9 +- .../Business/BeachDealerBusiness.cs | 9 +- .../Business/BikeDealerBusiness.cs | 34 +- .../Business/BoatDealerBusiness.cs | 34 +- .../Business/BusinessBase.cs | 329 ++-- .../Business/CarDealerBusinessBase.cs | 9 +- .../Business/HelicopterDealerBusiness.cs | 6 +- .../Business/LastTrainDealerBusiness.cs | 9 +- ...remiumDeluxeMotorsportCarDealerBusiness.cs | 30 +- .../Business/SUVDealerBusiness.cs | 9 +- .../Business/ShopBusiness.cs | 22 +- .../Business/TelefonBusiness.cs | 22 +- .../Business/VapidCarDealerBusiness.cs | 30 +- ReallifeGamemode.Server/Classes/TempBlip.cs | 22 +- .../Commands/AdminCommands.cs | 128 +- .../Commands/FactionCommands.cs | 33 +- .../Commands/GroupCommands.cs | 13 +- .../Commands/UserCommands.cs | 11 +- .../DrivingSchool/DrivingSchool.cs | 22 +- .../DrivingSchool/Licenses.cs | 43 +- .../DrivingSchool/PlaneSchool.cs | 21 +- ReallifeGamemode.Server/Events/Chat.cs | 26 +- ReallifeGamemode.Server/Events/Connect.cs | 10 +- ReallifeGamemode.Server/Events/Death.cs | 196 +- ReallifeGamemode.Server/Events/Disconnect.cs | 87 +- .../Events/EnterVehicle.cs | 14 +- .../Events/EnterVehicleAttempt.cs | 88 +- ReallifeGamemode.Server/Events/ExitVehicle.cs | 15 +- ReallifeGamemode.Server/Events/Faction.cs | 8 +- ReallifeGamemode.Server/Events/Inventory.cs | 109 +- ReallifeGamemode.Server/Events/Key.cs | 95 +- ReallifeGamemode.Server/Events/Login.cs | 271 +-- ReallifeGamemode.Server/Events/Register.cs | 4 +- .../Events/ResourceStop.cs | 34 +- ReallifeGamemode.Server/Events/Siren.cs | 9 +- .../Events/UpdateCharacterCloth.cs | 472 +++-- .../Events/UpdateCharacterElevator.cs | 24 +- .../Events/UpdateCharacterWeapon.cs | 191 +- ReallifeGamemode.Server/Events/Vehicle.cs | 498 +++-- ReallifeGamemode.Server/Events/Voice.cs | 2 +- .../Extensions/ClientExtension.cs | 311 ++-- .../Extensions/EnumExtensions.cs | 98 +- .../Extensions/HouseExtensions.cs | 6 +- .../Extensions/IntegerExtension.cs | 23 +- .../Extensions/ListExtensions.cs | 8 +- .../Extensions/ServerVehicleExtensions.cs | 125 +- .../Extensions/VehicleExtension.cs | 20 +- .../Factions/Medic/Medic.cs | 164 +- .../Factions/Medic/MedicTask.cs | 35 +- ReallifeGamemode.Server/Finance/Economy.cs | 268 ++- ReallifeGamemode.Server/Finance/Paycheck.cs | 47 +- ReallifeGamemode.Server/Gangwar/Gangwar.cs | 411 ++-- ReallifeGamemode.Server/Gangwar/Turf.cs | 660 ++++--- .../Inventory/GroundItem.cs | 26 +- .../Inventory/Interfaces/IDroppableItem.cs | 6 +- .../Inventory/Interfaces/IItem.cs | 22 +- .../Inventory/Interfaces/IUsableItem.cs | 12 +- .../Inventory/Interfaces/IWeaponDealItem.cs | 11 +- .../Inventory/Items/Aal.cs | 7 +- .../Inventory/Items/Barsch.cs | 7 +- .../Inventory/Items/Cannabis.cs | 3 - .../Inventory/Items/CarbineRifle.cs | 9 +- .../Inventory/Items/Cheeseburger.cs | 8 +- .../Inventory/Items/Cocain.cs | 7 +- .../Inventory/Items/DropItem.cs | 31 +- .../Inventory/Items/Flunder.cs | 7 +- .../Inventory/Items/FoodItem.cs | 45 +- .../Inventory/Items/Lachs.cs | 7 +- .../Inventory/Items/Pistol50.cs | 7 +- .../Inventory/Items/PumpShotgun.cs | 7 +- .../Inventory/Items/SMG.cs | 7 +- .../Inventory/Items/Schutzweste.cs | 7 +- .../Inventory/Items/SniperRifle.cs | 7 +- .../Inventory/Items/Thunfisch.cs | 7 +- .../Inventory/Items/WeaponDealItem.cs | 36 +- .../Inventory/Items/Zander.cs | 7 +- ReallifeGamemode.Server/Job/BusDriverJob.cs | 9 +- ReallifeGamemode.Server/Job/JobBase.cs | 106 +- ReallifeGamemode.Server/Job/PilotJob.cs | 10 +- .../Job/RefuseCollectorJob.cs | 603 +++--- ReallifeGamemode.Server/Job/TaxiDriverJob.cs | 40 +- ReallifeGamemode.Server/Main.cs | 192 +- .../Managers/ATMManager.cs | 250 +-- .../Managers/BankManager.cs | 187 +- .../Managers/BusinessManager.cs | 23 +- .../Managers/CharacterCreator.cs | 627 ++++--- .../Managers/CityHallManager.cs | 13 +- .../Managers/DoorManager.cs | 119 +- .../Managers/InteractionManager.cs | 608 +++--- .../Managers/InventoryManager.cs | 801 +++----- .../Managers/JobManager.cs | 602 +++--- .../Managers/LoadManager.cs | 39 +- .../Managers/PositionManager.cs | 74 +- .../Managers/SaveManager.cs | 361 ++-- .../Managers/ShopManager.cs | 98 +- .../Managers/TimeManager.cs | 46 +- .../Managers/TuningManager.cs | 14 +- .../Managers/VehicleManager.cs | 12 +- .../Managers/WeaponManager.cs | 9 +- .../Migrations/20190226185806_Initial.cs | 1646 ++++++++--------- .../20190306194826_VehicleDistanceDriven.cs | 28 +- .../Migrations/20190307163335_VehicleTank.cs | 28 +- .../Migrations/20190309184251_ATM.cs | 50 +- .../Migrations/20190408143319_Handmoney.cs | 28 +- .../Migrations/20190411180607_TuningGarage.cs | 44 +- .../Migrations/20190505154643_Groups.cs | 220 +-- .../20190513111017_UnusedColumnRemove.cs | 26 +- .../Migrations/20190513161249_Jobs.cs | 150 +- .../Migrations/20190516094446_JobFix.cs | 119 +- .../20190624153156_ClothesTexture.cs | 28 +- .../20190625202943_ClientWanteds.cs | 28 +- .../Migrations/20190626193631_House.cs | 84 +- .../20190626202159_HousePosition.cs | 66 +- .../20190627162731_UserHouseReference.cs | 36 +- .../Migrations/20190706132925_UserWage.cs | 28 +- .../Migrations/20190707184050_BusRoutes.cs | 100 +- .../20190708161922_UserHouseReferenceFix.cs | 66 +- .../Migrations/20190715192123_JailTime.cs | 28 +- .../Migrations/20190719210722_PaydayTimer.cs | 28 +- .../20190721144830_FactionWeapons.cs | 66 +- .../20190722201850_VehicleLivery.cs | 28 +- .../20190728142431_HouseEnhancments.cs | 120 +- .../Migrations/20190805184145_VehicleItems.cs | 72 +- .../Migrations/20190911192912_BusinessData.cs | 42 +- .../ReallifeGamemode.Server.csproj | 1 + ReallifeGamemode.Server/Report/Report.cs | 25 +- .../Report/ReportManage.cs | 6 +- .../Services/ChatService.cs | 11 +- .../Shop/Clothing/ClotheShop.cs | 54 +- .../Shop/SevenEleven/ItemShop.cs | 57 +- .../Util/CheckPointHandle.cs | 170 +- ReallifeGamemode.Server/Util/Converter.cs | 57 +- .../Util/DatabaseHelper.cs | 6 +- ReallifeGamemode.Server/Util/FactionHelper.cs | 2 +- .../Util/FactionRankHelper.cs | 8 +- ReallifeGamemode.Server/Util/GlobalHelper.cs | 15 +- ReallifeGamemode.Server/Util/IndicatorData.cs | 10 +- .../Util/SmoothThrottle.cs | 54 +- ReallifeGamemode.Server/Util/TaxiContract.cs | 13 +- ReallifeGamemode.Server/Util/ThreadTimers.cs | 92 +- .../Util/TransactionResult.cs | 20 +- ReallifeGamemode.Server/Util/VehicleSync.cs | 970 +++++----- ReallifeGamemode.Server/Wanted/Autowanted.cs | 38 +- ReallifeGamemode.Server/Wanted/Jail.cs | 409 ++-- .../Wanted/WantedEscapeTimer.cs | 107 +- .../WeaponDeal/WeaponDealManager.cs | 79 +- .../WeaponDeal/WeaponDealPoints.cs | 7 +- 159 files changed, 8042 insertions(+), 8695 deletions(-) diff --git a/ReallifeGamemode.Client/Interaction/elevator.ts b/ReallifeGamemode.Client/Interaction/elevator.ts index 149e321d..171f1015 100644 --- a/ReallifeGamemode.Client/Interaction/elevator.ts +++ b/ReallifeGamemode.Client/Interaction/elevator.ts @@ -19,19 +19,16 @@ cancelItem.BackColor = new Color(213, 0, 0); cancelItem.HighlightedBackColor = new Color(229, 57, 53); export default function elevatorList(globalData: IGlobalData) { - var elevatorMenu: NativeUI.Menu; var stages; var stage = ""; - //Weapon Menu mp.events.add('showElevatorMenu', (stagesArr) => { if (!globalData.InMenu) { - globalData.InMenu = true; stages = JSON.parse(stagesArr); diff --git a/ReallifeGamemode.Client/Jobs/RefuseCollector.ts b/ReallifeGamemode.Client/Jobs/RefuseCollector.ts index 8c691580..0b2d6789 100644 --- a/ReallifeGamemode.Client/Jobs/RefuseCollector.ts +++ b/ReallifeGamemode.Client/Jobs/RefuseCollector.ts @@ -1,9 +1,8 @@ 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; @@ -17,8 +16,6 @@ var BlipTonne = []; var ShapeTonne = []; - - mp.events.add('SERVER:MuellmannStatusTrue', () => { State = true; }); @@ -28,14 +25,13 @@ }); 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 })); - BlipTonne[i].setFlashes(true); - ShapeTonne.push(mp.colshapes.newSphere(posArr[i].x, posArr[i].y, posArr[i].z +0.5, 1.75)); + BlipTonne[i].setFlashTimer(2000); + 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 }); @@ -43,7 +39,6 @@ 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(); @@ -79,10 +74,8 @@ BlipTonne[i] = null; ShapeTonne[i].destroy(); ShapeTonne[i] = null; - MuellSack = mp.objects.new(3619689535, 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.08, 0.0, -0.03, 270.0, 0.0, 25.0, true, true, false, false, 0, true); - interval = setInterval(function () { createMarker(); }, 250); + interval = setInterval(function () { createMarker(); }, 2); } else { mp.gui.chat.push("Der Müllwagen ist bereits voll! Fahre zur Base und lade ab!"); @@ -96,7 +89,6 @@ } if (Shape == ShapeTonneHinten) { if (Traegt) { - Traegt = false; mp.events.callRemote('CLIENT:MuellmannAddSack'); @@ -108,10 +100,7 @@ CheckpointTonneHinten = null; if (ShapeTonneHinten) ShapeTonneHinten.destroy(); ShapeTonneHinten = null; - MuellSack.destroy(); - } - } else if (Shape == ShapeTonneBase) { BlipTonneBase.setRoute(false); @@ -134,11 +123,31 @@ HintenVoll = true; }); - function createMarker() { if (vehicle != null) { - var boneIndex = vehicle.getBoneIndexByName("platelight"); - let pos = vehicle.getWorldPositionOfBone(boneIndex); + var boneIndex2 = vehicle.getBoneIndexByName("platelight"); + var boneIndex1 = vehicle.getBoneIndexByName("chassis_dummy"); + + let posPlate = vehicle.getWorldPositionOfBone(boneIndex2); + let posCentre = vehicle.getWorldPositionOfBone(boneIndex1); + + let plateVec = new mp.Vector3(posPlate.x, posPlate.y, posPlate.z); + let lightVec = new mp.Vector3(posCentre.x, posCentre.y, posCentre.z); + + let posPL = lightVec.subtract(plateVec); + + let temp = new mp.Vector3(posPL.x * -1, posPL.y * -1, posPL.z * -1) + + let length = Math.sqrt((temp.x * temp.x) + (temp.y * temp.y) + (temp.z * temp.z)); + + let x = temp.x / length; + let y = temp.y / length; + let z = temp.z / length; + + temp = new mp.Vector3(x, y, z - 1); + + let pos = plateVec.add(temp); + if (BlipTonneHinten) BlipTonneHinten.destroy(); BlipTonneHinten = null; if (CheckpointTonneHinten) CheckpointTonneHinten.destroy(); @@ -147,10 +156,7 @@ ShapeTonneHinten = null; BlipTonneHinten = mp.blips.new(318, 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(pos.x, pos.y, pos.z - 1, 2); - - + ShapeTonneHinten = mp.colshapes.newSphere(pos.x, pos.y, pos.z, 2); } }; - } \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css b/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css index 4b4fad9a..dda031df 100644 --- a/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css +++ b/ReallifeGamemode.Client/assets/html/inventory/css/inventory.css @@ -22,8 +22,6 @@ body { background-color: transparent; } - - .main2 { z-index: 2; background: #0c0c0cc4; @@ -557,53 +555,48 @@ t#tf_nameorid { } #tf_zahl { - background-color: #313131; /* blau */ + background-color: #313131; border: none; - height: 30px; - width: 124px; + height: 1vw; + width: 4.3vw; text-align: center; text-decoration: none; display: inline-block; - font-size: 12px; + font-size: 0.5vw; position: relative; - left: 42%; - top: 40%; + left: 7.8vw; + top: 1.2vw; color: #ffffff; } #tf_cancle { background-color: #ff0000; border: none; - height: 32px; - width: 124px; + height: 1vw; + width: 3vw; text-align: center; text-decoration: none; display: inline-block; - font-size: 16px; - font-color: white; + font-size: 0.5vw; position: relative; - left: 33.7%; - top: 44%; + left: 12.5vw; + top: -0.2vw; color: #ffffff; - opacity: 0.5; - transition: 0.3s; } #tf_submitZahl { - background-color: #008CBA; /* blau */ + background-color: #008CBA; border: none; - height: 32px; - width: 124px; + height: 1.5vw; + width: 8vw; text-align: center; text-decoration: none; display: inline-block; - font-size: 16px; - font-color: white; + font-size: 0.5vw; position: relative; - left: 42%; - top: 40%; + left: -1.8vw; + top: 6vw; color: #ffffff; - opacity: 0.5; transition: 0.3s; } @@ -614,15 +607,15 @@ t#tf_nameorid { #tf_zahl4 { background-color: #313131; border: none; - height: 1.5vw; - width: 5vw; + height: 1vw; + width: 4.3vw; text-align: center; text-decoration: none; display: inline-block; - font-size: 0.6vw; + font-size: 0.5vw; position: relative; - left: 19vw; - top: 13vw; + left: 7.7vw; + top: 1vw; color: #ffffff; } @@ -635,12 +628,10 @@ t#tf_nameorid { text-decoration: none; display: inline-block; font-size: 0.5vw; - font-color: white; position: relative; - left: 17.8vw; - top: 9.4vw; + left: 12.5vw; + top: -0.3vw; color: #ffffff; - opacity: 0.5; transition: 0.3s; } @@ -657,12 +648,10 @@ t#tf_nameorid { text-decoration: none; display: inline-block; font-size: 0.5vw; - font-color: white; position: relative; - left: 21vw; - top: 13vw; + left: -5.4vw; + top: 6vw; color: #ffffff; - opacity: 0.5; transition: 0.3s; } @@ -692,7 +681,6 @@ t#tf_nameorid { opacity: 1; } - #tf_acceptTrade { background-color: #009b03; border: none; @@ -731,11 +719,13 @@ t#tf_nameorid { color: #ffffff; opacity: 0.5; transition: 0.3s; -}i +} - #tf_cancle3:hover { - opacity: 1 - } +i + +#tf_cancle3:hover { + opacity: 1 +} #tf_cancle:hover { opacity: 1 @@ -784,7 +774,7 @@ t#tf_nameorid { .BoxBlue { background-color: #1b1b1b; - height: 11.1vw; + height: 8.9vw; width: 20.2vw; position: relative; margin-top: 11vw; @@ -801,7 +791,7 @@ t#tf_nameorid { display: inline-block; font-size: 0.5vw; position: relative; - left: 5.45vw; + left: 12.45vw; top: 0vw; color: #ffffff; } @@ -837,8 +827,8 @@ t#tf_nameorid { display: inline-block; font-size: 0.6vw; position: relative; - left: 10.8vw; - top: 5.45vw; + left: -1.7vw; + top: 6.45vw; color: #ffffff; opacity: 0.5; transition: 0.3s; @@ -858,8 +848,8 @@ t#tf_nameorid { display: inline-block; font-size: 0.5vw; position: relative; - left: 7.5vw; - top: 4.4vw; + left: 7.8vw; + top: 1.4vw; color: #ffffff; } @@ -871,15 +861,15 @@ select.select_box2 { .blueIcon1 { position: relative; height: 3vw; - margin-bottom: -3.1vw; - margin-left: 13.4vw; + margin-bottom: -3.6vw; + margin-left: 8.5vw; } .blueIcon2 { position: relative; height: 3vw; - margin-bottom: 0.9vw; - margin-left: 3.4vw; + margin-bottom: -4.6vw; + margin-left: 0.7vw; } .blue3 { @@ -901,7 +891,6 @@ select.select_box2 { opacity: 1 } - #tf_nameorid { background-color: #313131; border: none; @@ -917,7 +906,6 @@ select.select_box2 { color: #ffffff; } - .alert_green { z-index: 2; background: rgba(85, 255, 0, 0.90); diff --git a/ReallifeGamemode.Client/assets/html/inventory/inventory.html b/ReallifeGamemode.Client/assets/html/inventory/inventory.html index f32081e9..8c1002d1 100644 --- a/ReallifeGamemode.Client/assets/html/inventory/inventory.html +++ b/ReallifeGamemode.Client/assets/html/inventory/inventory.html @@ -11,40 +11,48 @@
-
- -
- - - - - - - - - - + - - + \ No newline at end of file diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 87962d10..ac83868a 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -1,4 +1,4 @@ -import { IEntity, IPlayer, IPlayerPool, IVehicle, IVehiclePool, VehicleSeat, EntityType } from "../../game"; +import { IEntity, IPlayer, IEntityAttachments, IEntityAttachmentPool, IPlayerPool, IVehicle, IVehiclePool, VehicleSeat, EntityType } from "../../game"; import { parseJson } from "../../util"; class RageEntity implements IEntity { @@ -8,6 +8,10 @@ class RageEntity implements IEntity { return this.entity.id; } + get remoteId(): any { + return this.entity.remoteId; + } + constructor(entity: EntityMp) { this.entity = entity; } @@ -32,6 +36,8 @@ class RageEntity implements IEntity { class RagePlayer extends RageEntity implements IPlayer { private player: PlayerMp; + public __attachments: any[]; + public __attachmentObjects: any[]; get name(): string { return this.player.name; @@ -52,6 +58,78 @@ class RagePlayer extends RageEntity implements IPlayer { } } +class RageAttachments implements IEntityAttachments { + remoteId: any; + public __attachments: any[]; + public __attachmentObjects: any[]; + + constructor(entity: IEntity, attachments: any[], attachmentObjects: any[]) { + this.remoteId = entity.remoteId; + this.__attachments = attachments; + this.__attachmentObjects = attachmentObjects; + } +} + +class RageEntityAttachmentPool implements IEntityAttachmentPool { + public attachmentPool: IEntityAttachments[]; + remove(entity: IEntity) { + for (let obj of this.attachmentPool.keys()) { + if (entity.remoteId == this.attachmentPool[obj].remoteId) delete this.attachmentPool[obj]; + } + } + find(entity: EntityMp): IEntityAttachments { + + for (let i of this.attachmentPool.keys()) { + let pool = this.attachmentPool[i]; + for (let obj of pool.__attachmentObjects) { + if (entity == obj) { return pool;} + } + } + return null; + } + + set(entity: IEntity, attachments: any[], attachmentObjects: any[]): IEntityAttachments { + if (!this.attachmentPool) { + let e = new RageAttachments(entity, attachments, attachmentObjects); + this.attachmentPool = []; + this.attachmentPool.push(e); + + return e; + } + + for (let obj of this.attachmentPool.keys()) { + if (entity.remoteId == this.attachmentPool[obj].remoteId) { this.remove(entity); } + } + let e = new RageAttachments(entity, attachments, attachmentObjects); + this.attachmentPool.push(e); + + return e; + } + + at(remoteId: any): IEntityAttachments { + if (!this.attachmentPool) { + return null; + } + + for (let obj of this.attachmentPool.keys()) { + if (remoteId == this.attachmentPool[obj].remoteId) { return this.attachmentPool[obj]; } + } + return null; + } + + get(entity: IEntity): IEntityAttachments { + if (!this.attachmentPool) { + + return null; + } + + for (let obj of this.attachmentPool.keys()) { + if (entity.remoteId == this.attachmentPool[obj].remoteId) { return this.attachmentPool[obj]; } + } + return null; + } +} + class RagePlayerPool implements IPlayerPool { get local(): IPlayer { return new RagePlayer(mp.players.local); @@ -103,14 +181,14 @@ class RageVehiclePool implements IVehiclePool { fn(new RageVehicle(e)); }) } - - } export { RageEntity, RagePlayer, RagePlayerPool, + RageAttachments, + RageEntityAttachmentPool, RageVehicle, RageVehiclePool, -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/core/rage-mp/game.ts b/ReallifeGamemode.Client/core/rage-mp/game.ts index 68cbd072..5094ba9f 100644 --- a/ReallifeGamemode.Client/core/rage-mp/game.ts +++ b/ReallifeGamemode.Client/core/rage-mp/game.ts @@ -1,12 +1,12 @@ -import { IGame, IUi, IEvents, IPlayerPool, IVehiclePool } from "../../game"; +import { IGame, IUi, IEvents, IPlayerPool, IVehiclePool, IEntityAttachmentPool } from "../../game"; import RageEvents from "./events"; import RageUi from "./ui"; -import { RagePlayerPool, RageVehiclePool } from "./entities"; +import { RagePlayerPool, RageVehiclePool, RageEntityAttachmentPool } from "./entities"; export default class RageGame implements IGame { players: IPlayerPool = new RagePlayerPool(); vehicles: IVehiclePool = new RageVehiclePool(); - + attachments: IEntityAttachmentPool = new RageEntityAttachmentPool(); events: IEvents = new RageEvents; ui: IUi = new RageUi; diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index 3f164553..e1d42b17 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -5,6 +5,7 @@ players: IPlayerPool; vehicles: IVehiclePool; + attachments: IEntityAttachmentPool; disableDefaultEngineBehaviour(): void; } @@ -41,6 +42,7 @@ interface IBrowser { interface IEntity { id: number; + remoteId: any; type: EntityType; getSharedData(key: string): T; } @@ -51,6 +53,12 @@ interface IPlayer extends IEntity { vehicle: IVehicle; } +interface IEntityAttachments { + remoteId: any; + __attachments: any[]; + __attachmentObjects: any[]; +} + interface IVehicle extends IEntity { isSeatFree(seat: VehicleSeat): boolean; setEngineStatus(status: boolean, instantly: boolean, otherwise: boolean); @@ -67,8 +75,16 @@ interface IPlayerPool extends IEntityPool { local: IPlayer; } -interface IVehiclePool extends IEntityPool { +interface IEntityAttachmentPool { + attachmentPool: IEntityAttachments[]; + find(entity: EntityMp): IEntityAttachments; + remove(entity: IEntity): void; + set(entity: IEntity, attachments: any[], attachmentObjects: any[]): IEntityAttachments; + at(handle: any): IEntityAttachments; + get(entity: IEntity): IEntityAttachments; +} +interface IVehiclePool extends IEntityPool { } enum EntityType { @@ -122,6 +138,8 @@ export { IBrowser, IPlayer, + IEntityAttachments, + IEntityAttachmentPool, IVehicle, IEntity, IEntityPool, diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts index ad9d1d4a..cf0d5552 100644 --- a/ReallifeGamemode.Client/index.ts +++ b/ReallifeGamemode.Client/index.ts @@ -209,6 +209,15 @@ taximeterInput(globalData); import refuseCollector from './Jobs/RefuseCollector'; refuseCollector(); +import PedCreator from './Ped/PedCreator'; +PedCreator(); + +import attachmentManager from './util/attachmentMngr'; +attachmentManager(game); + +import relativeVector from './util/relativevector'; +relativeVector(); + require('./Gui/policedepartment'); interface VehicleData { @@ -218,4 +227,6 @@ interface VehicleData { export { VehicleData -} \ No newline at end of file +} + + diff --git a/ReallifeGamemode.Client/inventory/inventory.ts b/ReallifeGamemode.Client/inventory/inventory.ts index 31845d1c..dd284b3a 100644 --- a/ReallifeGamemode.Client/inventory/inventory.ts +++ b/ReallifeGamemode.Client/inventory/inventory.ts @@ -1,44 +1,32 @@ - - -export default function inventory(globalData: IGlobalData): void { - +export default function inventory(globalData: IGlobalData): void { var invBrowser: BrowserMp = null; var itemIdArr; var itemAmountArr; var invWeight; var itemNameArr; + var itemArr; + var offerItemArr; + var tradeItemArr; + var vehItemArr; - var ivehArr; + var loaded = false; - var Players; - - mp.events.add('setVehiclesInventory', (vehInvArr) => { - ivehArr = vehInvArr; - invBrowser.execute(`setVehiclesInv('${JSON.stringify(ivehArr)}');`); - }); - - mp.events.add('showVehInventory', () => { - invBrowser.execute(`execVehInv();`); - }); - var open = false; - mp.events.add('inventoryShow', (iWeight, iNameArr, iAmountArr, iIdArr, playersArr) => { + mp.events.add('inventoryShow', () => { if (invBrowser !== null) { invBrowser.destroy() invBrowser = null; globalData.InInput = false; + loaded = false; mp.gui.cursor.show(false, false); return; } if (!globalData.InInput) { globalData.InInput = true; mp.gui.cursor.show(true, true); + itemArr = []; + vehItemArr = []; invBrowser = mp.browsers.new('package://assets/html/inventory/inventory.html'); - Players = playersArr; - itemIdArr = iIdArr; - itemAmountArr = iAmountArr; - itemNameArr = iNameArr; - invWeight = iWeight; - } + } }); var offer = 0; @@ -55,22 +43,42 @@ export default function inventory(globalData: IGlobalData): void { } }); - mp.events.add("addTradeItems", (itemId, itemAmount, itemName, weight) => { - tradeItemID = JSON.stringify(itemId); - tradeItemAmount = JSON.stringify(itemAmount); - tradeItemName = JSON.stringify(itemName); - tradeItemWeight = JSON.stringify(weight); - if (invBrowser != null) - invBrowser.execute(`setAnfrage('${tradeItemID}','${tradeItemAmount}','${tradeItemName}','${tradeItemWeight}');`); + mp.events.addDataHandler("backpackItems", (entity: EntityMp, jsonItemArr) => { + if (entity.handle != mp.players.local.handle) return; + itemArr = JSON.parse(jsonItemArr); + if (loaded) + invBrowser.execute(`setBackpackItems('${JSON.stringify(itemArr)}',true)`); }); - - mp.events.add("CEF:saveVehicleTransfer", (val, jsonOrigin, jsonInvID, jsonInvAmount, jsonVehAmount) => { - if (val == 0) { - mp.events.callRemote('saveInventory', jsonInvID, jsonInvAmount, jsonOrigin, jsonVehAmount); - } else if(val == 1){ - mp.events.callRemote('saveVehicleInventory', jsonInvID, jsonInvAmount, jsonOrigin, jsonVehAmount); + + 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)}')`); + }); + + mp.events.add("CEF:InventoryLoaded", () => { + invBrowser.execute(`setBackpackItems('${JSON.stringify(itemArr)}')`); + if (vehItemArr.length != 0) { + invBrowser.execute(`setVehicleItems('${JSON.stringify(vehItemArr)}')`); } - + + //invBrowser.execute(`setTradeItems('${JSON.stringify(tradeItemArr)}')`); + //invBrowser.execute(`setOfferItems('${JSON.stringify(offerItemArr)}')`); + loaded = true; + }); + + mp.events.add("CEF:callVehicleInventory", () => { + mp.events.callRemote("CLIENT:getVehicleInventory") + }); + + mp.events.add("CEF:backpackToVehicle", (jsonItemId, jsonAmount) => { + mp.events.callRemote('transferToVehicle', jsonItemId, jsonAmount); + }); + + mp.events.add("CEF:vehicleToBackpack", (jsonItemId, jsonAmount) => { + mp.events.callRemote('transferToBackpack', jsonItemId, jsonAmount); }); mp.events.add("CEF:useItem", (type, amount, id) => { @@ -111,22 +119,6 @@ export default function inventory(globalData: IGlobalData): void { } }); - - mp.events.add("CEF:InventoryLoaded", () => { - if (offer == 1) { - invBrowser.execute(`changeTradeStatus('${JSON.stringify(offer)}')`); - invBrowser.execute(`setAnfrage('${tradeItemID}','${tradeItemAmount}','${tradeItemName}','${tradeItemWeight}');`); - } - - invBrowser.execute(`setItems('${JSON.stringify(itemNameArr)}','${JSON.stringify(itemIdArr)}','${JSON.stringify(itemAmountArr)}','${JSON.stringify(Players)}');`); - invBrowser.execute(`setWeight('${JSON.stringify(invWeight)}');`); - }); - - - mp.events.add("CEF:getNearVehicles", () => { - mp.events.callRemote('getNearVehicles'); - }); - mp.events.add("CEF:acceptTrade", () => { if (invBrowser !== null) { @@ -135,7 +127,6 @@ export default function inventory(globalData: IGlobalData): void { invBrowser = null; mp.gui.cursor.show(false, false); } - }); mp.events.add("CEF:declineTrade", () => { @@ -169,5 +160,4 @@ export default function inventory(globalData: IGlobalData): void { } } }); - } \ No newline at end of file diff --git a/ReallifeGamemode.Client/util/Gangwar.ts b/ReallifeGamemode.Client/util/Gangwar.ts index c50e5211..a1689a8e 100644 --- a/ReallifeGamemode.Client/util/Gangwar.ts +++ b/ReallifeGamemode.Client/util/Gangwar.ts @@ -1,7 +1,4 @@ - - -export default function gangwarHandle(globalData: IGlobalData) { - +export default function gangwarHandle(globalData: IGlobalData) { function inside(point, vs) { let x = point[0], y = point[1]; @@ -35,7 +32,6 @@ export default function gangwarHandle(globalData: IGlobalData) { }; var Gangturf = class { - name: string; id: number; range: number; @@ -70,12 +66,11 @@ export default function gangwarHandle(globalData: IGlobalData) { } _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; @@ -97,7 +92,7 @@ export default function gangwarHandle(globalData: IGlobalData) { } else { self.leaderBlipVector = null; } - + self.leaderColShape = null; } @@ -127,7 +122,6 @@ export default function gangwarHandle(globalData: IGlobalData) { loadArea() { 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); @@ -137,25 +131,21 @@ export default function gangwarHandle(globalData: IGlobalData) { self._colshape = mp.colshapes.newCircle(self.x, self.y, self.range * 1.5); } render() { - var self = this; if (self._colshape) { 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; } //self.blip.setRotation(self.rotation); - mp.game.invoke(Natives.SET_BLIP_ROTATION, self.blip, self.rotation); - + mp.game.invoke(Natives.SET_BLIP_ROTATION, self.blip, self.rotation); } - - if (self._status == "attack" || self.edit == true) { if (self._colshape) { if (mp.game.gameplay.getDistanceBetweenCoords(mp.players.local.position.x, mp.players.local.position.y, 0, self.x, self.y, 0, true) < self.range * 1.5) { @@ -191,7 +181,6 @@ export default function gangwarHandle(globalData: IGlobalData) { mp.game.graphics.drawLine(bottom_left.x, bottom_left.y, i, top_left.x, top_left.y, i, 255, 0, 0, 255); } } else { - /* let a = 0; for (var i = z; i < z + 1; i += 0.001) { @@ -202,10 +191,8 @@ export default function gangwarHandle(globalData: IGlobalData) { a += 0.001 } */ - } - + } } - if (self.isInsideArea()) { mp.game.graphics.drawText(self.name, [self.x, self.y, mp.players.local.position.z + 20], { @@ -215,7 +202,6 @@ export default function gangwarHandle(globalData: IGlobalData) { outline: true, centre: true }); - } } } @@ -233,11 +219,9 @@ export default function gangwarHandle(globalData: IGlobalData) { } } } - } - - 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); @@ -263,7 +247,7 @@ export default function gangwarHandle(globalData: IGlobalData) { if (status == "normal") { self._status = "normal"; //self.blip.setFlashes(false); - mp.game.invoke(Natives.SET_BLIP_FLASHES, self.blip, false); + mp.game.invoke(Natives.SET_BLIP_FLASHES, self.blip, false); return; } if (status == "conquered") { @@ -287,7 +271,6 @@ export default function gangwarHandle(globalData: IGlobalData) { self.attackBlip = mp.game.ui.addBlipForCoord(self.x, self.y, 0); mp.game.invoke(Natives.SET_BLIP_SPRITE, self.attackBlip, 378); mp.game.invoke(Natives.SET_BLIP_AS_SHORT_RANGE, self.attackBlip, false); - } else if (!bool) { mp.game.invoke(Natives.SET_BLIP_SPRITE, self.attackBlip, 5); } @@ -310,20 +293,18 @@ export default function gangwarHandle(globalData: IGlobalData) { 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 + }); } isTurfArea(shape) { @@ -335,7 +316,7 @@ export default function gangwarHandle(globalData: IGlobalData) { } check() { - var self = this + var self = this if (self._entered == true) { if (!self.isInsideArea() || (self.isNearGround() == false)) { self._entered = false; @@ -343,7 +324,7 @@ export default function gangwarHandle(globalData: IGlobalData) { } } } - + enter() { var self = this; self._timerCheck = setInterval(function () { @@ -354,8 +335,7 @@ export default function gangwarHandle(globalData: IGlobalData) { 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) { @@ -364,7 +344,7 @@ export default function gangwarHandle(globalData: IGlobalData) { 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)); } } @@ -374,7 +354,7 @@ export default function gangwarHandle(globalData: IGlobalData) { leave() { var self = this; clearInterval(self._timerCheck); - + self.check(); } isNearGround() { @@ -475,7 +455,7 @@ export default function gangwarHandle(globalData: IGlobalData) { while (mp.game.invoke(Natives.DOES_BLIP_EXIST, last_blip)) { mp.game.invoke(Natives.SET_BLIP_SPRITE, last_blip, -1); - mp.game.ui.removeBlip(last_blip); + mp.game.ui.removeBlip(last_blip); last_blip = mp.game.invoke(Natives.GET_NEXT_BLIP_INFO_ID, 5); x++; } @@ -499,7 +479,7 @@ export default function gangwarHandle(globalData: IGlobalData) { mp.gui.chat.push("DEBUG: Attack blips not removed: " + y); mp.gui.chat.push("DEBUG: LeaderBlips blips not removed: " + z); } - + mp.events.add('GangAreas:Create', (turfsJSON) => { var turfs = JSON.parse(turfsJSON); if (gangturfs.length > 0) { @@ -512,9 +492,9 @@ export default function gangwarHandle(globalData: IGlobalData) { turf.leaderColShape = null; } if (turf._marker) - if (turf.blip != null) { - mp.game.ui.removeBlip(turf.blip); - } + if (turf.blip != null) { + mp.game.ui.removeBlip(turf.blip); + } if (turf.leaderBlip != null) { mp.game.ui.removeBlip(turf.leaderBlip); } @@ -525,7 +505,6 @@ export default function gangwarHandle(globalData: IGlobalData) { } clearBlips(); if (turfs.length > 0) { - gangturfs = []; turfs.forEach(function (turf) { if (turf.Id != undefined) { @@ -543,9 +522,8 @@ export default function gangwarHandle(globalData: IGlobalData) { mp.events.add('ADMIN:SetTurf', (name) => { gangturfs[gangturfs.length - 1].edit = false; 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', () => { @@ -581,13 +559,13 @@ export default function gangwarHandle(globalData: IGlobalData) { 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); } }); @@ -596,7 +574,7 @@ export default function gangwarHandle(globalData: IGlobalData) { mp.events.add('CLIENT:StartGangwar', () => { gangturfs.forEach(function (turf) { if (turf._entered == true) { - turf.startGangWar(); + turf.startGangWar(); } }); }); diff --git a/ReallifeGamemode.Database/Entities/Saves/SavedPed.cs b/ReallifeGamemode.Database/Entities/Saves/SavedPed.cs index 82bcc043..2ca399ca 100644 --- a/ReallifeGamemode.Database/Entities/Saves/SavedPed.cs +++ b/ReallifeGamemode.Database/Entities/Saves/SavedPed.cs @@ -21,5 +21,6 @@ namespace ReallifeGamemode.Database.Entities.Saves public float Heading { get; set; } public byte Dimension { get; set; } public bool Active { get; set; } + public int Type { get; set; } } } diff --git a/ReallifeGamemode.Database/Migrations/DatabaseContextModelSnapshot.cs b/ReallifeGamemode.Database/Migrations/DatabaseContextModelSnapshot.cs index bcded5b8..6de71be7 100644 --- a/ReallifeGamemode.Database/Migrations/DatabaseContextModelSnapshot.cs +++ b/ReallifeGamemode.Database/Migrations/DatabaseContextModelSnapshot.cs @@ -775,6 +775,8 @@ namespace ReallifeGamemode.Database.Migrations b.Property("PositionZ"); + b.Property("Type"); + b.HasKey("Id"); b.ToTable("Peds"); diff --git a/ReallifeGamemode.Server/Business/AirplaneDealerBusiness.cs b/ReallifeGamemode.Server/Business/AirplaneDealerBusiness.cs index c19a02fc..340290a5 100644 --- a/ReallifeGamemode.Server/Business/AirplaneDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/AirplaneDealerBusiness.cs @@ -1,13 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { - class AirplaneDealerBusiness : CarDealerBusinessBase + internal class AirplaneDealerBusiness : CarDealerBusinessBase { - public override int Id => 7; public override string Name => "Flugzeug Shop"; @@ -22,7 +18,6 @@ namespace ReallifeGamemode.Server.Business public override void Load() { - } public override string BankAccountName => Name; diff --git a/ReallifeGamemode.Server/Business/BeachDealerBusiness.cs b/ReallifeGamemode.Server/Business/BeachDealerBusiness.cs index d82474ed..3c9be7b0 100644 --- a/ReallifeGamemode.Server/Business/BeachDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/BeachDealerBusiness.cs @@ -1,13 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { - class BeachDealerBusiness : CarDealerBusinessBase + internal class BeachDealerBusiness : CarDealerBusinessBase { - public override int Id => 9; public override string Name => "Beach Shop"; @@ -22,7 +18,6 @@ namespace ReallifeGamemode.Server.Business public override void Load() { - } } } diff --git a/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs b/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs index e6aa47d5..7c5b2a9e 100644 --- a/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs @@ -1,27 +1,23 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { public class BikeDealerBusiness : CarDealerBusinessBase - { - public override int Id => 8; - - public override string Name => "Motorrad Shop"; - - public override Vector3 Position => new Vector3(1180.997, -394.9542, 68.01635); - - public override Vector3 CarSpawnPositon => new Vector3(1148.25, -369.0642, 67.06199); - - public override float CarSpawnHeading => 356.6f; - - public override int? BlipSprite => 226; - - public override void Load() { + public override int Id => 8; + public override string Name => "Motorrad Shop"; + + public override Vector3 Position => new Vector3(1180.997, -394.9542, 68.01635); + + public override Vector3 CarSpawnPositon => new Vector3(1148.25, -369.0642, 67.06199); + + public override float CarSpawnHeading => 356.6f; + + public override int? BlipSprite => 226; + + public override void Load() + { + } } - } } diff --git a/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs b/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs index f20dd17d..56344e6d 100644 --- a/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs @@ -1,27 +1,23 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { public class BoatDealerBusiness : CarDealerBusinessBase - { - public override int Id => 5; - - public override string Name => "Boot Shop"; - - public override Vector3 Position => new Vector3(-712.2401, -1298.818, 5.101922); - - public override Vector3 CarSpawnPositon => new Vector3(-792.5602, -1433.158, 1.333062); - - public override float CarSpawnHeading => 356.6f; - - public override int? BlipSprite => 410; - - public override void Load() { + public override int Id => 5; + public override string Name => "Boot Shop"; + + public override Vector3 Position => new Vector3(-712.2401, -1298.818, 5.101922); + + public override Vector3 CarSpawnPositon => new Vector3(-792.5602, -1433.158, 1.333062); + + public override float CarSpawnHeading => 356.6f; + + public override int? BlipSprite => 410; + + public override void Load() + { + } } - } } diff --git a/ReallifeGamemode.Server/Business/BusinessBase.cs b/ReallifeGamemode.Server/Business/BusinessBase.cs index 48970ddd..96041536 100644 --- a/ReallifeGamemode.Server/Business/BusinessBase.cs +++ b/ReallifeGamemode.Server/Business/BusinessBase.cs @@ -1,198 +1,197 @@ -using GTANetworkAPI; +using System; +using System.Linq; +using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; -using System; -using System.Linq; namespace ReallifeGamemode.Server.Business { public abstract class BusinessBase : BankAccountHolder, IBankAccountOwner - { - private TextLabel _informationLabel; - private ColShape _colShape; - private Blip _blip; - private Marker _marker; - - public virtual int? BlipSprite { get; } = null; - - public abstract int Id { get; } - - public abstract string Name { get; } - - public abstract Vector3 Position { get; } - - public override BusinessBankAccount BankAccount { - get - { - using (var dbContext = new DatabaseContext()) + private TextLabel _informationLabel; + private ColShape _colShape; + private Blip _blip; + private Marker _marker; + + public virtual int? BlipSprite { get; } = null; + + public abstract int Id { get; } + + public abstract string Name { get; } + + public abstract Vector3 Position { get; } + + public override BusinessBankAccount BankAccount { - return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + get + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + } + } + + set => throw new NotImplementedException(); } - } - set => throw new NotImplementedException(); - } - - public override int? BankAccountId - { - get - { - using (var dbContext = new DatabaseContext()) + public override int? BankAccountId { - return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).Select(b => b.Id).FirstOrDefault(); + get + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).Select(b => b.Id).FirstOrDefault(); + } + } + + set => throw new NotImplementedException(); } - } - set => throw new NotImplementedException(); - } + public override string BankAccountName => Name; - public override string BankAccountName => Name; - - public IBankAccount GetBankAccount(DatabaseContext databaseContext = null) - { - if (databaseContext == null) - { - using (databaseContext = new DatabaseContext()) + public IBankAccount GetBankAccount(DatabaseContext databaseContext = null) { - return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); + if (databaseContext == null) + { + using (databaseContext = new DatabaseContext()) + { + return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); + } + } + else + { + return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); + } } - } - else - { - return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); - } - } - public void Setup() - { - _informationLabel = NAPI.TextLabel.CreateTextLabel(Name, Position.Add(new Vector3(0, 0, 0.5)), 20.0f, 1.3f, 0, new Color(255, 255, 255)); - _marker = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, Position.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255)); - - if (BlipSprite != null) - { - _blip = NAPI.Blip.CreateBlip(BlipSprite.Value, Position, 1f, 4, Name, shortRange: true); - } - - _colShape = NAPI.ColShape.CreateSphereColShape(Position.Subtract(new Vector3(0, 0, 1.5)), 3f); - _colShape.OnEntityEnterColShape += EntityEnterBusinessColShape; - _colShape.OnEntityExitColShape += EntityExitBusinessColShape; - - if (GetBankAccount() == null) - { - NAPI.Util.ConsoleOutput("Creating Bank Account for Business: " + Name); - using (var dbContext = new DatabaseContext()) + public void Setup() { + _informationLabel = NAPI.TextLabel.CreateTextLabel(Name, Position.Add(new Vector3(0, 0, 0.5)), 20.0f, 1.3f, 0, new Color(255, 255, 255)); + _marker = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, Position.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255)); - dbContext.BusinessBankAccounts.Add(new BusinessBankAccount() - { - BusinessId = Id, - Balance = 0 - }); - dbContext.SaveChanges(); + if (BlipSprite != null) + { + _blip = NAPI.Blip.CreateBlip(BlipSprite.Value, Position, 1f, 4, Name, shortRange: true); + } + + _colShape = NAPI.ColShape.CreateSphereColShape(Position.Subtract(new Vector3(0, 0, 1.5)), 3f); + _colShape.OnEntityEnterColShape += EntityEnterBusinessColShape; + _colShape.OnEntityExitColShape += EntityExitBusinessColShape; + + if (GetBankAccount() == null) + { + NAPI.Util.ConsoleOutput("Creating Bank Account for Business: " + Name); + using (var dbContext = new DatabaseContext()) + { + dbContext.BusinessBankAccounts.Add(new BusinessBankAccount() + { + BusinessId = Id, + Balance = 0 + }); + dbContext.SaveChanges(); + } + } + + BusinessData data = GetData(); + + if (data == null) + { + using (var dbContext = new DatabaseContext()) + { + data = new BusinessData() + { + BusinessId = this.Id, + Price = -1 + }; + + dbContext.BusinessData.Add(data); + + dbContext.SaveChanges(); + } + } } - } - BusinessData data = GetData(); - - if (data == null) - { - using (var dbContext = new DatabaseContext()) + private void EntityExitBusinessColShape(ColShape colShape, Player client) { - data = new BusinessData() - { - BusinessId = this.Id, - Price = -1 - }; - - dbContext.BusinessData.Add(data); - - dbContext.SaveChanges(); + client.TriggerEvent("SERVER:Business_RemoveHelp", true); } - } - } - private void EntityExitBusinessColShape(ColShape colShape, Player client) - { - client.TriggerEvent("SERVER:Business_RemoveHelp", true); - } - - public BusinessData GetData(DatabaseContext dbContext = null) - { - if (dbContext == null) - { - using (dbContext = new DatabaseContext()) + public BusinessData GetData(DatabaseContext dbContext = null) { - return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + if (dbContext == null) + { + using (dbContext = new DatabaseContext()) + { + return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + } + } + else + { + return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + } } - } - else - { - return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); - } - } - private void EntityEnterBusinessColShape(ColShape colShape, Player client) - { - if (client.IsInVehicle || !client.IsLoggedIn()) return; - - SendBusinessDataToPlayer(client); - client.TriggerEvent("SERVER:Business_ShowMenuHelp"); - } - - public void SendBusinessDataToPlayer(Player player) - { - User owner = GetOwner(); - - int state = -1; // Keine Beziehung - - if (owner == null) // Kein Besitzer - { - state = 0; - } - else if (owner.Id == player.GetUser()?.Id) // Besitzer - { - state = 1; - } - - var business = new - { - this.Name, - Price = this.GetData().Price.ToMoneyString(), - Balance = this.GetBankAccount().Balance.ToMoneyString() - }; - - player.TriggerEvent("SERVER:Business_SetData", JsonConvert.SerializeObject(business), state); - } - - public void Update(int? money = null) - { - if (money == null) money = GetBankAccount()?.Balance ?? 0; - User owner = GetOwner(); - string infoText = Name; - if (owner == null) infoText += "\n~g~Zum Verkauf\n~s~Preis: ~y~" + this.GetData().Price.ToMoneyString(); - else infoText += $"\nBesitzer: ~g~{owner.Name}\n~s~Kasse: ~y~{money.ToMoneyString()}"; - _informationLabel.Text = infoText; - } - - public User GetOwner(DatabaseContext dbContext = null) - { - if (dbContext == null) - { - using (dbContext = new DatabaseContext()) + private void EntityEnterBusinessColShape(ColShape colShape, Player client) { - return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); - } - } - else - { - return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); - } - } + if (client.IsInVehicle || !client.IsLoggedIn()) return; - public abstract void Load(); - } + SendBusinessDataToPlayer(client); + client.TriggerEvent("SERVER:Business_ShowMenuHelp"); + } + + public void SendBusinessDataToPlayer(Player player) + { + User owner = GetOwner(); + + int state = -1; // Keine Beziehung + + if (owner == null) // Kein Besitzer + { + state = 0; + } + else if (owner.Id == player.GetUser()?.Id) // Besitzer + { + state = 1; + } + + var business = new + { + this.Name, + Price = this.GetData().Price.ToMoneyString(), + Balance = this.GetBankAccount().Balance.ToMoneyString() + }; + + player.TriggerEvent("SERVER:Business_SetData", JsonConvert.SerializeObject(business), state); + } + + public void Update(int? money = null) + { + if (money == null) money = GetBankAccount()?.Balance ?? 0; + User owner = GetOwner(); + string infoText = Name; + if (owner == null) infoText += "\n~g~Zum Verkauf\n~s~Preis: ~y~" + this.GetData().Price.ToMoneyString(); + else infoText += $"\nBesitzer: ~g~{owner.Name}\n~s~Kasse: ~y~{money.ToMoneyString()}"; + _informationLabel.Text = infoText; + } + + public User GetOwner(DatabaseContext dbContext = null) + { + if (dbContext == null) + { + using (dbContext = new DatabaseContext()) + { + return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); + } + } + else + { + return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); + } + } + + public abstract void Load(); + } } diff --git a/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs b/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs index 9323f10b..a2817f1c 100644 --- a/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs +++ b/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs @@ -1,14 +1,11 @@ using GTANetworkAPI; -using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.Business { public abstract class CarDealerBusinessBase : BusinessBase - { - public abstract Vector3 CarSpawnPositon { get; } - public abstract float CarSpawnHeading { get; } + { + public abstract Vector3 CarSpawnPositon { get; } + public abstract float CarSpawnHeading { get; } public override int? BlipSprite => 225; } diff --git a/ReallifeGamemode.Server/Business/HelicopterDealerBusiness.cs b/ReallifeGamemode.Server/Business/HelicopterDealerBusiness.cs index a35b90f0..0f6b0490 100644 --- a/ReallifeGamemode.Server/Business/HelicopterDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/HelicopterDealerBusiness.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { @@ -21,7 +18,6 @@ namespace ReallifeGamemode.Server.Business public override void Load() { - } } } diff --git a/ReallifeGamemode.Server/Business/LastTrainDealerBusiness.cs b/ReallifeGamemode.Server/Business/LastTrainDealerBusiness.cs index 0c2f2c3d..d61dc49d 100644 --- a/ReallifeGamemode.Server/Business/LastTrainDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/LastTrainDealerBusiness.cs @@ -1,13 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { - class LastTrainDealerBusiness : CarDealerBusinessBase + internal class LastTrainDealerBusiness : CarDealerBusinessBase { - public override int Id => 10; public override string Name => "Last Train Carshop"; @@ -22,7 +18,6 @@ namespace ReallifeGamemode.Server.Business public override void Load() { - } } } diff --git a/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs b/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs index 8af353c3..3a6ea721 100644 --- a/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs @@ -1,25 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { internal class PremiumDeluxeMotorsportCarDealerBusiness : CarDealerBusinessBase - { - public override Vector3 CarSpawnPositon => new Vector3(-59, -1108.1, 26.5); - - public override float CarSpawnHeading => 90; - - public override int Id => 4; - - public override string Name => "Premium Deluxe Motorsport"; - - public override Vector3 Position => new Vector3(-31.56, -1113.5, 26.42); - - public override void Load() { + public override Vector3 CarSpawnPositon => new Vector3(-59, -1108.1, 26.5); + public override float CarSpawnHeading => 90; + + public override int Id => 4; + + public override string Name => "Premium Deluxe Motorsport"; + + public override Vector3 Position => new Vector3(-31.56, -1113.5, 26.42); + + public override void Load() + { + } } - } } diff --git a/ReallifeGamemode.Server/Business/SUVDealerBusiness.cs b/ReallifeGamemode.Server/Business/SUVDealerBusiness.cs index 2b83aed1..c7388457 100644 --- a/ReallifeGamemode.Server/Business/SUVDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/SUVDealerBusiness.cs @@ -1,13 +1,9 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { - class SUVDealerBusiness : CarDealerBusinessBase + internal class SUVDealerBusiness : CarDealerBusinessBase { - public override int Id => 11; public override string Name => "SUV Carshop"; @@ -22,7 +18,6 @@ namespace ReallifeGamemode.Server.Business public override void Load() { - } } } diff --git a/ReallifeGamemode.Server/Business/ShopBusiness.cs b/ReallifeGamemode.Server/Business/ShopBusiness.cs index 38fa7c2e..8fc01140 100644 --- a/ReallifeGamemode.Server/Business/ShopBusiness.cs +++ b/ReallifeGamemode.Server/Business/ShopBusiness.cs @@ -1,21 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { public class ShopBusiness : BusinessBase - { - public override int Id => 2; - - public override string Name => "24/7 Business"; - - public override Vector3 Position => new Vector3(-443, 1134, 326); - - public override void Load() { + public override int Id => 2; + public override string Name => "24/7 Business"; + + public override Vector3 Position => new Vector3(-443, 1134, 326); + + public override void Load() + { + } } - } } diff --git a/ReallifeGamemode.Server/Business/TelefonBusiness.cs b/ReallifeGamemode.Server/Business/TelefonBusiness.cs index 5e87f151..e31e1deb 100644 --- a/ReallifeGamemode.Server/Business/TelefonBusiness.cs +++ b/ReallifeGamemode.Server/Business/TelefonBusiness.cs @@ -1,21 +1,17 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { public class TelefonBusiness : BusinessBase - { - public override int Id => 1; - - public override string Name => "Telefon Business"; - - public override Vector3 Position => new Vector3(-423, 1130, 326); - - public override void Load() { + public override int Id => 1; + public override string Name => "Telefon Business"; + + public override Vector3 Position => new Vector3(-423, 1130, 326); + + public override void Load() + { + } } - } } diff --git a/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs b/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs index a97d9961..336ddc55 100644 --- a/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs @@ -1,25 +1,21 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Business { public class VapidCarDealerBusiness : CarDealerBusinessBase - { - public override int Id => 3; - - public override string Name => "Vapid Autohaus"; - - public override Vector3 Position => new Vector3(-177, -1156, 23); - - public override Vector3 CarSpawnPositon => new Vector3(-222, -1162, 22.5); - - public override float CarSpawnHeading => 356.6f; - - public override void Load() { + public override int Id => 3; + public override string Name => "Vapid Autohaus"; + + public override Vector3 Position => new Vector3(-177, -1156, 23); + + public override Vector3 CarSpawnPositon => new Vector3(-222, -1162, 22.5); + + public override float CarSpawnHeading => 356.6f; + + public override void Load() + { + } } - } } diff --git a/ReallifeGamemode.Server/Classes/TempBlip.cs b/ReallifeGamemode.Server/Classes/TempBlip.cs index c5eae011..8f4113ff 100644 --- a/ReallifeGamemode.Server/Classes/TempBlip.cs +++ b/ReallifeGamemode.Server/Classes/TempBlip.cs @@ -1,16 +1,12 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace ReallifeGamemode.Server.Classes +namespace ReallifeGamemode.Server.Classes { public class TempBlip - { - public byte Color { get; set; } - public string Name { get; set; } - public byte Transparency { get; set; } - public bool ShortRange { get; set; } - public uint Sprite { get; set; } - public float Scale { get; set; } - } + { + public byte Color { get; set; } + public string Name { get; set; } + public byte Transparency { get; set; } + public bool ShortRange { get; set; } + public uint Sprite { get; set; } + public float Scale { get; set; } + } } diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index 839aec77..366e9d19 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -1,26 +1,25 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text.RegularExpressions; using GTANetworkAPI; +using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Managers; -using ReallifeGamemode.Server.Inventory.Interfaces; -using ReallifeGamemode.Server.Business; -using System.Text.RegularExpressions; -using ReallifeGamemode.Server.Classes; -using ReallifeGamemode.Server.Factions.Medic; -using ReallifeGamemode.Server.Job; -using ReallifeGamemode.Server.Finance; -using ReallifeGamemode.Server.Wanted; -using Microsoft.EntityFrameworkCore; using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Database; -using ReallifeGamemode.Services; +using ReallifeGamemode.Server.Business; +using ReallifeGamemode.Server.Classes; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Factions.Medic; +using ReallifeGamemode.Server.Finance; +using ReallifeGamemode.Server.Inventory.Interfaces; +using ReallifeGamemode.Server.Job; +using ReallifeGamemode.Server.Managers; +using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; +using ReallifeGamemode.Server.Util; +using ReallifeGamemode.Server.Wanted; +using ReallifeGamemode.Services; /** * @overview Life of German Reallife - Admin Commands (Admin.cs) @@ -32,8 +31,8 @@ namespace ReallifeGamemode.Server.Commands { public class AdminCommands : Script { - #region Todo + [Command("eat", "~m~Benutzung: ~s~/eat [Item]")] public void CmdAdminEat(Player player, string item) { @@ -126,8 +125,10 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(player, msg); } - #endregion + #endregion Todo + #region ahelp + [Command("ahelp", "~m~Benutzung: ~s~/ahelp")] public void CmdAdminHelp(Player player) { @@ -143,35 +144,39 @@ namespace ReallifeGamemode.Server.Commands case AdminLevel.MAPPING: ChatService.SendMessage(player, "~b~ " + "/team, /tc, /position"); break; + case AdminLevel.ENTWICKLUNG: ChatService.SendMessage(player, "~b~ " + "/team, /tc, /position"); break; + case AdminLevel.SUPPORTER: ChatService.SendMessage(player, "~b~ " + "/tsupport, /showtickets, /rc, /rc quit, /o, /pm, /dimension, /to, /gh, /clearchat, /skick"); break; + case AdminLevel.ADMIN: ChatService.SendMessage(player, "~b~ " + "/a, /countdown, /freeze, /unfreeze, /mark, /gotmark, /gotox, /up, /setdimension, /spec, /warn, /ip, /kick, /ban /unban, /slap, /takeweapon, /tov, /ghv, /factionlist, /businesslist, /joblist"); break; + case AdminLevel.ADMIN2: ChatService.SendMessage(player, "~b~ " + "/sethp, /setarmor, /arevive, /aunjail, /aclear, /clothes, /props"); break; + case AdminLevel.ADMIN3: ChatService.SendMessage(player, "~b~ " + "/adice, /settime, /setweather, /rsetarmor, /rgiveweapon, /giveweapon, /veh, /fv, /vfix, /vdestroy, /vlivery, /vcolor, /vehsmoke, /aneon, /mod, /showtuningmenu, /rvdestroy, /vsethp"); break; + case AdminLevel.HEADADMIN: ChatService.SendMessage(player, "~b~ " + "/aspeed, /set, /setmoney, /givemoney, /sethandmoney, /givehandmoney, /paydaydrop, /setwage, /freekh, /ainvite, /makeleader, /managefactionranks, /setweaponrack, /rmweaponrack, /setweaponrank, /giveitem, /inventory, /save, /remove, /house, /setbusinessbankbalance, /reloaddors, /interior, /editmode, /setbliptemplate, /ipl, /load, /quicksavemode, /createturf, /setturf, /cancleturf, /reloadturfs, /deleteturfs, /setturfpoint"); break; + case AdminLevel.PROJEKTLEITUNG: ChatService.SendMessage(player, "~b~ " + "/makeadmin, /whitelist, /blind"); break; } } - } - - - #endregion + #endregion ahelp #region Mapping / Entwicklung @@ -219,9 +224,10 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(player, "Position: X Y Z: " + player.Position + " Richtung: " + player.Heading); } + #endregion Mapping / Entwicklung - #endregion #region Support + [Command("tsupport", "~m~Benutzung: ~s~/tsupport", Alias = "ts")] public void tsup(Player player) { @@ -242,8 +248,6 @@ namespace ReallifeGamemode.Server.Commands GlobalHelper.tsupAdmins.Remove(player); ChatService.SendMessage(player, "!{#ee4d2e}** " + "Du befindest dich nicht mehr im T-Support"); - - using (var dbContext = new DatabaseContext()) { User targetUser = player.GetUser(dbContext); @@ -252,12 +256,15 @@ namespace ReallifeGamemode.Server.Commands case null: player.SetSharedData("blipColor", 0); break; + case 8: player.SetSharedData("blipColor", 83); break; + case 7: player.SetSharedData("blipColor", 52); break; + case 4: player.SetSharedData("blipColor", 5); break; @@ -281,8 +288,6 @@ namespace ReallifeGamemode.Server.Commands ChatService.Broadcast("~g~[SUPPORT] " + player.Name + " hat sich zum Support angemeldet"); player.TriggerEvent("toggleADutyMode", true); - - } else { @@ -440,7 +445,7 @@ namespace ReallifeGamemode.Server.Commands } } - #endregion + #endregion Support #region ALevel1 @@ -485,9 +490,6 @@ namespace ReallifeGamemode.Server.Commands ChatService.BroadcastAdmin("!{#1db992}** AC " + player.Name + ":~w~ " + message, AdminLevel.ADMIN); } - - - [Command("gotolist", "~m~Benutzung: ~s~/gotolist")] //TODO Als Browser anzeigeN?? public void CmdAdminGotoList(Player player) { @@ -815,7 +817,6 @@ namespace ReallifeGamemode.Server.Commands NAPI.Entity.SetEntityVelocity(player.Vehicle, new Vector3()); } else player.Position = new Vector3(p.X, p.Y, p.Z); - } } @@ -831,7 +832,6 @@ namespace ReallifeGamemode.Server.Commands else player.Position = new Vector3(x, y, z); } - [Command("slap", "~m~Benutzung: ~s~/slap [Spieler] (Höhe)")] public void CmdAdminSlap(Player player, string name, int wert = 5) { @@ -963,8 +963,10 @@ namespace ReallifeGamemode.Server.Commands } } - #endregion + #endregion ALevel1 + #region ALevel2 + [Command("sethp", "~m~Benutzung: ~s~/sethp [Spieler] (Hp)")] public void CmdAdminSetHp(Player player, string name, int hp = 100) { @@ -1130,7 +1132,6 @@ namespace ReallifeGamemode.Server.Commands [Command("aclear", "~m~Benutzung: ~s~/aclear [Spieler] [Grund]", GreedyArg = true)] public void CmdFactionClear(Player player, string nameOrId, string reason) { - User user = player.GetUser(); if (!player.GetUser()?.IsAdmin(AdminLevel.ADMIN2) ?? true) { @@ -1160,12 +1161,15 @@ namespace ReallifeGamemode.Server.Commands case null: target.SetSharedData("blipColor", 0); break; + case 8: target.SetSharedData("blipColor", 83); break; + case 7: target.SetSharedData("blipColor", 52); break; + case 4: target.SetSharedData("blipColor", 5); break; @@ -1176,7 +1180,9 @@ namespace ReallifeGamemode.Server.Commands dbContext.SaveChanges(); } } - #endregion + + #endregion ALevel2 + #region ALevel3 [Command("adice", "~m~Benutzung: ~s~/adice [Zahl]")] @@ -1537,7 +1543,6 @@ namespace ReallifeGamemode.Server.Commands TimeManager.PauseTimeManager(); NAPI.World.SetTime(hour, min, sec); return; - } [Command("setweather", "~m~Benutzung: ~s~/setweather [Wetter]")] @@ -1600,7 +1605,8 @@ namespace ReallifeGamemode.Server.Commands } } - #endregion + #endregion ALevel3 + #region ALevel1337 [Command("wepmod", "~m~Benutzung: ~s~/wepmod [Variable]")] public void CmdWeaponModifier(Player player, float modifier) @@ -1618,7 +1624,6 @@ namespace ReallifeGamemode.Server.Commands public void CmdAdminGotocp(Player admin) { admin.TriggerEvent("getCP"); - } [RemoteEvent("sendCP")] @@ -1725,7 +1730,7 @@ namespace ReallifeGamemode.Server.Commands else { UserItem item = new UserItem() { ItemId = itemId, UserId = target.GetUser().Id, Amount = amount }; - InventoryManager.AddItemToInventory(target, item); + InventoryManager.AddItemToInventory(target, item.ItemId, item.Amount); } } @@ -1771,7 +1776,6 @@ namespace ReallifeGamemode.Server.Commands player.SendNotification("Edit-Mode ~r~deaktiviert"); player.TriggerEvent("toggleEditMode", false); } - } [Command("setbliptemplate", "~m~Benutzung: ~s~/setbliptemplate [byte COLOR] [byte ALPHA] [bool SHORTRANGE] [uint SPRITE] [float SCALE] [string NAME]", GreedyArg = true)] @@ -1911,16 +1915,18 @@ namespace ReallifeGamemode.Server.Commands case null: target.SetSharedData("blipColor", 0); break; + case 8: target.SetSharedData("blipColor", 83); break; + case 7: target.SetSharedData("blipColor", 52); break; + case 4: target.SetSharedData("blipColor", 5); break; - } dbContext.SaveChanges(); } @@ -1969,16 +1975,18 @@ namespace ReallifeGamemode.Server.Commands case null: target.SetSharedData("blipColor", 0); break; + case 8: target.SetSharedData("blipColor", 83); break; + case 7: target.SetSharedData("blipColor", 52); break; + case 4: target.SetSharedData("blipColor", 5); break; - } dbContext.SaveChanges(); @@ -1999,6 +2007,7 @@ namespace ReallifeGamemode.Server.Commands case "blip": player.TriggerEvent("saveBlip"); break; + case "goto": if (option1 == null) { @@ -2020,10 +2029,10 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(player, "Einen Goto-Punkt mit dieser Bezeichnung gibt es schon!"); } } - } break; + case "vehicle": if (player.IsInVehicle) { @@ -2036,6 +2045,7 @@ namespace ReallifeGamemode.Server.Commands } else ChatService.SendMessage(player, "~m~Du sitzt in keinem Fahrzeug!"); break; + case "fvehicle": if (player.IsInVehicle) { @@ -2074,6 +2084,7 @@ namespace ReallifeGamemode.Server.Commands } else ChatService.SendMessage(player, "~m~Du sitzt in keinem Fahrzeug!"); break; + case "jvehicle": if (player.IsInVehicle) { @@ -2262,6 +2273,7 @@ namespace ReallifeGamemode.Server.Commands } #region loadCommand + [Command("load", "~m~Benutzung: ~s~/load [Typ = OnlineBunkers, ArcadiusBusinessCentre, MazeBankBuilding, LomBank, MazeBankWest, ClubWareHouse, SpecialLocations, GRHYacht, DHYacht, PYacht, AircraftCarrier, BridgeTC, BridgeTN, NorthYankton, ONeilsFarmB, ONeilsFarm, Morgue")] public void CmdAdminloadlocation(Player player, string typ) { @@ -2288,6 +2300,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("gr_case4_bunkerclosed"); ChatService.SendMessage(player, "~y~ Online Bunkers~s~ erfolgreich geladen!"); break; + case "ArcadiusBusinessCentre": NAPI.World.RequestIpl("ex_dt1_02_office_02b"); NAPI.World.RequestIpl("ex_dt1_02_office_02c"); @@ -2304,6 +2317,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("imp_dt1_02_modgarage"); ChatService.SendMessage(player, "~y~ Arcadius Business Centre~s~ erfolgreich geladen!"); break; + case "MazeBankBuilding": NAPI.World.RequestIpl("ex_dt1_11_office_02b"); NAPI.World.RequestIpl("ex_dt1_11_office_02c"); @@ -2320,6 +2334,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("imp_dt1_11_modgarage"); ChatService.SendMessage(player, "~y~ Maze Bank Building~s~ erfolgreich geladen!"); break; + case "LomBank": NAPI.World.RequestIpl("ex_sm_13_office_02b"); NAPI.World.RequestIpl("ex_sm_13_office_02c"); @@ -2336,6 +2351,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("imp_sm_13_modgarage"); ChatService.SendMessage(player, "~y~Lom Bank~s~ erfolgreich geladen!"); break; + case "MazeBankWest": NAPI.World.RequestIpl("ex_sm_15_office_02b"); NAPI.World.RequestIpl("ex_sm_15_office_02c"); @@ -2352,6 +2368,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("imp_sm_15_modgarage"); ChatService.SendMessage(player, "~y~Maze Bank West~s~ erfolgreich geladen!"); break; + case "ClubWareHouse": NAPI.World.RequestIpl("bkr_biker_interior_placement_interior_0_biker_dlc_int_01_milo"); NAPI.World.RequestIpl("bkr_biker_interior_placement_interior_1_biker_dlc_int_02_milo"); @@ -2367,6 +2384,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("bkr_bi_hw1_13_int"); ChatService.SendMessage(player, "~y~Clubs & Warehouses~s~ erfolgreich geladen!"); break; + case "SpecialLocations": NAPI.World.RequestIpl("cargoship"); NAPI.World.RequestIpl("sunkcargoship"); @@ -2383,6 +2401,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("FIBlobby"); ChatService.SendMessage(player, "~y~Special Locations~s~ erfolgreich geladen!"); break; + case "GRHYacht": NAPI.World.RequestIpl("gr_heist_yacht2"); NAPI.World.RequestIpl("gr_heist_yacht2_bar"); @@ -2392,6 +2411,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("gr_heist_yacht2_lounge"); ChatService.SendMessage(player, "~y~Gunrunning heist Yacht~s~ erfolgreich geladen!"); break; + case "DHYacht": NAPI.World.RequestIpl("hei_yacht_heist"); NAPI.World.RequestIpl("hei_yacht_heist_enginrm"); @@ -2403,11 +2423,13 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("hei_yacht_heist_LODLights"); ChatService.SendMessage(player, "~y~Dignity heist Yacht~s~ erfolgreich geladen!"); break; + case "PYacht": NAPI.World.RequestIpl("smboat"); NAPI.World.RequestIpl("smboat_lod"); ChatService.SendMessage(player, "~y~Party Yacht~s~ erfolgreich geladen!"); break; + case "AircraftCarrier": NAPI.World.RequestIpl("hei_carrier"); NAPI.World.RequestIpl("hei_carrier_DistantLights"); @@ -2420,16 +2442,19 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("hei_carrier_LODLights"); ChatService.SendMessage(player, "~y~Aircraft Carrier~s~ erfolgreich geladen!"); break; + case "BridgeTC": NAPI.World.RequestIpl("canyonriver01_traincrash"); NAPI.World.RequestIpl("canyonriver01_traincrash"); ChatService.SendMessage(player, "~y~Bridge Train Crash~s~ erfolgreich geladen!"); break; + case "BridgeTN": NAPI.World.RequestIpl("canyonriver01"); NAPI.World.RequestIpl("railing_start"); ChatService.SendMessage(player, "~y~Bridge Train Normal~s~ erfolgreich geladen!"); break; + case "NorthYankton": NAPI.World.RequestIpl("prologue01"); NAPI.World.RequestIpl("prologue01c"); @@ -2464,6 +2489,7 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("prologuerdb"); ChatService.SendMessage(player, "~y~North Yankton~s~ erfolgreich geladen!"); break; + case "ONeilsFarmB": NAPI.World.RequestIpl("farmint"); NAPI.World.RequestIpl("farm_burnt"); @@ -2472,21 +2498,23 @@ namespace ReallifeGamemode.Server.Commands NAPI.World.RequestIpl("des_farmhs_end_occl"); ChatService.SendMessage(player, "~y~ONeils Farm Burnt~s~ erfolgreich geladen!"); break; + case "ONeilsFarm": NAPI.World.RequestIpl("farm"); NAPI.World.RequestIpl("farm_props"); NAPI.World.RequestIpl("farm_int"); ChatService.SendMessage(player, "~y~ONeils Farm~s~ erfolgreich geladen!"); break; + case "Morgue": NAPI.World.RequestIpl("coronertrash"); NAPI.World.RequestIpl("Coroner_Int_On"); ChatService.SendMessage(player, "~y~Morgue~s~ erfolgreich geladen!"); break; } - } - #endregion + + #endregion loadCommand // [Command("managefactionranks", "~m~Benutzung: ~s~/managefactionranks [Fraktions-ID]", Alias = "mfr")] @@ -2713,7 +2741,6 @@ namespace ReallifeGamemode.Server.Commands // return; // } - //} [Command("reloaddoors", "~m~Benutzung: ~s~/reloaddoors")] @@ -2828,7 +2855,6 @@ namespace ReallifeGamemode.Server.Commands dbContext.SaveChanges(); ChatService.SendMessage(player, "Waffeneintrag bearbeitet für die Fraktion " + f.Name + ": " + weaponModel + ", SlotId: " + slotId); return; - } FactionWeapon fw2 = dbContext.FactionWeapons.FirstOrDefault(w => w.FactionId == factionID && w.WeaponModel == weaponModel); @@ -2854,7 +2880,6 @@ namespace ReallifeGamemode.Server.Commands } } - [Command("rmweaponrack", "~m~Benutzung: ~s~/rmweaponrack [Fraktion ID] [Waffen Model]")] public void CmdAdminRmWeaponrack(Player player, int factionID, string weaponModel) { @@ -3016,9 +3041,11 @@ namespace ReallifeGamemode.Server.Commands } player.TriggerEvent("ADMIN:Turf_CreateLeaderBlip"); } - #endregion + + #endregion ALevel1337 #region ALevel1338 + [Command("whitelist", "~m~Benutzung: ~s~/whitelist [Add / Remove] [Socialclub Name]")] public void CmdAdminWhitelist(Player player, string option, string scName) { @@ -3123,6 +3150,7 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(target, "~b~[ADMIN]~s~ Du wurdest durch ~y~" + player.Name + " ~s~auf Adminlevel ~y~" + target.GetUser().AdminLevel.GetName() + " ~y~(" + rank + ") ~s~gesetzt."); ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du hast ~y~" + target.Name + " ~s~auf Adminlevel ~y~" + target.GetUser().AdminLevel.GetName() + " ~y~(" + rank + ") ~s~gesetzt."); } - #endregion + + #endregion ALevel1338 } } diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 8857c2f8..c3d45777 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -1,4 +1,7 @@ -using GTANetworkAPI; +using System.Collections.Generic; +using System.Linq; +using System.Text.RegularExpressions; +using GTANetworkAPI; using Microsoft.EntityFrameworkCore; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; @@ -6,11 +9,7 @@ using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Wanted; using ReallifeGamemode.Services; -using System.Collections.Generic; -using System.Linq; -using System.Text.RegularExpressions; /** * @overview Life of German Reallife - Faction Commands (Faction.cs) @@ -20,7 +19,7 @@ using System.Text.RegularExpressions; namespace ReallifeGamemode.Server.Commands { - class FactionCommands : Script + internal class FactionCommands : Script { #region Chat Commands @@ -74,8 +73,11 @@ namespace ReallifeGamemode.Server.Commands ChatService.BroadcastFaction(broadcastMessage, context.Factions.ToList().FindAll(c => c.StateOwned)); } } - #endregion + + #endregion Chat Commands + #region Leader Commands + [Command("giverank", "~m~Benutzung: ~s~/giverank [Name] [Rang]", GreedyArg = true)] public void CmdFactionGiverank(Player player, string name, string rank) { @@ -173,8 +175,8 @@ namespace ReallifeGamemode.Server.Commands } } + #endregion Leader Commands - #endregion #region Sanitäter Commands [Command("revive", "~m~Benutzung: ~s~/revive")] @@ -267,8 +269,11 @@ namespace ReallifeGamemode.Server.Commands target.SendNotification("Du wurdest von ~g~" + player.Name + " ~s~geheilt.", false); player.SendNotification("Du hast ~g~" + target.Name + " ~s~geheilt.", false); } - #endregion + + #endregion Sanitäter Commands + #region Staatsfraktionen (LSPD / FBI) Commands + [Command("wanted", "~m~Benutzung: ~s~/wa(nted) [Spieler] [Anzahl] [Grund]", Alias = "wa", GreedyArg = true)] public void CmdFactionWanted(Player player, string nameOrId, int amount, string reason) { @@ -311,7 +316,6 @@ namespace ReallifeGamemode.Server.Commands [Command("clear", "~m~Benutzung: ~s~/clear [Spieler] [Grund]", GreedyArg = true)] public void CmdFactionClear(Player player, string nameOrId, string reason) { - User user = player.GetUser(); if (user == null || (user.FactionId != 1 && user.FactionId != 3)) { @@ -348,9 +352,11 @@ namespace ReallifeGamemode.Server.Commands case 8: target.SetSharedData("blipColor", 83); break; + case 7: target.SetSharedData("blipColor", 52); break; + case 4: target.SetSharedData("blipColor", 5); break; @@ -362,11 +368,6 @@ namespace ReallifeGamemode.Server.Commands } } - - - - #endregion - #region Global Fraktions Commands - #endregion + #endregion Staatsfraktionen (LSPD / FBI) Commands } } diff --git a/ReallifeGamemode.Server/Commands/GroupCommands.cs b/ReallifeGamemode.Server/Commands/GroupCommands.cs index 9c7735a2..47c790e9 100644 --- a/ReallifeGamemode.Server/Commands/GroupCommands.cs +++ b/ReallifeGamemode.Server/Commands/GroupCommands.cs @@ -1,16 +1,14 @@ -using GTANetworkAPI; +using System.Text.RegularExpressions; +using GTANetworkAPI; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Services; -using System; -using System.Collections.Generic; -using System.Text; -using System.Text.RegularExpressions; namespace ReallifeGamemode.Server.Commands { - class GroupCommands : Script + internal class GroupCommands : Script { #region Chat Commands + [Command("gc", "~m~Benutzung: ~s~/gc [Nachricht]", GreedyArg = true)] public void CmdGroupG(Player player, string message) { @@ -26,6 +24,7 @@ namespace ReallifeGamemode.Server.Commands ChatService.BroadcastGroup(message, group); } - #endregion + + #endregion Chat Commands } } diff --git a/ReallifeGamemode.Server/Commands/UserCommands.cs b/ReallifeGamemode.Server/Commands/UserCommands.cs index 54e952b8..e7cfb3b4 100644 --- a/ReallifeGamemode.Server/Commands/UserCommands.cs +++ b/ReallifeGamemode.Server/Commands/UserCommands.cs @@ -1,17 +1,14 @@ -using GTANetworkAPI; -using ReallifeGamemode.Database; +using System; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Finance; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; -using ReallifeGamemode.Server.Util; -using System; -using System.Linq; namespace ReallifeGamemode.Server.Commands { - class UserCommands : Script + internal class UserCommands : Script { [Command("dice", "~m~Benutzung: ~s~/dice")] public void CmdUserDice(Player player) @@ -52,7 +49,6 @@ namespace ReallifeGamemode.Server.Commands [Command("paycheck", "~m~Benutzung: ~s~/paycheck")] public void CmdUserPaycheck(Player client) { - User user = client.GetUser(); if (Economy.Paychecks.ContainsKey(user.Id)) { @@ -68,6 +64,5 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(client, "~g~[PAYCHECK] -------------------------------------------------------"); } } - } } diff --git a/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs b/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs index f3946034..850df77b 100644 --- a/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs +++ b/ReallifeGamemode.Server/DrivingSchool/DrivingSchool.cs @@ -1,18 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Text; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Services; -using System.Linq; +using System.Collections.Generic; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; +using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.DrivingSchool { - class DrivingSchool : Script + internal class DrivingSchool : Script { private static TextLabel informationLabel; private static Marker marker; @@ -40,6 +36,7 @@ namespace ReallifeGamemode.Server.DrivingSchool { new Vector3(-813.57, -1290.37, 4.59), }.AsReadOnly(); + private readonly IReadOnlyCollection DrivingRoute = new List { //BEGIN @@ -80,12 +77,12 @@ namespace ReallifeGamemode.Server.DrivingSchool new Vector3(-617.66, -1259.34, 9.82), new Vector3(-758.35, -1285.03, 3.48), }.AsReadOnly(); + private readonly IReadOnlyCollection StopCar = new List { new Vector3(-788.66, -1278.75, 4), }.AsReadOnly(); - public static void Setup() { informationLabel = NAPI.TextLabel.CreateTextLabel("Fahrschule\n~y~Auto ~s~- $~g~2500\n~y~Motorrad ~s~- $~g~3500", new Vector3(-813.17, -1354.5, 5.14), 20.0f, 1.3f, 0, new Color(255, 255, 255)); @@ -181,7 +178,6 @@ namespace ReallifeGamemode.Server.DrivingSchool user.Position = new Vector3(-813.17, -1354.5, 4.14); } - [RemoteEvent("drivingSchoolEvent")] public void DrivingSchoolEvent(Player user, int checkpoint) { @@ -189,7 +185,6 @@ namespace ReallifeGamemode.Server.DrivingSchool { user.TriggerEvent("renderTextOnScreen", "Sollten Sie aus dem Fahrzeug aussteigen fallen Sie durch."); } - else if (checkpoint == 9) { user.TriggerEvent("renderTextOnScreen", "Fahre zwischen den Laternen Slalom."); @@ -205,8 +200,6 @@ namespace ReallifeGamemode.Server.DrivingSchool } } - - [RemoteEvent("startBikeSchool")] public void StartBikeSchool(Player client) { @@ -233,7 +226,6 @@ namespace ReallifeGamemode.Server.DrivingSchool client.TriggerEvent("waitPlayerEntersVehicle"); } - [RemoteEvent("bikeSchoolEventEnd")] public void bikeSchoolEventEnd(Player user, int checkpoint) { @@ -258,7 +250,6 @@ namespace ReallifeGamemode.Server.DrivingSchool user.Position = new Vector3(-813.17, -1354.5, 4.14); } - [RemoteEvent("bikeSchoolEvent")] public void bikeSchoolEvent(Player user, int checkpoint) { @@ -272,6 +263,5 @@ namespace ReallifeGamemode.Server.DrivingSchool CheckPointHandle.StartCheckPointRoute(user, StopBike, 5000, 1, 7, "bikeSchoolEventEnd"); } } - } } diff --git a/ReallifeGamemode.Server/DrivingSchool/Licenses.cs b/ReallifeGamemode.Server/DrivingSchool/Licenses.cs index 0e104bed..3fabb853 100644 --- a/ReallifeGamemode.Server/DrivingSchool/Licenses.cs +++ b/ReallifeGamemode.Server/DrivingSchool/Licenses.cs @@ -1,32 +1,27 @@ using Newtonsoft.Json; -using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.DrivingSchool { public class Licenses - { - [JsonProperty("drivingLicenseCar")] - public bool CarLicense { get; set; } - - [JsonProperty("drivingLicenseBike")] - public bool BikeLicense { get; set; } - - [JsonProperty("flightLicensePlane")] - public bool PlaneLicense { get; set; } - - [JsonProperty("weaponLicense")] - public bool WeaponLicense { get; set; } - - - public Licenses(bool CarLicense, bool BikeLicense, bool PlaneLicense, bool weaponLicense) { - this.CarLicense = CarLicense; - this.BikeLicense = BikeLicense; - this.PlaneLicense = PlaneLicense; - this.WeaponLicense = weaponLicense; - } + [JsonProperty("drivingLicenseCar")] + public bool CarLicense { get; set; } - } + [JsonProperty("drivingLicenseBike")] + public bool BikeLicense { get; set; } + + [JsonProperty("flightLicensePlane")] + public bool PlaneLicense { get; set; } + + [JsonProperty("weaponLicense")] + public bool WeaponLicense { get; set; } + + public Licenses(bool CarLicense, bool BikeLicense, bool PlaneLicense, bool weaponLicense) + { + this.CarLicense = CarLicense; + this.BikeLicense = BikeLicense; + this.PlaneLicense = PlaneLicense; + this.WeaponLicense = weaponLicense; + } + } } diff --git a/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs b/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs index b428052e..5e173d10 100644 --- a/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs +++ b/ReallifeGamemode.Server/DrivingSchool/PlaneSchool.cs @@ -1,18 +1,14 @@ -using System; -using System.Collections.Generic; -using System.Text; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Services; -using System.Linq; +using System.Collections.Generic; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; +using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.DrivingSchool { - class PlaneSchool : Script + internal class PlaneSchool : Script { private static TextLabel informationLabel1; private static Marker marker1; @@ -38,16 +34,13 @@ namespace ReallifeGamemode.Server.DrivingSchool new Vector3(-869.77, -1424.05, 133), }.AsReadOnly(); - private readonly IReadOnlyCollection planeRouteEnd = new List { new Vector3(-1164.29, -2351.52, 14.88), }.AsReadOnly(); - public static void Setup() { - informationLabel1 = NAPI.TextLabel.CreateTextLabel("Flugschule\n~y~Flugschein ~s~- $~g~5000", new Vector3(-1083.96, -2476.96, 14.07), 20.0f, 1.3f, 0, new Color(255, 255, 255)); marker1 = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, new Vector3(-1083.96, -2476.96, 13.07), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255)); @@ -56,6 +49,7 @@ namespace ReallifeGamemode.Server.DrivingSchool _colShape1.OnEntityExitColShape += EntityExitBusinessColShape; NAPI.Blip.CreateBlip(90, new Vector3(-1083.96, -2476.96, 14.07), 1.0f, 4, "Flugschule", shortRange: true); } + private static void EntityEnterBusinessColShape(ColShape colShape, Player client) { if (client.IsInVehicle || !client.IsLoggedIn()) return; @@ -132,6 +126,7 @@ namespace ReallifeGamemode.Server.DrivingSchool user.ResetData("ActiveSchool"); user.Position = new Vector3(-1083.96, -2476.96, 13.07); } + [RemoteEvent("planeSchoolEvent")] public void planeSchoolEvent(Player user, int checkpoint) { @@ -177,11 +172,7 @@ namespace ReallifeGamemode.Server.DrivingSchool user.TriggerEvent("renderTextOnScreen", "Setze zum landeflug an. Drücke 'G' um ihr Fahrwerk auszufahren."); CheckPointHandle.StartCheckPointRoute(user, planeRouteEnd, 5000, 6, 12, "planeSchoolEventEnd"); break; - - } } - - } } diff --git a/ReallifeGamemode.Server/Events/Chat.cs b/ReallifeGamemode.Server/Events/Chat.cs index 120f2f7d..cf4619e0 100644 --- a/ReallifeGamemode.Server/Events/Chat.cs +++ b/ReallifeGamemode.Server/Events/Chat.cs @@ -1,20 +1,20 @@ -using GTANetworkAPI; +using System.Text.RegularExpressions; +using GTANetworkAPI; using ReallifeGamemode.Server.Services; -using System.Text.RegularExpressions; namespace ReallifeGamemode.Server.Events { public class Chat : Script - { - [ServerEvent(Event.ChatMessage)] - public void ChatEvent(Player player, string message) { - string serverMsg = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); - if (serverMsg.Trim().Length == 0) return; - NAPI.Player.GetPlayersInRadiusOfPlayer(10, player).ForEach(p => - { - ChatService.SendMessage(p, $"{player.Name} sagt: {serverMsg}");// - }); + [ServerEvent(Event.ChatMessage)] + public void ChatEvent(Player player, string message) + { + string serverMsg = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); + if (serverMsg.Trim().Length == 0) return; + NAPI.Player.GetPlayersInRadiusOfPlayer(10, player).ForEach(p => + { + ChatService.SendMessage(p, $"{player.Name} sagt: {serverMsg}"); + }); + } } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Events/Connect.cs b/ReallifeGamemode.Server/Events/Connect.cs index 5ee084ad..e6f4fd24 100644 --- a/ReallifeGamemode.Server/Events/Connect.cs +++ b/ReallifeGamemode.Server/Events/Connect.cs @@ -1,12 +1,9 @@ -using System; +using System; using System.Linq; using GTANetworkAPI; -using ReallifeGamemode.Database; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Wanted; /** * @overview Life of German Reallife - Event Login (Login.cs) @@ -16,7 +13,7 @@ using ReallifeGamemode.Server.Wanted; namespace ReallifeGamemode.Server.Events { - class Connect : Script + internal class Connect : Script { [ServerEvent(Event.PlayerConnected)] public void OnPlayerConnected(Player player) @@ -24,7 +21,6 @@ namespace ReallifeGamemode.Server.Events player.SetData("isLoggedIn", false); player.Position = new Vector3(-1883.736, -781.4911, -10); - using (var dbContext = new DatabaseContext()) { if (!dbContext.WhitelistEntries.Any(w => w.SocialClubName.ToLower() == player.SocialClubName.ToLower())) @@ -41,12 +37,10 @@ namespace ReallifeGamemode.Server.Events } } - if (IsPlayerBanned(player)) return; player.TriggerEvent("SERVER:Login_ShowBrowser"); string msg = "~m~*** " + player.Name + " [" + player.SocialClubName + "] [ID: " + player.Handle.Value + "] (" + player.Address + ")"; ChatService.BroadcastAdmin(msg, AdminLevel.ADMIN); - } private bool IsPlayerBanned(Player player) diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index 6315f7cf..be46aac2 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -1,13 +1,16 @@ using System; +using System.Collections.Generic; +using System.Linq; using GTANetworkAPI; -using ReallifeGamemode.Database; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Factions.Medic; +using ReallifeGamemode.Server.Inventory; +using ReallifeGamemode.Server.Inventory.Interfaces; +using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; -using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Wanted; /** @@ -19,54 +22,53 @@ using ReallifeGamemode.Server.Wanted; namespace ReallifeGamemode.Server.Events { public class Death : Script - { - [ServerEvent(Event.PlayerDeath)] - public void OnPlayerDeath(Player player, Player killer, uint reason) { - if (!player.IsLoggedIn()) player.Kick(); - player.SetData("isDead", true); - - //TODO: Zum Full Release entfernen - ChatService.SendMessage(player, "Du bist durch " + (killer?.Name ?? "Niemanden") + " gestorben: " + reason.ToString()); - - int? killerId; - float killerPosX; - float killerPosY; - float killerPosZ; - float killerHeading; - - if (killer == null || killer.IsNull) - { - killerId = null; - killerPosX = -1; - killerPosY = -1; - killerPosZ = -1; - killerHeading = -1; - } - else - { - killerId = killer.GetUser().Id; - killerPosX = killer.Position.X; - killerPosY = killer.Position.Y; - killerPosZ = killer.Position.Z; - killerHeading = killer.Heading; - if (player.HasData("inGangWar") && killer.HasData("inGangWar")) + [ServerEvent(Event.PlayerDeath)] + public void OnPlayerDeath(Player player, Player killer, uint reason) { - Gangwar.Gangwar.GangwarKill(killer, player); - } + if (!player.IsLoggedIn()) player.Kick(); + player.SetData("isDead", true); - if (player != killer) - { - Autowanted.Check_AutoWanted(killer, player); - string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + Managers.WeaponManager.GetCauseOfDeathByHash(reason) + ")"; - ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); - } - } + //TODO: Zum Full Release entfernen + ChatService.SendMessage(player, "Du bist durch " + (killer?.Name ?? "Niemanden") + " gestorben: " + reason.ToString()); + + int? killerId; + float killerPosX; + float killerPosY; + float killerPosZ; + float killerHeading; + + if (killer == null || killer.IsNull) + { + killerId = null; + killerPosX = -1; + killerPosY = -1; + killerPosZ = -1; + killerHeading = -1; + } + else + { + killerId = killer.GetUser().Id; + killerPosX = killer.Position.X; + killerPosY = killer.Position.Y; + killerPosZ = killer.Position.Z; + killerHeading = killer.Heading; + if (player.HasData("inGangWar") && killer.HasData("inGangWar")) + { + Gangwar.Gangwar.GangwarKill(killer, player); + } + + if (player != killer) + { + Autowanted.Check_AutoWanted(killer, player); + string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + Managers.WeaponManager.GetCauseOfDeathByHash(reason) + ")"; + ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); + } + } User user = player.GetUser(); if (user.JailTime <= 0) { - //MEDIC AUFTRAG MedicTask reviveTask = new MedicTask() { @@ -81,49 +83,75 @@ namespace ReallifeGamemode.Server.Events }; Medic.AddTaskToList(reviveTask); - if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) - { - player.TriggerEvent("startDeathTimer", true); - } - else - { - player.TriggerEvent("startDeathTimer", false); + if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) + { + player.TriggerEvent("startDeathTimer", true); + } + else + { + player.TriggerEvent("startDeathTimer", false); + } + + //TODO PICTURE NOTIFICATION + SOUND für Medics + + player.ClearAttachments(); + + using (var userDeath = new DatabaseContext()) + { + List fItem = userDeath.UserItems.Where(u => u.UserId == user.Id).ToList(); + foreach (var item in fItem) + { + IItem iItem = InventoryManager.GetItemById(item.ItemId); + if (iItem is IWeaponDealItem obj) + { + int amount = item.Amount; + + Vector3 dropPosition = PlayerExtension.GetPositionFromPlayer(player, 0.6f, 0); + //new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8f); + Random r = new Random(); + GTANetworkAPI.Object grndObject; + Vector3 textPos = dropPosition; + + dropPosition.Z -= 1.05f; + grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0); + + GroundItem grndItem = new GroundItem { ItemId = iItem.Id, Amount = amount, Position = dropPosition }; + TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", textPos, 5, 0.5f, 4, new Color(255, 255, 255), false, 0); + GroundItem.AddGroundItem(grndItem, grndObject, grndTxtLbl); + + userDeath.Remove(item); + } + } + + var dead = new Database.Entities.Logs.Death + { + VictimId = player.GetUser().Id, + KillerId = killerId, + KillerPositionX = killerPosX, + KillerPositionY = killerPosY, + KillerPositionZ = killerPosZ, + KillerHeading = killerHeading, + VictimPositionX = player.Position.X, + VictimPositionY = player.Position.Y, + VictimPositionZ = player.Position.Z, + VictimHeading = player.Heading, + CauseOfDeath = reason.ToString() + }; + userDeath.DeathLogs.Add(dead); + userDeath.SaveChanges(); + } + } + + //JailTime.cs + Jail.Check_PutBehindBars(player); } - //TODO PICTURE NOTIFICATION + SOUND für Medics - - using (var userDeath = new DatabaseContext()) + [RemoteEvent("RespawnPlayerAtHospital")] + public void RespawnPlayerAtHospital(Player player) { - var dead = new Database.Entities.Logs.Death - { - VictimId = player.GetUser().Id, - KillerId = killerId, - KillerPositionX = killerPosX, - KillerPositionY = killerPosY, - KillerPositionZ = killerPosZ, - KillerHeading = killerHeading, - VictimPositionX = player.Position.X, - VictimPositionY = player.Position.Y, - VictimPositionZ = player.Position.Z, - VictimHeading = player.Heading, - CauseOfDeath = reason.ToString() - }; - userDeath.DeathLogs.Add(dead); - userDeath.SaveChanges(); + player.SetData("isDead", false); + player.RemoveAllWeapons(); + NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5)); } - } - - //JailTime.cs - Jail.Check_PutBehindBars(player); } - - - [RemoteEvent("RespawnPlayerAtHospital")] - public void RespawnPlayerAtHospital(Player player) - { - player.SetData("isDead", false); - player.RemoveAllWeapons(); - NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5)); - } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Events/Disconnect.cs b/ReallifeGamemode.Server/Events/Disconnect.cs index 174d1d47..4da12d49 100644 --- a/ReallifeGamemode.Server/Events/Disconnect.cs +++ b/ReallifeGamemode.Server/Events/Disconnect.cs @@ -1,16 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Managers; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Database; using ReallifeGamemode.Server.Types; +using ReallifeGamemode.Server.Util; /** * @overview Life of German Reallife - Event Login (Login.cs) @@ -21,50 +16,50 @@ using ReallifeGamemode.Server.Types; namespace ReallifeGamemode.Server.Events { public class Disconnect : Script - { - [ServerEvent(Event.PlayerDisconnected)] - public void OnPlayerDisconnected(Player player, DisconnectionType type, string reason) { - if (!player.IsLoggedIn()) return; + [ServerEvent(Event.PlayerDisconnected)] + public void OnPlayerDisconnected(Player player, DisconnectionType type, string reason) + { + if (!player.IsLoggedIn()) return; - if (type == DisconnectionType.Left) - { - NAPI.Util.ConsoleOutput(player.Name + " left"); - } - if (type == DisconnectionType.Kicked) - { - NAPI.Util.ConsoleOutput(player.Name + " kicked"); - } - if (type == DisconnectionType.Timeout) - { - NAPI.Util.ConsoleOutput(player.Name + " Timeoutet"); - } + if (type == DisconnectionType.Left) + { + NAPI.Util.ConsoleOutput(player.Name + " left"); + } + if (type == DisconnectionType.Kicked) + { + NAPI.Util.ConsoleOutput(player.Name + " kicked"); + } + if (type == DisconnectionType.Timeout) + { + NAPI.Util.ConsoleOutput(player.Name + " Timeoutet"); + } - if (GlobalHelper.DutyAdmins.Contains(player)) - { - GlobalHelper.DutyAdmins.Remove(player); - } + if (GlobalHelper.DutyAdmins.Contains(player)) + { + GlobalHelper.DutyAdmins.Remove(player); + } - if (player.GetUser().IsAdmin(AdminLevel.MAPPING)) - { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); - } + if (player.GetUser().IsAdmin(AdminLevel.MAPPING)) + { + ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); + } - JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); - if (job != null) job.StopJob(player, true); + JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); + if (job != null) job.StopJob(player, true); - using (var saveUser = new DatabaseContext()) - { - var user = player.GetUser(saveUser); - Vector3 pos = player.Position; + using (var saveUser = new DatabaseContext()) + { + var user = player.GetUser(saveUser); + Vector3 pos = player.Position; - user.PositionX = pos.X; - user.PositionY = pos.Y; - user.PositionZ = pos.Z; - saveUser.SaveChanges(); - user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; - } - player.SetData("isLoggedIn", false); + user.PositionX = pos.X; + user.PositionY = pos.Y; + user.PositionZ = pos.Z; + saveUser.SaveChanges(); + user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; + } + player.SetData("isLoggedIn", false); + } } - } } diff --git a/ReallifeGamemode.Server/Events/EnterVehicle.cs b/ReallifeGamemode.Server/Events/EnterVehicle.cs index d4bbceea..2f49f837 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicle.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicle.cs @@ -1,6 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; @@ -19,16 +17,16 @@ namespace ReallifeGamemode.Server.Events return; } + if (vehicle.HasMarkerBehind()) + vehicle.RemoveMarkerBehind(); + if (vehicle.GetServerVehicle() is FactionVehicle veh) { User u = client.GetUser(); - if (u.FactionId != null && (!veh.GetOwners().Contains(u.FactionId.Value)) && (veh.Model == VehicleHash.Burrito3) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true) + if (u.FactionId != null && (veh.GetOwners().Contains(u.FactionId.Value)) && (veh.Model == VehicleHash.Burrito3) && vehicle.HasData("weaponDeal") && vehicle.GetData("weaponDeal") == true) { - Vector3 vector = WeaponDealPoints.getRndWD_Route(client.GetUser().FactionId.Value); - if (vector == new Vector3()) - return; List dealPoint = new List(); - dealPoint.Add(vector); + dealPoint.Add(vehicle.GetData("weaponDealPoint")); CheckPointHandle.StartCheckPointRoute(client, dealPoint, 5000, 1, 7, "loadWeaponTransport"); } } diff --git a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs index d8e78c7d..9da246ef 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Types; @@ -10,51 +7,50 @@ using ReallifeGamemode.Server.WeaponDeal; namespace ReallifeGamemode.Server.Events { - public class EnterVehicleAttempt : Script - { - [ServerEvent(Event.PlayerEnterVehicleAttempt)] - public void OnPlayerEnterVehicleAttempt(Player player, GTANetworkAPI.Vehicle vehicle, sbyte seat) { - if ((VehicleHash)vehicle.Model == VehicleHash.Dune3) - { - if (seat == 1) seat = 0; - else if (seat == 0) seat = 1; - } - - if (seat != 0) return; - - User u = player.GetUser(); - - if (vehicle.GetServerVehicle() is FactionVehicle veh) - { - if (!veh.GetOwners().Contains(player.GetUser().FactionId ?? 0) && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) + [ServerEvent(Event.PlayerEnterVehicleAttempt)] + public void OnPlayerEnterVehicleAttempt(Player player, GTANetworkAPI.Vehicle vehicle, sbyte seat) { - if ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) - { - if (WeaponDealManager.checkWeaponDbyVehicle(vehicle)) - return; - } - player.StopAnimation(); - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); - return; + if ((VehicleHash)vehicle.Model == VehicleHash.Dune3) + { + if (seat == 1) seat = 0; + else if (seat == 0) seat = 1; + } + + if (seat != 0) return; + + User u = player.GetUser(); + + if (vehicle.GetServerVehicle() is FactionVehicle veh) + { + if (!veh.GetOwners().Contains(player.GetUser().FactionId ?? 0) && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) + { + if ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) + { + if (WeaponDealManager.checkWeaponDbyVehicle(vehicle)) + return; + } + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; + } + } + if (vehicle.GetServerVehicle() is SchoolVehicle sVeh) + { + if (!player.HasData("ActiveSchool")) + { + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; + } + if (sVeh.SchoolId != player.GetData("ActiveSchool")) + { + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; + } + } } - } - if (vehicle.GetServerVehicle() is SchoolVehicle sVeh) - { - if (!player.HasData("ActiveSchool")) - { - player.StopAnimation(); - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); - return; - } - if (sVeh.SchoolId != player.GetData("ActiveSchool")) - { - player.StopAnimation(); - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); - return; - } - } } - } } diff --git a/ReallifeGamemode.Server/Events/ExitVehicle.cs b/ReallifeGamemode.Server/Events/ExitVehicle.cs index 435fe8d4..d3c71247 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -1,12 +1,8 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.WeaponDeal; namespace ReallifeGamemode.Server.Events { @@ -15,8 +11,11 @@ namespace ReallifeGamemode.Server.Events [ServerEvent(Event.PlayerExitVehicleAttempt)] public void OnPlayerExitVehicle(Player client, GTANetworkAPI.Vehicle vehicle) { - if (client.VehicleSeat != -1) + if (client.VehicleSeat != 0) return; + + client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); + if (vehicle.GetServerVehicle() is FactionVehicle veh) { User u = client.GetUser(); @@ -25,6 +24,10 @@ namespace ReallifeGamemode.Server.Events CheckPointHandle.RemovePlayerHandlerFromList(client); client.TriggerEvent("destroyCP"); } + else if ((u.FactionId != null) && (veh.GetOwners().Contains(u.FactionId ?? 0)) && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) && vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) + { + client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); + } } if (vehicle.GetServerVehicle() is SchoolVehicle vehS) { diff --git a/ReallifeGamemode.Server/Events/Faction.cs b/ReallifeGamemode.Server/Events/Faction.cs index 2433cf87..e2dfb524 100644 --- a/ReallifeGamemode.Server/Events/Faction.cs +++ b/ReallifeGamemode.Server/Events/Faction.cs @@ -1,15 +1,15 @@ -using GTANetworkAPI; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; -using System.Collections.Generic; -using System.Linq; namespace ReallifeGamemode.Server.Events { - class Faction : Script + internal class Faction : Script { [RemoteEvent("OnFactionRanksEdit")] public void OnFactionRanksEdit(Player player, string jsonData) diff --git a/ReallifeGamemode.Server/Events/Inventory.cs b/ReallifeGamemode.Server/Events/Inventory.cs index a72edfac..c2c7df99 100644 --- a/ReallifeGamemode.Server/Events/Inventory.cs +++ b/ReallifeGamemode.Server/Events/Inventory.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; @@ -9,72 +7,69 @@ using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Util; -using Newtonsoft.Json; namespace ReallifeGamemode.Server.Events { public class Inventory : Script - { - [RemoteEvent("getNearVehicles")] - public void SrvEvent_GetNearVehicles(Player client) { - var user = client.GetUser(); - if (!client.IsInVehicle) - { - using (var context = new DatabaseContext()) + [RemoteEvent("getNearVehicles")] + public void SrvEvent_GetNearVehicles(Player client) { - foreach (GTANetworkAPI.Vehicle veh in NAPI.Pools.GetAllVehicles()) - { - List vehicleInventory = new List(); - if (veh.Position.DistanceTo(client.Position) < 5f) + var user = client.GetUser(); + if (!client.IsInVehicle) { - if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearLeft) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearRight) == DoorState.DoorOpen) - { - vehicleInventory = getVehItem(veh); - } - client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray()); - return; + using (var context = new DatabaseContext()) + { + foreach (GTANetworkAPI.Vehicle veh in NAPI.Pools.GetAllVehicles()) + { + List vehicleInventory = new List(); + if (veh.Position.DistanceTo(client.Position) < 5f) + { + if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearLeft) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearRight) == DoorState.DoorOpen) + { + vehicleInventory = getVehItem(veh); + } + client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray()); + return; + } + } + } } - } } - } - } - public List getVehItem(GTANetworkAPI.Vehicle veh) - { - List iName = new List(); - List iAmount = new List(); - List iId = new List(); - List vehicleInventory = new List(); - var inventoryWeight = 0; - using (var context = new DatabaseContext()) - { - ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); - List vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id); - foreach (var vehItem in vehicleItems) + public List getVehItem(GTANetworkAPI.Vehicle veh) { - IItem iItem = InventoryManager.GetItemById(vehItem.ItemId); - var currentItemWeight = iItem.Gewicht * vehItem.Amount; - inventoryWeight += currentItemWeight; - - iName.Add(iItem.Name); - iAmount.Add(vehItem.Amount); - iId.Add(iItem.Id); + List iName = new List(); + List iAmount = new List(); + List iId = new List(); + List vehicleInventory = new List(); + var inventoryWeight = 0; + using (var context = new DatabaseContext()) + { + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); + List vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id); + foreach (var vehItem in vehicleItems) + { + IItem iItem = InventoryManager.GetItemById(vehItem.ItemId); + var currentItemWeight = iItem.Gewicht * vehItem.Amount; + inventoryWeight += currentItemWeight; + iName.Add(iItem.Name); + iAmount.Add(vehItem.Amount); + iId.Add(iItem.Id); + } + var vehInv = new VehicleInventory + { + ID = serverVehicle.Id, + currentWeight = inventoryWeight, + totalWeight = 250, + ivehName = iName.ToArray(), + ivehAmount = iAmount.ToArray(), + ivehId = iId.ToArray() + }; + vehicleInventory.Add(vehInv); + } + return vehicleInventory; } - var vehInv = new VehicleInventory - { - ID = serverVehicle.Id, - currentWeight = inventoryWeight, - totalWeight = 250, - ivehName = iName.ToArray(), - ivehAmount = iAmount.ToArray(), - ivehId = iId.ToArray() - }; - vehicleInventory.Add(vehInv); - } - return vehicleInventory; } - - } } diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 741e01d4..1050a40a 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -2,21 +2,21 @@ using System.Linq; using GTANetworkAPI; using Newtonsoft.Json; -using ReallifeGamemode.Server.Classes; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Classes; +using ReallifeGamemode.Server.DrivingSchool; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Factions.Medic; using ReallifeGamemode.Server.Finance; using ReallifeGamemode.Server.Inventory; +using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Database; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Inventory.Interfaces; -using ReallifeGamemode.Server.DrivingSchool; using ReallifeGamemode.Server.Types; -using Microsoft.EntityFrameworkCore; +using ReallifeGamemode.Server.Util; +using ReallifeGamemode.Server.WeaponDeal; + /** * @overview Life of German Reallife - Event Key (Key.cs) * @author VegaZ @@ -46,6 +46,7 @@ namespace ReallifeGamemode.Server.Events tempBlip.Transparency.ToString(), 200.ToString(), tempBlip.ShortRange.ToString(), 0.ToString(), 0.ToString()); player.SendNotification("~y~Blip~s~ erstellt!", false); break; + case "atm": SaveManager.OnSaveBlipData(player, "500", "Geldautomat", 0.7.ToString(), "11", "0", "200", true.ToString(), 0.ToString(), 0.ToString()); @@ -170,7 +171,6 @@ namespace ReallifeGamemode.Server.Events if (!player.IsLoggedIn()) return; var user = player.GetUser(); - if (user?.FactionId != null) { DutyPoint nearestDuty = PositionManager.DutyPoints.Find(d => d.Position.DistanceTo(player.Position) <= 1.5 && d.FactionId == user.FactionId); @@ -179,7 +179,63 @@ namespace ReallifeGamemode.Server.Events ElevatorPoint nearestElevatorPoint = PositionManager.ElevatorPoints.Find(e => e.Position.DistanceTo(player.Position) <= 1.5 && (user.FactionId == 1 || user.FactionId == 3)); ClotheshopPoint nearestClotheShopPoint = PositionManager.clotheshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5 && (!user.GetData("duty"))); ItemshopPoint nearestItemShopPoint = PositionManager.itemshopPoints.Find(s => s.Position.DistanceTo(player.Position) <= 1.5); + BehindVehiclePoint nearestBehindVehiclePoint = MarkerBehinVehicle.behindVehiclePoints.Find(s => s.marker.Position.DistanceTo(player.Position) <= 3 && (user.FactionId == 8 || user.FactionId == 7 || user.FactionId == 1 || user.FactionId == 3)); + if (nearestBehindVehiclePoint != null) + { + if (player.HasAttachment("ammobox")) return; + using (var dbContext = new DatabaseContext()) + { + List vehicleItems = dbContext.VehicleItems.Where(f => f.GetVehicle().GetVehicle() == nearestBehindVehiclePoint.vehicle && InventoryManager.GetItemById(f.ItemId) is IWeaponDealItem).ToList(); + if (vehicleItems.Count == 0) + { + GTANetworkAPI.Vehicle vehicle = nearestBehindVehiclePoint.vehicle; + + if (WeaponDealManager.checkWeaponDbyVehicle(vehicle)) + { + vehicle.ResetData("WeaponDealLoad"); + } + + nearestBehindVehiclePoint.vehicle.RemoveMarkerBehind(); + + return; + } + foreach (var v in vehicleItems) + { + int itemToAdd = 0; + for (int i = 1; i <= v.Amount; i++) + { + if (InventoryManager.GetUserInventoryWeight(player) + (i * InventoryManager.GetItemById(v.ItemId).Gewicht) > 40000) + { + break; + } + else + { + itemToAdd = i; + } + } + if (itemToAdd == 0) + break; + + v.Amount -= itemToAdd; + if (v.Amount <= 0) + dbContext.VehicleItems.Remove(v); + + var newItem = new UserItem() + { + ItemId = v.ItemId, + Slot = v.Slot, + Amount = itemToAdd, + UserId = user.Id, + }; + + InventoryManager.AddItemToInventory(player, newItem.Id, newItem.Amount); + nearestBehindVehiclePoint.usePoint(player); + dbContext.SaveChanges(); + return; + } + } + } if (nearestDuty != null)// Duty Point { var nameTagColor = new Color(0, 0, 0); @@ -259,7 +315,6 @@ namespace ReallifeGamemode.Server.Events } if (nearestWeapon != null) // Weapon Point { - List primarys = new List(); List secondarys = new List(); List melees = new List(); @@ -271,11 +326,13 @@ namespace ReallifeGamemode.Server.Events melees.Add("Keine"); specials.Add("Keine"); - - using (var context = new DatabaseContext()) { - + if (player.HasAttachment("ammobox")) + { + player.AddAttachment("ammobox", true); + player.StopAnimation(); + } List fItem = context.UserItems.Where(u => u.UserId == user.Id).ToList(); foreach (var item in fItem) @@ -285,7 +342,11 @@ namespace ReallifeGamemode.Server.Events { FactionWeapon weapon = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == iItem.Name).FirstOrDefault(); if (weapon == null) + { + context.Remove(item); continue; + } + weapon.Ammount += item.Amount; ChatService.SendMessage(player, item.Amount + " " + iItem.Name + " wurden im Waffenlager hinzugefürgt."); context.Remove(item); @@ -311,14 +372,17 @@ namespace ReallifeGamemode.Server.Events if (user.FactionRank.Order >= weapon.Rank) primarys.Add(weapon.WeaponModel.ToString()); break; + case 2: if (user.FactionRank.Order >= weapon.Rank) secondarys.Add(weapon.WeaponModel.ToString()); break; + case 3: if (user.FactionRank.Order >= weapon.Rank) melees.Add(weapon.WeaponModel.ToString()); break; + case 4: if (user.FactionRank.Order >= weapon.Rank) specials.Add(weapon.WeaponModel.ToString()); @@ -374,7 +438,8 @@ namespace ReallifeGamemode.Server.Events public void KeyPressI(Player player) { if (!player.IsLoggedIn()) return; - InventoryManager.GetUserItems(player); + player.TriggerEvent("inventoryShow"); + InventoryManager.SetBackpackItems(player); } [RemoteEvent("keyPress:O")] @@ -429,9 +494,11 @@ namespace ReallifeGamemode.Server.Events case 11: tops.Add(cloth.ClothId.ToString()); break; + case 4: legs.Add(cloth.ClothId.ToString()); break; + case 6: shoes.Add(cloth.ClothId.ToString()); break; @@ -441,7 +508,6 @@ namespace ReallifeGamemode.Server.Events player.TriggerEvent("showDutyClothMenu", hats.ToArray(), tops.ToArray(), legs.ToArray(), shoes.ToArray()); } } - } [RemoteEvent("keyPress:L")] @@ -526,7 +592,6 @@ namespace ReallifeGamemode.Server.Events if (!player.IsInVehicle) { - Vehicle.VehicleMenuLockCarEvent(player); GroundItem.PickUpGroundItem(player); diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index 3e3e7a0a..301c1fbc 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -1,16 +1,14 @@ using System.Linq; using GTANetworkAPI; using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; -using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Server.Wanted; -using ReallifeGamemode.Database; -using ReallifeGamemode.Server.Types; -using ReallifeGamemode.Database.Entities; -using Newtonsoft.Json; /** * @overview Life of German Reallife - Event Login (Login.cs) @@ -21,138 +19,141 @@ using Newtonsoft.Json; namespace ReallifeGamemode.Server.Events { public class Login : Script - { - [RemoteEvent("CLIENT:Login_LoginRequest")] - public void OnPlayerLogin(Player player, string username, string password) { - using (var dbContext = new DatabaseContext()) - { - var user = dbContext.Users - .Include(u => u.Group) - .Include(u => u.BankAccount) - .SingleOrDefault(b => b.Name == username); - - if (user == null) + [RemoteEvent("CLIENT:Login_LoginRequest")] + public void OnPlayerLogin(Player player, string username, string password) { - player.TriggerEvent("SERVER:Login_Error", "Benutzer existiert nicht! Registriere dich zuerst!"); + using (var dbContext = new DatabaseContext()) + { + var user = dbContext.Users + .Include(u => u.Group) + .Include(u => u.BankAccount) + .SingleOrDefault(b => b.Name == username); + + if (user == null) + { + player.TriggerEvent("SERVER:Login_Error", "Benutzer existiert nicht! Registriere dich zuerst!"); + } + else + { + if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password)) + { + player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!"); + //TODO ?? Log einbauen für den bösen Bub. + player.Kick(); + } + if (user.Password != NAPI.Util.GetHashSha256(password)) + { + player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!"); + } + else + { + player.Name = username; + player.TriggerEvent("SERVER:Login_Success"); + player.SetData("isLoggedIn", true); + player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true)); + player.SetData("spec", true); + player.SetData("duty", false); + player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0); + Gangwar.Gangwar.loadPlayer(player); + if (user.FactionLeader) + { + player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); + } + if (user.IsAdmin(AdminLevel.HEADADMIN)) + { + player.SetData("editmode", false); + player.SetData("quicksavemode", "none"); + } + + var userBankAccount = user.BankAccount; + userBankAccount.Balance = userBankAccount.Balance; + + user.Wanteds = user.Wanteds; + + if (user.Group != null) + { + string msg = $"{player.Name} ist wieder online."; + ChatService.BroadcastGroup(msg, user.Group); + } + + if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName)) + { + ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING); + } + else if (user.IsAdmin(AdminLevel.MAPPING)) + { + ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING); + } + + var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); + player.SetData("items", userItems); + + switch (user.FactionId) + { + case null: + player.SetSharedData("blipColor", 0); + break; + + case 8: + player.SetSharedData("blipColor", 83); + break; + + case 7: + player.SetSharedData("blipColor", 52); + break; + + case 4: + player.SetSharedData("blipColor", 5); + break; + } + + if (user.CharacterId == null) + { + var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension"); + currentPlayerCreatorDimension++; + NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension); + player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension"); + player.Position = new Vector3(402.8664, -996.4108, -99.00027); + player.Rotation = new Vector3(0, 0, 180); + player.TriggerEvent("toggleCreator"); + } + else + { + CharacterCreator.ApplyCharacter(player); + UpdateCharacterCloth.LoadCharacterDefaults(player); + if (user.JailTime <= 0) + { + NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0); + } + else + { + Jail.Check_PutBehindBars(player); + } + } + + player.TriggerEvent("draw", player.Name, player.Handle.Value); + if (user.Dead == true) + { + if (user.IsAdmin(AdminLevel.ADMIN) == true) + { + player.TriggerEvent("startDeathTimer", true); + player.Health = 0; + } + else + { + player.TriggerEvent("startDeathTimer", false); + player.Health = 0; + } + player.SetData("isDead", true); + } + else + { + player.SetData("isDead", false); + } + } + } + } } - else - { - if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password)) - { - player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!"); - //TODO ?? Log einbauen für den bösen Bub. - player.Kick(); - } - if (user.Password != NAPI.Util.GetHashSha256(password)) - { - player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!"); - } - else - { - player.Name = username; - player.TriggerEvent("SERVER:Login_Success"); - player.SetData("isLoggedIn", true); - player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true)); - player.SetData("spec", true); - player.SetData("duty", false); - player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0); - Gangwar.Gangwar.loadPlayer(player); - if (user.FactionLeader) - { - player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); - } - if (user.IsAdmin(AdminLevel.HEADADMIN)) - { - player.SetData("editmode", false); - player.SetData("quicksavemode", "none"); - } - - var userBankAccount = user.BankAccount; - userBankAccount.Balance = userBankAccount.Balance; - - user.Wanteds = user.Wanteds; - - if (user.Group != null) - { - string msg = $"{player.Name} ist wieder online."; - ChatService.BroadcastGroup(msg, user.Group); - } - - if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName)) - { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING); - } - else if (user.IsAdmin(AdminLevel.MAPPING)) - { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING); - } - - var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); - player.SetData("items", userItems); - - switch (user.FactionId) - { - case null: - player.SetSharedData("blipColor", 0); - break; - case 8: - player.SetSharedData("blipColor", 83); - break; - case 7: - player.SetSharedData("blipColor", 52); - break; - case 4: - player.SetSharedData("blipColor", 5); - break; - } - - if (user.CharacterId == null) - { - var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension"); - currentPlayerCreatorDimension++; - NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension); - player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension"); - player.Position = new Vector3(402.8664, -996.4108, -99.00027); - player.Rotation = new Vector3(0, 0, 180); - player.TriggerEvent("toggleCreator"); - } - else - { - CharacterCreator.ApplyCharacter(player); - UpdateCharacterCloth.LoadCharacterDefaults(player); - if (user.JailTime <= 0) - { - NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0); - } - else - { - Jail.Check_PutBehindBars(player); - } - } - - player.TriggerEvent("draw", player.Name, player.Handle.Value); - if (user.Dead == true) - { - if (user.IsAdmin(AdminLevel.ADMIN) == true) - { - player.TriggerEvent("startDeathTimer", true); - player.Health = 0; - } - else - { - player.TriggerEvent("startDeathTimer", false); - player.Health = 0; - } - player.SetData("isDead", true); - } - else - { - player.SetData("isDead", false); - } - } - } - } } - } } diff --git a/ReallifeGamemode.Server/Events/Register.cs b/ReallifeGamemode.Server/Events/Register.cs index 1a0b461f..4b9b4b9b 100644 --- a/ReallifeGamemode.Server/Events/Register.cs +++ b/ReallifeGamemode.Server/Events/Register.cs @@ -1,7 +1,7 @@ using System.Linq; using GTANetworkAPI; -using ReallifeGamemode.Database.Models; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; /** * @overview Life of German Reallife - Event Register (Register.cs) @@ -11,7 +11,7 @@ using ReallifeGamemode.Database.Entities; namespace ReallifeGamemode.Server.Events { - class Register : Script + internal class Register : Script { [RemoteEvent("CLIENT:Login_RegisterRequest")] public void OnPlayerRegister(Player player, string username, string password, string passwordRepeat) diff --git a/ReallifeGamemode.Server/Events/ResourceStop.cs b/ReallifeGamemode.Server/Events/ResourceStop.cs index 3eced20a..285c3844 100644 --- a/ReallifeGamemode.Server/Events/ResourceStop.cs +++ b/ReallifeGamemode.Server/Events/ResourceStop.cs @@ -1,6 +1,6 @@ -using GTANetworkAPI; +using System.Linq; +using GTANetworkAPI; using ReallifeGamemode.Database.Models; -using System.Linq; /** * @overview Life of German Reallife - Event ResourceStop (ResourceStop.cs) @@ -11,24 +11,24 @@ using System.Linq; namespace ReallifeGamemode.Server.Events { public class ResourceStop : Script - { - [ServerEvent(Event.ResourceStop)] - public void OnResourceStop() { - var users = NAPI.Pools.GetAllPlayers(); - - foreach (Player user in users) - { - using (var saveUsers = new DatabaseContext()) + [ServerEvent(Event.ResourceStop)] + public void OnResourceStop() { - var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name); + var users = NAPI.Pools.GetAllPlayers(); - saveUser.PositionX = user.Position.X; - saveUser.PositionY = user.Position.Y; - saveUser.PositionZ = user.Position.Z; - saveUsers.SaveChanges(); + foreach (Player user in users) + { + using (var saveUsers = new DatabaseContext()) + { + var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name); + + saveUser.PositionX = user.Position.X; + saveUser.PositionY = user.Position.Y; + saveUser.PositionZ = user.Position.Z; + saveUsers.SaveChanges(); + } + } } - } } - } } diff --git a/ReallifeGamemode.Server/Events/Siren.cs b/ReallifeGamemode.Server/Events/Siren.cs index d21a4a3d..ec6f6355 100644 --- a/ReallifeGamemode.Server/Events/Siren.cs +++ b/ReallifeGamemode.Server/Events/Siren.cs @@ -1,11 +1,9 @@ -using GTANetworkAPI; -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Events { - class Siren : Script + internal class Siren : Script { private readonly Dictionary _sirenStates = new Dictionary(); @@ -21,7 +19,6 @@ namespace ReallifeGamemode.Server.Events pV.SetSharedData("sirenSound", newValue); NAPI.ClientEvent.TriggerClientEventForAll("toggleVehicleSiren", pV, newValue); - } } } diff --git a/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs b/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs index bc1aeead..4e91d05a 100644 --- a/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs +++ b/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs @@ -9,255 +9,253 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Events { public class UpdateCharacterCloth : Script - { - [RemoteEvent("updateDutyProp")] - public void UpdateDutyProp(Player player, int componentId, int componentVariation) { - if (componentId != -1) - { - player.SetAccessories(componentId, componentVariation, 0); - } - else - { - player.ClearAccessory(0); - player.ClearAccessory(1); - player.ClearAccessory(2); - } - } - - [RemoteEvent("updateDutyCloth")] - public void UpdateDutyCloth(Player player, int componentId, int componentVariation) - { - if (componentId == 11) - { - //TODO Spezielle Duty Kleidung in Datenbank einpflegen (Ergibt bei Cop-Kleidung NULL) - using (var context = new DatabaseContext()) + [RemoteEvent("updateDutyProp")] + public void UpdateDutyProp(Player player, int componentId, int componentVariation) { - var character = player.GetUser().GetCharacter(); - - var combination = context.ClothCombinations.FirstOrDefault(c => c.Top == componentVariation && c.Gender == character.Gender); - player.SetClothes(11, componentVariation, 0); - if (combination != null) - { - player.SetClothes(3, combination.Torso, 0); - player.SetClothes(8, combination.Undershirt, 0); - } - } - } - else - { - player.SetClothes(componentId, componentVariation, 0); - } - } - - [RemoteEvent("saveCharacterCloth")] - public void SaveDutyCloth(Player client, string JSlotType, string JSlotId, string JClothId) - { - using (var context = new DatabaseContext()) - { - int[] slotType = JsonConvert.DeserializeObject(JSlotType); - int[] slotId = JsonConvert.DeserializeObject(JSlotId); - int[] clothId = JsonConvert.DeserializeObject(JClothId); - - User user = client.GetUser(); - user = context.Users.FirstOrDefault(u => u.Id == user.Id); - - var character = client.GetUser().GetCharacter(); - - var charClothes = context.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id); - if (charClothes == null) - { - for (var x = 0; x < slotType.Length; x++) - { - CharacterCloth newCloth = new CharacterCloth + if (componentId != -1) { - UserId = user.Id, - - Duty = true, - - SlotType = (byte)slotType[x], - SlotId = slotId[x], - ClothId = clothId[x] - }; - context.CharacterClothes.Add(newCloth); - } - if (user.GetCharacter().Gender == false) - { - CharacterCloth newTorso = new CharacterCloth - { - UserId = user.Id, - - Duty = true, - - SlotType = 0, - SlotId = 3, - ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso - }; - CharacterCloth newUndershirt = new CharacterCloth - { - UserId = user.Id, - - Duty = true, - - SlotType = 0, - SlotId = 8, - ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt - }; - context.CharacterClothes.Add(newTorso); - context.CharacterClothes.Add(newUndershirt); - } - } - else - { - for (var x = 0; x < slotType.Length; x++) - { - var loopCloth = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == slotType[x] && u.SlotId == slotId[x]); - loopCloth.ClothId = clothId[x]; - } - CharacterCloth torso = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 3); - CharacterCloth undershirt = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 8); - - torso.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso; - undershirt.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt; - } - context.SaveChanges(); - } - LoadCharacterDefaults(client); - } - - [RemoteEvent("defaultCharacterCloth")] - public static void LoadCharacterDefaults(Player player) - { - User user = player.GetUser(); - using (var context = new DatabaseContext()) - { - List charClothes = context.CharacterClothes.ToList().FindAll(c => c.UserId == user.Id && c.Duty == false); - player.ClearAccessory(0); - player.ClearAccessory(1); - player.ClearAccessory(2); - player.ClearAccessory(6); - player.ClearAccessory(7); - - foreach (var cloth in charClothes) - { - if (cloth.SlotType == 1) - { - player.SetAccessories(cloth.SlotId, cloth.ClothId, 0); - } - else - { - player.SetClothes(cloth.SlotId, cloth.ClothId, cloth.Texture); - } - } - } - } - - [RemoteEvent("SERVER:BuyCharacterClothes")] - public void RmtEvent_BuyClothes(Player client, string type, string jsonData) - { - /* - * [0] ComponentID - * [1] TextureID - * [2] ClotheID - * [3] TorsoID - * [4] UndershirtID - * [5] UndershirtTextureID - * [6] Price - */ - - int[] data = JsonConvert.DeserializeObject(jsonData); - User user = client.GetUser(); - if (user.Handmoney < data[6]) - { - client.TriggerEvent("clothesMenu:Error"); - return; - } - - if (type == "clothe") - { - if (data[0] == 11)//for tops - { - client.SetClothes(11, data[2], data[1]); //set Top - client.SetClothes(8, data[4], data[5]); //set undershirt - client.SetClothes(3, data[3], 0); //set Torso - } - else - { - client.SetClothes(data[0], data[2], data[1]); - } - using (var dbContext = new DatabaseContext()) - { - - var clothes = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == data[0] && c.Duty == false); - - if(clothes == null) - { - CharacterCloth newCloth = new CharacterCloth - { - UserId = user.Id, - - Duty = false, - - SlotType = 0, - SlotId = data[0], - ClothId = data[2], - Texture = data[1] - }; - dbContext.CharacterClothes.Add(newCloth); - } - else - { - clothes.ClothId = data[2]; - clothes.Texture = data[1]; - } - if(data[0] == 11) - { - var torso = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 3 && c.Duty == false); - var undershirt = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 8 && c.Duty == false); - if(torso == null) - { - CharacterCloth newTorso = new CharacterCloth - { - UserId = user.Id, - - Duty = false, - - SlotType = 0, - SlotId = 3, - ClothId = data[3] - }; - dbContext.CharacterClothes.Add(newTorso); + player.SetAccessories(componentId, componentVariation, 0); } else { - torso.ClothId = data[3]; + player.ClearAccessory(0); + player.ClearAccessory(1); + player.ClearAccessory(2); } - if(undershirt == null) + } + + [RemoteEvent("updateDutyCloth")] + public void UpdateDutyCloth(Player player, int componentId, int componentVariation) + { + if (componentId == 11) { - CharacterCloth newUndershirt = new CharacterCloth - { - UserId = user.Id, - Duty = false, - SlotType = 0, - SlotId = 8, - ClothId = data[4], - Texture = data[5] - }; - dbContext.CharacterClothes.Add(newUndershirt); + //TODO Spezielle Duty Kleidung in Datenbank einpflegen (Ergibt bei Cop-Kleidung NULL) + using (var context = new DatabaseContext()) + { + var character = player.GetUser().GetCharacter(); + + var combination = context.ClothCombinations.FirstOrDefault(c => c.Top == componentVariation && c.Gender == character.Gender); + player.SetClothes(11, componentVariation, 0); + if (combination != null) + { + player.SetClothes(3, combination.Torso, 0); + player.SetClothes(8, combination.Undershirt, 0); + } + } } else { - undershirt.ClothId = data[4]; - undershirt.Texture = data[5]; + player.SetClothes(componentId, componentVariation, 0); + } + } + + [RemoteEvent("saveCharacterCloth")] + public void SaveDutyCloth(Player client, string JSlotType, string JSlotId, string JClothId) + { + using (var context = new DatabaseContext()) + { + int[] slotType = JsonConvert.DeserializeObject(JSlotType); + int[] slotId = JsonConvert.DeserializeObject(JSlotId); + int[] clothId = JsonConvert.DeserializeObject(JClothId); + + User user = client.GetUser(); + user = context.Users.FirstOrDefault(u => u.Id == user.Id); + + var character = client.GetUser().GetCharacter(); + + var charClothes = context.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id); + if (charClothes == null) + { + for (var x = 0; x < slotType.Length; x++) + { + CharacterCloth newCloth = new CharacterCloth + { + UserId = user.Id, + + Duty = true, + + SlotType = (byte)slotType[x], + SlotId = slotId[x], + ClothId = clothId[x] + }; + context.CharacterClothes.Add(newCloth); + } + if (user.GetCharacter().Gender == false) + { + CharacterCloth newTorso = new CharacterCloth + { + UserId = user.Id, + + Duty = true, + + SlotType = 0, + SlotId = 3, + ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso + }; + CharacterCloth newUndershirt = new CharacterCloth + { + UserId = user.Id, + + Duty = true, + + SlotType = 0, + SlotId = 8, + ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt + }; + context.CharacterClothes.Add(newTorso); + context.CharacterClothes.Add(newUndershirt); + } + } + else + { + for (var x = 0; x < slotType.Length; x++) + { + var loopCloth = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == slotType[x] && u.SlotId == slotId[x]); + loopCloth.ClothId = clothId[x]; + } + CharacterCloth torso = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 3); + CharacterCloth undershirt = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 8); + + torso.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso; + undershirt.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt; + } + context.SaveChanges(); + } + LoadCharacterDefaults(client); + } + + [RemoteEvent("defaultCharacterCloth")] + public static void LoadCharacterDefaults(Player player) + { + User user = player.GetUser(); + using (var context = new DatabaseContext()) + { + List charClothes = context.CharacterClothes.ToList().FindAll(c => c.UserId == user.Id && c.Duty == false); + player.ClearAccessory(0); + player.ClearAccessory(1); + player.ClearAccessory(2); + player.ClearAccessory(6); + player.ClearAccessory(7); + + foreach (var cloth in charClothes) + { + if (cloth.SlotType == 1) + { + player.SetAccessories(cloth.SlotId, cloth.ClothId, 0); + } + else + { + player.SetClothes(cloth.SlotId, cloth.ClothId, cloth.Texture); + } + } + } + } + + [RemoteEvent("SERVER:BuyCharacterClothes")] + public void RmtEvent_BuyClothes(Player client, string type, string jsonData) + { + /* + * [0] ComponentID + * [1] TextureID + * [2] ClotheID + * [3] TorsoID + * [4] UndershirtID + * [5] UndershirtTextureID + * [6] Price + */ + + int[] data = JsonConvert.DeserializeObject(jsonData); + User user = client.GetUser(); + if (user.Handmoney < data[6]) + { + client.TriggerEvent("clothesMenu:Error"); + return; + } + + if (type == "clothe") + { + if (data[0] == 11)//for tops + { + client.SetClothes(11, data[2], data[1]); //set Top + client.SetClothes(8, data[4], data[5]); //set undershirt + client.SetClothes(3, data[3], 0); //set Torso + } + else + { + client.SetClothes(data[0], data[2], data[1]); + } + using (var dbContext = new DatabaseContext()) + { + var clothes = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == data[0] && c.Duty == false); + + if (clothes == null) + { + CharacterCloth newCloth = new CharacterCloth + { + UserId = user.Id, + + Duty = false, + + SlotType = 0, + SlotId = data[0], + ClothId = data[2], + Texture = data[1] + }; + dbContext.CharacterClothes.Add(newCloth); + } + else + { + clothes.ClothId = data[2]; + clothes.Texture = data[1]; + } + if (data[0] == 11) + { + var torso = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 3 && c.Duty == false); + var undershirt = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 8 && c.Duty == false); + if (torso == null) + { + CharacterCloth newTorso = new CharacterCloth + { + UserId = user.Id, + + Duty = false, + + SlotType = 0, + SlotId = 3, + ClothId = data[3] + }; + dbContext.CharacterClothes.Add(newTorso); + } + else + { + torso.ClothId = data[3]; + } + if (undershirt == null) + { + CharacterCloth newUndershirt = new CharacterCloth + { + UserId = user.Id, + Duty = false, + SlotType = 0, + SlotId = 8, + ClothId = data[4], + Texture = data[5] + }; + dbContext.CharacterClothes.Add(newUndershirt); + } + else + { + undershirt.ClothId = data[4]; + undershirt.Texture = data[5]; + } + } + client.GetUser(dbContext).Handmoney -= data[6]; + dbContext.SaveChanges(); + client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); + } + client.TriggerEvent("clothesMenu:updateLast", data[2], data[1], data[4], data[5], data[3]); } - } - client.GetUser(dbContext).Handmoney -= data[6]; - dbContext.SaveChanges(); - client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); - } - client.TriggerEvent("clothesMenu:updateLast", data[2], data[1], data[4], data[5], data[3]); - } } - } } diff --git a/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs b/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs index b8958b05..204ece77 100644 --- a/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs +++ b/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs @@ -1,22 +1,18 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; using ReallifeGamemode.Server.Managers; - namespace ReallifeGamemode.Server.Events { public class UpdateCharacterElevator : Script - { - [RemoteEvent("sendPlayerToStage")] - public void SaveWeaponSelection(Player client, string stage) { - ElevatorPoint elevator = PositionManager.ElevatorPoints.Find(e => e.Stage == stage); - if (elevator != null) - { - client.Position = elevator.Position; - } + [RemoteEvent("sendPlayerToStage")] + public void SaveWeaponSelection(Player client, string stage) + { + ElevatorPoint elevator = PositionManager.ElevatorPoints.Find(e => e.Stage == stage); + if (elevator != null) + { + client.Position = elevator.Position; + } + } } - } } diff --git a/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs b/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs index 9dcf4d58..1e29236b 100644 --- a/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs +++ b/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs @@ -1,5 +1,4 @@ -using System.Collections.Generic; -using System.Linq; +using System.Linq; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; @@ -8,103 +7,101 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Events { public class UpdateCharacterWeapon : Script - { - [RemoteEvent("updateWeaponSelection")] - public void UpdateWeaponSelection(Player client, string weaponModel, int slot) { - if (weaponModel == "Keine") - { - client.RemoveAllWeapons(); - return; - } - - WeaponHash weaponHash = NAPI.Util.WeaponNameToModel(weaponModel); - - if (slot == 1) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - if (slot == 2) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - if (slot == 3) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - if (slot == 4) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - } - - [RemoteEvent("cancelWeaponSelection")] - public void CancelWeaponSelection(Player client) - { - client.RemoveAllWeapons(); - } - - - [RemoteEvent("saveWeaponSelection")] - public void SaveWeaponSelection(Player client, string primaryModel, string secondaryModel, string meleeModel, string specialModel) - { - client.RemoveAllWeapons(); - if (!uint.TryParse(primaryModel, out uint primary)) - { - if (primaryModel.Contains("mk2") && !primaryModel.Contains("_mk2")) primaryModel = primaryModel.Replace("mk2", "_mk2"); - primary = NAPI.Util.GetHashKey($"weapon_{primaryModel}"); - } - if (!uint.TryParse(secondaryModel, out uint secondary)) - { - if (secondaryModel.Contains("mk2") && !secondaryModel.Contains("_mk2")) secondaryModel = secondaryModel.Replace("mk2", "_mk2"); - secondary = NAPI.Util.GetHashKey($"weapon_{secondaryModel}"); - } - if (!uint.TryParse(meleeModel, out uint melee)) - { - if (meleeModel.Contains("mk2") && !meleeModel.Contains("_mk2")) meleeModel = meleeModel.Replace("mk2", "_mk2"); - melee = NAPI.Util.GetHashKey($"weapon_{meleeModel}"); - } - - - client.GiveWeapon((WeaponHash)primary, 50); - client.GiveWeapon((WeaponHash)secondary, 150); - client.GiveWeapon((WeaponHash)melee, 1); - if (specialModel != "Schutzweste") - { - client.Armor = 0; - if (!uint.TryParse(specialModel, out uint special)) + [RemoteEvent("updateWeaponSelection")] + public void UpdateWeaponSelection(Player client, string weaponModel, int slot) { - if (specialModel.Contains("mk2") && !specialModel.Contains("_mk2")) specialModel = specialModel.Replace("mk2", "_mk2"); - special = NAPI.Util.GetHashKey($"weapon_{specialModel}"); - } - client.GiveWeapon((WeaponHash)special, 50); - } - else - { - client.Armor = 50; - } + if (weaponModel == "Keine") + { + client.RemoveAllWeapons(); + return; + } - using (var context = new DatabaseContext()) - { - User user = client.GetUser(); - FactionWeapon slot1 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == primaryModel).FirstOrDefault(); - if (slot1 != null) - slot1.Ammount -= 1; - FactionWeapon slot2 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == secondaryModel).FirstOrDefault(); - if (slot2 != null) - slot2.Ammount -= 1; - FactionWeapon slot3 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == meleeModel).FirstOrDefault(); - if (slot3 != null) - slot3.Ammount -= 1; - FactionWeapon slot4 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == specialModel).FirstOrDefault(); - if (slot4 != null) - slot4.Ammount -= 1; - context.SaveChanges(); - } + WeaponHash weaponHash = NAPI.Util.WeaponNameToModel(weaponModel); + + if (slot == 1) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + if (slot == 2) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + if (slot == 3) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + if (slot == 4) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + } + + [RemoteEvent("cancelWeaponSelection")] + public void CancelWeaponSelection(Player client) + { + client.RemoveAllWeapons(); + } + + [RemoteEvent("saveWeaponSelection")] + public void SaveWeaponSelection(Player client, string primaryModel, string secondaryModel, string meleeModel, string specialModel) + { + client.RemoveAllWeapons(); + if (!uint.TryParse(primaryModel, out uint primary)) + { + if (primaryModel.Contains("mk2") && !primaryModel.Contains("_mk2")) primaryModel = primaryModel.Replace("mk2", "_mk2"); + primary = NAPI.Util.GetHashKey($"weapon_{primaryModel}"); + } + if (!uint.TryParse(secondaryModel, out uint secondary)) + { + if (secondaryModel.Contains("mk2") && !secondaryModel.Contains("_mk2")) secondaryModel = secondaryModel.Replace("mk2", "_mk2"); + secondary = NAPI.Util.GetHashKey($"weapon_{secondaryModel}"); + } + if (!uint.TryParse(meleeModel, out uint melee)) + { + if (meleeModel.Contains("mk2") && !meleeModel.Contains("_mk2")) meleeModel = meleeModel.Replace("mk2", "_mk2"); + melee = NAPI.Util.GetHashKey($"weapon_{meleeModel}"); + } + + client.GiveWeapon((WeaponHash)primary, 50); + client.GiveWeapon((WeaponHash)secondary, 150); + client.GiveWeapon((WeaponHash)melee, 1); + if (specialModel != "Schutzweste") + { + client.Armor = 0; + if (!uint.TryParse(specialModel, out uint special)) + { + if (specialModel.Contains("mk2") && !specialModel.Contains("_mk2")) specialModel = specialModel.Replace("mk2", "_mk2"); + special = NAPI.Util.GetHashKey($"weapon_{specialModel}"); + } + client.GiveWeapon((WeaponHash)special, 50); + } + else + { + client.Armor = 50; + } + + using (var context = new DatabaseContext()) + { + User user = client.GetUser(); + FactionWeapon slot1 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == primaryModel).FirstOrDefault(); + if (slot1 != null) + slot1.Ammount -= 1; + FactionWeapon slot2 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == secondaryModel).FirstOrDefault(); + if (slot2 != null) + slot2.Ammount -= 1; + FactionWeapon slot3 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == meleeModel).FirstOrDefault(); + if (slot3 != null) + slot3.Ammount -= 1; + FactionWeapon slot4 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == specialModel).FirstOrDefault(); + if (slot4 != null) + slot4.Ammount -= 1; + context.SaveChanges(); + } + } } - } } diff --git a/ReallifeGamemode.Server/Events/Vehicle.cs b/ReallifeGamemode.Server/Events/Vehicle.cs index 954b6239..58e8e1e2 100644 --- a/ReallifeGamemode.Server/Events/Vehicle.cs +++ b/ReallifeGamemode.Server/Events/Vehicle.cs @@ -1,286 +1,282 @@ -using GTANetworkAPI; -using ReallifeGamemode.Database; +using System; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; -using System; namespace ReallifeGamemode.Server.Events { public class Vehicle : Script - { - [RemoteEvent("VehicleMenu_ToggleEngine")] - public void VehicleMenuToggleEngineEvent(Player player) { - if (player.IsInVehicle && player.VehicleSeat == 0) - { - GTANetworkAPI.Vehicle v = player.Vehicle; - - User u = player.GetUser(); - if (u == null) return; - - if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16) + [RemoteEvent("VehicleMenu_ToggleEngine")] + public void VehicleMenuToggleEngineEvent(Player player) { - player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); - return; + if (player.IsInVehicle && player.VehicleSeat == 0) + { + GTANetworkAPI.Vehicle v = player.Vehicle; + + User u = player.GetUser(); + if (u == null) return; + + if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16) + { + player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); + return; + } + + bool state = VehicleStreaming.GetEngineState(v); + ServerVehicle sV = v.GetServerVehicle(); + if (sV != null) + { + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(v, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is GroupVehicle gV) + { + if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3)) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is JobVehicle jV) + { + if (!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3)) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + return; + } + } + } + VehicleStreaming.SetEngineState(v, !state); + } } - bool state = VehicleStreaming.GetEngineState(v); - ServerVehicle sV = v.GetServerVehicle(); - if (sV != null) + [RemoteEvent("VehicleMenu_LockCar")] + public static void VehicleMenuLockCarEvent(Player player) { - if (sV is ShopVehicle) - { - VehicleStreaming.SetEngineState(v, false); - return; - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) + if (player.IsInVehicle && player.VehicleSeat == 0) { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is GroupVehicle gV) - { - if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3)) - { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is JobVehicle jV) - { - if (!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3)) - { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - return; - } - } - } - VehicleStreaming.SetEngineState(v, !state); - } - } + GTANetworkAPI.Vehicle v = player.Vehicle; - [RemoteEvent("VehicleMenu_LockCar")] - public static void VehicleMenuLockCarEvent(Player player) - { - if (player.IsInVehicle && player.VehicleSeat == 0) - { - GTANetworkAPI.Vehicle v = player.Vehicle; + User u = player.GetUser(); + if (u == null) return; - User u = player.GetUser(); - if (u == null) return; + bool state = VehicleStreaming.GetLockState(v); + ServerVehicle sV = v.GetServerVehicle(); - bool state = VehicleStreaming.GetLockState(v); - ServerVehicle sV = v.GetServerVehicle(); - - if (sV != null) - { - if (sV is ShopVehicle) - { - VehicleStreaming.SetEngineState(v, false); - return; - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0)) - { - return; + if (sV != null) + { + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(v, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0)) + { + return; + } + } + else if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is JobVehicle) + { + return; + } + else if (sV is SchoolVehicle) + { + return; + } + } + state = !state; + VehicleStreaming.SetLockStatus(v, state); + string msg = "Fahrzeug "; + msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; + player.TriggerEvent("vehsync:OpenCar", state); + player.SendNotification(msg); } - } - else if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) + else if (!player.IsInVehicle) { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; + GTANetworkAPI.Vehicle vehicle = null; + foreach (var veh in NAPI.Pools.GetAllVehicles()) + { + if (player.Position.DistanceTo(veh.Position) <= 3f) + { + vehicle = veh; + break; + } + } + + if (vehicle == null) + return; + User u = player.GetUser(); + if (u == null) return; + + bool state = VehicleStreaming.GetLockState(vehicle); + ServerVehicle sV = vehicle.GetServerVehicle(); + + if (sV != null) + { + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(vehicle, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0)) + { + return; + } + } + else if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + return; + } + } + else if (sV is JobVehicle) + { + return; + } + } + state = !state; + VehicleStreaming.SetLockStatus(vehicle, state); + string msg = "Fahrzeug "; + msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; + player.TriggerEvent("vehsync:OpenCar", state); + player.SendNotification(msg); } - } - else if (sV is JobVehicle) - { - return; - } - else if (sV is SchoolVehicle) - { - return; - } - } - state = !state; - VehicleStreaming.SetLockStatus(v, state); - string msg = "Fahrzeug "; - msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; - player.TriggerEvent("vehsync:OpenCar", state); - player.SendNotification(msg); - } - else if (!player.IsInVehicle) - { - GTANetworkAPI.Vehicle vehicle = null; - foreach (var veh in NAPI.Pools.GetAllVehicles()) - { - if (player.Position.DistanceTo(veh.Position) <= 3f) - { - vehicle = veh; - break; - } } - if (vehicle == null) - return; - User u = player.GetUser(); - if (u == null) return; - - bool state = VehicleStreaming.GetLockState(vehicle); - ServerVehicle sV = vehicle.GetServerVehicle(); - - if (sV != null) + [RemoteEvent("CLIENT:VehicleMenu_ParkCar")] + public void VehicleMenuParkCarEvent(Player player) { - if (sV is ShopVehicle) - { - VehicleStreaming.SetEngineState(vehicle, false); - return; - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0)) + if (player.IsInVehicle && player.VehicleSeat == 0) { - return; + GTANetworkAPI.Vehicle v = player.Vehicle; + + User u = player.GetUser(); + if (u == null) return; + + using (var dbContext = new DatabaseContext()) + { + ServerVehicle sV = v.GetServerVehicle(dbContext); + + if (sV == null) return; + + if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0) || !u.FactionLeader) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + } + else if (sV is GroupVehicle gV) + { + if (gV.GroupId != u.Group.Id || u.GroupRank < GroupRank.MANAGER) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + } + else if (sV is JobVehicle) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + else if (sV is SchoolVehicle) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + + Vector3 pos = v.Position; + + sV.PositionX = pos.X; + sV.PositionY = pos.Y; + sV.PositionZ = pos.Z; + sV.Heading = v.Heading; + + player.SendNotification("~g~Das Fahrzeug wurde geparkt."); + + dbContext.SaveChanges(); + } } - } - else if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - return; - } - } - else if (sV is JobVehicle) - { - return; - } } - state = !state; - VehicleStreaming.SetLockStatus(vehicle, state); - string msg = "Fahrzeug "; - msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; - player.TriggerEvent("vehsync:OpenCar", state); - player.SendNotification(msg); - } - } - - [RemoteEvent("CLIENT:VehicleMenu_ParkCar")] - public void VehicleMenuParkCarEvent(Player player) - { - if (player.IsInVehicle && player.VehicleSeat == 0) - { - GTANetworkAPI.Vehicle v = player.Vehicle; - - User u = player.GetUser(); - if (u == null) return; - - using (var dbContext = new DatabaseContext()) + [RemoteEvent("VehicleMenu_ToggleSingleDoor")] + public void VehicleMenuToggleSingleDoorEvent(Player player, int door) { - ServerVehicle sV = v.GetServerVehicle(dbContext); + if (!player.IsInVehicle) return; + GTANetworkAPI.Vehicle veh = player.Vehicle; - if (sV == null) return; + DoorID doorId = (DoorID)door; - if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0) || !u.FactionLeader) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - } - else if (sV is GroupVehicle gV) - { - if (gV.GroupId != u.Group.Id || u.GroupRank < GroupRank.MANAGER) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - } - else if (sV is JobVehicle) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - else if (sV is SchoolVehicle) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } + DoorState state = VehicleStreaming.GetDoorState(veh, doorId); - Vector3 pos = v.Position; - - sV.PositionX = pos.X; - sV.PositionY = pos.Y; - sV.PositionZ = pos.Z; - sV.Heading = v.Heading; - - player.SendNotification("~g~Das Fahrzeug wurde geparkt."); - - dbContext.SaveChanges(); + VehicleStreaming.SetDoorState(veh, doorId, state == DoorState.DoorOpen ? DoorState.DoorClosed : DoorState.DoorOpen); + } + + [RemoteEvent("VehicleMenu_OpenAllDoors")] + public void VehicleMenuOpenAllDoorsEvent(Player player) + { + if (!player.IsInVehicle) return; + GTANetworkAPI.Vehicle veh = player.Vehicle; + + foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + { + VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorOpen); + } + } + + [RemoteEvent("VehicleMenu_CloseAllDoors")] + public void VehicleMenuCloseAllDoorsEvent(Player player) + { + if (!player.IsInVehicle) return; + GTANetworkAPI.Vehicle veh = player.Vehicle; + + foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + { + VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorClosed); + } } - } } - - [RemoteEvent("VehicleMenu_ToggleSingleDoor")] - public void VehicleMenuToggleSingleDoorEvent(Player player, int door) - { - if (!player.IsInVehicle) return; - GTANetworkAPI.Vehicle veh = player.Vehicle; - - DoorID doorId = (DoorID)door; - - DoorState state = VehicleStreaming.GetDoorState(veh, doorId); - - VehicleStreaming.SetDoorState(veh, doorId, state == DoorState.DoorOpen ? DoorState.DoorClosed : DoorState.DoorOpen); - } - - [RemoteEvent("VehicleMenu_OpenAllDoors")] - public void VehicleMenuOpenAllDoorsEvent(Player player) - { - if (!player.IsInVehicle) return; - GTANetworkAPI.Vehicle veh = player.Vehicle; - - foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) - { - VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorOpen); - } - } - - [RemoteEvent("VehicleMenu_CloseAllDoors")] - public void VehicleMenuCloseAllDoorsEvent(Player player) - { - if (!player.IsInVehicle) return; - GTANetworkAPI.Vehicle veh = player.Vehicle; - - foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) - { - VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorClosed); - } - } - - - } } diff --git a/ReallifeGamemode.Server/Events/Voice.cs b/ReallifeGamemode.Server/Events/Voice.cs index 794708b5..adbeebac 100644 --- a/ReallifeGamemode.Server/Events/Voice.cs +++ b/ReallifeGamemode.Server/Events/Voice.cs @@ -8,7 +8,7 @@ namespace ReallifeGamemode.Server.Events { - class Voice : Script + internal class Voice : Script { [RemoteEvent("CLIENT:AddVoiceListener")] public void AddPlayerVoiceListenerEvent(Player player, Player target) diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index c723d4f4..ddfccc05 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -1,12 +1,12 @@ -using GTANetworkAPI; +using System; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; using Microsoft.EntityFrameworkCore; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; -using System; -using System.Collections.Generic; -using System.Linq; /** * @overview Life of German Reallife - Player Extension (PlayerExtension.cs) @@ -17,53 +17,53 @@ using System.Linq; namespace ReallifeGamemode.Server.Extensions { public static class PlayerExtension - { - /// - /// Gibt das User-Objekt eines Player's zurück. - /// Gibt nichts zurück, wenn der Player nicht eingeloggt ist - /// - /// Der Player, dessen User man bekommen möchte - /// Ein eventuell vorhandener Datenbank-Context, falls man Änderungen in der Datenbank vornehmen will - /// - public static User GetUser(this Player client, DatabaseContext context = null) { - context = context ?? new DatabaseContext(); - if (!client.IsLoggedIn()) return null; - return context - .Users - .Include(u => u.Faction) - .Include(u => u.FactionRank) - .Include(u => u.Group) - .Include(u => u.House) - .Include(u => u.BankAccount) - .Where(u => u.Name == client.Name) - .FirstOrDefault(); - } - - public static Character GetCharacter(this User user, DatabaseContext context = null) - { - if (context == null) - { - using (context = new DatabaseContext()) + /// + /// Gibt das User-Objekt eines Player's zurück. + /// Gibt nichts zurück, wenn der Player nicht eingeloggt ist + /// + /// Der Player, dessen User man bekommen möchte + /// Ein eventuell vorhandener Datenbank-Context, falls man Änderungen in der Datenbank vornehmen will + /// + public static User GetUser(this Player client, DatabaseContext context = null) { - return context.Characters.FirstOrDefault(u => u.UserId == user.Id); + context = context ?? new DatabaseContext(); + if (!client.IsLoggedIn()) return null; + return context + .Users + .Include(u => u.Faction) + .Include(u => u.FactionRank) + .Include(u => u.Group) + .Include(u => u.House) + .Include(u => u.BankAccount) + .Where(u => u.Name == client.Name) + .FirstOrDefault(); } - } - else - { - return context.Characters.FirstOrDefault(u => u.UserId == user.Id); - } - } - /// - /// Gibt zurück, ob ein Player eingeloggt ist - /// - /// Der Player, dessen Login-Status man bekommen möchte - /// - public static bool IsLoggedIn(this Player player) - { - return player.HasData("isLoggedIn") ? player.GetData("isLoggedIn") : false; - } + public static Character GetCharacter(this User user, DatabaseContext context = null) + { + if (context == null) + { + using (context = new DatabaseContext()) + { + return context.Characters.FirstOrDefault(u => u.UserId == user.Id); + } + } + else + { + return context.Characters.FirstOrDefault(u => u.UserId == user.Id); + } + } + + /// + /// Gibt zurück, ob ein Player eingeloggt ist + /// + /// Der Player, dessen Login-Status man bekommen möchte + /// + public static bool IsLoggedIn(this Player player) + { + return player.HasData("isLoggedIn") ? player.GetData("isLoggedIn") : false; + } public static bool IsDuty(this Player player) { @@ -81,125 +81,126 @@ namespace ReallifeGamemode.Server.Extensions return newpos; } - internal static T GetData(this User user, string key, T nullValue) - { - key += "data_"; - if (!user.Player.HasData(key)) return nullValue; - return JsonConvert.DeserializeObject(user.Player.GetData(key)); - } - - internal static T GetData(this User user, string key) => user.GetData(key, default); - - internal static void SetData(this User user, string key, object value) - { - key += "data_"; - user.Player.SetData(key, JsonConvert.SerializeObject(value)); - } - - internal static void GiveWanteds(this User user, Player cop, int amount, string reason) - { - if (user.Wanteds + amount > 50) - { - ChatService.ErrorMessage(cop, "Die Wanteds dürfen ein Limit von 50 nicht überschreiten"); - return; - } - int newWanteds = user.Wanteds + amount; - using (var dbContext = new DatabaseContext()) - { - User dbUser = dbContext.Users.Where(u => u.Id == user.Id).FirstOrDefault(); - dbUser.Wanteds = newWanteds; - dbContext.SaveChanges(); - } - user.Player.SetSharedData("blipColor", 64); - ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : "")); - ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds); - - foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) - { - User copUser = copPlayer.GetUser(); - if (cop != null && (copUser.FactionId == 1 || copUser.FactionId == 3)) + internal static T GetData(this User user, string key, T nullValue) { - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Straftat gemeldet von " + cop.Name + " mit Fahndungslevel " + amount + ". Straftäter: " + user.Name + "."); - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Grund: " + reason + "."); - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); - } - else if ((copUser.FactionId == 1 || copUser.FactionId == 3) && cop == null) - { - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + user.Name + " hat eine Straftat begangen. Grund: " + reason + "."); - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); - } - } - } - public static FactionRank GetFactionRank(this User user) - { - using (var dbContext = new DatabaseContext()) - { - FactionRank toReturn = dbContext.FactionRanks.FirstOrDefault(fR => fR.Id == user.FactionRankId); - if (toReturn == null) - { - toReturn = dbContext.FactionRanks.OrderBy(f => f.Order).FirstOrDefault(f => f.FactionId == user.FactionId); + key += "data_"; + if (!user.Player.HasData(key)) return nullValue; + return JsonConvert.DeserializeObject(user.Player.GetData(key)); } - if (toReturn == null) + internal static T GetData(this User user, string key) => user.GetData(key, default); + + internal static void SetData(this User user, string key, object value) { - toReturn = new FactionRank - { - RankName = "Rang-Fehler" - }; + key += "data_"; + user.Player.SetData(key, JsonConvert.SerializeObject(value)); } - return toReturn; - } - } - - public static void BanPlayer(this User user, Player admin, string reason, int mins) - { - using (var banUserContext = new DatabaseContext()) - { - int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; - Ban banUser; - - if (mins == 0) + internal static void GiveWanteds(this User user, Player cop, int amount, string reason) { - ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]"); - banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp }; + if (user.Wanteds + amount > 50) + { + ChatService.ErrorMessage(cop, "Die Wanteds dürfen ein Limit von 50 nicht überschreiten"); + return; + } + int newWanteds = user.Wanteds + amount; + using (var dbContext = new DatabaseContext()) + { + User dbUser = dbContext.Users.Where(u => u.Id == user.Id).FirstOrDefault(); + dbUser.Wanteds = newWanteds; + dbContext.SaveChanges(); + } + user.Player.SetSharedData("blipColor", 64); + ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : "")); + ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds); - user.Player?.Kick(); - - mins--; - } - else - { - ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]"); - banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp + mins * 60 }; - user.Player?.Kick(); + foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) + { + User copUser = copPlayer.GetUser(); + if (cop != null && (copUser.FactionId == 1 || copUser.FactionId == 3)) + { + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Straftat gemeldet von " + cop.Name + " mit Fahndungslevel " + amount + ". Straftäter: " + user.Name + "."); + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Grund: " + reason + "."); + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); + } + else if ((copUser.FactionId == 1 || copUser.FactionId == 3) && cop == null) + { + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + user.Name + " hat eine Straftat begangen. Grund: " + reason + "."); + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); + } + } } - banUserContext.Bans.Add(banUser); - banUserContext.SaveChanges(); + public static FactionRank GetFactionRank(this User user) + { + using (var dbContext = new DatabaseContext()) + { + FactionRank toReturn = dbContext.FactionRanks.FirstOrDefault(fR => fR.Id == user.FactionRankId); + if (toReturn == null) + { + toReturn = dbContext.FactionRanks.OrderBy(f => f.Order).FirstOrDefault(f => f.FactionId == user.FactionId); + } - var targetUser = banUserContext.Users.Where(u => u.Name == user.Name).FirstOrDefault(); - targetUser.BanId = banUser.Id; - banUserContext.SaveChanges(); - } - } + if (toReturn == null) + { + toReturn = new FactionRank + { + RankName = "Rang-Fehler" + }; + } - public static void UnbanPlayer(this User user) - { - using (var unbanUser = new DatabaseContext()) - { - var targetUser = unbanUser.Users.Where(u => u.Id == user.Id).FirstOrDefault(); - targetUser.BanId = null; - unbanUser.SaveChanges(); - } - } + return toReturn; + } + } - public static List GetItems(this User user) - { - using (var dbContext = new DatabaseContext()) - { - return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); - } + public static void BanPlayer(this User user, Player admin, string reason, int mins) + { + using (var banUserContext = new DatabaseContext()) + { + int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; + Ban banUser; + + if (mins == 0) + { + ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]"); + banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp }; + + user.Player?.Kick(); + + mins--; + } + else + { + ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]"); + banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp + mins * 60 }; + user.Player?.Kick(); + } + + banUserContext.Bans.Add(banUser); + banUserContext.SaveChanges(); + + var targetUser = banUserContext.Users.Where(u => u.Name == user.Name).FirstOrDefault(); + targetUser.BanId = banUser.Id; + banUserContext.SaveChanges(); + } + } + + public static void UnbanPlayer(this User user) + { + using (var unbanUser = new DatabaseContext()) + { + var targetUser = unbanUser.Users.Where(u => u.Id == user.Id).FirstOrDefault(); + targetUser.BanId = null; + unbanUser.SaveChanges(); + } + } + + public static List GetItems(this User user) + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); + } + } } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Extensions/EnumExtensions.cs b/ReallifeGamemode.Server/Extensions/EnumExtensions.cs index 04b1ef33..035e226a 100644 --- a/ReallifeGamemode.Server/Extensions/EnumExtensions.cs +++ b/ReallifeGamemode.Server/Extensions/EnumExtensions.cs @@ -1,56 +1,60 @@ -using ReallifeGamemode.Server.Util; -using System; -using System.Collections.Generic; -using System.Text; -using ReallifeGamemode.Database; -using ReallifeGamemode.Server.Types; +using ReallifeGamemode.Server.Types; using static ReallifeGamemode.Server.Types.AdminLevel; namespace ReallifeGamemode.Server.Extensions { public static class EnumExtensions - { - /// - /// Gibt den richtigen Namen eines Admin Levels zurück - /// - /// Das Admin Level, dessen Namen man bekommen möchte. - /// - public static string GetName(this AdminLevel level) { - switch (level) - { - case MAPPING: - return "Mapper"; - case ENTWICKLUNG: - return "Entwickler"; - case SUPPORTER: - return "Supporter"; - case ADMIN: - case ADMIN2: - case ADMIN3: - return "Admin"; - case HEADADMIN: - return "Headadmin"; - case PROJEKTLEITUNG: - return "Projektleiter"; - default: - return "Spieler"; - } - } + /// + /// Gibt den richtigen Namen eines Admin Levels zurück + /// + /// Das Admin Level, dessen Namen man bekommen möchte. + /// + public static string GetName(this AdminLevel level) + { + switch (level) + { + case MAPPING: + return "Mapper"; - public static string GetName(this GroupRank rank) - { - switch (rank) - { - case GroupRank.OWNER: - return "Besitzer"; - case GroupRank.MANAGER: - return "Manager"; - case GroupRank.MEMBER: - return "Mitglied"; - default: - return "Keiner"; - } + case ENTWICKLUNG: + return "Entwickler"; + + case SUPPORTER: + return "Supporter"; + + case ADMIN: + case ADMIN2: + case ADMIN3: + return "Admin"; + + case HEADADMIN: + return "Headadmin"; + + case PROJEKTLEITUNG: + return "Projektleiter"; + + default: + return "Spieler"; + } + } + + public static string GetName(this GroupRank rank) + { + switch (rank) + { + case GroupRank.OWNER: + return "Besitzer"; + + case GroupRank.MANAGER: + return "Manager"; + + case GroupRank.MEMBER: + return "Mitglied"; + + default: + return "Keiner"; + } + } } - } } diff --git a/ReallifeGamemode.Server/Extensions/HouseExtensions.cs b/ReallifeGamemode.Server/Extensions/HouseExtensions.cs index 970f6abb..842b6fd1 100644 --- a/ReallifeGamemode.Server/Extensions/HouseExtensions.cs +++ b/ReallifeGamemode.Server/Extensions/HouseExtensions.cs @@ -1,11 +1,11 @@ -using Microsoft.EntityFrameworkCore; +using System.Linq; +using Microsoft.EntityFrameworkCore; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; -using System.Linq; namespace ReallifeGamemode.Server.Extensions { - static class HouseExtensions + internal static class HouseExtensions { public static House Refresh(this House house) { diff --git a/ReallifeGamemode.Server/Extensions/IntegerExtension.cs b/ReallifeGamemode.Server/Extensions/IntegerExtension.cs index 495853de..d7297045 100644 --- a/ReallifeGamemode.Server/Extensions/IntegerExtension.cs +++ b/ReallifeGamemode.Server/Extensions/IntegerExtension.cs @@ -1,18 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace ReallifeGamemode.Server.Extensions +namespace ReallifeGamemode.Server.Extensions { public static class IntegerExtension - { - public static string ToMoneyString(this int? money) { - return ToMoneyString(money ?? 0); + public static string ToMoneyString(this int? money) + { + return ToMoneyString(money ?? 0); + } + + public static string ToMoneyString(this int money) + { + return "$" + string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace("€", "").Trim(); + } } - public static string ToMoneyString(this int money) - { - return "$" + string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace("€", "").Trim(); - } - } } diff --git a/ReallifeGamemode.Server/Extensions/ListExtensions.cs b/ReallifeGamemode.Server/Extensions/ListExtensions.cs index b834b8d5..ae9c665f 100644 --- a/ReallifeGamemode.Server/Extensions/ListExtensions.cs +++ b/ReallifeGamemode.Server/Extensions/ListExtensions.cs @@ -1,12 +1,10 @@ -using GTANetworkAPI; -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Extensions { - static class ListExtensions + internal static class ListExtensions { public static bool Contains(this List list, Player client) { diff --git a/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs b/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs index 666f7402..25ae9cde 100644 --- a/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs +++ b/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Managers; @@ -10,66 +7,66 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Extensions { public static class ServerVehicleExtensions - { - public static JobBase GetJob(this JobVehicle vehicle) { - return JobManager.GetJob(vehicle.JobId); + public static JobBase GetJob(this JobVehicle vehicle) + { + return JobManager.GetJob(vehicle.JobId); + } + + public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh); + + public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh = null) + { + if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh); + Vector3 position = veh.Position; + uint model = (uint)veh.Model; + float heading = veh.Heading; + int c1 = veh.PrimaryColor; + int c2 = veh.SecondaryColor; + Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false); + veh.Livery = veh.Livery; + VehicleStreaming.SetEngineState(newVeh, false); + VehicleStreaming.SetLockStatus(newVeh, veh.Locked); + VehicleManager.AddVehicle(veh, newVeh); + newVeh.Rotation = new Vector3(0, 0, heading); + + newVeh.SetSharedData("drivenDistance", veh.DistanceDriven); + + string numberplate = $"{veh.Id}"; + + if (veh is FactionVehicle fV) + { + numberplate = $"F{string.Join(".", fV.GetOwners())} " + numberplate; + } + + if (veh is UserVehicle uV) + { + numberplate = $"U{uV.UserId} " + numberplate; + } + + if (veh is ShopVehicle sV) + { + numberplate = "Shop"; + VehicleStreaming.SetLockStatus(newVeh, false); + TextLabel label = NAPI.TextLabel.CreateTextLabel("SHOPVEHICLE\n" + "~g~" + sV.Price.ToMoneyString(), + veh.Position.Add(new Vector3(0, 0, 1.3)), 20.0f, 1f, 1, new Color(255, 255, 255)); + + newVeh.SetSharedData("shopVehicleTextLabel", label.Handle.Value); + } + + if (veh is GroupVehicle gV) + { + numberplate = $"G{gV.GroupId} " + numberplate; + } + + if (veh is JobVehicle jV) + { + numberplate = $"J{jV.JobId} " + numberplate; + } + NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate); + veh.NumberPlate = numberplate; + + return newVeh; + } } - - public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh); - - public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh = null) - { - if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh); - Vector3 position = veh.Position; - uint model = (uint)veh.Model; - float heading = veh.Heading; - int c1 = veh.PrimaryColor; - int c2 = veh.SecondaryColor; - Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false); - veh.Livery = veh.Livery; - VehicleStreaming.SetEngineState(newVeh, false); - VehicleStreaming.SetLockStatus(newVeh, veh.Locked); - VehicleManager.AddVehicle(veh, newVeh); - newVeh.Rotation = new Vector3(0, 0, heading); - - newVeh.SetSharedData("drivenDistance", veh.DistanceDriven); - - string numberplate = $"{veh.Id}"; - - if (veh is FactionVehicle fV) - { - numberplate = $"F{string.Join(".", fV.GetOwners())} " + numberplate; - } - - if (veh is UserVehicle uV) - { - numberplate = $"U{uV.UserId} " + numberplate; - } - - if (veh is ShopVehicle sV) - { - numberplate = "Shop"; - VehicleStreaming.SetLockStatus(newVeh, false); - TextLabel label = NAPI.TextLabel.CreateTextLabel("SHOPVEHICLE\n" + "~g~" + sV.Price.ToMoneyString(), - veh.Position.Add(new Vector3(0, 0, 1.3)), 20.0f, 1f, 1, new Color(255, 255, 255)); - - newVeh.SetSharedData("shopVehicleTextLabel", label.Handle.Value); - } - - if (veh is GroupVehicle gV) - { - numberplate = $"G{gV.GroupId} " + numberplate; - } - - if (veh is JobVehicle jV) - { - numberplate = $"J{jV.JobId} " + numberplate; - } - NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate); - veh.NumberPlate = numberplate; - - return newVeh; - } - } } diff --git a/ReallifeGamemode.Server/Extensions/VehicleExtension.cs b/ReallifeGamemode.Server/Extensions/VehicleExtension.cs index c6348c60..b2e1ed7e 100644 --- a/ReallifeGamemode.Server/Extensions/VehicleExtension.cs +++ b/ReallifeGamemode.Server/Extensions/VehicleExtension.cs @@ -1,21 +1,21 @@ -using GTANetworkAPI; +using System.Linq; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Managers; -using System.Linq; namespace ReallifeGamemode.Server.Extensions { public static class VehicleExtension - { - public static ServerVehicle GetServerVehicle(this Vehicle veh, DatabaseContext context = null) { - return VehicleManager.GetServerVehicleFromVehicle(veh, context); - } + public static ServerVehicle GetServerVehicle(this Vehicle veh, DatabaseContext context = null) + { + return VehicleManager.GetServerVehicleFromVehicle(veh, context); + } - public static Player GetDriver(this Vehicle veh) - { - return NAPI.Pools.GetAllPlayers().Where(p => p.Vehicle.Handle == veh.Handle && p.VehicleSeat == 0).FirstOrDefault(); + public static Player GetDriver(this Vehicle veh) + { + return NAPI.Pools.GetAllPlayers().Where(p => p.Vehicle.Handle == veh.Handle && p.VehicleSeat == 0).FirstOrDefault(); + } } - } } diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index c1357256..1469c741 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -1,9 +1,6 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; using GTANetworkAPI; using Newtonsoft.Json; -using ReallifeGamemode.Server.Services; /** * @overview Life of German Reallife - Server Factions Medic Medic.cs @@ -11,87 +8,96 @@ using ReallifeGamemode.Server.Services; * @copyright (c) 2008 - 2018 Life of German */ - namespace ReallifeGamemode.Server.Factions.Medic { public class Medic : Script - { - public static List ReviveTasks = new List(); - public static List HealTasks = new List(); - public static List FireTasks = new List(); - - public static void AddTaskToList(MedicTask task) { - if (task == null) - { - return; - } + public static List ReviveTasks = new List(); + public static List HealTasks = new List(); + public static List FireTasks = new List(); - switch (task.Type) - { - case MedicTaskType.REVIVE: - ReviveTasks.Add(task); - break; - case MedicTaskType.HEAL: - HealTasks.Add(task); - break; - case MedicTaskType.FIRE: - FireTasks.Add(task); - break; - } - } + public static void AddTaskToList(MedicTask task) + { + if (task == null) + { + return; + } - public static void RemoveTaskFromList(MedicTask task) - { - if (task == null) - { - return; - } + switch (task.Type) + { + case MedicTaskType.REVIVE: + ReviveTasks.Add(task); + break; - switch (task.Type) - { - case MedicTaskType.REVIVE: - ReviveTasks.Remove(task); - break; - case MedicTaskType.HEAL: - HealTasks.Remove(task); - break; - case MedicTaskType.FIRE: - FireTasks.Remove(task); - break; - } + case MedicTaskType.HEAL: + HealTasks.Add(task); + break; + + case MedicTaskType.FIRE: + FireTasks.Add(task); + break; + } + } + + public static void RemoveTaskFromList(MedicTask task) + { + if (task == null) + { + return; + } + + switch (task.Type) + { + case MedicTaskType.REVIVE: + ReviveTasks.Remove(task); + break; + + case MedicTaskType.HEAL: + HealTasks.Remove(task); + break; + + case MedicTaskType.FIRE: + FireTasks.Remove(task); + break; + } + } + + [RemoteEvent("loadMedicTasks")] + public void LoadMedicTasks(Player player, int type) + { + switch (type) + { + case 0: + player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks)); + break; + + case 1: + player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks)); + break; + + case 2: + player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks)); + break; + } + } + + [RemoteEvent("updateMedicTask")] + public void UpdateMedicTasks(Player player, int type, int index, string medicName) + { + switch (type) + { + case 0: + ReviveTasks[index].MedicName = medicName; + break; + + case 1: + HealTasks[index].MedicName = medicName; + break; + + case 2: + FireTasks[index].MedicName = medicName; + break; + } + } } - [RemoteEvent("loadMedicTasks")] - public void LoadMedicTasks(Player player, int type) - { - switch (type) - { - case 0: - player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks)); - break; - case 1: - player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks)); - break; - case 2: - player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks)); - break; - } - } - [RemoteEvent("updateMedicTask")] - public void UpdateMedicTasks(Player player, int type, int index, string medicName) - { - switch (type) - { - case 0: - ReviveTasks[index].MedicName = medicName; - break; - case 1: - HealTasks[index].MedicName = medicName; - break; - case 2: - FireTasks[index].MedicName = medicName; - break; - } - } - } } diff --git a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs index 5f5365ed..0c0beb3f 100644 --- a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs +++ b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs @@ -1,6 +1,4 @@ using System; -using System.Collections.Generic; -using System.Text; using GTANetworkAPI; /** @@ -9,25 +7,24 @@ using GTANetworkAPI; * @copyright (c) 2008 - 2018 Life of German */ - namespace ReallifeGamemode.Server.Factions.Medic { public class MedicTask - { - public string Victim { get; set; } - public Vector3 Position { get; set; } - public MedicTaskType Type { get; set; } - public string CauseOfDeath { get; set; } - public string Description { get; set; } - public string Caller { get; set; } - public DateTime Time { get; set; } - public string MedicName { get; set; } - } + { + public string Victim { get; set; } + public Vector3 Position { get; set; } + public MedicTaskType Type { get; set; } + public string CauseOfDeath { get; set; } + public string Description { get; set; } + public string Caller { get; set; } + public DateTime Time { get; set; } + public string MedicName { get; set; } + } - public enum MedicTaskType - { - REVIVE, - HEAL, - FIRE - } + public enum MedicTaskType + { + REVIVE, + HEAL, + FIRE + } } diff --git a/ReallifeGamemode.Server/Finance/Economy.cs b/ReallifeGamemode.Server/Finance/Economy.cs index 676c21e8..d0fc447f 100644 --- a/ReallifeGamemode.Server/Finance/Economy.cs +++ b/ReallifeGamemode.Server/Finance/Economy.cs @@ -1,86 +1,81 @@ -/*** -@overview Life of German - Economy +/*** +@overview Life of German - Economy @author kookroach -@copyright (c) 2008 - 2019 Life of German +@copyright (c) 2008 - 2019 Life of German */ - using System; using System.Collections.Generic; using System.Linq; -using System.Text; using GTANetworkAPI; using Microsoft.EntityFrameworkCore; -using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Services; using Newtonsoft.Json; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Finance { public class Economy - { - public static Dictionary Paychecks { get; set; } = new Dictionary(); - - public static (int, float, float) GetEconomyClass(Player client, int wage) { - int bankAccount = client.GetUser().BankAccount.Balance; - float financialHelp = -(float)Math.Pow(1.0005, -bankAccount) * -1000; - float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1; - if (financialInterest >= 0.7) - financialInterest = 0.7f; + public static Dictionary Paychecks { get; set; } = new Dictionary(); - if (financialHelp > 2500) - financialHelp = 2500; - - return (bankAccount, financialHelp, financialInterest); - } - - public static int GetVehicleTaxation(Player client) - { - int vehicleTaxation = 0; - using (var dbContext = new DatabaseContext()) - { - User user = client.GetUser(dbContext); - foreach (UserVehicle uVeh in dbContext.UserVehicles.Where(u => u.UserId == user.Id)) + public static (int, float, float) GetEconomyClass(Player client, int wage) { - if (uVeh.Price == null) - { - vehicleTaxation += 400; - continue; - } - vehicleTaxation += (int)(uVeh.Price * 0.005f); + int bankAccount = client.GetUser().BankAccount.Balance; + float financialHelp = -(float)Math.Pow(1.0005, -bankAccount) * -1000; + float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1; + if (financialInterest >= 0.7) + financialInterest = 0.7f; + + if (financialHelp > 2500) + financialHelp = 2500; + + return (bankAccount, financialHelp, financialInterest); } - } - return vehicleTaxation; - } + public static int GetVehicleTaxation(Player client) + { + int vehicleTaxation = 0; + using (var dbContext = new DatabaseContext()) + { + User user = client.GetUser(dbContext); + foreach (UserVehicle uVeh in dbContext.UserVehicles.Where(u => u.UserId == user.Id)) + { + if (uVeh.Price == null) + { + vehicleTaxation += 400; + continue; + } + vehicleTaxation += (int)(uVeh.Price * 0.005f); + } + } + return vehicleTaxation; + } - public static float GetPropertyTaxation(Player client) - { - float propertyTaxation = 0; - User user = client.GetUser(); - if (user.HouseId != null) - { - propertyTaxation += user.House.Price * 0.005f; - } + public static float GetPropertyTaxation(Player client) + { + float propertyTaxation = 0; + User user = client.GetUser(); + if (user.HouseId != null) + { + propertyTaxation += user.House.Price * 0.005f; + } - return propertyTaxation; - } + return propertyTaxation; + } + public static void SetPaycheck(Player client) + { + User user = client.GetUser(); + int wage = user.Wage; + (int bankAccount, float financialHelp, float financialInterest) = GetEconomyClass(client, wage); + float propertyTax = GetPropertyTaxation(client); + int vehicleTaxation = GetVehicleTaxation(client); + int rentalFees = GetRentalFees(client); - public static void SetPaycheck(Player client) - { - User user = client.GetUser(); - int wage = user.Wage; - (int bankAccount, float financialHelp, float financialInterest) = GetEconomyClass(client, wage); - float propertyTax = GetPropertyTaxation(client); - int vehicleTaxation = GetVehicleTaxation(client); - int rentalFees = GetRentalFees(client); - - int healthInsurance = (int)(user.BankAccount.Balance * 0.001); - + int healthInsurance = (int)(user.BankAccount.Balance * 0.001); int? factionMoney = null; @@ -96,88 +91,85 @@ namespace ReallifeGamemode.Server.Finance ReleasePayDay(client, paycheck); } - private static int GetRentalFees(Player client) - { - using (var dbContext = new DatabaseContext()) - { - User user = client.GetUser(); - return dbContext.HouseRentals.Where(h => h.UserId == user.Id).Include(h => h.House).Sum(h => h.House.RentalFee); - } - } - - public static void ReleasePayDay(Player client, Paycheck paycheck) - { - NAPI.Util.ConsoleOutput("in release payday"); - if (client == null || paycheck == null) - { - return; - } - - NAPI.Util.ConsoleOutput($"client = {client.Name}, paycheck = {JsonConvert.SerializeObject(paycheck)}"); - - using (var dbContext = new DatabaseContext()) - { - User u = client.GetUser(dbContext); - NAPI.Util.ConsoleOutput("get user"); - u.BankAccount.Balance += paycheck.Amount; - u.Wage = 0; - - u.PaydayTimer = 60; - - - NAPI.Util.ConsoleOutput("set sachen"); - - var rentals = dbContext.HouseRentals - .Include(hR => hR.House) - .ThenInclude(h => h.BankAccount) - .Where(hR => hR.UserId == u.Id); - - - NAPI.Util.ConsoleOutput("get rentals"); - - dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += (int)(paycheck.HealthInsurance * 0.1); - - if (rentals.Any()) + private static int GetRentalFees(Player client) { - NAPI.Util.ConsoleOutput("hat rentals"); - foreach (var rental in rentals) - { - if (rental?.House?.BankAccount != null) + using (var dbContext = new DatabaseContext()) { - rental.House.BankAccount.Balance += (int)(rental.House.RentalFee * 0.7); + User user = client.GetUser(); + return dbContext.HouseRentals.Where(h => h.UserId == user.Id).Include(h => h.House).Sum(h => h.House.RentalFee); } - } } - dbContext.SaveChanges(); - } - if (paycheck.Amount > 0) - ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt + $~g~" + paycheck.Amount + "~s~."); - else - ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt - $~r~" + paycheck.Amount + "~s~."); - - } - - public static void Timer_Elapsed() - { - using var dbContext = new DatabaseContext(); - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(dbContext); - if (player.IsLoggedIn()) + public static void ReleasePayDay(Player client, Paycheck paycheck) { - if (user.PaydayTimer <= 0) - { - Economy.SetPaycheck(player); - user.PaydayTimer = 60; - } - else if (user.PaydayTimer > 0) - { - user.PaydayTimer -= 1; - } + NAPI.Util.ConsoleOutput("in release payday"); + if (client == null || paycheck == null) + { + return; + } + + NAPI.Util.ConsoleOutput($"client = {client.Name}, paycheck = {JsonConvert.SerializeObject(paycheck)}"); + + using (var dbContext = new DatabaseContext()) + { + User u = client.GetUser(dbContext); + NAPI.Util.ConsoleOutput("get user"); + u.BankAccount.Balance += paycheck.Amount; + u.Wage = 0; + + u.PaydayTimer = 60; + + NAPI.Util.ConsoleOutput("set sachen"); + + var rentals = dbContext.HouseRentals + .Include(hR => hR.House) + .ThenInclude(h => h.BankAccount) + .Where(hR => hR.UserId == u.Id); + + NAPI.Util.ConsoleOutput("get rentals"); + + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += (int)(paycheck.HealthInsurance * 0.1); + + if (rentals.Any()) + { + NAPI.Util.ConsoleOutput("hat rentals"); + foreach (var rental in rentals) + { + if (rental?.House?.BankAccount != null) + { + rental.House.BankAccount.Balance += (int)(rental.House.RentalFee * 0.7); + } + } + } + + dbContext.SaveChanges(); + } + if (paycheck.Amount > 0) + ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt + $~g~" + paycheck.Amount + "~s~."); + else + ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt - $~r~" + paycheck.Amount + "~s~."); + } + + public static void Timer_Elapsed() + { + using var dbContext = new DatabaseContext(); + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(dbContext); + if (player.IsLoggedIn()) + { + if (user.PaydayTimer <= 0) + { + Economy.SetPaycheck(player); + user.PaydayTimer = 60; + } + else if (user.PaydayTimer > 0) + { + user.PaydayTimer -= 1; + } + } + } + dbContext.SaveChanges(); } - } - dbContext.SaveChanges(); } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Finance/Paycheck.cs b/ReallifeGamemode.Server/Finance/Paycheck.cs index 9a6059a0..2de6adfb 100644 --- a/ReallifeGamemode.Server/Finance/Paycheck.cs +++ b/ReallifeGamemode.Server/Finance/Paycheck.cs @@ -1,41 +1,32 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using GTANetworkAPI; -using Newtonsoft.Json; -using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Services; +using Newtonsoft.Json; namespace ReallifeGamemode.Server.Finance { public class Paycheck - { - [JsonProperty("financialHelp")] - public float FinancialHelp { get; set; } = 0; + { + [JsonProperty("financialHelp")] + public float FinancialHelp { get; set; } = 0; - [JsonProperty("financialInterest")] - public float FinancialInterest { get; set; } = 0; + [JsonProperty("financialInterest")] + public float FinancialInterest { get; set; } = 0; - [JsonProperty("vehicleTaxation")] - public int VehicleTaxation { get; set; } = 0; + [JsonProperty("vehicleTaxation")] + public int VehicleTaxation { get; set; } = 0; - [JsonProperty("propertyTaxation")] - public float PropertyTaxation { get; set; } = 0; + [JsonProperty("propertyTaxation")] + public float PropertyTaxation { get; set; } = 0; - [JsonProperty("wage")] - public int Wage { get; set; } = 0; + [JsonProperty("wage")] + public int Wage { get; set; } = 0; - [JsonProperty("amount")] - public int Amount { get; set; } = 0; + [JsonProperty("amount")] + public int Amount { get; set; } = 0; - [JsonProperty("rentalFees")] - public int RentalFees { get; set; } = 0; + [JsonProperty("rentalFees")] + public int RentalFees { get; set; } = 0; - [JsonProperty("healthInsurance")] - public int HealthInsurance { get; set; } = 0; + [JsonProperty("healthInsurance")] + public int HealthInsurance { get; set; } = 0; [JsonProperty("factionMoney")] public int? FactionMoney { get; set; } = 0; @@ -53,4 +44,4 @@ namespace ReallifeGamemode.Server.Finance this.FactionMoney = FactionMoney; } } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Gangwar/Gangwar.cs b/ReallifeGamemode.Server/Gangwar/Gangwar.cs index 4bfcc2a6..aa18b371 100644 --- a/ReallifeGamemode.Server/Gangwar/Gangwar.cs +++ b/ReallifeGamemode.Server/Gangwar/Gangwar.cs @@ -1,5 +1,4 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; using GTANetworkAPI; using Newtonsoft.Json; @@ -11,217 +10,217 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Gangwar { public class Gangwar : Script - { - public static Turf[] _loadedTurfs; - private static List turfs; - - public static void loadTurfs() { - _loadedTurfs = null; - using (var context = new DatabaseContext()) - { - turfs = context.Turfs.Select(t => t).ToList(); - List turfing = new List(); - foreach (var t in turfs) + public static Turf[] _loadedTurfs; + private static List turfs; + + public static void loadTurfs() { - Turf newTurf = new Turf(t.Id, t.Name, t.Color, t.Owner, t.Value, t.MaxValue, t.Surplus); - turfing.Add(newTurf); - } - _loadedTurfs = turfing.ToArray(); - } - } - - public static void loadPlayer(Player client) - { - client.TriggerEvent("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); - } - - public static void loadTurfs_ToAllPlayers() - { - NAPI.ClientEvent.TriggerClientEventForAll("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); - foreach (var l in NAPI.Pools.GetAllPlayers()) - { - if (!l.IsLoggedIn() && !l.GetUser().FactionLeader) - return; - - l.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); - } - } - - public static void GangwarKill(Player killer, Player victim) - { - if (killer.HasData("GotInsideOfTurf") && victim.HasData("GotInsideOfTurf")) - { - foreach (var turf in getTurfs()) - { - if (turf.getId() == victim.GetData("inGangWar")) - { - turf.setKill(victim.GetUser().Faction.Name); - return; - } - } - } - } - - public static Turf[] getTurfs() - { - return _loadedTurfs; - } - - [RemoteEvent("Gangarea:Enter")] - public void RmtEvent_TurfEnter(Player client, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - - foreach (var turf in getTurfs()) - { - if (turf.getId() == id) - { - turf.enter(client); - return; - } - } - } - - [RemoteEvent("Gangarea:Leave")] - public void RmtEvent_TurfLeave(Player client, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - - foreach (var turf in getTurfs()) - { - if (turf.getId() == id) - { - turf.leave(client); - return; - } - } - } - - [RemoteEvent("SERVER:SetTurf")] - public void RmtEvent_SetTurf(Player client, string jsonX, string jsonY, string jsonRot, string jsonRange, string Name) - { - float pX = JsonConvert.DeserializeObject(jsonX); - float pY = (float)JsonConvert.DeserializeObject(jsonY); - float Rot = (float)JsonConvert.DeserializeObject(jsonRot); - float Range = (float)JsonConvert.DeserializeObject(jsonRange); - - var newTurf = new Turfs - { - Name = Name, - X = pX, - Y = pY, - Rotation = Rot, - Range = Range, - Owner = "Neutral", - Color = 0, - Vector = null - }; - using (var dbContext = new DatabaseContext()) - { - dbContext.Turfs.Add(newTurf); - dbContext.SaveChanges(); - } - loadTurfs(); - loadTurfs_ToAllPlayers(); - } - - [RemoteEvent("SERVER:DeleteTurf")] - public void RmtEvent_DeleteTurf(Player client, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - if (id == -1) - { - ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet!"); - return; - } - using (var dbContext = new DatabaseContext()) - { - Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); - if (dturf != null) - { - dbContext.Turfs.Remove(dturf); - dbContext.SaveChanges(); - loadTurfs(); - loadTurfs_ToAllPlayers(); - } - } - } - - [RemoteEvent("SERVER:Turf_SetNewLeaderPoint")] - public void RmtEvent_SetNewLeaderPoint(Player client, string vector, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - if (id == -1) - { - ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet"); - return; - } - using (var dbContext = new DatabaseContext()) - { - Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); - if (dturf != null) - { - dturf.Vector = vector; - dbContext.SaveChanges(); - loadTurfs(); - loadTurfs_ToAllPlayers(); - } - } - } - - [RemoteEvent("SERVER:StartGangwar")] - public void RmtEvent_StartGangwar(Player client) - { - if (!client.GetUser().FactionLeader) - return; - - foreach (var turf in getTurfs()) - { - if (turf.status == "attack") - { - ChatService.ErrorMessage(client, "Du kannst momentan kein Gangwar starten"); - return; - } - } - if (client.GetUser().Faction.Name == "Ballas" || client.GetUser().Faction.Name == "Grove") - { - foreach (var turf in getTurfs()) - { - foreach (var u in turf.playerInside) - { - if (u == client) + _loadedTurfs = null; + using (var context = new DatabaseContext()) { - if (turf.Owner != client.GetUser().Faction.Name) - turf.attack(client.GetUser().Faction.Name); + turfs = context.Turfs.Select(t => t).ToList(); + List turfing = new List(); + foreach (var t in turfs) + { + Turf newTurf = new Turf(t.Id, t.Name, t.Color, t.Owner, t.Value, t.MaxValue, t.Surplus); + turfing.Add(newTurf); + } + _loadedTurfs = turfing.ToArray(); } - } } - } - } - public static void Value_TimerElapsed() - { - List values = new List(); - using (var dbContext = new DatabaseContext()) - { - foreach (var turf in getTurfs()) + public static void loadPlayer(Player client) { - if((turf.getValue() + 5) >= turf.getMaxValue()) - { - turf.setValue(turf.getMaxValue()); - } - else - { - turf.addValue(5); - } - values.Add(turf.getValue()); - Turfs _turf = dbContext.Turfs.Where(t => t.Id == turf.getId()).FirstOrDefault(); - _turf.Value = turf.getValue(); + client.TriggerEvent("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); + } + + public static void loadTurfs_ToAllPlayers() + { + NAPI.ClientEvent.TriggerClientEventForAll("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); + foreach (var l in NAPI.Pools.GetAllPlayers()) + { + if (!l.IsLoggedIn() && !l.GetUser().FactionLeader) + return; + + l.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); + } + } + + public static void GangwarKill(Player killer, Player victim) + { + if (killer.HasData("GotInsideOfTurf") && victim.HasData("GotInsideOfTurf")) + { + foreach (var turf in getTurfs()) + { + if (turf.getId() == victim.GetData("inGangWar")) + { + turf.setKill(victim.GetUser().Faction.Name); + return; + } + } + } + } + + public static Turf[] getTurfs() + { + return _loadedTurfs; + } + + [RemoteEvent("Gangarea:Enter")] + public void RmtEvent_TurfEnter(Player client, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + + foreach (var turf in getTurfs()) + { + if (turf.getId() == id) + { + turf.enter(client); + return; + } + } + } + + [RemoteEvent("Gangarea:Leave")] + public void RmtEvent_TurfLeave(Player client, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + + foreach (var turf in getTurfs()) + { + if (turf.getId() == id) + { + turf.leave(client); + return; + } + } + } + + [RemoteEvent("SERVER:SetTurf")] + public void RmtEvent_SetTurf(Player client, string jsonX, string jsonY, string jsonRot, string jsonRange, string Name) + { + float pX = JsonConvert.DeserializeObject(jsonX); + float pY = (float)JsonConvert.DeserializeObject(jsonY); + float Rot = (float)JsonConvert.DeserializeObject(jsonRot); + float Range = (float)JsonConvert.DeserializeObject(jsonRange); + + var newTurf = new Turfs + { + Name = Name, + X = pX, + Y = pY, + Rotation = Rot, + Range = Range, + Owner = "Neutral", + Color = 0, + Vector = null + }; + using (var dbContext = new DatabaseContext()) + { + dbContext.Turfs.Add(newTurf); + dbContext.SaveChanges(); + } + loadTurfs(); + loadTurfs_ToAllPlayers(); + } + + [RemoteEvent("SERVER:DeleteTurf")] + public void RmtEvent_DeleteTurf(Player client, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + if (id == -1) + { + ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet!"); + return; + } + using (var dbContext = new DatabaseContext()) + { + Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); + if (dturf != null) + { + dbContext.Turfs.Remove(dturf); + dbContext.SaveChanges(); + loadTurfs(); + loadTurfs_ToAllPlayers(); + } + } + } + + [RemoteEvent("SERVER:Turf_SetNewLeaderPoint")] + public void RmtEvent_SetNewLeaderPoint(Player client, string vector, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + if (id == -1) + { + ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet"); + return; + } + using (var dbContext = new DatabaseContext()) + { + Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); + if (dturf != null) + { + dturf.Vector = vector; + dbContext.SaveChanges(); + loadTurfs(); + loadTurfs_ToAllPlayers(); + } + } + } + + [RemoteEvent("SERVER:StartGangwar")] + public void RmtEvent_StartGangwar(Player client) + { + if (!client.GetUser().FactionLeader) + return; + + foreach (var turf in getTurfs()) + { + if (turf.status == "attack") + { + ChatService.ErrorMessage(client, "Du kannst momentan kein Gangwar starten"); + return; + } + } + if (client.GetUser().Faction.Name == "Ballas" || client.GetUser().Faction.Name == "Grove") + { + foreach (var turf in getTurfs()) + { + foreach (var u in turf.playerInside) + { + if (u == client) + { + if (turf.Owner != client.GetUser().Faction.Name) + turf.attack(client.GetUser().Faction.Name); + } + } + } + } + } + + public static void Value_TimerElapsed() + { + List values = new List(); + using (var dbContext = new DatabaseContext()) + { + foreach (var turf in getTurfs()) + { + if ((turf.getValue() + 5) >= turf.getMaxValue()) + { + turf.setValue(turf.getMaxValue()); + } + else + { + turf.addValue(5); + } + values.Add(turf.getValue()); + Turfs _turf = dbContext.Turfs.Where(t => t.Id == turf.getId()).FirstOrDefault(); + _turf.Value = turf.getValue(); + } + dbContext.SaveChanges(); + } + NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:UpdateTurfValue", JsonConvert.SerializeObject(values.ToArray())); } - dbContext.SaveChanges(); - } - NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:UpdateTurfValue", JsonConvert.SerializeObject(values.ToArray())); } - } } diff --git a/ReallifeGamemode.Server/Gangwar/Turf.cs b/ReallifeGamemode.Server/Gangwar/Turf.cs index 957168c7..7d053d48 100644 --- a/ReallifeGamemode.Server/Gangwar/Turf.cs +++ b/ReallifeGamemode.Server/Gangwar/Turf.cs @@ -1,356 +1,352 @@ using System; using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; -using System.Timers; using System.Linq; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Services; -using Newtonsoft.Json; +using System.Timers; +using GTANetworkAPI; using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Gangwar { public class Turf - { - - public int TurfID { get; set; } - public string TurfName { get; set; } - public int Color { get; set; } - public string Owner { get; set; } - public string Attacker { get; set; } - public int Att_Score { get; set; } - public int Def_Score { get; set; } - public string status { get; set; } - public int value { get; set; } - public int maxValue { get; set; } - public bool surplus { get; set; } - public List playerInside { get; set; } - public Timer timer { get; set; } - public Player[] playerInGangwar { get; set; } - public int timerCount; - - - public Turf(int TurfID, string TurfName, int color, string Owner, int value, int maxValue,bool surplus) { - this.TurfID = TurfID; - this.TurfName = TurfName; - this.Color = color; - this.Owner = Owner; - this.value = value; - this.maxValue = maxValue; - this.surplus = surplus; - this.Attacker = null; - this.Att_Score = 50; - this.Def_Score = 50; - this.status = "normal"; - this.timer = null; - this.playerInside = new List(); - this.timerCount = 0; - } + public int TurfID { get; set; } + public string TurfName { get; set; } + public int Color { get; set; } + public string Owner { get; set; } + public string Attacker { get; set; } + public int Att_Score { get; set; } + public int Def_Score { get; set; } + public string status { get; set; } + public int value { get; set; } + public int maxValue { get; set; } + public bool surplus { get; set; } + public List playerInside { get; set; } + public Timer timer { get; set; } + public Player[] playerInGangwar { get; set; } + public int timerCount; - public int getId() - { - return this.TurfID; - } - - public int getValue() - { - return this.value; - } - - public void setValue(int value) - { - this.value = value; - } - - public void addValue(int addedValue) - { - this.value += addedValue; - } - - public int getMaxValue() - { - return maxValue; - } - - public bool getSurplus() - { - return surplus; - } - - public void setSurplus(bool surplus) - { - this.surplus = surplus; - } - - public string getName() - { - return this.TurfName; - } - - public int getColor() - { - return this.Color; - } - - public string getOwner() - { - return this.Owner; - } - - public string getAttacker() - { - return this.Attacker; - } - - private void TurfTick() - { - this.timer = new System.Timers.Timer(1000); - - this.timer.Elapsed += Tick; - this.timer.AutoReset = true; - this.timer.Enabled = true; - this.timerCount = 0; - } - - private void Tick(object sender, System.Timers.ElapsedEventArgs e) - { - if (this.status == "attack") - { - update(); - } - } - - - - private void update() - { - #region Ticket system - /* - try - { - Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Owner).ToArray(); - Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Attacker).ToArray(); - }catch(NullReferenceException ex) - { - int i = 0; - foreach(var c in playerInGangwar) + public Turf(int TurfID, string TurfName, int color, string Owner, int value, int maxValue, bool surplus) { - if (!NAPI.Entity.DoesEntityExist(c.Handle)) - { - this.playerInside = this.playerInside.Where(gp => gp != c).ToArray(); - } - i++; - } - } - if (owners.Length > attackers.Length) - this.Att_Score -= owners.Length - attackers.Length; - if(owners.Length < attackers.Length) - this.Def_Score -= attackers.Length - owners.Length; - */ - #endregion - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); - } - if (this.Def_Score <= 0) - { - this.takeOver(this.Attacker); - } - else if (this.Att_Score <= 0) - { - this.takeOver(this.Owner); - } - timerCount += 1; - if (timerCount >= 900) //change to 900 (seconds) before release for testing reasons change to whatever you like - { - if (this.Def_Score > this.Att_Score) - { - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); - } - this.takeOver(this.Owner); - this.Att_Score = 0; - } - else if (this.Def_Score < this.Att_Score) - { - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); - } - this.takeOver(this.Attacker); - this.Def_Score = 0; - return; - } - else if (this.Def_Score == this.Att_Score) - { - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); - } - this.takeOver(this.Attacker); - this.Def_Score = 0; - - return; - } - } - } - - public void enter(Player client) - { - if (this.status == "attack") - { - if (client.GetUser().Faction.Name != getOwner() && client.GetUser().Faction.Name != getAttacker()) - return; - Player gPlayer = playerInGangwar.Where(c => c.GetUser().Id == client.GetUser().Id).FirstOrDefault(); - if (gPlayer == null) - { - using (var dbContext = new DatabaseContext()) - { - ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); - } - return; - } - } - - if (playerInside.Find(c => c == client) == null) - { - playerInside.Add(client); - client.SetData("GotInsideOfTurf", true); - } - } - - public void leave(Player client) - { - if (playerInside.Find(c => c == client) != null) - { - this.playerInside = this.playerInside.Where(c => c != client).ToList(); - if (this.status != "attack") - client.ResetData("GotInsideOfTurf"); - } - } - - public void takeOver(string FactionName) - { - this.timer.Stop(); - this.timer = null; - using (var dbContext = new DatabaseContext()) - { - if (getOwner() == FactionName) - { - Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); - Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); - foreach (var o in owners) - { - o.TriggerEvent("CLIENT:win"); - } - foreach (var a in attackers) - { - a.TriggerEvent("CLIENT:loose"); - } - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat erfolgreich das Gebiet ~g~" + getName() + "~w~ verteidigt.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat den Angrif auf das Gebiet ~r~" + getName() + "~w~ verloren.", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); - } - else if (getOwner() != FactionName) - { - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte das Gebiet ~r~" + getName() + "~w~ nicht verteidigen.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); - Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); - foreach (var o in owners) - { - o.TriggerEvent("CLIENT:loose"); - } - foreach (var a in attackers) - { - a.TriggerEvent("CLIENT:win"); - } - this.Owner = FactionName; - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte erfolgreich das Gebiet ~g~" + getName() + "~w~ erobern.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - Turfs turf = dbContext.Turfs.Where(t => t.Id == getId()).FirstOrDefault(); - turf.Owner = this.Owner; - turf.FactionId = dbContext.Factions.Where(f => f.Name == this.Owner).FirstOrDefault().Id; - dbContext.SaveChanges(); + this.TurfID = TurfID; + this.TurfName = TurfName; + this.Color = color; + this.Owner = Owner; + this.value = value; + this.maxValue = maxValue; + this.surplus = surplus; + this.Attacker = null; + this.Att_Score = 50; + this.Def_Score = 50; + this.status = "normal"; + this.timer = null; + this.playerInside = new List(); + this.timerCount = 0; } - } - this.Attacker = null; - foreach (var c in playerInGangwar) - { - c.TriggerEvent("CLIENT:setAttackBlip", false, TurfID); - c.ResetData("inGangWar"); - c.ResetData("GotInsideOfTurf"); - } - this.playerInGangwar = null; - Gangwar.loadTurfs(); - Gangwar.loadTurfs_ToAllPlayers(); - } - - public void attack(string attacker) - { - Player[] usersInGangwar; - using (var context = new DatabaseContext()) - { - var onlinePlayers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn()).Select(c => c.Name); - - List ownersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == getOwner()).Select(u => u.Player).ToList(); - List attackersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker).Select(u => u.Player).ToList(); - - if (ownersInGangwar.Count < 1 && attackersInGangwar.Count < 1) + public int getId() { - List leaders = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker && u.FactionLeader).Select(u => u.Player).ToList(); - foreach(var l in leaders) - { - ChatService.ErrorMessage(l, "Gangwarstart ist nicht möglich, da die beteiligten Fraktionen nicht genügend Mitglieder aufweisen."); - } - - return; + return this.TurfID; } - List inGangwar = new List(ownersInGangwar.Concat(attackersInGangwar)); - - usersInGangwar = inGangwar.ToArray(); - } - if (this.status == "normal") - { - if (this.timer != null) + public int getValue() { - this.timer.Stop(); - this.timer = null; + return this.value; } - this.Attacker = attacker; - this.status = "attack"; - List clientsInGangwar = new List(); - - foreach (var u in usersInGangwar) + public void setValue(int value) { - u.TriggerEvent("CLIENT:setAttackBlip", true, TurfID); - u.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); - u.SetData("inGangWar", getId()); - ChatService.SendMessage(u, "~y~[GANGWAR]~w~ Die " + getAttacker() + " haben das Gebiet ~y~" + TurfName + "~w~ der " + getOwner() + " angegriffen."); - clientsInGangwar.Add(u); + this.value = value; } - playerInGangwar = clientsInGangwar.ToArray(); - NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:Turf_Update", JsonConvert.SerializeObject(this.TurfID), JsonConvert.SerializeObject(this.status), JsonConvert.SerializeObject(this.Owner), JsonConvert.SerializeObject(this.Attacker)); - this.TurfTick(); - } - } - public void setKill(string FactionName) - { - if (getOwner() == FactionName) - { - Def_Score -= 1; - } - else if (getAttacker() == FactionName) - { - Att_Score -= 1; - } + public void addValue(int addedValue) + { + this.value += addedValue; + } + + public int getMaxValue() + { + return maxValue; + } + + public bool getSurplus() + { + return surplus; + } + + public void setSurplus(bool surplus) + { + this.surplus = surplus; + } + + public string getName() + { + return this.TurfName; + } + + public int getColor() + { + return this.Color; + } + + public string getOwner() + { + return this.Owner; + } + + public string getAttacker() + { + return this.Attacker; + } + + private void TurfTick() + { + this.timer = new System.Timers.Timer(1000); + + this.timer.Elapsed += Tick; + this.timer.AutoReset = true; + this.timer.Enabled = true; + this.timerCount = 0; + } + + private void Tick(object sender, System.Timers.ElapsedEventArgs e) + { + if (this.status == "attack") + { + update(); + } + } + + private void update() + { + #region Ticket system + + /* + try + { + Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Owner).ToArray(); + Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Attacker).ToArray(); + }catch(NullReferenceException ex) + { + int i = 0; + foreach(var c in playerInGangwar) + { + if (!NAPI.Entity.DoesEntityExist(c.Handle)) + { + this.playerInside = this.playerInside.Where(gp => gp != c).ToArray(); + } + i++; + } + } + if (owners.Length > attackers.Length) + this.Att_Score -= owners.Length - attackers.Length; + if(owners.Length < attackers.Length) + this.Def_Score -= attackers.Length - owners.Length; + */ + + #endregion Ticket system + + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); + } + if (this.Def_Score <= 0) + { + this.takeOver(this.Attacker); + } + else if (this.Att_Score <= 0) + { + this.takeOver(this.Owner); + } + timerCount += 1; + if (timerCount >= 900) //change to 900 (seconds) before release for testing reasons change to whatever you like + { + if (this.Def_Score > this.Att_Score) + { + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); + } + this.takeOver(this.Owner); + this.Att_Score = 0; + } + else if (this.Def_Score < this.Att_Score) + { + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); + } + this.takeOver(this.Attacker); + this.Def_Score = 0; + return; + } + else if (this.Def_Score == this.Att_Score) + { + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); + } + this.takeOver(this.Attacker); + this.Def_Score = 0; + + return; + } + } + } + + public void enter(Player client) + { + if (this.status == "attack") + { + if (client.GetUser().Faction.Name != getOwner() && client.GetUser().Faction.Name != getAttacker()) + return; + Player gPlayer = playerInGangwar.Where(c => c.GetUser().Id == client.GetUser().Id).FirstOrDefault(); + if (gPlayer == null) + { + using (var dbContext = new DatabaseContext()) + { + ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); + } + return; + } + } + + if (playerInside.Find(c => c == client) == null) + { + playerInside.Add(client); + client.SetData("GotInsideOfTurf", true); + } + } + + public void leave(Player client) + { + if (playerInside.Find(c => c == client) != null) + { + this.playerInside = this.playerInside.Where(c => c != client).ToList(); + if (this.status != "attack") + client.ResetData("GotInsideOfTurf"); + } + } + + public void takeOver(string FactionName) + { + this.timer.Stop(); + this.timer = null; + using (var dbContext = new DatabaseContext()) + { + if (getOwner() == FactionName) + { + Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); + Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); + foreach (var o in owners) + { + o.TriggerEvent("CLIENT:win"); + } + foreach (var a in attackers) + { + a.TriggerEvent("CLIENT:loose"); + } + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat erfolgreich das Gebiet ~g~" + getName() + "~w~ verteidigt.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat den Angrif auf das Gebiet ~r~" + getName() + "~w~ verloren.", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); + } + else if (getOwner() != FactionName) + { + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte das Gebiet ~r~" + getName() + "~w~ nicht verteidigen.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); + Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); + foreach (var o in owners) + { + o.TriggerEvent("CLIENT:loose"); + } + foreach (var a in attackers) + { + a.TriggerEvent("CLIENT:win"); + } + this.Owner = FactionName; + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte erfolgreich das Gebiet ~g~" + getName() + "~w~ erobern.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + Turfs turf = dbContext.Turfs.Where(t => t.Id == getId()).FirstOrDefault(); + turf.Owner = this.Owner; + turf.FactionId = dbContext.Factions.Where(f => f.Name == this.Owner).FirstOrDefault().Id; + dbContext.SaveChanges(); + } + } + this.Attacker = null; + foreach (var c in playerInGangwar) + { + c.TriggerEvent("CLIENT:setAttackBlip", false, TurfID); + c.ResetData("inGangWar"); + c.ResetData("GotInsideOfTurf"); + } + this.playerInGangwar = null; + Gangwar.loadTurfs(); + Gangwar.loadTurfs_ToAllPlayers(); + } + + public void attack(string attacker) + { + Player[] usersInGangwar; + using (var context = new DatabaseContext()) + { + var onlinePlayers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn()).Select(c => c.Name); + + List ownersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == getOwner()).Select(u => u.Player).ToList(); + List attackersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker).Select(u => u.Player).ToList(); + + if (ownersInGangwar.Count < 1 && attackersInGangwar.Count < 1) + { + List leaders = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker && u.FactionLeader).Select(u => u.Player).ToList(); + foreach (var l in leaders) + { + ChatService.ErrorMessage(l, "Gangwarstart ist nicht möglich, da die beteiligten Fraktionen nicht genügend Mitglieder aufweisen."); + } + + return; + } + List inGangwar = new List(ownersInGangwar.Concat(attackersInGangwar)); + + usersInGangwar = inGangwar.ToArray(); + } + if (this.status == "normal") + { + if (this.timer != null) + { + this.timer.Stop(); + this.timer = null; + } + this.Attacker = attacker; + this.status = "attack"; + + List clientsInGangwar = new List(); + + foreach (var u in usersInGangwar) + { + u.TriggerEvent("CLIENT:setAttackBlip", true, TurfID); + u.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); + u.SetData("inGangWar", getId()); + ChatService.SendMessage(u, "~y~[GANGWAR]~w~ Die " + getAttacker() + " haben das Gebiet ~y~" + TurfName + "~w~ der " + getOwner() + " angegriffen."); + clientsInGangwar.Add(u); + } + playerInGangwar = clientsInGangwar.ToArray(); + NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:Turf_Update", JsonConvert.SerializeObject(this.TurfID), JsonConvert.SerializeObject(this.status), JsonConvert.SerializeObject(this.Owner), JsonConvert.SerializeObject(this.Attacker)); + this.TurfTick(); + } + } + + public void setKill(string FactionName) + { + if (getOwner() == FactionName) + { + Def_Score -= 1; + } + else if (getAttacker() == FactionName) + { + Att_Score -= 1; + } + } } - } } diff --git a/ReallifeGamemode.Server/Inventory/GroundItem.cs b/ReallifeGamemode.Server/Inventory/GroundItem.cs index e199c7db..0fe1033c 100644 --- a/ReallifeGamemode.Server/Inventory/GroundItem.cs +++ b/ReallifeGamemode.Server/Inventory/GroundItem.cs @@ -1,11 +1,11 @@ using System.Collections.Generic; +using System.Linq; using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Managers; -using System.Linq; -using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Database.Models; namespace ReallifeGamemode.Server.Inventory { @@ -34,10 +34,12 @@ namespace ReallifeGamemode.Server.Inventory var invWeight = InventoryManager.GetUserInventoryWeight(player); var itemsToAdd = 0; GTANetworkAPI.Object nearestObject = GroundObjects.FirstOrDefault(d => d.Position == nearest.Position); - TextLabel nearestTextLabel = GroundTextLabels.FirstOrDefault(d => d.Position == nearest.Position); + TextLabel nearestTextLabel = GroundTextLabels.FirstOrDefault(d => d.Position == new Vector3(nearest.Position.X, nearest.Position.Y, nearest.Position.Z + 1.05) || d.Position == new Vector3(nearest.Position.X, nearest.Position.Y, nearest.Position.Z + 0.8)); IItem nearestItem = InventoryManager.GetItemById(nearest.ItemId); UserItem existingItem = InventoryManager.UserHasThisItem(player, nearest.ItemId); var user = player.GetUser(); + if (player.HasAttachment("ammobox")) + { player.SendNotification("~r~Du kannst momentan nichts tragen!", false); return; } if (nearestItem.Gewicht * nearest.Amount + invWeight > 40000) { for (var i = 1; i <= nearest.Amount; i++) @@ -69,7 +71,7 @@ namespace ReallifeGamemode.Server.Inventory else { UserItem newItem = new UserItem { ItemId = nearest.ItemId, UserId = user.Id, Amount = nearest.Amount }; - InventoryManager.AddItemToInventory(player, newItem); + InventoryManager.AddItemToInventory(player, newItem.ItemId, newItem.Amount); } nearest.Amount -= itemsToAdd; nearestTextLabel.Text = nearestItem.Name + " ~s~(~y~" + nearest.Amount + "~s~)"; @@ -90,11 +92,20 @@ namespace ReallifeGamemode.Server.Inventory else { UserItem item = new UserItem() { ItemId = nearest.ItemId, UserId = user.Id, Amount = nearest.Amount }; - InventoryManager.AddItemToInventory(player, item); + InventoryManager.AddItemToInventory(player, item.ItemId, item.Amount); } RemoveGroundItem(nearest, nearestObject, nearestTextLabel); player.SendNotification("Du hast ~g~" + nearest.Amount + " ~y~" + nearestItem.Name + " ~s~aufgehoben."); } + if (nearestItem is IWeaponDealItem obj) + { + if (!player.HasAttachment("ammobox")) + { + player.PlayAnimation("anim@heists@box_carry@", "idle", 49); + player.AddAttachment("ammobox", false); + NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed); + } + } } } @@ -108,4 +119,3 @@ namespace ReallifeGamemode.Server.Inventory } } } - diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs index bab77667..b327b78d 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs @@ -7,7 +7,7 @@ namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IDroppableItem : IItem - { - uint Object { get; } - } + { + uint Object { get; } + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs index 4c6e2ad2..9264a3c2 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs @@ -1,8 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Interfaces Item (IItem.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German @@ -11,12 +7,12 @@ using System.Text; namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IItem - { - int Id { get; } - string Name { get; } - string Description { get; } - int Gewicht { get; } - string Einheit { get; } - int Price { get; } - } + { + int Id { get; } + string Name { get; } + string Description { get; } + int Gewicht { get; } + string Einheit { get; } + int Price { get; } + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs index 22769290..28ea7b2c 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs @@ -1,8 +1,4 @@ -using GTANetworkAPI; -using ReallifeGamemode.Database.Entities; -using System; -using System.Collections.Generic; -using System.Text; +using ReallifeGamemode.Database.Entities; /** * @overview Life of German Reallife - Inventory Interfaces UsableItem (IUsableItem.cs) @@ -13,7 +9,7 @@ using System.Text; namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IUsableItem : IItem, IDroppableItem - { - void Use(UserItem uItem); - } + { + void Use(UserItem uItem); + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs index 07698d89..da45b53d 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs @@ -1,13 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IWeaponDealItem : IItem, IDroppableItem - { - bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh); - } + { + bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh); + } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Aal.cs b/ReallifeGamemode.Server/Inventory/Items/Aal.cs index 930c0b90..ac1ec0e3 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Aal.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Aal.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/Barsch.cs b/ReallifeGamemode.Server/Inventory/Items/Barsch.cs index 54dd90c4..4dbfef66 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Barsch.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Barsch.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs b/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs index 653cb29a..60f7c53b 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cannabis.cs @@ -1,7 +1,4 @@ using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; /** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) diff --git a/ReallifeGamemode.Server/Inventory/Items/CarbineRifle.cs b/ReallifeGamemode.Server/Inventory/Items/CarbineRifle.cs index ea55e6f6..c3ddff6d 100644 --- a/ReallifeGamemode.Server/Inventory/Items/CarbineRifle.cs +++ b/ReallifeGamemode.Server/Inventory/Items/CarbineRifle.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German @@ -19,6 +14,6 @@ namespace ReallifeGamemode.Server.Inventory.Items public override int Gewicht => 4000; public override string Einheit => "g"; public override uint Object => 3666746839; //3061944032 - public override int Price => 0; + public override int Price => 0; } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs b/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs index 044ba1cb..75e83ab7 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cheeseburger.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Cheeseburger (Cheeseburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German @@ -21,6 +16,5 @@ namespace ReallifeGamemode.Server.Inventory.Items public override int HpAmount => 20; public override uint Object => 2240524752; public override int Price => 150; - } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Cocain.cs b/ReallifeGamemode.Server/Inventory/Items/Cocain.cs index b9cd9d39..4bb35ab0 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Cocain.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Cocain.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Chickenburger (Chickenburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/DropItem.cs b/ReallifeGamemode.Server/Inventory/Items/DropItem.cs index 2ed4e902..efeae4bd 100644 --- a/ReallifeGamemode.Server/Inventory/Items/DropItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/DropItem.cs @@ -3,27 +3,24 @@ using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Managers; -using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.Inventory.Items { public abstract class DropItem : IDroppableItem - { - public abstract int HpAmount { get; } - public abstract int Id { get; } - public abstract string Name { get; } - public abstract string Description { get; } - public abstract int Gewicht { get; } - public abstract string Einheit { get; } - public abstract uint Object { get; } - public abstract int Price { get; } - - public void Drop(UserItem uItem, Player player, int amount) { - player.SendNotification("Du hast ~g~" + amount + " ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~weggeworfen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, amount); + public abstract int HpAmount { get; } + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract int Gewicht { get; } + public abstract string Einheit { get; } + public abstract uint Object { get; } + public abstract int Price { get; } + + public void Drop(UserItem uItem, Player player, int amount) + { + player.SendNotification("Du hast ~g~" + amount + " ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~weggeworfen.", false); + InventoryManager.RemoveUserItem(player.GetUser(), uItem, amount); + } } - } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Flunder.cs b/ReallifeGamemode.Server/Inventory/Items/Flunder.cs index a9696747..caea9851 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Flunder.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Flunder.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs b/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs index d19a19af..93371992 100644 --- a/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs @@ -3,36 +3,33 @@ using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Managers; -using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.Inventory.Items { public abstract class FoodItem : IUsableItem - { - public abstract int HpAmount { get; } - public abstract int Id { get; } - public abstract string Name { get; } - public abstract string Description { get; } - public abstract int Gewicht { get; } - public abstract string Einheit { get; } - public abstract uint Object { get; } - public abstract int Price { get; } - - public void Use(UserItem uItem) { - Player player = uItem.GetUser().Player; + public abstract int HpAmount { get; } + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract int Gewicht { get; } + public abstract string Einheit { get; } + public abstract uint Object { get; } + public abstract int Price { get; } - int amountToAdd = HpAmount; - if (player.Health + amountToAdd > 100) - { - amountToAdd = 100 - player.Health; - } + public void Use(UserItem uItem) + { + Player player = uItem.GetUser().Player; - player.Health += amountToAdd; - player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } + + player.Health += amountToAdd; + player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false); + InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); + } } - } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Lachs.cs b/ReallifeGamemode.Server/Inventory/Items/Lachs.cs index 75de97be..c2e7daa9 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Lachs.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Lachs.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/Pistol50.cs b/ReallifeGamemode.Server/Inventory/Items/Pistol50.cs index 62496028..6369cdf6 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Pistol50.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Pistol50.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/PumpShotgun.cs b/ReallifeGamemode.Server/Inventory/Items/PumpShotgun.cs index f540609f..c873c0e5 100644 --- a/ReallifeGamemode.Server/Inventory/Items/PumpShotgun.cs +++ b/ReallifeGamemode.Server/Inventory/Items/PumpShotgun.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/SMG.cs b/ReallifeGamemode.Server/Inventory/Items/SMG.cs index 99bc94a3..4f2d965b 100644 --- a/ReallifeGamemode.Server/Inventory/Items/SMG.cs +++ b/ReallifeGamemode.Server/Inventory/Items/SMG.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/Schutzweste.cs b/ReallifeGamemode.Server/Inventory/Items/Schutzweste.cs index 4c217e2c..d15ea31a 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Schutzweste.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Schutzweste.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/SniperRifle.cs b/ReallifeGamemode.Server/Inventory/Items/SniperRifle.cs index 2a792fac..050865ae 100644 --- a/ReallifeGamemode.Server/Inventory/Items/SniperRifle.cs +++ b/ReallifeGamemode.Server/Inventory/Items/SniperRifle.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs b/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs index 9723a074..fd2c4e2f 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Thunfisch.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs b/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs index 9fb91037..ee91765c 100644 --- a/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs @@ -2,31 +2,27 @@ using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory.Interfaces; -using ReallifeGamemode.Server.Managers; -using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.Inventory.Items { public abstract class WeaponDealItem : IWeaponDealItem - { - public abstract int Id { get; } - public abstract string Name { get; } - public abstract string Description { get; } - public abstract int Gewicht { get; } - public abstract string Einheit { get; } - public abstract uint Object { get; } - public abstract int Price { get; } - - public bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh) { - if (!fVeh.GetOwners().Contains(client.GetUser().FactionId ?? 0)) - return false; - if (fVeh.Model != VehicleHash.Burrito3) - return false; + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract int Gewicht { get; } + public abstract string Einheit { get; } + public abstract uint Object { get; } + public abstract int Price { get; } - return true; + public bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh) + { + if (!fVeh.GetOwners().Contains(client.GetUser().FactionId ?? 0)) + return false; + if (fVeh.Model != VehicleHash.Burrito3) + return false; + + return true; + } } - } } diff --git a/ReallifeGamemode.Server/Inventory/Items/Zander.cs b/ReallifeGamemode.Server/Inventory/Items/Zander.cs index 2ea621a3..2e24b879 100644 --- a/ReallifeGamemode.Server/Inventory/Items/Zander.cs +++ b/ReallifeGamemode.Server/Inventory/Items/Zander.cs @@ -1,9 +1,4 @@ -using ReallifeGamemode.Server.Inventory.Interfaces; -using System; -using System.Collections.Generic; -using System.Text; - -/** +/** * @overview Life of German Reallife - Inventory Items Hamburger (Hamburger.cs) * @author VegaZ * @copyright (c) 2008 - 2018 Life of German diff --git a/ReallifeGamemode.Server/Job/BusDriverJob.cs b/ReallifeGamemode.Server/Job/BusDriverJob.cs index 9cab0dc9..293f857f 100644 --- a/ReallifeGamemode.Server/Job/BusDriverJob.cs +++ b/ReallifeGamemode.Server/Job/BusDriverJob.cs @@ -1,12 +1,12 @@ using System; using System.Collections.Generic; using GTANetworkAPI; -using ReallifeGamemode.Server.Util; using Newtonsoft.Json; +using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Job { - class BusDriverJob : JobBase + internal class BusDriverJob : JobBase { public override int Id => 4; @@ -57,7 +57,6 @@ namespace ReallifeGamemode.Server.Job private readonly IReadOnlyCollection RouteLong = new List { - new Vector3(403.8605,-597.0284,27.1788), new Vector3(953.7955,140.8976,79.34214), new Vector3(1531.374,832.1884,75.94727), @@ -67,12 +66,10 @@ namespace ReallifeGamemode.Server.Job new Vector3(2599.954,4264.15,40.87192), new Vector3(2705.722,3308.447,54.2841), new Vector3(355.8403,-634.835,27.56906), - }.AsReadOnly(); private readonly IReadOnlyCollection RouteVeryLong = new List { - new Vector3(-562.68, -2203.85, 6.72), new Vector3(-889.0892, -2190.34, 8.100273), new Vector3(-695.8978, -1197.1, 10.07723), @@ -149,12 +146,10 @@ namespace ReallifeGamemode.Server.Job { CheckPointHandle.StartCheckPointRoute(player, RouteVeryLong, 3000, 1, 7, "busDriverJob"); } - } public static void payWage(Player jobber, int wage) { - } } } diff --git a/ReallifeGamemode.Server/Job/JobBase.cs b/ReallifeGamemode.Server/Job/JobBase.cs index bfda3968..fe23b679 100644 --- a/ReallifeGamemode.Server/Job/JobBase.cs +++ b/ReallifeGamemode.Server/Job/JobBase.cs @@ -1,64 +1,66 @@ -using GTANetworkAPI; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; -using System; -using System.Collections.Generic; -using System.Linq; namespace ReallifeGamemode.Server.Job { public abstract class JobBase : Script - { - public delegate void JobStartHandler(Player player); - public delegate void JobStopHandler(Player player); - - public event JobStartHandler JobStart; - public event JobStopHandler JobStop; - - private readonly List _inJob = new List(); - private static readonly List jobPlayer = new List(); - - public abstract int Id { get; } - - public abstract string Name { get; } - - public abstract bool NeedVehicleToStart { get; } - - public void StartJob(Player player) { - if (_inJob.Contains(player)) return; - _inJob.Add(player); - jobPlayer.Add(player); + public delegate void JobStartHandler(Player player); - ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); + public delegate void JobStopHandler(Player player); - JobStart?.Invoke(player); + public event JobStartHandler JobStart; + + public event JobStopHandler JobStop; + + private readonly List _inJob = new List(); + private static readonly List jobPlayer = new List(); + + public abstract int Id { get; } + + public abstract string Name { get; } + + public abstract bool NeedVehicleToStart { get; } + + public void StartJob(Player player) + { + if (_inJob.Contains(player)) return; + _inJob.Add(player); + jobPlayer.Add(player); + + ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); + + JobStart?.Invoke(player); + } + + public void StopJob(Player player, bool quit = false) + { + if (!_inJob.Contains(player)) return; + _inJob.Remove(player); + jobPlayer.Remove(player); + + if (quit) + { + ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); + } + + JobStop?.Invoke(player); + } + + public List GetJobVehicles() + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList(); + } + } + + public static List GetPlayerInJob() => jobPlayer; + + public List GetUsersInJob() => _inJob; } - - public void StopJob(Player player, bool quit = false) - { - if (!_inJob.Contains(player)) return; - _inJob.Remove(player); - jobPlayer.Remove(player); - - if (quit) - { - ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); - } - - JobStop?.Invoke(player); - } - - public List GetJobVehicles() - { - using (var dbContext = new DatabaseContext()) - { - return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList(); - } - } - - public static List GetPlayerInJob() => jobPlayer; - public List GetUsersInJob() => _inJob; - } } diff --git a/ReallifeGamemode.Server/Job/PilotJob.cs b/ReallifeGamemode.Server/Job/PilotJob.cs index 2abe86b2..72fc1fb6 100644 --- a/ReallifeGamemode.Server/Job/PilotJob.cs +++ b/ReallifeGamemode.Server/Job/PilotJob.cs @@ -1,11 +1,12 @@ using System; using System.Collections.Generic; using GTANetworkAPI; -using ReallifeGamemode.Server.Util; using Newtonsoft.Json; +using ReallifeGamemode.Server.Util; + namespace ReallifeGamemode.Server.Job { - class PilotJob : JobBase + internal class PilotJob : JobBase { public override int Id => 3; @@ -101,8 +102,6 @@ namespace ReallifeGamemode.Server.Job new Vector3(-591.96, -1943.26, 311.73), }.AsReadOnly(); - - public PilotJob() { JobStart += PilotJob_JobStart; @@ -117,7 +116,6 @@ namespace ReallifeGamemode.Server.Job if (veh.DisplayName == "Velum") { - listRouteTexts2.Add("Route 4"); listRouteTexts2.Add("Route 5"); listRouteTexts2.Add("Route 6"); @@ -132,8 +130,8 @@ namespace ReallifeGamemode.Server.Job player.TriggerEvent("showPilotRouteMenu", JsonConvert.SerializeObject(listRouteTexts)); } - } + [RemoteEvent("startPilotRoute")] public void StartPilotRoute(Player player, string type) { diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index 19e8307a..da3ee506 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -8,33 +8,33 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Job { public class RefuseCollectorJob : JobBase - { - public override int Id => 2; - - public override string Name => "Müllmann"; - - public override bool NeedVehicleToStart => false; - - public RefuseCollectorJob() { - JobStart += RefuseCollectorJobJobStart; - JobStop += RefuseCollectorJobJobStop; - } + public override int Id => 2; - private void RefuseCollectorJobJobStart(Player player) - { - //setClothes - } + public override string Name => "Müllmann"; - private void RefuseCollectorJobJobStop(Player player) - { - //removeClothes and replace with old - MuellmannJobBeenden(player); - } + public override bool NeedVehicleToStart => false; - public static List muellmanData = new List(); + public RefuseCollectorJob() + { + JobStart += RefuseCollectorJobJobStart; + JobStop += RefuseCollectorJobJobStop; + } - private readonly IReadOnlyCollection vector3s = new List + private void RefuseCollectorJobJobStart(Player player) + { + //setClothes + } + + private void RefuseCollectorJobJobStop(Player player) + { + //removeClothes and replace with old + MuellmannJobBeenden(player); + } + + public static List muellmanData = new List(); + + private readonly IReadOnlyCollection vector3s = new List { new Vector3(332.9839782714844, -1741.807373046875, 29.73055076599121), new Vector3(321.3463439941406, -1759.986572265625, 29.644014358520508), @@ -153,303 +153,298 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); - [RemoteEvent("CLIENT:MuellmannJobStarten")] - public void MuellmannJobStarten(Player player, Vehicle vehicle) - { - if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) - { - Vehicle veh; - foreach (var data in muellmanData) + [RemoteEvent("CLIENT:MuellmannJobStarten")] + public void MuellmannJobStarten(Player player, Vehicle vehicle) { - if (data.getDataFromClient(player) == null) continue; - veh = data.vehicle; - ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job gestartet!"); - player.TriggerEvent("SERVER:MuellmannStatusTrue"); - player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh); - return; - } - } - } - - public void MuellmannJobBeenden(Player player) - { - ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job beendet!"); - player.TriggerEvent("SERVER:MuellmannStatusFalse"); - player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); - - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } - } - - [RemoteEvent("CLIENT:MuellmannImShape")] - public void MuellmannImShape(Player player, int colshapeIndex) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - Player target = data.getPartnerClient(player); - if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); - ChatService.SendMessage((Player)player, "Du hast den Müllsack in der Hand. Bringe ihm zum Müllwagen hinten."); - return; - } - } - - [RemoteEvent("CLIENT:MuellmannAddSack")] - public void MuellmannAddSack(Player player) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - int count = data.getTrashCount(); - count++; - data.setTrashCount(count); - - Player target = data.getPartnerClient(player); - if (target != null) ChatService.SendMessage((Player)target, $"Es sind jetzt {count} Säcke im Müllwagen."); - ChatService.SendMessage((Player)player, $"Es sind jetzt {count} Säcke im Müllwagen."); - - if (data.getTrashCount() >= 20) - { - ChatService.SendMessage((Player)player, "Auto ist voll fahre nun zu Base."); - if (target != null) { ChatService.SendMessage((Player)target, "Auto ist voll fahre nun zu Base."); target.TriggerEvent("SERVER:MuellmannZuBase"); } - player.TriggerEvent("SERVER:MuellmannZuBase"); - } - //bonus pro sack - return; - } - } - - [RemoteEvent("CLIENT:MuellmannBaseSack")] - public void MuellmannBaseSack(Player player) - { - if (player.VehicleSeat != 0) return; - - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - int count = data.getTrashCount(); - - Player target = data.getPartnerClient(player); - if (target != null) ChatService.SendMessage((Player)target, $"Fahrzeug wurde entleert. Säcke: {count}"); - ChatService.SendMessage((Player)player, $"Fahrzeug wurde entleert. Säcke: {count}"); - //bonus pro sack - - data.setTrashCount(0); - Console.WriteLine($"[DATA DEBUG] vehicle: {data.vehicle.DisplayName} | Players: {data.getClientsFromData().Count} | Säcke: {data.getTrashCount()}"); - return; - } - } - - #region zweiSpeieler - - public void MuellmannOnPlayerDc(Player player) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } - } - - public void MuellmannOnPlayerDeath(Player player) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } - } - - [ServerEvent(Event.VehicleDeath)] - private void MuellmannOnVehicle(Vehicle veh) - { - if (veh.Model != (uint)Types.VehicleModel.Trash && veh.Model != (uint)Types.VehicleModel.Trash2) return; - foreach (var data in muellmanData) - { - if (data.vehicle == veh) - { - //müllfahrzeug respawnen - - List clients = data.getClientsFromData(); - foreach (var c in clients) { RefuseCollectorJobJobStop(c); } - - muellmanData.Remove(data); - return; - } - } - } - - public void MuellmannOnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat) - { - Player target; - if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) - { - foreach (var data in muellmanData) - { - if (data.vehicle == vehicle) - { - if (data.getDataFromClient(player) != null) - return; - - if (!data.hasFreePlace()) + if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) { - player.StopAnimation(); - return; + Vehicle veh; + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + veh = data.vehicle; + ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job gestartet!"); + player.TriggerEvent("SERVER:MuellmannStatusTrue"); + player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh); + return; + } } - CheckDataForDuplicatePlayer(player, data); - data.setClientToData(player); - - MuellmannJobStarten(player, vehicle); - - target = data.getPartnerClient(player); - if (target == null) - return; - - ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); - ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); - return; - } } - MuellmannData newData = new MuellmannData(vehicle); - muellmanData.Add(newData); - CheckDataForDuplicatePlayer(player, newData); - newData.setClientToData(player); - - MuellmannJobStarten(player, vehicle); - - target = newData.getPartnerClient(player); - if (target == null) - return; - - ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); - ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); - } - } - - public void CheckDataForDuplicatePlayer(Player player, MuellmannData data) - { - foreach (var d in muellmanData) - { - if (d == data) continue; - - MuellmannData temp = d.getDataFromClient(player); - if (temp == null) continue; - - temp.removeClientFromData(player); - } - } - - #endregion zweiSpeieler - - #region Data - - public class MuellmannData - { - private Player client1; - private Player client2; - public Vehicle vehicle; - private static int trashCount = 0; - - public MuellmannData(Vehicle vehicle) - { - this.vehicle = vehicle; - } - - public void setClientToData(Player player) - { - if (client1 == player || client2 == player) + public void MuellmannJobBeenden(Player player) { - Console.WriteLine("Spieler schon gespeichert"); - return; + ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job beendet!"); + player.TriggerEvent("SERVER:MuellmannStatusFalse"); + player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); + + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + if (data.hasFreePlace()) + { + muellmanData.Remove(data); + //müllwagen respawnen + return; + } + + data.removeClientFromData(player); + return; + } } - if (client1 == null) { client1 = player; return; } - else if (client2 == null) { client2 = player; return; } - else if (client1 != null && client2 != null) { Console.WriteLine("kein Platz"); } - } + [RemoteEvent("CLIENT:MuellmannImShape")] + public void MuellmannImShape(Player player, int colshapeIndex) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + Player target = data.getPartnerClient(player); + if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); + ChatService.SendMessage((Player)player, "Du hast den Müllsack in der Hand. Bringe ihm zum Müllwagen hinten."); + player.AddAttachment("binbag", false); + return; + } + } - public void removeClientFromData(Player player) - { - if (client1 == player) { client1 = null; } - if (client2 == player) { client2 = null; } - } + [RemoteEvent("CLIENT:MuellmannAddSack")] + public void MuellmannAddSack(Player player) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; - public int getTrashCount() - { - return trashCount; - } + data.setTrashCount(data.getTrashCount() + 1); - public void setTrashCount(int i) - { - trashCount = i; - } + Player target = data.getPartnerClient(player); + player.AddAttachment("binbag", true); + if (data.getTrashCount() >= 20) + { + ChatService.SendMessage((Player)player, "Auto ist voll fahre nun zu Base."); + if (target != null) { ChatService.SendMessage((Player)target, "Auto ist voll fahre nun zu Base."); target.TriggerEvent("SERVER:MuellmannZuBase"); } + player.TriggerEvent("SERVER:MuellmannZuBase"); + } + //bonus pro sack + return; + } + } - public List getClientsFromData() - { - List tempList = new List(); - if (client1 != null) { tempList.Add(client1); } - if (client2 != null) { tempList.Add(client2); } - return tempList; - } + [RemoteEvent("CLIENT:MuellmannBaseSack")] + public void MuellmannBaseSack(Player player) + { + if (player.VehicleSeat != 0) return; - public MuellmannData getDataFromClient(Player player) - { - if (client1 != player && client2 != player) - return null; - return this; - } + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; - public bool hasFreePlace() - { - if (client1 != null && client2 != null) - return false; - return true; - } + Player target = data.getPartnerClient(player); + if (target != null) ChatService.SendMessage((Player)target, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + ChatService.SendMessage((Player)player, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + //bonus pro sack - public Player getPartnerClient(Player player) - { - if (client1 != player && client2 != player) - return null; + data.setTrashCount(0); + Console.WriteLine($"[DATA DEBUG] vehicle: {data.vehicle.DisplayName} | Players: {data.getClientsFromData().Count} | Säcke: {data.getTrashCount()}"); + return; + } + } - if (client1 == player) { return client2; } - if (client2 == player) { return client1; } - return null; - } + #region zweiSpeieler + + public void MuellmannOnPlayerDc(Player player) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + if (data.hasFreePlace()) + { + muellmanData.Remove(data); + //müllwagen respawnen + return; + } + + data.removeClientFromData(player); + return; + } + } + + public void MuellmannOnPlayerDeath(Player player) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + if (data.hasFreePlace()) + { + muellmanData.Remove(data); + //müllwagen respawnen + return; + } + + data.removeClientFromData(player); + return; + } + } + + [ServerEvent(Event.VehicleDeath)] + private void MuellmannOnVehicle(Vehicle veh) + { + if (veh.Model != (uint)Types.VehicleModel.Trash && veh.Model != (uint)Types.VehicleModel.Trash2) return; + foreach (var data in muellmanData) + { + if (data.vehicle == veh) + { + //müllfahrzeug respawnen + + List clients = data.getClientsFromData(); + foreach (var c in clients) { RefuseCollectorJobJobStop(c); } + + muellmanData.Remove(data); + return; + } + } + } + + public void MuellmannOnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat) + { + Player target; + if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) + { + foreach (var data in muellmanData) + { + if (data.vehicle == vehicle) + { + if (data.getDataFromClient(player) != null) + return; + + if (!data.hasFreePlace()) + { + player.StopAnimation(); + return; + } + CheckDataForDuplicatePlayer(player, data); + data.setClientToData(player); + //destroy veh + MuellmannJobStarten(player, vehicle); + + target = data.getPartnerClient(player); + if (target == null) + return; + + ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); + ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); + return; + } + } + + MuellmannData newData = new MuellmannData(vehicle); + muellmanData.Add(newData); + CheckDataForDuplicatePlayer(player, newData); + newData.setClientToData(player); + + MuellmannJobStarten(player, vehicle); + + target = newData.getPartnerClient(player); + if (target == null) + return; + + ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); + ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); + } + } + + public void CheckDataForDuplicatePlayer(Player player, MuellmannData data) + { + foreach (var d in muellmanData) + { + if (d == data) continue; + + MuellmannData temp = d.getDataFromClient(player); + if (temp == null) continue; + + temp.removeClientFromData(player); + } + } + + #endregion zweiSpeieler + + #region Data + + public class MuellmannData + { + private Player client1; + private Player client2; + public Vehicle vehicle; + private static int trashCount = 0; + + public MuellmannData(Vehicle vehicle) + { + this.vehicle = vehicle; + } + + public void setClientToData(Player player) + { + if (client1 == player || client2 == player) + { + Console.WriteLine("Spieler schon gespeichert"); + return; + } + + if (client1 == null) { client1 = player; return; } + else if (client2 == null) { client2 = player; return; } + else if (client1 != null && client2 != null) { Console.WriteLine("kein Platz"); } + } + + public void removeClientFromData(Player player) + { + if (client1 == player) { client1 = null; } + if (client2 == player) { client2 = null; } + } + + public int getTrashCount() + { + return trashCount; + } + + public void setTrashCount(int i) + { + trashCount = i; + } + + public List getClientsFromData() + { + List tempList = new List(); + if (client1 != null) { tempList.Add(client1); } + if (client2 != null) { tempList.Add(client2); } + return tempList; + } + + public MuellmannData getDataFromClient(Player player) + { + if (client1 != player && client2 != player) + return null; + return this; + } + + public bool hasFreePlace() + { + if (client1 != null && client2 != null) + return false; + return true; + } + + public Player getPartnerClient(Player player) + { + if (client1 != player && client2 != player) + return null; + + if (client1 == player) { return client2; } + if (client2 == player) { return client1; } + return null; + } + } + + #endregion Data } - - #endregion Data - } } diff --git a/ReallifeGamemode.Server/Job/TaxiDriverJob.cs b/ReallifeGamemode.Server/Job/TaxiDriverJob.cs index 66d02a8b..7d1e649d 100644 --- a/ReallifeGamemode.Server/Job/TaxiDriverJob.cs +++ b/ReallifeGamemode.Server/Job/TaxiDriverJob.cs @@ -1,21 +1,18 @@ using System; using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Extensions; -using System.Timers; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Managers; -using ReallifeGamemode.Database.Entities; using System.Linq; +using GTANetworkAPI; using Newtonsoft.Json; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; +using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Job { - class TaxiDriverJob : JobBase + internal class TaxiDriverJob : JobBase { public List TaxiContracts { get; set; } = new List(); @@ -27,7 +24,6 @@ namespace ReallifeGamemode.Server.Job public override bool NeedVehicleToStart => true; - private static TaxiDriverJob _Instance; public TaxiDriverJob() @@ -42,6 +38,7 @@ namespace ReallifeGamemode.Server.Job _Instance = new TaxiDriverJob(); return _Instance; } + private void TaxiDriverJobJobStart(Player player) { player.Vehicle.SetSharedData("vehicleTaxiLight", true); @@ -89,24 +86,23 @@ namespace ReallifeGamemode.Server.Job dbContext.SaveChanges(); target.Player.TriggerEvent("SERVER:SET_HANDMONEY", target.Handmoney); } - } - /* - public static void StartTaxiTimer() - { - Timer timer = new Timer(500); - timer.Start(); - timer.Elapsed += UpdateFare; - } - */ + /* + public static void StartTaxiTimer() + { + Timer timer = new Timer(500); + timer.Start(); + timer.Elapsed += UpdateFare; + } + */ public static void UpdateFare() { foreach (var player in GetPlayerInJob()) { User u = player.GetUser(); - if (u.JobId != 1) return; + if (u.JobId != 1) return; Console.WriteLine(player.Name); if (!player.HasData("hasPassager")) { player.SetData("hasPassager", false); continue; } int playerId = player.GetUser().Id; @@ -124,9 +120,7 @@ namespace ReallifeGamemode.Server.Job { occupant.TriggerEvent("CLIENT:updateFare", JsonConvert.SerializeObject(distance)); } - } } - } } diff --git a/ReallifeGamemode.Server/Main.cs b/ReallifeGamemode.Server/Main.cs index e103bc54..dc220ac5 100644 --- a/ReallifeGamemode.Server/Main.cs +++ b/ReallifeGamemode.Server/Main.cs @@ -1,29 +1,21 @@ -using System.Globalization; +using System.Collections.Generic; +using System.Globalization; +using System.Linq; +using System.Reflection; using GTANetworkAPI; using Newtonsoft.Json; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Classes; -using ReallifeGamemode.Server.Finance; +using ReallifeGamemode.Server.Common; +using ReallifeGamemode.Server.Core.API; +using ReallifeGamemode.Server.Core.Events; +using ReallifeGamemode.Server.Core.RageMP; +using ReallifeGamemode.Server.DrivingSchool; using ReallifeGamemode.Server.Managers; using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Server.Wanted; -using ReallifeGamemode.Server.DrivingSchool; -using ReallifeGamemode.Server.WeaponDeal; -using ReallifeGamemode.Server.Core.API; -using ReallifeGamemode.Server.Core.RageMP; -using ReallifeGamemode.Server.Core.Events; -using System.Collections.Generic; -using ReallifeGamemode.Server.Common; -using System.Reflection; -using System.Linq; -using ReallifeGamemode.Server.Job; -using ReallifeGamemode.Database.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Infrastructure; -using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Services; - /** * @overview Life of German Reallife - Main Class (Main.cs) * @author VegaZ, hydrant @@ -33,93 +25,93 @@ using ReallifeGamemode.Services; namespace ReallifeGamemode.Server { public class Main : Script - { - public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829); - public static readonly float DEFAULT_SPAWN_HEADING = 340.8f; - - public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE"); - - private EventHandler eventHandler; - - [ServerEvent(Event.ResourceStart)] - public void OnResourceStart() { - var methods = Assembly.GetExecutingAssembly() - .GetTypes() - .SelectMany(t => t.GetMethods()) - .Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0) - .ToArray(); + public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829); + public static readonly float DEFAULT_SPAWN_HEADING = 340.8f; - var cmdAttributes = methods.Select(c => c.GetCustomAttribute()).ToList(); + public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE"); - var registeredCommands = cmdAttributes.Select(c => c.CommandString).ToList(); - cmdAttributes.Where(c => c.Alias?.Any() ?? false).ToList().ForEach(a => - { - registeredCommands.AddRange(a.Alias.Split(',')); - }); + private EventHandler eventHandler; - IAPI apiInstance = new RageAPI(); - eventHandler = new EventHandler(apiInstance); - - new Core.Main(apiInstance, eventHandler, registeredCommands.ToArray()); - - NAPI.Server.SetGlobalServerChat(false); - - NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht."); - NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING); - NAPI.Server.SetAutoSpawnOnConnect(false); - NAPI.Server.SetAutoRespawnAfterDeath(false); - NAPI.Data.SetWorldData("playerCreatorDimension", 0); - - JsonConvert.DefaultSettings = () => - { - return new JsonSerializerSettings() + [ServerEvent(Event.ResourceStart)] + public void OnResourceStart() { - NullValueHandling = NullValueHandling.Ignore - }; - }; + var methods = Assembly.GetExecutingAssembly() + .GetTypes() + .SelectMany(t => t.GetMethods()) + .Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0) + .ToArray(); - InventoryManager.LoadItems(); - ShopManager.LoadClotheShops(); - ShopManager.LoadItemShops(); - TuningManager.LoadTuningGarages(); + var cmdAttributes = methods.Select(c => c.GetCustomAttribute()).ToList(); - TimeManager.StartTimeManager(); - VehicleManager.CheckEnabledMods(); + var registeredCommands = cmdAttributes.Select(c => c.CommandString).ToList(); + cmdAttributes.Where(c => c.Alias?.Any() ?? false).ToList().ForEach(a => + { + registeredCommands.AddRange(a.Alias.Split(',')); + }); - DatabaseHelper.InitDatabaseFirstTime(); + IAPI apiInstance = new RageAPI(); + eventHandler = new EventHandler(apiInstance); - FactionHelper.CheckFactionBankAccounts(); - BusinessManager.LoadBusinesses(); - //InteriorManager.LoadInteriors(); - DoorManager.LoadDoors(); - ATMManager.InitATMs(); - CityHallManager.LoadCityHall(); - JobManager.LoadJobs(); - //TaxiDriverJob.StartTaxiTimer(); Obselete - //HouseManager.LoadHouses(); - DrivingSchool.DrivingSchool.Setup(); - PlaneSchool.Setup(); - Gangwar.Gangwar.loadTurfs(); + new Core.Main(apiInstance, eventHandler, registeredCommands.ToArray()); - TempBlip tempBlip = new TempBlip() - { - Color = 1, - Name = "", - Transparency = 0, - ShortRange = true, - Sprite = 1, - Scale = 1, - }; + NAPI.Server.SetGlobalServerChat(false); - NAPI.Data.SetWorldData("blipTemplate", tempBlip); + NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht."); + NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING); + NAPI.Server.SetAutoSpawnOnConnect(false); + NAPI.Server.SetAutoRespawnAfterDeath(false); + NAPI.Data.SetWorldData("playerCreatorDimension", 0); - //WantedEscapeTimer.WantedTimer(); Obselete - //Jail.JailTimer(); Obselete - //Economy.PaydayTimer(); Obselete - // WeaponDealManager.WeaponDealTimer(); Obselete + JsonConvert.DefaultSettings = () => + { + return new JsonSerializerSettings() + { + NullValueHandling = NullValueHandling.Ignore + }; + }; - ThreadTimers.StartAllTimers(); + InventoryManager.LoadItems(); + ShopManager.LoadClotheShops(); + ShopManager.LoadItemShops(); + TuningManager.LoadTuningGarages(); + + TimeManager.StartTimeManager(); + VehicleManager.CheckEnabledMods(); + + DatabaseHelper.InitDatabaseFirstTime(); + + FactionHelper.CheckFactionBankAccounts(); + BusinessManager.LoadBusinesses(); + //InteriorManager.LoadInteriors(); + DoorManager.LoadDoors(); + ATMManager.InitATMs(); + CityHallManager.LoadCityHall(); + JobManager.LoadJobs(); + //TaxiDriverJob.StartTaxiTimer(); Obselete + //HouseManager.LoadHouses(); + DrivingSchool.DrivingSchool.Setup(); + PlaneSchool.Setup(); + Gangwar.Gangwar.loadTurfs(); + + TempBlip tempBlip = new TempBlip() + { + Color = 1, + Name = "", + Transparency = 0, + ShortRange = true, + Sprite = 1, + Scale = 1, + }; + + NAPI.Data.SetWorldData("blipTemplate", tempBlip); + + //WantedEscapeTimer.WantedTimer(); Obselete + //Jail.JailTimer(); Obselete + //Economy.PaydayTimer(); Obselete + // WeaponDealManager.WeaponDealTimer(); Obselete + + ThreadTimers.StartAllTimers(); UserBankAccount.BalanceChanged += (account) => { @@ -137,11 +129,11 @@ namespace ReallifeGamemode.Server }; } - [RemoteEvent("CLIENT:Event")] - public void OnClientEvent(Player player, string dataStr) - { - var data = dataStr.DeserializeJson>(); - eventHandler.HandleEvent(new RagePlayer(player), data); + [RemoteEvent("CLIENT:Event")] + public void OnClientEvent(Player player, string dataStr) + { + var data = dataStr.DeserializeJson>(); + eventHandler.HandleEvent(new RagePlayer(player), data); + } } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Managers/ATMManager.cs b/ReallifeGamemode.Server/Managers/ATMManager.cs index 84c77b17..4671862e 100644 --- a/ReallifeGamemode.Server/Managers/ATMManager.cs +++ b/ReallifeGamemode.Server/Managers/ATMManager.cs @@ -1,11 +1,9 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; /** * @overview Life of German Reallife - Managers ATMManager (ATMManager.cs) @@ -16,136 +14,140 @@ using ReallifeGamemode.Database.Models; namespace ReallifeGamemode.Server.Managers { public class ATMManager : Script - { - public static List ATMColShapes = new List(); - - public static void InitATMs() { - var addedATMs = 0; - using (var dbContext = new DatabaseContext()) - { - foreach (var currentATM in dbContext.Blips) + public static List ATMColShapes = new List(); + + public static void InitATMs() { - if (currentATM.Sprite == 500) - { - if (dbContext.ATMs.FirstOrDefault(a => a.Id == currentATM.Id) == null) + var addedATMs = 0; + using (var dbContext = new DatabaseContext()) { - var dataSet = new ATM - { - Id = currentATM.Id, - X = currentATM.PositionX, - Y = currentATM.PositionY, - Z = currentATM.PositionZ - }; - dbContext.Add(dataSet); - addedATMs++; + foreach (var currentATM in dbContext.Blips) + { + if (currentATM.Sprite == 500) + { + if (dbContext.ATMs.FirstOrDefault(a => a.Id == currentATM.Id) == null) + { + var dataSet = new ATM + { + Id = currentATM.Id, + X = currentATM.PositionX, + Y = currentATM.PositionY, + Z = currentATM.PositionZ + }; + dbContext.Add(dataSet); + addedATMs++; + } + else + { + continue; + } + } + } + if (addedATMs > 0) + { + NAPI.Util.ConsoleOutput(addedATMs + " Geldautomaten hinzugefügt"); + } + else + { + NAPI.Util.ConsoleOutput("Keine Geldautomaten hinzugefügt"); + } + + dbContext.SaveChanges(); + LoadATMs(); } - else - { - continue; - } - } - } - if (addedATMs > 0) - { - NAPI.Util.ConsoleOutput(addedATMs + " Geldautomaten hinzugefügt"); - } - else - { - NAPI.Util.ConsoleOutput("Keine Geldautomaten hinzugefügt"); } - dbContext.SaveChanges(); - LoadATMs(); - } - } - public static void LoadATMs() - { - using (var dbContext = new DatabaseContext()) - { - foreach (var currentATM in dbContext.ATMs) + public static void LoadATMs() { - var currentColShape = NAPI.ColShape.CreateCylinderColShape(new Vector3(currentATM.X, currentATM.Y, currentATM.Z), 2.5f, 3, 0); - currentColShape.OnEntityEnterColShape += EnterATMRange; - currentColShape.OnEntityExitColShape += ExitATMRange; - ATMColShapes.Add(currentColShape); - currentColShape.SetData("id", currentATM.Id); + using (var dbContext = new DatabaseContext()) + { + foreach (var currentATM in dbContext.ATMs) + { + var currentColShape = NAPI.ColShape.CreateCylinderColShape(new Vector3(currentATM.X, currentATM.Y, currentATM.Z), 2.5f, 3, 0); + currentColShape.OnEntityEnterColShape += EnterATMRange; + currentColShape.OnEntityExitColShape += ExitATMRange; + ATMColShapes.Add(currentColShape); + currentColShape.SetData("id", currentATM.Id); + } + } } - } - } - public static void EnterATMRange(ColShape colShape, Player client) - { - client.SetData("nearATM", colShape.GetData("id")); - } - public static void ExitATMRange(ColShape colShape, Player client) - { - client.ResetData("nearATM"); - } - public static void ShowAtmUi(Player player, int atmId) - { - player.TriggerEvent("SERVER:ShowAtmUi", atmId); - } - [RemoteEvent("CLIENT:ATM_MANAGER:ATM_ACTION")] - public void AtmAction(Player client, int site, int inputField1, int inputField2) - { - using (var dbContext = new DatabaseContext()) - { - var user = client.GetUser(dbContext); - int nearATM = client.GetData("nearATM"); - //SITE //0 Geld einzahlen //1 Geld auszahlen //2 Geld überweisen - switch (site) + public static void EnterATMRange(ColShape colShape, Player client) { - //GELD EINZAHLEN in1 - case 0: - - if (user.Handmoney < inputField1) - { - //TODO im CEFBrowser anzeigen - //client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance); - client.SendNotification("~r~Nicht genügend Geld auf der Hand!"); - } - else - { - var updateBankMoneyIn = user.BankAccount; - var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); - user.Handmoney -= inputField1; - updateBankMoneyIn.Balance += inputField1; - updateATMBalanceIn.Balance += inputField1; - client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); - } - break; - - //GELD AUSZAHLEN in1 - case 1: - var checkATM = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); - - if (user.BankAccount.Balance < inputField1) - { - client.SendNotification("~r~Nicht genügend Geld auf dem Bankkonto!"); //TODO Im Automaten anzeigen lassen - } - else if (checkATM.Balance < inputField1) - { - client.SendNotification("~r~Nicht genügend Geld im Automaten vorhanden!"); //TODO Im Automaten anzeigen lassen |||| oder OUT OF ORDER anzeigen wenn leer - } - else - { - var updateHandMoneyOut = dbContext.Users.FirstOrDefault(u => u.Id == user.Id); - var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); - updateHandMoneyOut.Handmoney += inputField1; - user.BankAccount.Balance -= inputField1; - updateATMBalanceOut.Balance -= inputField1; - client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney); - } - break; - - //GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag - case 2: - - break; + client.SetData("nearATM", colShape.GetData("id")); + } + + public static void ExitATMRange(ColShape colShape, Player client) + { + client.ResetData("nearATM"); + } + + public static void ShowAtmUi(Player player, int atmId) + { + player.TriggerEvent("SERVER:ShowAtmUi", atmId); + } + + [RemoteEvent("CLIENT:ATM_MANAGER:ATM_ACTION")] + public void AtmAction(Player client, int site, int inputField1, int inputField2) + { + using (var dbContext = new DatabaseContext()) + { + var user = client.GetUser(dbContext); + int nearATM = client.GetData("nearATM"); + //SITE //0 Geld einzahlen //1 Geld auszahlen //2 Geld überweisen + switch (site) + { + //GELD EINZAHLEN in1 + case 0: + + if (user.Handmoney < inputField1) + { + //TODO im CEFBrowser anzeigen + //client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance); + client.SendNotification("~r~Nicht genügend Geld auf der Hand!"); + } + else + { + var updateBankMoneyIn = user.BankAccount; + var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); + user.Handmoney -= inputField1; + updateBankMoneyIn.Balance += inputField1; + updateATMBalanceIn.Balance += inputField1; + client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); + } + break; + + //GELD AUSZAHLEN in1 + case 1: + var checkATM = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); + + if (user.BankAccount.Balance < inputField1) + { + client.SendNotification("~r~Nicht genügend Geld auf dem Bankkonto!"); //TODO Im Automaten anzeigen lassen + } + else if (checkATM.Balance < inputField1) + { + client.SendNotification("~r~Nicht genügend Geld im Automaten vorhanden!"); //TODO Im Automaten anzeigen lassen |||| oder OUT OF ORDER anzeigen wenn leer + } + else + { + var updateHandMoneyOut = dbContext.Users.FirstOrDefault(u => u.Id == user.Id); + var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); + updateHandMoneyOut.Handmoney += inputField1; + user.BankAccount.Balance -= inputField1; + updateATMBalanceOut.Balance -= inputField1; + client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney); + } + break; + + //GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag + case 2: + + break; + } + dbContext.SaveChanges(); + } } - dbContext.SaveChanges(); - } } - } } diff --git a/ReallifeGamemode.Server/Managers/BankManager.cs b/ReallifeGamemode.Server/Managers/BankManager.cs index 81c37466..1a1d12dd 100644 --- a/ReallifeGamemode.Server/Managers/BankManager.cs +++ b/ReallifeGamemode.Server/Managers/BankManager.cs @@ -1,15 +1,10 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; +using System.Linq; using GTANetworkAPI; -using ReallifeGamemode.Server.Business; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Server.Util; using ReallifeGamemode.Database; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Database.Entities.Logs; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Entities.Logs; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Util; /** * @overview Life of German Reallife - Managers BankManager (BankManager.cs) @@ -20,98 +15,98 @@ using ReallifeGamemode.Database.Entities; namespace ReallifeGamemode.Server.Managers { public class BankManager - { - public static TransactionResult SetMoney(Player admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt") { - using (var transferMoney = new DatabaseContext()) - { - if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; - - IBankAccount account = owner.GetBankAccount(transferMoney); - - if (account == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; - - var transactionLog = new BankAccountTransactionHistory + public static TransactionResult SetMoney(Player admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt") { - Sender = "ADMIN: " + admin.Name, - SenderBalance = 0, - Receiver = owner.Name, - ReceiverBalance = amount, - NewReceiverBalance = amount, - NewSenderBalance = 0, - MoneySent = amount, - Fee = 0, - Origin = reason - }; + using (var transferMoney = new DatabaseContext()) + { + if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; - // add log - transferMoney.BankAccountTransactionLogs.Add(transactionLog); + IBankAccount account = owner.GetBankAccount(transferMoney); - account.Balance = amount; + if (account == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; - transferMoney.SaveChanges(); + var transactionLog = new BankAccountTransactionHistory + { + Sender = "ADMIN: " + admin.Name, + SenderBalance = 0, + Receiver = owner.Name, + ReceiverBalance = amount, + NewReceiverBalance = amount, + NewSenderBalance = 0, + MoneySent = amount, + Fee = 0, + Origin = reason + }; - return TransactionResult.SUCCESS; - } + // add log + transferMoney.BankAccountTransactionLogs.Add(transactionLog); + + account.Balance = amount; + + transferMoney.SaveChanges(); + + return TransactionResult.SUCCESS; + } + } + + public static TransactionResult TransferMoney( + BankAccountHolder sender, + BankAccountHolder receiver, + int amount, + string origin, + DatabaseContext dbContext) where TSender : class, IBankAccount, new() where TReceiver : class, IBankAccount, new() + { + if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; + + IBankAccount senderAccount; + IBankAccount receiverAccount; + + if (sender is BankAccountHolder businessSender) + { + senderAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessSender.BankAccountId).First(); + } + else + { + senderAccount = sender.BankAccount; + } + + if (receiver is BankAccountHolder businessReceiver) + { + receiverAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessReceiver.BankAccountId).First(); + } + else + { + receiverAccount = receiver.BankAccount; + } + + if (senderAccount == null) return TransactionResult.SENDER_NO_BANKACCOUNT; + if (receiverAccount == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; + + if (senderAccount.Balance < amount) return TransactionResult.SENDER_NOT_ENOUGH_MONEY; + + var transactionLog = new BankAccountTransactionHistory + { + Sender = sender.BankAccountName, + SenderBalance = senderAccount.Balance, + Receiver = receiver.BankAccountName, + ReceiverBalance = receiverAccount.Balance, + NewReceiverBalance = receiverAccount.Balance + amount, + NewSenderBalance = senderAccount.Balance - amount, + MoneySent = amount, + Fee = 0, + Origin = origin + }; + + // add log + dbContext.BankAccountTransactionLogs.Add(transactionLog); + + senderAccount.Balance -= amount; + receiverAccount.Balance += amount; + + dbContext.SaveChanges(); + + return TransactionResult.SUCCESS; + } } - - public static TransactionResult TransferMoney( - BankAccountHolder sender, - BankAccountHolder receiver, - int amount, - string origin, - DatabaseContext dbContext) where TSender : class, IBankAccount, new() where TReceiver : class, IBankAccount, new() - { - if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; - - IBankAccount senderAccount; - IBankAccount receiverAccount; - - if (sender is BankAccountHolder businessSender) - { - senderAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessSender.BankAccountId).First(); - } - else - { - senderAccount = sender.BankAccount; - } - - if (receiver is BankAccountHolder businessReceiver) - { - receiverAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessReceiver.BankAccountId).First(); - } - else - { - receiverAccount = receiver.BankAccount; - } - - if (senderAccount == null) return TransactionResult.SENDER_NO_BANKACCOUNT; - if (receiverAccount == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; - - if (senderAccount.Balance < amount) return TransactionResult.SENDER_NOT_ENOUGH_MONEY; - - var transactionLog = new BankAccountTransactionHistory - { - Sender = sender.BankAccountName, - SenderBalance = senderAccount.Balance, - Receiver = receiver.BankAccountName, - ReceiverBalance = receiverAccount.Balance, - NewReceiverBalance = receiverAccount.Balance + amount, - NewSenderBalance = senderAccount.Balance - amount, - MoneySent = amount, - Fee = 0, - Origin = origin - }; - - // add log - dbContext.BankAccountTransactionLogs.Add(transactionLog); - - senderAccount.Balance -= amount; - receiverAccount.Balance += amount; - - dbContext.SaveChanges(); - - return TransactionResult.SUCCESS; - } - } } diff --git a/ReallifeGamemode.Server/Managers/BusinessManager.cs b/ReallifeGamemode.Server/Managers/BusinessManager.cs index 5212e87f..85b317ff 100644 --- a/ReallifeGamemode.Server/Managers/BusinessManager.cs +++ b/ReallifeGamemode.Server/Managers/BusinessManager.cs @@ -1,22 +1,21 @@ -using GTANetworkAPI; -using Newtonsoft.Json; -using ReallifeGamemode.Server.Business; -using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Util; -using System; +using System; using System.Collections.Generic; using System.Linq; using System.Reflection; -using ReallifeGamemode.Database; -using ReallifeGamemode.Server.Types; +using GTANetworkAPI; using Microsoft.EntityFrameworkCore; +using Newtonsoft.Json; +using ReallifeGamemode.Database; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Business; +using ReallifeGamemode.Server.Extensions; +using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Managers { - class BusinessManager : Script + internal class BusinessManager : Script { public static List Businesses { get; private set; } diff --git a/ReallifeGamemode.Server/Managers/CharacterCreator.cs b/ReallifeGamemode.Server/Managers/CharacterCreator.cs index fbbe7dd7..034886d9 100644 --- a/ReallifeGamemode.Server/Managers/CharacterCreator.cs +++ b/ReallifeGamemode.Server/Managers/CharacterCreator.cs @@ -1,333 +1,332 @@ using System.Linq; using GTANetworkAPI; using Newtonsoft.Json.Linq; -using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class CharacterCreator : Script - { - [RemoteEvent("creator_GenderChange")] - public void changeGender(Player player, int gender) { - if(gender == 0) player.SetSkin(PedHash.FreemodeMale01); - else player.SetSkin(PedHash.FreemodeFemale01); - } - [RemoteEvent("creatorSave")] - public void CreatorSave(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData) - { - var jParentData = JObject.Parse(parentData); - var jFeatureData = JArray.Parse(featureData); - var jAppearanceData = JArray.Parse(appearanceData); - var jHairAndColorData = JArray.Parse(hairAndColorData); - - byte father = jParentData.Value("Father"); - byte mother = jParentData.Value("Mother"); - float similarity = jParentData.Value("Similarity"); - float skinSimilarity = jParentData.Value("SkinSimilarity"); - - float noseWidth = jFeatureData.Value(0); - float noseBottomHeight = jFeatureData.Value(1); - float noseTipLength = jFeatureData.Value(2); - float noseBridgeDepth = jFeatureData.Value(3); - float noseTipHeight = jFeatureData.Value(4); - float noseBroken = jFeatureData.Value(5); - float browHeight = jFeatureData.Value(6); - float browDepth = jFeatureData.Value(7); - float cheekboneHeight = jFeatureData.Value(8); - float cheekboneWidth = jFeatureData.Value(9); - float cheekDepth = jFeatureData.Value(10); - float eyeSize = jFeatureData.Value(11); - float lipThickness = jFeatureData.Value(12); - float jawWidth = jFeatureData.Value(13); - float jawShape = jFeatureData.Value(14); - float chinHeight = jFeatureData.Value(15); - float chinDepth = jFeatureData.Value(16); - float chinWidth = jFeatureData.Value(17); - float chinIndent = jFeatureData.Value(18); - float neckWidth = jFeatureData.Value(19); - - byte blemishes = jAppearanceData[0].Value("Value"); - float blemishesOpacity = jAppearanceData[0].Value("Opacity"); - byte facialHair = jAppearanceData[1].Value("Value"); - float facialHairOpacity = jAppearanceData[1].Value("Opacity"); - byte eyebrows = jAppearanceData[2].Value("Value"); - float eyebrowsOpacity = jAppearanceData[2].Value("Opacity"); - byte ageing = jAppearanceData[3].Value("Value"); - float ageingOpacity = jAppearanceData[3].Value("Opacity"); - byte makeup = jAppearanceData[4].Value("Value"); - float makeupOpacity = jAppearanceData[4].Value("Opacity"); - byte blush = jAppearanceData[5].Value("Value"); - float blushOpacity = jAppearanceData[5].Value("Opacity"); - byte complexion = jAppearanceData[6].Value("Value"); - float complexionOpacity = jAppearanceData[6].Value("Opacity"); - byte sunDamage = jAppearanceData[7].Value("Value"); - float sunDamageOpacity = jAppearanceData[7].Value("Opacity"); - byte lipstick = jAppearanceData[8].Value("Value"); - float lipstickOpacity = jAppearanceData[8].Value("Opacity"); - byte freckles = jAppearanceData[9].Value("Value"); - float frecklesOpacity = jAppearanceData[9].Value("Opacity"); - byte chestHair = jAppearanceData[10].Value("Value"); - float chestHairOpacity = jAppearanceData[10].Value("Opacity"); - - byte hair = jHairAndColorData.Value(0); - byte hairColor = jHairAndColorData.Value(1); - byte hairHighlightColor = jHairAndColorData.Value(2); - byte eyebrowColor = jHairAndColorData.Value(3); - byte beardColor = jHairAndColorData.Value(4); - byte eyeColor = jHairAndColorData.Value(5); - byte blushColor = jHairAndColorData.Value(6); - byte lipstickColor = jHairAndColorData.Value(7); - byte chestHairColor = jHairAndColorData.Value(8); - - using (var saveCharacter = new DatabaseContext()) - { - var character = new Database.Entities.Character + [RemoteEvent("creator_GenderChange")] + public void changeGender(Player player, int gender) { - UserId = player.GetUser().Id, - Gender = gender, - Father = father, - Mother = mother, - Similarity = similarity, - SkinSimilarity = skinSimilarity, - - NoseWidth = noseWidth, - NoseBottomHeight = noseBottomHeight, - NoseTipLength = noseTipLength, - NoseBridgeDepth = noseBridgeDepth, - NoseTipHeight = noseTipHeight, - NoseBroken = noseBroken, - BrowHeight = browHeight, - BrowDepth = browDepth, - CheekboneHeight = cheekboneHeight, - CheekboneWidth = cheekboneWidth, - CheekDepth = cheekDepth, - EyeSize = eyeSize, - LipThickness = lipThickness, - JawWidth = jawWidth, - JawShape = jawShape, - ChinHeight = chinHeight, - ChinDepth = chinDepth, - ChinWidth = chinWidth, - ChinIndent = chinIndent, - NeckWidth = neckWidth, - - Blemishes = blemishes, - BlemishesOpacity = blemishesOpacity, - FacialHair = facialHair, - FacialHairOpacity = facialHairOpacity, - Eyebrows = eyebrows, - EyebrowsOpacity = eyebrowsOpacity, - Ageing = ageing, - AgeingOpacity = ageingOpacity, - Makeup = makeup, - MakeupOpacity = makeupOpacity, - Blush = blush, - BlushOpacity = blushOpacity, - Complexion = complexion, - ComplexionOpacity = complexionOpacity, - SunDamage = sunDamage, - SunDamageOpacity = sunDamageOpacity, - Lipstick = lipstick, - LipstickOpacity = lipstickOpacity, - Freckles = freckles, - FrecklesOpacity = frecklesOpacity, - ChestHair = chestHair, - ChestHairOpacity = chestHairOpacity, - - Hair = hair, - HairColor = hairColor, - HairHighlightColor = hairHighlightColor, - EyebrowColor = eyebrowColor, - BeardColor = beardColor, - EyeColor = eyeColor, - BlushColor = blushColor, - LipstickColor = lipstickColor, - ChestHairColor = chestHairColor - }; - - saveCharacter.Characters.Add(character); - saveCharacter.SaveChanges(); - - var userId = player.GetUser().Id; - var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId); - - user.CharacterId = character.Id; - saveCharacter.SaveChanges(); - } - //HeadOverlay makeupHo = new HeadOverlay() - //{ - // Index = 0, - // Opacity = 0.0f, - // Color = 0, - // SecondaryColor = 0 - //}; - //HeadOverlay blushHo = new HeadOverlay() - //{ - // Index = 0, - // Opacity = 0.0f, - // Color = 0, - // SecondaryColor = 0 - //}; - //player.SetHeadOverlay(4, makeupHo); - //player.SetHeadOverlay(5, blushHo); - NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); - player.TriggerEvent("draw", player.Name, player.Handle.Value); - player.Dimension = 0; - } - - /// - /// Wendet den Character eines Spielers auf diesen an - /// - /// Der Player, dessen Aussehen man setzen will - public static void ApplyCharacter(Player player) - { - var user = player.GetUser(); - using (var loadCharacter = new DatabaseContext()) - { - var character = loadCharacter.Characters.SingleOrDefault(c => c.Id == user.CharacterId); - - if (character == null) return; - - //Männlich / Weiblich - if (character.Gender == false) - { - player.SetSkin(PedHash.FreemodeMale01); - } - else - { - player.SetSkin(PedHash.FreemodeFemale01); + if (gender == 0) player.SetSkin(PedHash.FreemodeMale01); + else player.SetSkin(PedHash.FreemodeFemale01); } - //Gesichtszüge - float[] faceFeatures = new float[] { character.NoseWidth, character.NoseBottomHeight, character.NoseTipLength, character.NoseBridgeDepth, character.NoseTipHeight, + [RemoteEvent("creatorSave")] + public void CreatorSave(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData) + { + var jParentData = JObject.Parse(parentData); + var jFeatureData = JArray.Parse(featureData); + var jAppearanceData = JArray.Parse(appearanceData); + var jHairAndColorData = JArray.Parse(hairAndColorData); + + byte father = jParentData.Value("Father"); + byte mother = jParentData.Value("Mother"); + float similarity = jParentData.Value("Similarity"); + float skinSimilarity = jParentData.Value("SkinSimilarity"); + + float noseWidth = jFeatureData.Value(0); + float noseBottomHeight = jFeatureData.Value(1); + float noseTipLength = jFeatureData.Value(2); + float noseBridgeDepth = jFeatureData.Value(3); + float noseTipHeight = jFeatureData.Value(4); + float noseBroken = jFeatureData.Value(5); + float browHeight = jFeatureData.Value(6); + float browDepth = jFeatureData.Value(7); + float cheekboneHeight = jFeatureData.Value(8); + float cheekboneWidth = jFeatureData.Value(9); + float cheekDepth = jFeatureData.Value(10); + float eyeSize = jFeatureData.Value(11); + float lipThickness = jFeatureData.Value(12); + float jawWidth = jFeatureData.Value(13); + float jawShape = jFeatureData.Value(14); + float chinHeight = jFeatureData.Value(15); + float chinDepth = jFeatureData.Value(16); + float chinWidth = jFeatureData.Value(17); + float chinIndent = jFeatureData.Value(18); + float neckWidth = jFeatureData.Value(19); + + byte blemishes = jAppearanceData[0].Value("Value"); + float blemishesOpacity = jAppearanceData[0].Value("Opacity"); + byte facialHair = jAppearanceData[1].Value("Value"); + float facialHairOpacity = jAppearanceData[1].Value("Opacity"); + byte eyebrows = jAppearanceData[2].Value("Value"); + float eyebrowsOpacity = jAppearanceData[2].Value("Opacity"); + byte ageing = jAppearanceData[3].Value("Value"); + float ageingOpacity = jAppearanceData[3].Value("Opacity"); + byte makeup = jAppearanceData[4].Value("Value"); + float makeupOpacity = jAppearanceData[4].Value("Opacity"); + byte blush = jAppearanceData[5].Value("Value"); + float blushOpacity = jAppearanceData[5].Value("Opacity"); + byte complexion = jAppearanceData[6].Value("Value"); + float complexionOpacity = jAppearanceData[6].Value("Opacity"); + byte sunDamage = jAppearanceData[7].Value("Value"); + float sunDamageOpacity = jAppearanceData[7].Value("Opacity"); + byte lipstick = jAppearanceData[8].Value("Value"); + float lipstickOpacity = jAppearanceData[8].Value("Opacity"); + byte freckles = jAppearanceData[9].Value("Value"); + float frecklesOpacity = jAppearanceData[9].Value("Opacity"); + byte chestHair = jAppearanceData[10].Value("Value"); + float chestHairOpacity = jAppearanceData[10].Value("Opacity"); + + byte hair = jHairAndColorData.Value(0); + byte hairColor = jHairAndColorData.Value(1); + byte hairHighlightColor = jHairAndColorData.Value(2); + byte eyebrowColor = jHairAndColorData.Value(3); + byte beardColor = jHairAndColorData.Value(4); + byte eyeColor = jHairAndColorData.Value(5); + byte blushColor = jHairAndColorData.Value(6); + byte lipstickColor = jHairAndColorData.Value(7); + byte chestHairColor = jHairAndColorData.Value(8); + + using (var saveCharacter = new DatabaseContext()) + { + var character = new Database.Entities.Character + { + UserId = player.GetUser().Id, + Gender = gender, + Father = father, + Mother = mother, + Similarity = similarity, + SkinSimilarity = skinSimilarity, + + NoseWidth = noseWidth, + NoseBottomHeight = noseBottomHeight, + NoseTipLength = noseTipLength, + NoseBridgeDepth = noseBridgeDepth, + NoseTipHeight = noseTipHeight, + NoseBroken = noseBroken, + BrowHeight = browHeight, + BrowDepth = browDepth, + CheekboneHeight = cheekboneHeight, + CheekboneWidth = cheekboneWidth, + CheekDepth = cheekDepth, + EyeSize = eyeSize, + LipThickness = lipThickness, + JawWidth = jawWidth, + JawShape = jawShape, + ChinHeight = chinHeight, + ChinDepth = chinDepth, + ChinWidth = chinWidth, + ChinIndent = chinIndent, + NeckWidth = neckWidth, + + Blemishes = blemishes, + BlemishesOpacity = blemishesOpacity, + FacialHair = facialHair, + FacialHairOpacity = facialHairOpacity, + Eyebrows = eyebrows, + EyebrowsOpacity = eyebrowsOpacity, + Ageing = ageing, + AgeingOpacity = ageingOpacity, + Makeup = makeup, + MakeupOpacity = makeupOpacity, + Blush = blush, + BlushOpacity = blushOpacity, + Complexion = complexion, + ComplexionOpacity = complexionOpacity, + SunDamage = sunDamage, + SunDamageOpacity = sunDamageOpacity, + Lipstick = lipstick, + LipstickOpacity = lipstickOpacity, + Freckles = freckles, + FrecklesOpacity = frecklesOpacity, + ChestHair = chestHair, + ChestHairOpacity = chestHairOpacity, + + Hair = hair, + HairColor = hairColor, + HairHighlightColor = hairHighlightColor, + EyebrowColor = eyebrowColor, + BeardColor = beardColor, + EyeColor = eyeColor, + BlushColor = blushColor, + LipstickColor = lipstickColor, + ChestHairColor = chestHairColor + }; + + saveCharacter.Characters.Add(character); + saveCharacter.SaveChanges(); + + var userId = player.GetUser().Id; + var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId); + + user.CharacterId = character.Id; + saveCharacter.SaveChanges(); + } + //HeadOverlay makeupHo = new HeadOverlay() + //{ + // Index = 0, + // Opacity = 0.0f, + // Color = 0, + // SecondaryColor = 0 + //}; + //HeadOverlay blushHo = new HeadOverlay() + //{ + // Index = 0, + // Opacity = 0.0f, + // Color = 0, + // SecondaryColor = 0 + //}; + //player.SetHeadOverlay(4, makeupHo); + //player.SetHeadOverlay(5, blushHo); + NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); + player.TriggerEvent("draw", player.Name, player.Handle.Value); + player.Dimension = 0; + } + + /// + /// Wendet den Character eines Spielers auf diesen an + /// + /// Der Player, dessen Aussehen man setzen will + public static void ApplyCharacter(Player player) + { + var user = player.GetUser(); + using (var loadCharacter = new DatabaseContext()) + { + var character = loadCharacter.Characters.SingleOrDefault(c => c.Id == user.CharacterId); + + if (character == null) return; + + //Männlich / Weiblich + if (character.Gender == false) + { + player.SetSkin(PedHash.FreemodeMale01); + } + else + { + player.SetSkin(PedHash.FreemodeFemale01); + } + + //Gesichtszüge + float[] faceFeatures = new float[] { character.NoseWidth, character.NoseBottomHeight, character.NoseTipLength, character.NoseBridgeDepth, character.NoseTipHeight, character.NoseBroken, character.BrowHeight, character.BrowDepth, character.CheekboneHeight, character.CheekboneWidth, character.CheekboneWidth, character.CheekDepth, character.EyeSize, character.LipThickness, character.JawWidth, character.JawShape, character.ChinHeight, character.ChinDepth, character.ChinWidth, character.ChinIndent, character.NeckWidth }; - for (var i = 0; i < faceFeatures.Length; i++) - { - player.SetFaceFeature(i, faceFeatures[i]); + for (var i = 0; i < faceFeatures.Length; i++) + { + player.SetFaceFeature(i, faceFeatures[i]); + } + + //Gesichtsmerkmale + HeadOverlay blemishes = new HeadOverlay() + { + Index = character.Blemishes, + Opacity = character.BlemishesOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay facialHair = new HeadOverlay() + { + Index = character.FacialHair, + Opacity = character.FacialHairOpacity, + Color = character.BeardColor, + SecondaryColor = 255 + }; + HeadOverlay eyebrows = new HeadOverlay() + { + Index = character.Eyebrows, + Opacity = character.EyebrowsOpacity, + Color = character.EyebrowColor, + SecondaryColor = 255 + }; + HeadOverlay ageing = new HeadOverlay() + { + Index = character.Ageing, + Opacity = character.AgeingOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay makeup = new HeadOverlay() + { + Index = character.Makeup, + Opacity = character.MakeupOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay blush = new HeadOverlay() + { + Index = character.Blush, + Opacity = character.BlushOpacity, + Color = character.BlushColor, + SecondaryColor = 255 + }; + HeadOverlay complexion = new HeadOverlay() + { + Index = character.Complexion, + Opacity = character.ComplexionOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay sunDamage = new HeadOverlay() + { + Index = character.SunDamage, + Opacity = character.SunDamageOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay lipstick = new HeadOverlay() + { + Index = character.Lipstick, + Opacity = character.LipstickOpacity, + Color = character.LipstickColor, + SecondaryColor = 255 + }; + HeadOverlay freckles = new HeadOverlay() + { + Index = character.Freckles, + Opacity = character.FrecklesOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay chestHair = new HeadOverlay() + { + Index = character.ChestHair, + Opacity = character.ChestHairOpacity, + Color = character.ChestHairColor, + SecondaryColor = 255 + }; + + player.SetHeadOverlay(0, blemishes); + player.SetHeadOverlay(1, facialHair); + player.SetHeadOverlay(2, eyebrows); + player.SetHeadOverlay(3, ageing); + player.SetHeadOverlay(4, makeup); + player.SetHeadOverlay(5, blush); + player.SetHeadOverlay(6, complexion); + player.SetHeadOverlay(7, sunDamage); + player.SetHeadOverlay(8, lipstick); + player.SetHeadOverlay(9, freckles); + player.SetHeadOverlay(10, chestHair); + player.SetHeadOverlay(11, blemishes); + player.SetHeadOverlay(12, blemishes); + + //Gesicht (Vererbung durch Mutter / Vater) + HeadBlend headBlend = new HeadBlend() + { + ShapeFirst = character.Mother, + ShapeSecond = character.Father, + ShapeThird = 0, + SkinFirst = character.Mother, + SkinSecond = character.Father, + SkinThird = 0, + ShapeMix = character.Similarity, + SkinMix = character.SkinSimilarity, + ThirdMix = 0.0f + }; + NAPI.Player.SetPlayerHeadBlend(player, headBlend); + + //Haare und Haarfarbe + player.SetClothes(2, character.Hair, 0); + NAPI.Player.SetPlayerHairColor(player, character.HairColor, character.HairHighlightColor); + + //Augenfarbe + NAPI.Player.SetPlayerEyeColor(player, character.EyeColor); + } } - - //Gesichtsmerkmale - HeadOverlay blemishes = new HeadOverlay() - { - Index = character.Blemishes, - Opacity = character.BlemishesOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay facialHair = new HeadOverlay() - { - Index = character.FacialHair, - Opacity = character.FacialHairOpacity, - Color = character.BeardColor, - SecondaryColor = 255 - }; - HeadOverlay eyebrows = new HeadOverlay() - { - Index = character.Eyebrows, - Opacity = character.EyebrowsOpacity, - Color = character.EyebrowColor, - SecondaryColor = 255 - }; - HeadOverlay ageing = new HeadOverlay() - { - Index = character.Ageing, - Opacity = character.AgeingOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay makeup = new HeadOverlay() - { - Index = character.Makeup, - Opacity = character.MakeupOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay blush = new HeadOverlay() - { - Index = character.Blush, - Opacity = character.BlushOpacity, - Color = character.BlushColor, - SecondaryColor = 255 - }; - HeadOverlay complexion = new HeadOverlay() - { - Index = character.Complexion, - Opacity = character.ComplexionOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay sunDamage = new HeadOverlay() - { - Index = character.SunDamage, - Opacity = character.SunDamageOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay lipstick = new HeadOverlay() - { - Index = character.Lipstick, - Opacity = character.LipstickOpacity, - Color = character.LipstickColor, - SecondaryColor = 255 - }; - HeadOverlay freckles = new HeadOverlay() - { - Index = character.Freckles, - Opacity = character.FrecklesOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay chestHair = new HeadOverlay() - { - Index = character.ChestHair, - Opacity = character.ChestHairOpacity, - Color = character.ChestHairColor, - SecondaryColor = 255 - }; - - player.SetHeadOverlay(0, blemishes); - player.SetHeadOverlay(1, facialHair); - player.SetHeadOverlay(2, eyebrows); - player.SetHeadOverlay(3, ageing); - player.SetHeadOverlay(4, makeup); - player.SetHeadOverlay(5, blush); - player.SetHeadOverlay(6, complexion); - player.SetHeadOverlay(7, sunDamage); - player.SetHeadOverlay(8, lipstick); - player.SetHeadOverlay(9, freckles); - player.SetHeadOverlay(10, chestHair); - player.SetHeadOverlay(11, blemishes); - player.SetHeadOverlay(12, blemishes); - - - //Gesicht (Vererbung durch Mutter / Vater) - HeadBlend headBlend = new HeadBlend() - { - ShapeFirst = character.Mother, - ShapeSecond = character.Father, - ShapeThird = 0, - SkinFirst = character.Mother, - SkinSecond = character.Father, - SkinThird = 0, - ShapeMix = character.Similarity, - SkinMix = character.SkinSimilarity, - ThirdMix = 0.0f - }; - NAPI.Player.SetPlayerHeadBlend(player, headBlend); - - //Haare und Haarfarbe - player.SetClothes(2, character.Hair, 0); - NAPI.Player.SetPlayerHairColor(player, character.HairColor, character.HairHighlightColor); - - //Augenfarbe - NAPI.Player.SetPlayerEyeColor(player, character.EyeColor); - - } } - } } diff --git a/ReallifeGamemode.Server/Managers/CityHallManager.cs b/ReallifeGamemode.Server/Managers/CityHallManager.cs index 2aaaff9a..504343d2 100644 --- a/ReallifeGamemode.Server/Managers/CityHallManager.cs +++ b/ReallifeGamemode.Server/Managers/CityHallManager.cs @@ -1,20 +1,15 @@ -using GTANetworkAPI; +using System.Linq; +using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Util; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using ReallifeGamemode.Database; using ReallifeGamemode.Server.Types; namespace ReallifeGamemode.Server.Managers { - class CityHallManager : Script + internal class CityHallManager : Script { private static readonly Vector3 _cityHallPosition = new Vector3(273.22, -278.14, 53.9); diff --git a/ReallifeGamemode.Server/Managers/DoorManager.cs b/ReallifeGamemode.Server/Managers/DoorManager.cs index fb6caef3..35e44bb7 100644 --- a/ReallifeGamemode.Server/Managers/DoorManager.cs +++ b/ReallifeGamemode.Server/Managers/DoorManager.cs @@ -2,11 +2,10 @@ using System.Linq; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Util; -using ReallifeGamemode.Database; +using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Types; + /** * @overview Life of German Reallife - Managers BankManager (BankManager.cs) * @author VegaZ @@ -16,71 +15,71 @@ using ReallifeGamemode.Server.Types; namespace ReallifeGamemode.Server.Managers { public class DoorManager : Script - { - private static Dictionary _doorColShapes = new Dictionary(); - - public static void LoadDoors() { - using (var dbContext = new DatabaseContext()) - { - foreach (Door door in dbContext.Doors) + private static Dictionary _doorColShapes = new Dictionary(); + + public static void LoadDoors() { - _doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, 30f); + using (var dbContext = new DatabaseContext()) + { + foreach (Door door in dbContext.Doors) + { + _doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, 30f); + } + } } - } - } - public static void ReloadDoors() - { - foreach (var doorPair in _doorColShapes) - { - doorPair.Value.Entity().Delete(); - } - _doorColShapes.Clear(); - LoadDoors(); - } - - public static void ChangeDoorState(Player player) - { - var user = player.GetUser(); - - using (var dbContext = new DatabaseContext()) - { - IQueryable NearDoors = dbContext.Doors.Where(d => d.Position.DistanceTo(player.Position) <= d.Radius); - foreach (Door d in NearDoors) + public static void ReloadDoors() { - if (!user.IsAdmin(AdminLevel.ADMIN) && (d.FactionId != user.FactionId || d.FactionId == null)) - { - string lockState = "~r~Du hast kein Recht diese T\u00fcr " + (d.Locked == true ? "auf" : "ab") + "zuschlie\u00dfen!"; - player.SendNotification(lockState, true); - continue; - } - - d.Locked = !d.Locked; - - string notStr = d.Name + " " + (d.Locked == false ? "~g~auf" : "~r~ab") + "geschlossen"; - - player.SendNotification(notStr, true); - - NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f)); + foreach (var doorPair in _doorColShapes) + { + doorPair.Value.Entity().Delete(); + } + _doorColShapes.Clear(); + LoadDoors(); } - dbContext.SaveChanges(); - } - } - [ServerEvent(Event.PlayerEnterColshape)] - public void DoorManagerPlayerEnterColShapeEvent(ColShape colShape, Player player) - { - if (_doorColShapes.ContainsValue(colShape.Handle)) - { - int doorId = _doorColShapes.Where(d => d.Value.Value == colShape.Handle.Value).FirstOrDefault().Key; - - using (var dbContext = new DatabaseContext()) + public static void ChangeDoorState(Player player) { - Door door = dbContext.Doors.Where(d => d.Id == doorId).First(); - player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f); + var user = player.GetUser(); + + using (var dbContext = new DatabaseContext()) + { + IQueryable NearDoors = dbContext.Doors.Where(d => d.Position.DistanceTo(player.Position) <= d.Radius); + foreach (Door d in NearDoors) + { + if (!user.IsAdmin(AdminLevel.ADMIN) && (d.FactionId != user.FactionId || d.FactionId == null)) + { + string lockState = "~r~Du hast kein Recht diese T\u00fcr " + (d.Locked == true ? "auf" : "ab") + "zuschlie\u00dfen!"; + player.SendNotification(lockState, true); + continue; + } + + d.Locked = !d.Locked; + + string notStr = d.Name + " " + (d.Locked == false ? "~g~auf" : "~r~ab") + "geschlossen"; + + player.SendNotification(notStr, true); + + NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f)); + } + dbContext.SaveChanges(); + } + } + + [ServerEvent(Event.PlayerEnterColshape)] + public void DoorManagerPlayerEnterColShapeEvent(ColShape colShape, Player player) + { + if (_doorColShapes.ContainsValue(colShape.Handle)) + { + int doorId = _doorColShapes.Where(d => d.Value.Value == colShape.Handle.Value).FirstOrDefault().Key; + + using (var dbContext = new DatabaseContext()) + { + Door door = dbContext.Doors.Where(d => d.Id == doorId).First(); + player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f); + } + } } - } } - } } diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 8d9912e5..1a36e577 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -1,16 +1,14 @@ -using GTANetworkAPI; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Job; -using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using ReallifeGamemode.Database; using ReallifeGamemode.Services; using ReallifeGamemode.Server.Types; using System.Buffers; @@ -26,31 +24,30 @@ using ReallifeGamemode.Server.Events; namespace ReallifeGamemode.Server.Managers { public class InteractionManager : Script - { - #region Umgebungsinteraktionen PFEILTASTE-HOCH - #endregion - #region Eigeninteraktionen PFEILTASTE-RUNTER - [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] - public void InteractionMenuAcceptInvite(Player player, string type) { - if (type != "Fraktion" && type != "Gruppe") return; + #region Eigeninteraktionen PFEILTASTE-RUNTER - if (type == "Fraktion") // Fraktions Invite annehmen - { - if (!player.HasData("accept_faction_invite")) + [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] + public void InteractionMenuAcceptInvite(Player player, string type) { - ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Fraktion erhalten"); - return; - } + if (type != "Fraktion" && type != "Gruppe") return; + + if (type == "Fraktion") // Fraktions Invite annehmen + { + if (!player.HasData("accept_faction_invite")) + { + ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Fraktion erhalten"); + return; + } Player leader = NAPI.Player.GetPlayerFromName(player.GetData("accept_faction_invite")); player.ResetData("accept_faction_invite"); - if (leader == null) - { - ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); - return; - } + if (leader == null) + { + ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); + return; + } using (var dbContext = new DatabaseContext(true)) { @@ -67,205 +64,208 @@ namespace ReallifeGamemode.Server.Managers .Where(r => r.FactionId == own.FactionId) .FirstOrDefault(); - ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); - ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); + ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); + ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); switch (own.FactionId) { default: player.SetSharedData("blipColor", 0); break; + case 8: player.SetSharedData("blipColor", 83); break; + case 7: player.SetSharedData("blipColor", 52); break; + case 4: player.SetSharedData("blipColor", 5); break; } - dbContext.SaveChanges(); - } - } - else if (type == "Gruppe") // Gruppen Einladung annehmen - { - if (!player.HasData("accept_group_invite")) - { - ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Gruppe erhalten"); - return; - } + dbContext.SaveChanges(); + } + } + else if (type == "Gruppe") // Gruppen Einladung annehmen + { + if (!player.HasData("accept_group_invite")) + { + ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Gruppe erhalten"); + return; + } Player leader = NAPI.Player.GetPlayerFromName(player.GetData("accept_group_invite")); player.ResetData("accept_group_invite"); - if (leader == null) - { - ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); - return; + if (leader == null) + { + ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); + return; + } + + using (var dbContext = new DatabaseContext()) + { + User u = leader.GetUser(dbContext); + User own = player.GetUser(dbContext); + + own.Group = u.Group; + own.GroupRank = GroupRank.MEMBER; + + ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); + ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); + + dbContext.SaveChanges(); + } + } } - using (var dbContext = new DatabaseContext()) + [RemoteEvent("CLIENT:InteractionMenu_EndShow")] + public void InteractionMenuEndShow(Player client) { - User u = leader.GetUser(dbContext); - User own = player.GetUser(dbContext); - - own.Group = u.Group; - own.GroupRank = GroupRank.MEMBER; - - ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); - ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); - - dbContext.SaveChanges(); - } - } - } - [RemoteEvent("CLIENT:InteractionMenu_EndShow")] - public void InteractionMenuEndShow(Player client) - { - client.ResetData("ShowActive"); - } - - [RemoteEvent("CLIENT:InteractionMenu_Show")] - public void InteractionMenuShow(Player player, string type, string nameOrId) - { - if (type != "License") - return; - - Player target = PlayerService.GetPlayerByNameOrId(nameOrId); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } - - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); - - if (type == "License") - { - if (!playerUser.DriverLicenseBike && !playerUser.DriverLicenseVehicle && !playerUser.FlyingLicensePlane && !playerUser.WeaponLicense) - { - player.SendNotification("~r~Sie besitzen keine Scheine!"); - return; - } - if (player.Position.DistanceTo(target.Position) > 5) - return; - - if (target.HasData("ShowActive")) - { - player.SendNotification("Spieler ist beschäftigt."); - return; - } - target.SetData("ShowActive", true); - List licenses = new List(); - licenses.Add(playerUser.DriverLicenseVehicle); - licenses.Add(playerUser.DriverLicenseBike); - licenses.Add(playerUser.FlyingLicensePlane); - licenses.Add(playerUser.WeaponLicense); - target.TriggerEvent("ShowLicenses", player.Name, licenses.ToArray()); - - } - } - - [RemoteEvent("CLIENT:InteractionMenu_Invite")] - public void InteractionMenuInviteFaction(Player player, string type, string nameOrId) - { - if (type != "Fraktion" && type != "Gruppe") return; - - Player target = PlayerService.GetPlayerByNameOrId(nameOrId); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } - - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); - - if (type == "Fraktion") - { - if (playerUser?.FactionId == null || playerUser?.FactionLeader == false) - { - ChatService.NotAuthorized(player); - return; + client.ResetData("ShowActive"); } - if (targetUser?.FactionId != null) + [RemoteEvent("CLIENT:InteractionMenu_Show")] + public void InteractionMenuShow(Player player, string type, string nameOrId) { - ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Fraktion"); - return; + if (type != "License") + return; + + Player target = PlayerService.GetPlayerByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "License") + { + if (!playerUser.DriverLicenseBike && !playerUser.DriverLicenseVehicle && !playerUser.FlyingLicensePlane && !playerUser.WeaponLicense) + { + player.SendNotification("~r~Sie besitzen keine Scheine!"); + return; + } + if (player.Position.DistanceTo(target.Position) > 5) + return; + + if (target.HasData("ShowActive")) + { + player.SendNotification("Spieler ist beschäftigt."); + return; + } + target.SetData("ShowActive", true); + List licenses = new List(); + licenses.Add(playerUser.DriverLicenseVehicle); + licenses.Add(playerUser.DriverLicenseBike); + licenses.Add(playerUser.FlyingLicensePlane); + licenses.Add(playerUser.WeaponLicense); + target.TriggerEvent("ShowLicenses", player.Name, licenses.ToArray()); + } } + [RemoteEvent("CLIENT:InteractionMenu_Invite")] + public void InteractionMenuInviteFaction(Player player, string type, string nameOrId) + { + if (type != "Fraktion" && type != "Gruppe") return; + + Player target = PlayerService.GetPlayerByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "Fraktion") + { + if (playerUser?.FactionId == null || playerUser?.FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; + } + + if (targetUser?.FactionId != null) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Fraktion"); + return; + } + target.SetData("accept_faction_invite", player.Name); - ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); - ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + playerUser.Faction.Name + "\" erhalten."); - ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); - } - else if (type == "Gruppe") - { - if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER) - { - ChatService.NotAuthorized(player); - return; - } + ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); + ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + playerUser.Faction.Name + "\" erhalten."); + ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + } + else if (type == "Gruppe") + { + if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER) + { + ChatService.NotAuthorized(player); + return; + } - if (targetUser?.Group != null) - { - ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Gruppe"); - return; - } + if (targetUser?.Group != null) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Gruppe"); + return; + } target.SetData("accept_group_invite", player.Name); - ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet."); - ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + playerUser.Group.Name + "\" erhalten."); - ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); - } - } - - [RemoteEvent("CLIENT:InteractionMenu_Uninvite")] - public void InteractionMenuInviteGroup(Player player, string type, string name) - { - if (type != "Fraktion" && type != "Gruppe") return; - - Player target = PlayerService.GetPlayerByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } - - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); - - if (type == "Fraktion") - { - if (playerUser?.FactionId == null || playerUser.FactionLeader == false) - { - ChatService.NotAuthorized(player); - return; + ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet."); + ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + playerUser.Group.Name + "\" erhalten."); + ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + } } - if (targetUser?.FactionId != playerUser?.FactionId) + [RemoteEvent("CLIENT:InteractionMenu_Uninvite")] + public void InteractionMenuInviteGroup(Player player, string type, string name) { - ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); - return; - } + if (type != "Fraktion" && type != "Gruppe") return; - if (player.Handle == target.Handle) - { - ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); - return; - } + Player target = PlayerService.GetPlayerByNameOrId(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } - if (targetUser?.FactionLeader ?? false) - { - ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); - return; - } + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "Fraktion") + { + if (playerUser?.FactionId == null || playerUser.FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; + } + + if (targetUser?.FactionId != playerUser?.FactionId) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); + return; + } + + if (player.Handle == target.Handle) + { + ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); + return; + } + + if (targetUser?.FactionLeader ?? false) + { + ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); + return; + } using (var dbContext = new DatabaseContext()) { @@ -290,89 +290,88 @@ namespace ReallifeGamemode.Server.Managers return; } - if (targetUser?.Group.Id != playerUser?.Group.Id) - { - ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); - return; + if (targetUser?.Group.Id != playerUser?.Group.Id) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); + return; + } + + if (player.Handle == target.Handle) + { + ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); + return; + } + + if (targetUser?.GroupRank >= GroupRank.MANAGER && playerUser?.GroupRank != GroupRank.OWNER) + { + ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); + return; + } + + using (var dbContext = new DatabaseContext()) + { + target.GetUser(dbContext).Group = null; + target.GetUser(dbContext).GroupRank = GroupRank.NONE; + + ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen."); + ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen."); + + dbContext.SaveChanges(); + } + } } - if (player.Handle == target.Handle) + [RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")] + public void CallServiceTaxi(Player player, string street, string zone) { - ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); - return; + var taxiJob = JobManager.GetJob(); + + if (taxiJob.TaxiContracts.Where(t => t.Name == player.Name).Count() != 0) + { + ChatService.ErrorMessage(player, "Du kannst nur einmal ein Taxi rufen"); + return; + } + + taxiJob.TaxiContracts.Add(new TaxiContract() + { + Name = player.Name, + Position = player.Position + }); + + string msg = $"!{{02FCFF}}{player.Name} hat in der Straße {street} in {zone} ein Taxi gerufen."; + ChatService.BroadcastJob(msg, taxiJob); + ChatService.SendMessage(player, "!{02FCFF}Du hast erfolgreich ein Taxi zu deiner aktuellen Position gerufen."); } - if (targetUser?.GroupRank >= GroupRank.MANAGER && playerUser?.GroupRank != GroupRank.OWNER) + [RemoteEvent("CLIENT:InteractionMenu_VehicleInteraction")] + public void VehicleInteraction(Player player, int id, string selection) { - ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); - return; - } + using var dbContext = new DatabaseContext(true); + var user = player.GetUser(dbContext); - using (var dbContext = new DatabaseContext()) - { - - target.GetUser(dbContext).Group = null; - target.GetUser(dbContext).GroupRank = GroupRank.NONE; - - ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen."); - ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen."); - - dbContext.SaveChanges(); - } - } - } - - [RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")] - public void CallServiceTaxi(Player player, string street, string zone) - { - var taxiJob = JobManager.GetJob(); - - if (taxiJob.TaxiContracts.Where(t => t.Name == player.Name).Count() != 0) - { - ChatService.ErrorMessage(player, "Du kannst nur einmal ein Taxi rufen"); - return; - } - - taxiJob.TaxiContracts.Add(new TaxiContract() - { - Name = player.Name, - Position = player.Position - }); - - string msg = $"!{{02FCFF}}{player.Name} hat in der Straße {street} in {zone} ein Taxi gerufen."; - ChatService.BroadcastJob(msg, taxiJob); - ChatService.SendMessage(player, "!{02FCFF}Du hast erfolgreich ein Taxi zu deiner aktuellen Position gerufen."); - } - - [RemoteEvent("CLIENT:InteractionMenu_VehicleInteraction")] - public void VehicleInteraction(Player player, int id, string selection) - { - using var dbContext = new DatabaseContext(true); - var user = player.GetUser(dbContext); - - var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); - if (userVehicle == null) - { - ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden"); - } + var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); + if (userVehicle == null) + { + ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden"); + } GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle); - if (selection == "Finden") - { - player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y); - } - else if (selection == "Verkaufen") - { - var vehPrice = dbContext.ShopVehicles.Where(v => v.Model == userVehicle.Model).Select(v => v.Price).FirstOrDefault(); - var backPrice = (int)(vehPrice * 0.6); + if (selection == "Finden") + { + player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y); + } + else if (selection == "Verkaufen") + { + var vehPrice = dbContext.ShopVehicles.Where(v => v.Model == userVehicle.Model).Select(v => v.Price).FirstOrDefault(); + var backPrice = (int)(vehPrice * 0.6); - user.BankAccount.Balance += backPrice; + user.BankAccount.Balance += backPrice; - ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten."); + ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten."); - dbContext.UserVehicles.Remove(userVehicle); - dbContext.SaveChanges(); + dbContext.UserVehicles.Remove(userVehicle); + dbContext.SaveChanges(); veh.Delete(); } @@ -411,7 +410,6 @@ namespace ReallifeGamemode.Server.Managers player.SendNotification("~r~Du kannst nur zwischen 1$ und 10000$ angeben!"); } } - } [RemoteEvent("CLIENT:InteractionMenu_LSPD_Points3")] public void InteractionMenu_LSPD_Points3(Player player, string jsonNameOrId, string jsoAmount, string jsonReason) @@ -484,7 +482,6 @@ namespace ReallifeGamemode.Server.Managers { target.SendNotification($"~w~Grund: ~g~{reason}~w~. ~x~Du hast nun ~y~{target.GetUser().Points}/8 ~x~Strafpunkten.", true); } - } else { @@ -532,7 +529,6 @@ namespace ReallifeGamemode.Server.Managers target.ResetData("ticket_boolean"); target.ResetData("ticket_amount"); target.ResetData("ticket_player"); - } else if (type == "Abgelehnt") { @@ -543,8 +539,11 @@ namespace ReallifeGamemode.Server.Managers target.ResetData("ticket_player"); } } - #endregion + + #endregion Eigeninteraktionen PFEILTASTE-RUNTER + #region Spielerinteraktionen PFEILTASTE-LINKS + [RemoteEvent("openTradeInventory")] public void OpenTradeInventory(Player player, string targetPlayer) { @@ -552,59 +551,58 @@ namespace ReallifeGamemode.Server.Managers player.TriggerEvent("openTradeMenu", targetPlayer); } - [RemoteEvent("sendTradeItemsToPartner")] - public void SendTradeItemsToPartner(Player player, string tradeItemArray, int tradePrize, string tradePartnerName) - { - var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); - Player tradePartner = PlayerService.GetPlayerByNameOrId(tradePartnerName); - InventoryManager.GetUserItems(player); - tradePartner.TriggerEvent("showTradeRequest", player.Name, tradeItems, tradePrize); - player.TriggerEvent("startTradeRequestTimer"); - } - - [RemoteEvent("tradeDecision")] - public void TradeDecision(Player player, string tradeSelection, string tradeItemArray, string tradeRequesterName, int tradePrize) - { - var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); - Player tradeRequester = PlayerService.GetPlayerByNameOrId(tradeRequesterName); - if (tradeSelection == "accept") - { - if (player.GetUser().Handmoney < tradePrize) + [RemoteEvent("sendTradeItemsToPartner")] + public void SendTradeItemsToPartner(Player player, string tradeItemArray, int tradePrize, string tradePartnerName) { - tradeRequester.TriggerEvent("unlockTradeItems"); - tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen."); - player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen."); + var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); + Player tradePartner = PlayerService.GetPlayerByNameOrId(tradePartnerName); + InventoryManager.GetUserItems(player); + tradePartner.TriggerEvent("showTradeRequest", player.Name, tradeItems, tradePrize); + player.TriggerEvent("startTradeRequestTimer"); } - else + + [RemoteEvent("tradeDecision")] + public void TradeDecision(Player player, string tradeSelection, string tradeItemArray, string tradeRequesterName, int tradePrize) { - InventoryManager.GetUserItems(player); - tradeRequester.TriggerEvent("clearTradeItems"); - player.TriggerEvent("showTradeItems", tradeItemArray); + var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); + Player tradeRequester = PlayerService.GetPlayerByNameOrId(tradeRequesterName); + if (tradeSelection == "accept") + { + if (player.GetUser().Handmoney < tradePrize) + { + tradeRequester.TriggerEvent("unlockTradeItems"); + tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen."); + player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen."); + } + else + { + InventoryManager.GetUserItems(player); + tradeRequester.TriggerEvent("clearTradeItems"); + player.TriggerEvent("showTradeItems", tradeItemArray); - using (var dbContext = new DatabaseContext()) - { - var playerUserId = player.GetUser().Id; - var tradeRUserId = tradeRequester.GetUser().Id; - var playerUser = dbContext.Users.FirstOrDefault(u => u.Id == playerUserId); - var tradeRequesterUser = dbContext.Users.FirstOrDefault(u => u.Id == tradeRUserId); + using (var dbContext = new DatabaseContext()) + { + var playerUserId = player.GetUser().Id; + var tradeRUserId = tradeRequester.GetUser().Id; + var playerUser = dbContext.Users.FirstOrDefault(u => u.Id == playerUserId); + var tradeRequesterUser = dbContext.Users.FirstOrDefault(u => u.Id == tradeRUserId); - playerUser.Handmoney -= tradePrize; - player.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", playerUser.Handmoney); + playerUser.Handmoney -= tradePrize; + player.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", playerUser.Handmoney); - tradeRequesterUser.Handmoney += tradePrize; - tradeRequester.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradeRequesterUser.Handmoney); + tradeRequesterUser.Handmoney += tradePrize; + tradeRequester.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradeRequesterUser.Handmoney); - dbContext.SaveChanges(); - } + dbContext.SaveChanges(); + } + } + } + else + { + tradeRequester.TriggerEvent("unlockTradeItems"); + } } - } - else - { - tradeRequester.TriggerEvent("unlockTradeItems"); - } + + #endregion Spielerinteraktionen PFEILTASTE-LINKS } - #endregion - #region Fraktionsinteraktionen / Jobinteraktionen PFEILTASTE-RECHTS - #endregion - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index ee75659c..7d15d68f 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -1,17 +1,17 @@ -using GTANetworkAPI; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Timers; +using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Inventory; using ReallifeGamemode.Server.Inventory.Interfaces; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; -using System; -using System.Timers; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; -using ReallifeGamemode.Database.Models; using ReallifeGamemode.Services; /** @@ -30,6 +30,85 @@ namespace ReallifeGamemode.Server.Managers private static Dictionary TradeTimer { get; set; } = new Dictionary(); private static Dictionary TradeValue { get; set; } = new Dictionary(); + public static Dictionary> backpackItems { get; set; } = new Dictionary>(); + public static Dictionary> vehicleItems { get; set; } = new Dictionary>(); + + public class InventoryItem + { + public string Name; + public int Amount; + public int ItemId; + public int Weight; + public Vehicle vehicle; + } + + public static void SetBackpackItems(Player player) + { + List itemList = GetUserItems(player); + if (itemList == null) return; + + if (!backpackItems.ContainsKey(player)) + backpackItems.Add(player, new List()); + + backpackItems[player] = new List(); + + foreach (var i in itemList) + { + var newItem = new InventoryItem() + { + Name = GetItemById(i.ItemId).Name, + Amount = i.Amount, + ItemId = i.ItemId, + Weight = GetUserInventoryWeight(player), + }; + backpackItems[player].Add(newItem); + } + + player.SetSharedData("backpackItems", JsonConvert.SerializeObject(backpackItems[player].ToArray())); + } + + [RemoteEvent("CLIENT:getVehicleInventory")] + public static void SetVehicleItems(Player player) + { + if (player.IsInVehicle) + { + player.TriggerEvent("Error", "Du kannst dein Kofferraum nicht betätigen."); + } + Vehicle veh = NAPI.Pools.GetAllVehicles().ToList().Where(v => v.Position.DistanceTo(player.Position) <= 2).FirstOrDefault(); + if (veh == null) + { + player.TriggerEvent("Error", "Kein Fahrzeug in der Nähe !"); + return; + } + List itemList = GetVehicleItems(veh); + + if (itemList == null) + { + player.TriggerEvent("Error", "Kofferraum ist leer !"); + return; + } + + if (!vehicleItems.ContainsKey(player)) + vehicleItems.Add(player, new List()); + //VehicleStreaming.SetDoorState(veh, DoorID.DoorTrunk, DoorState.DoorOpen); + + vehicleItems[player] = new List(); + + foreach (var i in itemList) + { + var newItem = new InventoryItem + { + Name = GetItemById(i.ItemId).Name, + Amount = i.Amount, + ItemId = i.ItemId, + Weight = GetVehicleInventoryWeight(veh), + vehicle = veh, + }; + vehicleItems[player].Add(newItem); + } + + player.SetSharedData("vehicleItems", JsonConvert.SerializeObject(vehicleItems[player].ToArray())); + } public static void LoadItems() { @@ -78,43 +157,79 @@ namespace ReallifeGamemode.Server.Managers dbContext.Remove(userItem); dbContext.SaveChanges(); } + Player player = user.Player; + + List itemList = GetUserItems(player); + if (itemList == null) return; + + if (!backpackItems.ContainsKey(player)) + backpackItems.Add(player, new List()); + + backpackItems[player] = new List(); + + foreach (var i in itemList) + { + var newItem = new InventoryItem + { + Name = GetItemById(i.ItemId).Name, + Amount = i.Amount, + ItemId = i.ItemId, + Weight = GetUserInventoryWeight(player), + }; + backpackItems[player].Add(newItem); + } } } - public static void GetUserItems(Player player) + public static void RemoveVehicleItem(ServerVehicle sVeh, VehicleItem item, int amount, Player player) + { + using (var dbContext = new DatabaseContext()) + { + var vehicleItem = dbContext.VehicleItems.FirstOrDefault(i => i.Id == item.Id); + + vehicleItem.Amount -= amount; + + dbContext.SaveChanges(); + + if (vehicleItem.Amount == 0) + { + dbContext.Remove(vehicleItem); + dbContext.SaveChanges(); + } + List itemList = GetUserItems(player); + if (itemList == null) return; + + if (!vehicleItems.ContainsKey(player)) + vehicleItems.Add(player, new List()); + + vehicleItems[player] = new List(); + + foreach (var i in itemList) + { + var newItem = new InventoryItem + { + Name = GetItemById(i.ItemId).Name, + Amount = i.Amount, + ItemId = i.ItemId, + Weight = GetUserInventoryWeight(player), + }; + vehicleItems[player].Add(newItem); + } + } + } + + public static List GetVehicleItems(Vehicle vehicle) + { + return new DatabaseContext().VehicleItems.ToList().FindAll(i => i.GetVehicle().GetVehicle() == vehicle); + } + + public static List GetUserItems(Player player) { var user = player.GetUser(); - var inventoryWeight = 0; - List iName = new List(); - List iAmount = new List(); - List iId = new List(); - List iWeight = new List(); using (var context = new DatabaseContext()) { - List userItems = context.UserItems.ToList().FindAll(i => i.UserId == user.Id); - - - foreach (var item in userItems) - { - IItem iItem = GetItemById(item.ItemId); - var currentItemWeight = iItem.Gewicht * item.Amount; - inventoryWeight += currentItemWeight; - - iName.Add(iItem.Name); - iAmount.Add(item.Amount); - iId.Add(iItem.Id); - - } - List targetList = NAPI.Player.GetPlayersInRadiusOfPlayer(2, player); - List username = new List(); - foreach (var target in targetList) - { - User cl = target.GetUser(); - username.Add(cl.Name); - } - - player.TriggerEvent("inventoryShow", inventoryWeight, iName.ToArray(), iAmount.ToArray(), iId.ToArray(), username.ToArray()); + return context.UserItems.ToList().FindAll(i => i.UserId == user.Id); } } @@ -137,7 +252,6 @@ namespace ReallifeGamemode.Server.Managers return inventoryWeight; } - public static int GetVehicleInventoryWeight(Vehicle veh) { var inventoryWeight = 0; @@ -193,318 +307,170 @@ namespace ReallifeGamemode.Server.Managers } } - public bool CheckOriginOfItem(Player client, string jsonItemID, string jsonItemAmount, string jsonOrigin, string jsonVehAmount) - { - var origin = JsonConvert.DeserializeObject(jsonOrigin); - var itemID = JsonConvert.DeserializeObject(jsonItemID); - var itemAmount = JsonConvert.DeserializeObject(jsonItemAmount); - var vehAmount = JsonConvert.DeserializeObject(jsonVehAmount); - var user = client.GetUser(); - using (var context = new DatabaseContext()) - { - if (origin.Length < 1) - return false; - - - if (origin[0] == 1) - { - foreach (Vehicle veh in NAPI.Pools.GetAllVehicles()) - { - if (veh.Position.DistanceTo(client.Position) < 5f) - { - if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearLeft) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearRight) == DoorState.DoorOpen) - { - - UserItem vItem = new UserItem - { - Amount = vehAmount, - ItemId = itemID, - UserId = user.Id, - Slot = -1 - }; - - ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); - VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == origin[1] && v.ItemId == vItem.ItemId).FirstOrDefault(); - if (vehItem != null) - { - IItem iItem = GetItemById(vItem.ItemId); - - if (GetUserInventoryWeight(client) + (iItem.Gewicht * vItem.Amount) > 40000) - { - for (int i = 0; i <= vItem.Amount; i++) - { - if (GetUserInventoryWeight(client) + (iItem.Gewicht * i) > 40000) - { - vItem.Amount = i - 1; - break; - } - - } - } - - if (vItem.Amount == 0) - { - return false; - } - - if (itemAmount < vehItem.Amount) - { - UserItem uItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == vItem.ItemId).FirstOrDefault(); - if (uItem == null) - { - context.Add(vItem); - } - else - { - uItem.Amount += vItem.Amount; - } - context.SaveChanges(); - return true; - } - else if (itemAmount == vehItem.Amount) - { - UserItem uItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == vItem.ItemId).FirstOrDefault(); - if (uItem == null) - { - context.Add(vItem); - } - else - { - uItem.Amount += vItem.Amount; - } - context.SaveChanges(); - return true; - } - return false; - } - } - } - } - } - else if (origin[0] == 0) - { - - VehicleItem cItem = new VehicleItem - { - Amount = vehAmount, - ItemId = itemID, - VehicleId = origin[1], - Slot = -1, - }; - - UserItem uItem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == cItem.ItemId).FirstOrDefault(); - IItem iItem = GetItemById(cItem.ItemId); - Vehicle veh = VehicleManager.GetVehicleFromId(cItem.VehicleId); - if (GetVehicleInventoryWeight(veh) + (iItem.Gewicht * cItem.Amount) > 250000) - { - for (int i = 0; i <= cItem.Amount; i++) - { - if (GetVehicleInventoryWeight(veh) + (iItem.Gewicht * i) > 250000) - { - cItem.Amount = i - 1; - break; - } - - } - } - - if (cItem.Amount == 0) - { - return false; - } - - if (iItem is IWeaponDealItem weaponDealItem) - { - return false; - } - - if (uItem != null) - { - if (vehAmount < uItem.Amount) - { - - VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == cItem.VehicleId && v.ItemId == cItem.ItemId).FirstOrDefault(); - if (vehItem == null) - { - context.Add(cItem); - } - else - { - vehItem.Amount += cItem.Amount; - } - context.SaveChanges(); - return true; - - - } - else if (vehAmount == uItem.Amount) - { - VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == cItem.VehicleId && v.ItemId == cItem.ItemId).FirstOrDefault(); - if (vehItem == null) - { - context.Add(cItem); - } - else - { - vehItem.Amount += cItem.Amount; - } - context.SaveChanges(); - return true; - } - return false; - } - } - return false; - } - } - - [RemoteEvent("saveVehicleInventory")] - public void SaveVehicleInventory(Player player, string jsonItemID, string jsonItemAmount, string jsonGotFrom, string vehAmount) + [RemoteEvent("transferToBackpack")] + public void TransferToBackpack(Player player, string jsonItemID, string jsonItemAmount) { var itemID = JsonConvert.DeserializeObject(jsonItemID); var itemAmount = JsonConvert.DeserializeObject(jsonItemAmount); - var origin = JsonConvert.DeserializeObject(jsonGotFrom); - - if (!CheckOriginOfItem(player, jsonItemID, jsonItemAmount, jsonGotFrom, vehAmount)) - return; using (var context = new DatabaseContext()) { + if (!vehicleItems.ContainsKey(player)) + vehicleItems.Add(player, new List()); + Vehicle veh = null; + if (vehicleItems[player].Count != 0) + veh = vehicleItems[player].FirstOrDefault().vehicle; - VehicleItem vItem = new VehicleItem - { - Amount = itemAmount, - ItemId = itemID, - VehicleId = origin[1], - Slot = -1 - }; + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); - VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == vItem.VehicleId && v.ItemId == vItem.ItemId).FirstOrDefault(); + VehicleItem vehItem = context.VehicleItems.Where(v => v.VehicleId == serverVehicle.Id && v.ItemId == itemID).FirstOrDefault(); if (vehItem == null) { - context.VehicleItems.Add(vItem); - } - else if (vItem.Amount <= 0) - { - context.VehicleItems.Remove(vehItem); - } - else - { - vehItem.Amount = vItem.Amount; + player.TriggerEvent("Error", "Transfer nicht möglich."); + return; } + + RemoveVehicleItem(serverVehicle, vehItem, itemAmount, player); + SetVehicleItems(player); + + AddItemToInventory(player, itemID, itemAmount); + + SetBackpackItems(player); context.SaveChanges(); - IItem iItem = GetItemById(vItem.ItemId); - player.TriggerEvent("aproveTransfer", JsonConvert.DeserializeObject(vehAmount), iItem.Name, "Rucksack"); + IItem iItem = GetItemById(vehItem.ItemId); } } - - [RemoteEvent("saveInventory")] - public void SavePlayerInventory(Player player, string jsonItemID, string jsonItemAmount, string jsonGotFrom, string vehAmount) + [RemoteEvent("transferToVehicle")] + public void TransferToVehicle(Player player, string jsonItemID, string jsonItemAmount) { - var user = player.GetUser(); var itemID = JsonConvert.DeserializeObject(jsonItemID); var itemAmount = JsonConvert.DeserializeObject(jsonItemAmount); - var origin = JsonConvert.DeserializeObject(jsonGotFrom); - - if (!CheckOriginOfItem(player, jsonItemID, jsonItemAmount, jsonGotFrom, vehAmount)) - return; using (var context = new DatabaseContext()) { + UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemID && u.Amount <= itemAmount).FirstOrDefault(); - UserItem cItem = new UserItem - { - Amount = itemAmount, - ItemId = itemID, - UserId = user.Id, - Slot = -1, - }; - - - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == cItem.ItemId).FirstOrDefault(); if (item == null) { - context.UserItems.Add(cItem); - } - else if (cItem.Amount <= 0) - { - context.UserItems.Remove(item); - } - else - { - item.Amount = cItem.Amount; + player.TriggerEvent("Error", "Transfer nicht möglich."); + return; } + RemoveUserItem(user, item, itemAmount); + + if (!vehicleItems.ContainsKey(player)) + { + player.TriggerEvent("Error", "Transfer nicht möglich."); + return; + } + + if (!vehicleItems.ContainsKey(player)) + vehicleItems.Add(player, new List()); + Vehicle veh = null; + if (vehicleItems[player].Count != 0) + veh = vehicleItems[player].FirstOrDefault().vehicle; + + if (veh == null) + { + player.TriggerEvent("Error", "Transfer nicht möglich."); + return; + } + + AddItemToVehicleInventory(veh, itemID, itemAmount); + SetVehicleItems(player); + VehicleItem vehicleItem = context.VehicleItems.Where(f => f.ItemId == itemID && f.Vehicle == VehicleManager.GetServerVehicleFromVehicle(veh, context)).FirstOrDefault(); context.SaveChanges(); - IItem iItem = GetItemById(item.ItemId); - player.TriggerEvent("aproveTransfer", JsonConvert.DeserializeObject(vehAmount), iItem.Name, "Kofferraum"); + IItem iItem = GetItemById(itemID); + player.TriggerEvent("aproveTransfer", vehicleItem.Amount, iItem.Name, "Kofferraum"); } } - public static void AddItemToInventory(Player player, UserItem item) + public static void AddItemToInventory(Player player, int itemId, int amount) { var user = player.GetUser(); using (var context = new DatabaseContext()) { - UserItem existingItem = context.UserItems.FirstOrDefault(i => i.ItemId == item.ItemId && i.UserId == item.UserId); + int setAmount = 0; + for (int i = 1; i <= amount; i++) + { + if (GetUserInventoryWeight(player) + (i * GetItemById(itemId).Gewicht) > 40000) + { + break; + } + else + { + setAmount = i; + } + } + + if (setAmount == 0) + { + player.TriggerEvent("Error", "Du kannst nicht so viel tragen."); + return; + } + + UserItem existingItem = context.UserItems.FirstOrDefault(i => i.ItemId == itemId && i.UserId == user.Id); if (existingItem != null) { - existingItem.Amount += item.Amount; + existingItem.Amount += setAmount; } else { - List allItemsByUser = context.UserItems.ToList().FindAll(i => i.UserId == user.Id); - var slotArr = Enumerable.Range(1, 20).ToList(); - allItemsByUser.ForEach(allItem => + var newItem = new UserItem() { - if (slotArr.Contains(allItem.Slot)) slotArr.Remove(allItem.Slot); - }); - - int newSlot = slotArr.Min(); - - item.Slot = newSlot; - context.UserItems.Add(item); - - IItem iItem = GetItemById(item.ItemId); - - string[] newItem = new string[] { iItem.Name, iItem.Description, iItem.Gewicht.ToString(), item.Amount.ToString(), newSlot.ToString(), item.Id.ToString() }; - - player.TriggerEvent("addItem", JsonConvert.SerializeObject(newItem)); + ItemId = itemId, + Amount = setAmount, + Slot = -1, + UserId = user.Id, + }; + context.UserItems.Add(newItem); } context.SaveChanges(); + IItem iItem = GetItemById(itemId); + player.TriggerEvent("aproveTransfer", setAmount, iItem.Name, "Rucksack"); } } - public static void AddItemToVehicleInventory(Player player, VehicleItem item, Vehicle veh) + public static void AddItemToVehicleInventory(Vehicle veh, int itemId, int amount) { - var user = player.GetUser(); using (var context = new DatabaseContext()) { + int setAmount = 0; + for (int i = 1; i <= amount; i++) + { + if (GetVehicleInventoryWeight(veh) + (i * GetItemById(itemId).Gewicht) > 200000) + { + break; + } + else + { + setAmount = i; + } + } + + if (setAmount == 0) + { + return; + } + ServerVehicle sVeh = VehicleManager.GetServerVehicleFromVehicle(veh); - VehicleItem existingItem = context.VehicleItems.FirstOrDefault(i => i.ItemId == item.ItemId && i.VehicleId == sVeh.Id); + VehicleItem existingItem = context.VehicleItems.FirstOrDefault(i => i.ItemId == itemId && i.VehicleId == sVeh.Id); if (existingItem != null) { - existingItem.Amount += item.Amount; + existingItem.Amount += amount; } else { - List allItemsByVehicle = context.VehicleItems.ToList().FindAll(i => i.VehicleId == sVeh.Id); - var slotArr = Enumerable.Range(1, 20).ToList(); - allItemsByVehicle.ForEach(allItem => + var newVehItem = new VehicleItem() { - if (slotArr.Contains(allItem.Slot)) slotArr.Remove(allItem.Slot); - }); - - int newSlot = slotArr.Min(); - - item.Slot = newSlot; - context.VehicleItems.Add(item); - - IItem iItem = GetItemById(item.ItemId); - - string[] newItem = new string[] { iItem.Name, iItem.Description, iItem.Gewicht.ToString(), item.Amount.ToString(), newSlot.ToString(), item.Id.ToString() }; + ItemId = itemId, + Amount = amount, + Slot = -1, + VehicleId = sVeh.Id, + }; + context.VehicleItems.Add(newVehItem); } context.SaveChanges(); } @@ -581,11 +547,13 @@ namespace ReallifeGamemode.Server.Managers if (iItem is IUsableItem usableItemObj) { usableItemObj.Use(fItem); - player.TriggerEvent("removeItem", itemId, 1); + List items = backpackItems[player]; + player.SetSharedData("backpackItems", JsonConvert.SerializeObject(items.ToArray())); player.TriggerEvent("aproveUse", 1, iItem.Name); } else player.TriggerEvent("Error", "Du kannst dieses Item nicht benutzen."); break; + case "drop": if (iItem == null) @@ -606,18 +574,19 @@ namespace ReallifeGamemode.Server.Managers //new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8f); Random r = new Random(); GTANetworkAPI.Object grndObject; + Vector3 textPos = dropPosition; if (iItem is IWeaponDealItem obj) { dropPosition.Z -= 1.05f; - grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 0); + grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0); } else { dropPosition.Z -= 0.8f; - grndObject = NAPI.Object.CreateObject(3777723516, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 0); + grndObject = NAPI.Object.CreateObject(3777723516, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0); } GroundItem grndItem = new GroundItem { ItemId = iItem.Id, Amount = amount, Position = dropPosition }; - TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", dropPosition, 5, 0.5f, 4, new Color(255, 255, 255), false, 0); + TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", textPos, 5, 0.5f, 4, new Color(255, 255, 255), false, 0); GroundItem.AddGroundItem(grndItem, grndObject, grndTxtLbl); if (fItem.Amount > amount) { @@ -627,7 +596,7 @@ namespace ReallifeGamemode.Server.Managers { context.UserItems.Remove(fItem); } - player.TriggerEvent("removeItem", itemId, amount); + SetBackpackItems(player); player.TriggerEvent("aproveThrow", amount, iItem.Name); } break; @@ -636,250 +605,23 @@ namespace ReallifeGamemode.Server.Managers } } - - [RemoteEvent("tradeItem")] - public void ServerEvent_tradeItem(Player client, int value, string jsonNameOrId, string itemIdArrStr, string itemAmountArrStr) - { - User user = client.GetUser(); - string nameOrId = JsonConvert.DeserializeObject(jsonNameOrId); - Player target = PlayerService.GetPlayerByNameOrId(nameOrId); - if (target == null || !target.IsLoggedIn() || target == client) - { - ChatService.PlayerNotFound(client); - return; - } - if (client.Position.DistanceTo(target.Position) >= 5) - { - ChatService.ErrorMessage(client, "Spieler ist zu weit entfernt."); - return; - } - int[] itemIdArr = JsonConvert.DeserializeObject(itemIdArrStr); - int[] itemAmountArr = JsonConvert.DeserializeObject(itemAmountArrStr); - List itemNameList = new List(); - - - if (target.HasData("inTrade") && target.GetData("inTrade") == true) - { - ChatService.SendMessage(client, $"~r~[FEHLER] ~w~{target.Name} befindet sich bereits in einem Handel."); - return; - } - int inventoryWeight = 0; - using (var context = new DatabaseContext()) - { - int targetInvWeight = GetUserInventoryWeight(target); - - for (int i = 0; i < itemIdArr.Length; i++) - { - int itemId = itemIdArr[i]; - int itemAmount = itemAmountArr[i]; - UserItem uitem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - IItem iItem = GetItemById(uitem.ItemId); - var currentItemWeight = iItem.Gewicht * itemAmount; - inventoryWeight += currentItemWeight; - } - if (((targetInvWeight + inventoryWeight) / 1000) > 40) - { - ChatService.ErrorMessage(client, "Handel kann nicht getätigt werden."); - return; - } - - for (int x = 0; x < itemIdArr.Length; x++) - { - int itemId = itemIdArr[x]; - int itemAmount = itemAmountArr[x]; - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item.Amount - itemAmount > 0) - { - item.Amount -= itemAmount; - } - else - { - context.UserItems.Remove(item); - } - IItem iItem = GetItemById(itemId); - itemNameList.Add(iItem.Name); - context.SaveChanges(); - } - } - ChatService.SendMessage(client, $"~b~Du hast eine Handelsanfrage an {target.Name} gesendet."); - TradeItems[user.Id] = (itemIdArr, itemAmountArr); - TradeValue[user.Id] = value; - target.SetData("tradePartner", user.Id); - target.SetData("trade", client.Name); - SendTradeOffer(target, client); - target.TriggerEvent("addTradeItems", itemIdArr, itemAmountArr, itemNameList.ToArray(), inventoryWeight); - } - - public void SendTradeOffer(Player client, Player sender) - { - client.SetData("inTrade", true); - sender.SetData("inTrade", true); - ChatService.SendMessage(client, $"~b~ Du hast eine Handelsanfrage von {sender.Name} bekommen."); - client.SetSharedData("tradeOffer", JsonConvert.SerializeObject(1)); - User user = sender.GetUser(); - Timer tradeTimer = new Timer(30000); - TradeTimer[user.Id] = tradeTimer; - tradeTimer.Start(); - tradeTimer.Elapsed += (s, e) => { SendBackToSender(sender); client.SetData("inTrade", false); sender.SetData("inTrade", false); client.SetSharedData("tradeOffer", JsonConvert.SerializeObject(0)); }; - } - - public void SendBackToSender(Player client) - { - User user = client.GetUser(); - ChatService.SendMessage(client, "Dein Handelspartner hat die Anfrage nicht angenommen."); - (int[] itemIdArr, int[] itemAmountArr) = TradeItems[user.Id]; - Timer timer = TradeTimer[user.Id]; - timer.Stop(); - using (var context = new DatabaseContext()) - { - for (int x = 0; x < itemIdArr.Length; x++) - { - int itemId = itemIdArr[x]; - int itemAmount = itemAmountArr[x]; - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item != null) - { - item.Amount += itemAmount; - } - else - { - var newItem = new UserItem - { - ItemId = itemId, - UserId = user.Id, - Amount = itemAmount, - Slot = -1 - }; - - context.UserItems.Add(newItem); - } - context.SaveChanges(); - } - } - } - - [RemoteEvent("declineTrade")] - public void ServerEvent_declineTrade(Player client) - { - client.SetSharedData("tradeOffer", JsonConvert.SerializeObject(0)); - if (!client.GetData("inTrade")) - { - ChatService.ErrorMessage(client, "Das Handelsangebot ist abgelaufen."); - return; - } - string name = client.GetData("trade"); - Player target = PlayerService.GetPlayerByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(client); - return; - } - - client.SetData("inTrade", false); - target.SetData("inTrade", false); - SendBackToSender(target); - } - - public static void OpenTradeAccept(Player client) - { - User user = client.GetUser(); - int id = client.GetData("tradePartner"); - (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; - Timer tradeTimer = TradeTimer[id]; - tradeTimer.Stop(); - tradeTimer.Start(); - client.TriggerEvent("openTradeWindow", TradeValue[id], itemIdArr, itemAmountArr); - } - - [RemoteEvent("acceptTrade")] - public void ServerEvent_AcceptTrade(Player client) - { - if (!client.GetData("inTrade")) - { - ChatService.ErrorMessage(client, "Das Handelsangebot ist abgelaufen."); - return; - } - client.SetSharedData("tradeOffer", JsonConvert.SerializeObject(0)); - client.SetData("inTrade", false); - - User user = client.GetUser(); - int id = client.GetData("tradePartner"); - (int[] itemIdArr, int[] itemAmountArr) = TradeItems[id]; - Timer tradeTimer = TradeTimer[id]; - tradeTimer.Stop(); - string name = client.GetData("trade"); - Player target = PlayerService.GetPlayerByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(client); - return; - } - target.SetData("inTrade", false); - - using (var context = new DatabaseContext()) - { - - int targetInvWeight = GetUserInventoryWeight(client); - int inventoryWeight = 0; - for (int i = 0; i < itemIdArr.Length; i++) - { - int itemId = itemIdArr[i]; - int itemAmount = itemAmountArr[i]; - UserItem uitem = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - IItem iItem = GetItemById(uitem.ItemId); - var currentItemWeight = iItem.Gewicht * itemAmount; - inventoryWeight += currentItemWeight; - } - if (((targetInvWeight + inventoryWeight) / 1000) > 40) - { - ChatService.ErrorMessage(client, "Handel kann nicht getätigt werden."); - return; - } - - for (int x = 0; x < itemIdArr.Length; x++) - { - int itemId = itemIdArr[x]; - int itemAmount = itemAmountArr[x]; - UserItem item = context.UserItems.Where(u => u.UserId == user.Id && u.ItemId == itemId).FirstOrDefault(); - if (item != null) - { - item.Amount += itemAmount; - } - else - { - var newItem = new UserItem - { - ItemId = itemId, - UserId = user.Id, - Amount = itemAmount, - Slot = -1 - }; - - context.UserItems.Add(newItem); - } - context.SaveChanges(); - } - } - ChatService.SendMessage(target, $"{client.Name} hat deine Anfrage angenommen."); - - } - [RemoteEvent("SERVER:BuyItems")] public void SrvEvent_BuyItem(Player client, string itemName) { IItem shopItem = GetItemByName(itemName); - using(var dbContext = new DatabaseContext()){ + using (var dbContext = new DatabaseContext()) + { User user = client.GetUser(dbContext); if (user.Handmoney < shopItem.Price) { client.TriggerEvent("itemMenu:Error"); return; - } + } UserItem item = dbContext.UserItems.Where(i => i.ItemId == shopItem.Id && i.UserId == user.Id).FirstOrDefault(); - if(item == null) + if (item == null) { var newItem = new UserItem { @@ -898,7 +640,6 @@ namespace ReallifeGamemode.Server.Managers dbContext.SaveChanges(); client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); } - } } } diff --git a/ReallifeGamemode.Server/Managers/JobManager.cs b/ReallifeGamemode.Server/Managers/JobManager.cs index e09f54b6..487bd9f1 100644 --- a/ReallifeGamemode.Server/Managers/JobManager.cs +++ b/ReallifeGamemode.Server/Managers/JobManager.cs @@ -1,4 +1,8 @@ -using GTANetworkAPI; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; @@ -7,332 +11,324 @@ using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Services; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; namespace ReallifeGamemode.Server.Managers { public class JobManager : Script - { - private static List _jobs = new List(); - - public static void LoadJobs() { - IEnumerable jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract); + private static List _jobs = new List(); - foreach (var type in jobTypes) - { - var instance = Activator.CreateInstance(type) as JobBase; - if (GetJob(instance.Id) != null) + public static void LoadJobs() { - throw new InvalidOperationException($"Double Job ID found: {instance.Id} | {instance.Name}"); - } - _jobs.Add(instance); - NAPI.Util.ConsoleOutput($"Loading job {instance.Name}"); - } - NAPI.Util.ConsoleOutput($"Loaded {_jobs.Count} jobs"); - } + IEnumerable jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract); - public static JobBase GetJob(int id) => _jobs.Where(j => j.Id == id).FirstOrDefault(); - - public static T GetJob() where T : JobBase - { - return _jobs.Where(j => j.GetType() == typeof(T)).FirstOrDefault() as T; - } - - public static List GetJobs() => _jobs.OrderBy(j => j.Id).ToList(); - - [RemoteEvent("CLIENT:JobCenter_CancelJob")] - public void CancelJobEvent(Player player) - { - using (var dbContext = new DatabaseContext()) - { - User u = player.GetUser(dbContext); - - if (u == null) return; - - if (u.JobId == null) - { - ChatService.ErrorMessage(player, "Du hast momentan keinen Job, den du kündigen könntest."); - return; - } - - u.JobId = null; - - ChatService.SendMessage(player, "~y~[JOBCENTER]~s~ Du hast deinen Job erfolgreich gekündigt."); - - dbContext.SaveChanges(); - } - } - - [RemoteEvent("CLIENT:JobCenter_AcceptJob")] - public void AcceptJobEvent(Player player, int jobId) - { - using (var dbContext = new DatabaseContext()) - { - User u = player.GetUser(dbContext); - - if (u == null) return; - - if (u.JobId != null) - { - ChatService.ErrorMessage(player, "Du musst deinen alten Job kündigen, bevor du einen neuen ausüben kannst"); - return; - } - - JobBase job = JobManager.GetJob(jobId); - - if (job == null) - { - ChatService.ErrorMessage(player, "Bei der Job-Annahme ist ein Fehler aufgetretet: Dieser Job wurde nicht gefunden"); - return; - } - - ChatService.SendMessage(player, $"~y~[JOBCENTER]~s~ Du hast erfolgreich deinen neuen Job: ~o~{job.Name}~s~ angenommen."); - - u.JobId = jobId; - - dbContext.SaveChanges(); - } - } - - [RemoteEvent("CLIENT:JobManager_ShowJobMenu")] - public void ShowJobMenuEvent(Player player) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - dynamic data = null; - - if (job.Id == 1 && job.GetUsersInJob().Contains(player)) - { - var taxiCalls = JobManager.GetJob().TaxiContracts; - if (!taxiCalls.Any(t => t.Driver?.Handle == player.Handle)) // Spieler in keiner aktiven Fahrt - { - data = new - { - job.Id, - Status = 0, - JobData = new + foreach (var type in jobTypes) { - TaxiCalls = taxiCalls - .Where(t => t.Driver == null) - .Select(t => new - { - t.Name, - Distance = Math.Round(t.Position.DistanceTo(player.Position), 0) - }) - .OrderBy(t => t.Distance) + var instance = Activator.CreateInstance(type) as JobBase; + if (GetJob(instance.Id) != null) + { + throw new InvalidOperationException($"Double Job ID found: {instance.Id} | {instance.Name}"); + } + _jobs.Add(instance); + NAPI.Util.ConsoleOutput($"Loading job {instance.Name}"); } - }; + NAPI.Util.ConsoleOutput($"Loaded {_jobs.Count} jobs"); } - else // Spieler in aktiver Fahrt + + public static JobBase GetJob(int id) => _jobs.Where(j => j.Id == id).FirstOrDefault(); + + public static T GetJob() where T : JobBase { - data = new - { - job.Id, - Status = 1, - JobData = new + return _jobs.Where(j => j.GetType() == typeof(T)).FirstOrDefault() as T; + } + + public static List GetJobs() => _jobs.OrderBy(j => j.Id).ToList(); + + [RemoteEvent("CLIENT:JobCenter_CancelJob")] + public void CancelJobEvent(Player player) + { + using (var dbContext = new DatabaseContext()) { - taxiCalls.Where(t => t.Driver.Handle == player.Handle).First().Name + User u = player.GetUser(dbContext); + + if (u == null) return; + + if (u.JobId == null) + { + ChatService.ErrorMessage(player, "Du hast momentan keinen Job, den du kündigen könntest."); + return; + } + + u.JobId = null; + + ChatService.SendMessage(player, "~y~[JOBCENTER]~s~ Du hast deinen Job erfolgreich gekündigt."); + + dbContext.SaveChanges(); } - }; } - } - JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2); - if (nearJobPoint == null && u.JobId == 2) return; - - - - var json = JsonConvert.SerializeObject(data); - - player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name, json); - } - - [RemoteEvent("CLIENT:Job_StartJob")] - public void StartJobEvent(Player player) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - if (job.GetUsersInJob().Contains(player)) - { - ChatService.ErrorMessage(player, "Du bist schon in deinem Job aktiv"); - return; - } - - if (job.NeedVehicleToStart && !job.GetJobVehicles().Any(v => v.GetVehicle().Handle.Value == player.Vehicle?.Handle.Value)) - { - ChatService.ErrorMessage(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein"); - return; - } - - job.StartJob(player); - } - - [RemoteEvent("CLIENT:Job_StopJob")] - public void StopJob(Player player) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - if (!job.GetUsersInJob().Contains(player)) - { - ChatService.ErrorMessage(player, "Du führst deinen Job momentan nicht aus"); - return; - } - - if (job.NeedVehicleToStart && player.Vehicle != null) - { - VehicleStreaming.SetEngineState(player.Vehicle, false); - } - - job.StopJob(player); - } - - [ServerEvent(Event.PlayerExitVehicle)] - public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart) - { - job.StopJob(player); - return; - } - } - - [ServerEvent(Event.PlayerEnterVehicle)] - public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat) - { - if (seat == 0) return; - ServerVehicle sVeh = veh.GetServerVehicle(); - if (sVeh == null) return; - if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein - { - var taxiJob = JobManager.GetJob(); - - Player driver = veh.GetDriver(); - if (!driver.HasData("DriverPrice")) return; - int taxiPrice = driver.GetData("DriverPrice"); - float km = 0; - if (!driver.HasData("FareKm")) { driver.SetData("FareKm", km); } - km = driver.GetData("FareKm"); - if (driver.HasData("Passager")) return; - driver.SetData("Passager", player.GetUser().Id); - driver.SetData("hasPassager", true); - using (var dbContext = new DatabaseContext()) + [RemoteEvent("CLIENT:JobCenter_AcceptJob")] + public void AcceptJobEvent(Player player, int jobId) { - User contractUser = player.GetUser(dbContext); - contractUser.Handmoney -= (int)Math.Round(km * taxiPrice); - dbContext.SaveChanges(); - contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney); + using (var dbContext = new DatabaseContext()) + { + User u = player.GetUser(dbContext); + + if (u == null) return; + + if (u.JobId != null) + { + ChatService.ErrorMessage(player, "Du musst deinen alten Job kündigen, bevor du einen neuen ausüben kannst"); + return; + } + + JobBase job = JobManager.GetJob(jobId); + + if (job == null) + { + ChatService.ErrorMessage(player, "Bei der Job-Annahme ist ein Fehler aufgetretet: Dieser Job wurde nicht gefunden"); + return; + } + + ChatService.SendMessage(player, $"~y~[JOBCENTER]~s~ Du hast erfolgreich deinen neuen Job: ~o~{job.Name}~s~ angenommen."); + + u.JobId = jobId; + + dbContext.SaveChanges(); + } } - player.TriggerEvent("CLIENT:startCustomerFare", taxiPrice, km); - var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name); - if (taxiContracts.Count() == 0) return; - - var contract = taxiContracts.First(); - taxiJob.TaxiContracts.Remove(contract); - - if (driver != null && contract.Driver != null && contract.Driver.Handle != veh.GetDriver().Handle) + [RemoteEvent("CLIENT:JobManager_ShowJobMenu")] + public void ShowJobMenuEvent(Player player) { - ChatService.SendMessage(contract.Driver, $"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet."); - ChatService.SendMessage(player, $"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet."); - } - } - } + User u = player.GetUser(); - [ServerEvent(Event.PlayerEnterVehicleAttempt)] - private void JobManagerEnterVehicleAttempt(Player player, Vehicle vehicle, sbyte seat) - { - if (JobManager.GetJob().GetUsersInJob().Contains(player)){ JobManager.GetJob().MuellmannOnPlayerEnterVehicle(player, vehicle, seat); } - } + if (u.JobId == null) return; - [ServerEvent(Event.PlayerDeath)] - private void JobManagerOnPlayerDeath(Player player, Player killer, uint reason) - { - if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDeath(player); } - } + JobBase job = GetJob(u.JobId.Value); - [ServerEvent(Event.PlayerDisconnected)] - private void JobManagerOnPlayerDisconnect(Player player, DisconnectionType type, string reason) - { - if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDc(player); } - } + dynamic data = null; - [ServerEvent(Event.PlayerExitVehicle)] - public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh) - { - ServerVehicle sVeh = veh.GetServerVehicle(); - if (sVeh == null) return; - if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt vom Taxi aus - { - var taxiJob = JobManager.GetJob(); - if (veh.Occupants.Count == 0) return; - Player driver = veh.GetDriver(); - if (driver == null) return; - if (player.GetUser().Id != driver.GetData("Passager")) { player.TriggerEvent("CLIENT:cancelFare"); return; } - player.TriggerEvent("CLIENT:cancelFareCustomer"); - driver.TriggerEvent("CLIENT:resetFareClock"); - driver.ResetData("Passager"); - driver.ResetData("hasPassager"); - driver.SetData("FareKm", 0); - foreach (Player occupant in veh.Occupants) - { - if (occupant == driver) continue; - occupant.WarpOutOfVehicle(); + if (job.Id == 1 && job.GetUsersInJob().Contains(player)) + { + var taxiCalls = JobManager.GetJob().TaxiContracts; + if (!taxiCalls.Any(t => t.Driver?.Handle == player.Handle)) // Spieler in keiner aktiven Fahrt + { + data = new + { + job.Id, + Status = 0, + JobData = new + { + TaxiCalls = taxiCalls + .Where(t => t.Driver == null) + .Select(t => new + { + t.Name, + Distance = Math.Round(t.Position.DistanceTo(player.Position), 0) + }) + .OrderBy(t => t.Distance) + } + }; + } + else // Spieler in aktiver Fahrt + { + data = new + { + job.Id, + Status = 1, + JobData = new + { + taxiCalls.Where(t => t.Driver.Handle == player.Handle).First().Name + } + }; + } + } + JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2); + if (nearJobPoint == null && u.JobId == 2) return; + + var json = JsonConvert.SerializeObject(data); + + player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name, json); + } + + [RemoteEvent("CLIENT:Job_StartJob")] + public void StartJobEvent(Player player) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + if (job.GetUsersInJob().Contains(player)) + { + ChatService.ErrorMessage(player, "Du bist schon in deinem Job aktiv"); + return; + } + + if (job.NeedVehicleToStart && !job.GetJobVehicles().Any(v => v.GetVehicle().Handle.Value == player.Vehicle?.Handle.Value)) + { + ChatService.ErrorMessage(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein"); + return; + } + + job.StartJob(player); + } + + [RemoteEvent("CLIENT:Job_StopJob")] + public void StopJob(Player player) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + if (!job.GetUsersInJob().Contains(player)) + { + ChatService.ErrorMessage(player, "Du führst deinen Job momentan nicht aus"); + return; + } + + if (job.NeedVehicleToStart && player.Vehicle != null) + { + VehicleStreaming.SetEngineState(player.Vehicle, false); + } + + job.StopJob(player); + } + + [ServerEvent(Event.PlayerExitVehicle)] + public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart) + { + job.StopJob(player); + return; + } + } + + [ServerEvent(Event.PlayerEnterVehicle)] + public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat) + { + if (seat == 0) return; + ServerVehicle sVeh = veh.GetServerVehicle(); + if (sVeh == null) return; + if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein + { + var taxiJob = JobManager.GetJob(); + + Player driver = veh.GetDriver(); + if (!driver.HasData("DriverPrice")) return; + int taxiPrice = driver.GetData("DriverPrice"); + float km = 0; + if (!driver.HasData("FareKm")) { driver.SetData("FareKm", km); } + km = driver.GetData("FareKm"); + if (driver.HasData("Passager")) return; + driver.SetData("Passager", player.GetUser().Id); + driver.SetData("hasPassager", true); + using (var dbContext = new DatabaseContext()) + { + User contractUser = player.GetUser(dbContext); + contractUser.Handmoney -= (int)Math.Round(km * taxiPrice); + dbContext.SaveChanges(); + contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney); + } + player.TriggerEvent("CLIENT:startCustomerFare", taxiPrice, km); + + var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name); + if (taxiContracts.Count() == 0) return; + + var contract = taxiContracts.First(); + taxiJob.TaxiContracts.Remove(contract); + + if (driver != null && contract.Driver != null && contract.Driver.Handle != veh.GetDriver().Handle) + { + ChatService.SendMessage(contract.Driver, $"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet."); + ChatService.SendMessage(player, $"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet."); + } + } + } + + [ServerEvent(Event.PlayerEnterVehicleAttempt)] + private void JobManagerEnterVehicleAttempt(Player player, Vehicle vehicle, sbyte seat) + { + if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerEnterVehicle(player, vehicle, seat); } + } + + [ServerEvent(Event.PlayerDeath)] + private void JobManagerOnPlayerDeath(Player player, Player killer, uint reason) + { + if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDeath(player); } + } + + [ServerEvent(Event.PlayerDisconnected)] + private void JobManagerOnPlayerDisconnect(Player player, DisconnectionType type, string reason) + { + if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDc(player); } + } + + [ServerEvent(Event.PlayerExitVehicle)] + public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh) + { + ServerVehicle sVeh = veh.GetServerVehicle(); + if (sVeh == null) return; + if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt vom Taxi aus + { + var taxiJob = JobManager.GetJob(); + if (veh.Occupants.Count == 0) return; + Player driver = veh.GetDriver(); + if (driver == null) return; + if (player.GetUser().Id != driver.GetData("Passager")) { player.TriggerEvent("CLIENT:cancelFare"); return; } + player.TriggerEvent("CLIENT:cancelFareCustomer"); + driver.TriggerEvent("CLIENT:resetFareClock"); + driver.ResetData("Passager"); + driver.ResetData("hasPassager"); + driver.SetData("FareKm", 0); + foreach (Player occupant in veh.Occupants) + { + if (occupant == driver) continue; + occupant.WarpOutOfVehicle(); + } + } + } + + [RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")] + public void TaxiJobAcceptCall(Player player, string name) + { + var taxiJob = JobManager.GetJob(); + + if (!taxiJob.TaxiContracts.Any(t => t.Name == name)) + { + ChatService.ErrorMessage(player, "Dieser Spieler hat kein Taxi gerufen oder der Auftrag ist nicht mehr aktuell"); + return; + } + + var job = taxiJob.TaxiContracts.Where(t => t.Name == name).First(); + + var target = PlayerService.GetPlayerByNameOrId(name); + if (target == null) + { + taxiJob.TaxiContracts.Remove(job); + ChatService.ErrorMessage(player, "Dieser Spieler ist nicht mehr online"); + return; + } + + job.Driver = player; + + player.TriggerEvent("SERVER:Util_setWaypoint", target.Position.X, target.Position.Y); + player.SetData("hasPassager", true); + + ChatService.SendMessage(target, $"!{{02FCFF}}Dein Auftrag wurde von {player.Name} angenommen. Warte an deiner aktuellen Position."); + ChatService.SendMessage(target, $"!{{02FCFF}}Für die Anfahrt fallen zusätzlich Kosten auf."); + ChatService.SendMessage(player, $"!{{02FCFF}}Du hast den Auftrag von {name} angenommen. Hole ihn nun ab."); } - } } - - - [RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")] - public void TaxiJobAcceptCall(Player player, string name) - { - var taxiJob = JobManager.GetJob(); - - if (!taxiJob.TaxiContracts.Any(t => t.Name == name)) - { - ChatService.ErrorMessage(player, "Dieser Spieler hat kein Taxi gerufen oder der Auftrag ist nicht mehr aktuell"); - return; - } - - var job = taxiJob.TaxiContracts.Where(t => t.Name == name).First(); - - var target = PlayerService.GetPlayerByNameOrId(name); - if (target == null) - { - taxiJob.TaxiContracts.Remove(job); - ChatService.ErrorMessage(player, "Dieser Spieler ist nicht mehr online"); - return; - } - - job.Driver = player; - - player.TriggerEvent("SERVER:Util_setWaypoint", target.Position.X, target.Position.Y); - player.SetData("hasPassager", true); - - ChatService.SendMessage(target, $"!{{02FCFF}}Dein Auftrag wurde von {player.Name} angenommen. Warte an deiner aktuellen Position."); - ChatService.SendMessage(target, $"!{{02FCFF}}Für die Anfahrt fallen zusätzlich Kosten auf."); - ChatService.SendMessage(player, $"!{{02FCFF}}Du hast den Auftrag von {name} angenommen. Hole ihn nun ab."); - } - } } diff --git a/ReallifeGamemode.Server/Managers/LoadManager.cs b/ReallifeGamemode.Server/Managers/LoadManager.cs index 99f6889c..cc4aaddd 100644 --- a/ReallifeGamemode.Server/Managers/LoadManager.cs +++ b/ReallifeGamemode.Server/Managers/LoadManager.cs @@ -13,30 +13,29 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class LoadManager : Script - { - - [ServerEvent(Event.ResourceStart)] - public void OnResourceStart() { - using (var dbContext = new DatabaseContext()) - { - foreach (SavedBlip b in dbContext.Blips) + [ServerEvent(Event.ResourceStart)] + public void OnResourceStart() { - if (b.Active == true) - { - NAPI.Blip.CreateBlip((uint)b.Sprite, new Vector3(b.PositionX, b.PositionY, b.PositionZ), b.Scale, - b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short)b.Rotation, b.Dimension); - } - } + using (var dbContext = new DatabaseContext()) + { + foreach (SavedBlip b in dbContext.Blips) + { + if (b.Active == true) + { + NAPI.Blip.CreateBlip((uint)b.Sprite, new Vector3(b.PositionX, b.PositionY, b.PositionZ), b.Scale, + b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short)b.Rotation, b.Dimension); + } + } - foreach (ServerVehicle veh in dbContext.ServerVehicles) - { - if (!veh.Active) continue; + foreach (ServerVehicle veh in dbContext.ServerVehicles) + { + if (!veh.Active) continue; - Vehicle current = veh.Spawn(); - TuningManager.ApplyTuningToServerVehicle(veh); + Vehicle current = veh.Spawn(); + TuningManager.ApplyTuningToServerVehicle(veh); + } + } } - } } - } } diff --git a/ReallifeGamemode.Server/Managers/PositionManager.cs b/ReallifeGamemode.Server/Managers/PositionManager.cs index 43f4e249..2964dd85 100644 --- a/ReallifeGamemode.Server/Managers/PositionManager.cs +++ b/ReallifeGamemode.Server/Managers/PositionManager.cs @@ -151,6 +151,8 @@ namespace ReallifeGamemode.Server.Managers #endregion ElevetaorPoints + #region JobPoints + JobPoint jobPointRefuseCollector = new JobPoint() { Position = new Vector3(-429.237, -1727.9839, 19.73836), @@ -159,15 +161,18 @@ namespace ReallifeGamemode.Server.Managers jobPoints.Add(jobPointRefuseCollector); - foreach(JobPoint p in jobPoints) + foreach (JobPoint p in jobPoints) { NAPI.Marker.CreateMarker(1, new Vector3(p.Position.X, p.Position.Y, p.Position.Z - 2), new Vector3(p.Position.X, p.Position.Y, p.Position.Z + 1), new Vector3(0, 0, 0), 1.5f, new Color(255, 255, 255, 50), false, 0); NAPI.TextLabel.CreateTextLabel("M\u00fcllmann - Dr\u00fccke ~y~J~s~ um Job zu starten", p.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); - NAPI.Blip.CreateBlip(318, p.Position, 1f, 0, "Müllmann", 255, 0,true); + NAPI.Blip.CreateBlip(318, p.Position, 1f, 0, "Müllmann", 255, 0, true); } - + + #endregion JobPoints + #region Shops + foreach (var shop in ShopManager.clotheStores) { shop.LoadClothes(); @@ -186,7 +191,6 @@ namespace ReallifeGamemode.Server.Managers NAPI.TextLabel.CreateTextLabel("Kleiderladen - Dr\u00fccke ~y~E", s.Position, 7, 1, 0, new Color(255, 255, 255), false, 0); } - foreach (var shop in ShopManager.itemShops) { shop.LoadItems(); @@ -216,12 +220,70 @@ namespace ReallifeGamemode.Server.Managers } } +public static class MarkerBehinVehicle +{ + public static List behindVehiclePoints = new List(); + + public static bool HasMarkerBehind(this Vehicle vehicle) + { + BehindVehiclePoint point = behindVehiclePoints.Find(v => v.vehicle == vehicle); + if (point != null) + { + return true; + } + return false; + } + + public static void RemoveMarkerBehind(this Vehicle vehicle) + { + BehindVehiclePoint point = behindVehiclePoints.Find(v => v.vehicle == vehicle); + point.marker.Delete(); + point.textLabel.Delete(); + behindVehiclePoints.Remove(point); + } + + public static void AddMarkerBehind(this Vehicle vehicle, Vector3 vector3) + { + Marker marker = NAPI.Marker.CreateMarker(1, vector3, new Vector3(), new Vector3(), 2, new Color(255, 255, 255, 70)); + TextLabel textLabel = NAPI.TextLabel.CreateTextLabel("Dr\u00fccke ~y~E~s~ um zu benutzen", new Vector3(vector3.X, vector3.Y, vector3.Z + 1.4), 7, 1, 0, new Color(255, 255, 255), false, 0); + BehindVehiclePoint behindVehiclePoint = new BehindVehiclePoint(vehicle, marker, textLabel); + behindVehiclePoints.Add(behindVehiclePoint); + } +} + public class DutyPoint { public Vector3 Position { get; set; } public int FactionId { get; set; } } +public class BehindVehiclePoint +{ + public Vehicle vehicle { get; set; } + public Marker marker { get; set; } + public TextLabel textLabel { get; set; } + + public BehindVehiclePoint(Vehicle vehicle, Marker marker, TextLabel textLabel) + { + this.vehicle = vehicle; + this.marker = marker; + this.textLabel = textLabel; + } + + public void usePoint(Player player) + { + if (vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) + { + if (!player.HasAttachment("ammobox")) + { + player.PlayAnimation("anim@heists@box_carry@", "idle", 49); + player.AddAttachment("ammobox", false); + NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed); + } + } + } +} + public class WeaponPoint { public Vector3 Position { get; set; } @@ -237,21 +299,18 @@ public class ClotheshopPoint { public Vector3 Position { get; set; } public ClotheShop clotheShop { get; set; } - } public class ItemshopPoint { public Vector3 Position { get; set; } public ItemShop itemShop { get; set; } - } public class JobPoint { public Vector3 Position { get; set; } public int jobId { get; set; } - } public class ElevatorPoint @@ -260,4 +319,3 @@ public class ElevatorPoint public int FactionId { get; set; } public string Stage { get; set; } } - diff --git a/ReallifeGamemode.Server/Managers/SaveManager.cs b/ReallifeGamemode.Server/Managers/SaveManager.cs index db6f8216..9fe32326 100644 --- a/ReallifeGamemode.Server/Managers/SaveManager.cs +++ b/ReallifeGamemode.Server/Managers/SaveManager.cs @@ -1,207 +1,204 @@ -using GTANetworkAPI; -using ReallifeGamemode.Server.Business; +using System; +using GTANetworkAPI; +using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Entities.Saves; -using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; -using System; -using Newtonsoft.Json; +using ReallifeGamemode.Server.Business; +using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class SaveManager : Script - { - - [RemoteEvent("OnSaveBlipData")] - public static void OnSaveBlipData(Player player, string blipSprite, string blipName, string blipScale, string blipColor, - string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension) { - float x = player.Position.X; - float y = player.Position.Y; - float z = player.Position.Z; - short sprite = short.Parse(blipSprite); - string name = blipName; - float scale = float.Parse(blipScale); - byte color = Convert.ToByte(blipColor); - byte alpha = Convert.ToByte(blipAlpha); - float drawDistance = float.Parse(blipDrawDistance); - bool shortRange = bool.Parse(blipShortRange); - float rotation = float.Parse(blipRotation); - byte dimension = Convert.ToByte(blipDimension); - - NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x, y, z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension); - - using (var saveData = new DatabaseContext()) - { - var dataSet = new SavedBlip + [RemoteEvent("OnSaveBlipData")] + public static void OnSaveBlipData(Player player, string blipSprite, string blipName, string blipScale, string blipColor, + string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension) { - Sprite = sprite, - PositionX = x, - PositionY = y, - PositionZ = z, - Name = blipName, - Scale = scale, - Color = color, - Alpha = alpha, - DrawDistance = drawDistance, - ShortRange = shortRange, - Rotation = rotation, - Dimension = dimension, - Active = true - }; - saveData.Blips.Add(dataSet); - saveData.SaveChanges(); - } - } + float x = player.Position.X; + float y = player.Position.Y; + float z = player.Position.Z; + short sprite = short.Parse(blipSprite); + string name = blipName; + float scale = float.Parse(blipScale); + byte color = Convert.ToByte(blipColor); + byte alpha = Convert.ToByte(blipAlpha); + float drawDistance = float.Parse(blipDrawDistance); + bool shortRange = bool.Parse(blipShortRange); + float rotation = float.Parse(blipRotation); + byte dimension = Convert.ToByte(blipDimension); - public static Vehicle SaveVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked) - { - using (var saveData = new DatabaseContext()) - { - var dataSet = new SavedVehicle + NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x, y, z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension); + + using (var saveData = new DatabaseContext()) + { + var dataSet = new SavedBlip + { + Sprite = sprite, + PositionX = x, + PositionY = y, + PositionZ = z, + Name = blipName, + Scale = scale, + Color = color, + Alpha = alpha, + DrawDistance = drawDistance, + ShortRange = shortRange, + Rotation = rotation, + Dimension = dimension, + Active = true + }; + saveData.Blips.Add(dataSet); + saveData.SaveChanges(); + } + } + + public static Vehicle SaveVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked) { - Model = vehicleModel, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true - }; - saveData.Vehicles.Add(dataSet); - saveData.SaveChanges(); + using (var saveData = new DatabaseContext()) + { + var dataSet = new SavedVehicle + { + Model = vehicleModel, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.Vehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveJobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int jobId) - { - using (var saveData = new DatabaseContext()) - { - var dataSet = new JobVehicle + public static Vehicle SaveJobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int jobId) { - Model = vehicleModel, - JobId = jobId, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true - }; - saveData.JobVehicles.Add(dataSet); - saveData.SaveChanges(); + using (var saveData = new DatabaseContext()) + { + var dataSet = new JobVehicle + { + Model = vehicleModel, + JobId = jobId, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.JobVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveSchoolVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int schoolId) - { - using (var saveData = new DatabaseContext()) - { - var dataSet = new SchoolVehicle + public static Vehicle SaveSchoolVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int schoolId) { - Model = vehicleModel, - SchoolId = schoolId, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true - }; - saveData.SchoolVehicles.Add(dataSet); - saveData.SaveChanges(); + using (var saveData = new DatabaseContext()) + { + var dataSet = new SchoolVehicle + { + Model = vehicleModel, + SchoolId = schoolId, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.SchoolVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - - - public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int[] factionId, int livery) - { - using (var saveData = new DatabaseContext()) - { - var dataSet = new FactionVehicle + public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int[] factionId, int livery) { - Model = vehicleModel, - Owners = JsonConvert.SerializeObject(factionId), - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true, - Livery = livery - }; - saveData.FactionVehicles.Add(dataSet); - saveData.SaveChanges(); + using (var saveData = new DatabaseContext()) + { + var dataSet = new FactionVehicle + { + Model = vehicleModel, + Owners = JsonConvert.SerializeObject(factionId), + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true, + Livery = livery + }; + saveData.FactionVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price) - { - using (var saveData = new DatabaseContext()) - { - var dataSet = new ShopVehicle + public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price) { - Model = vehicleModel, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Active = true, - BusinessId = business.Id, - Price = price - }; - saveData.ShopVehicles.Add(dataSet); - saveData.SaveChanges(); + using (var saveData = new DatabaseContext()) + { + var dataSet = new ShopVehicle + { + Model = vehicleModel, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Active = true, + BusinessId = business.Id, + Price = price + }; + saveData.ShopVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static void SaveGotoPoint(Player player, string description) - { - using (var saveData = new DatabaseContext()) - { - var dataSet = new GotoPoint + public static void SaveGotoPoint(Player player, string description) { - Description = description, - X = player.Position.X, - Y = player.Position.Y, - Z = player.Position.Z, - Active = true - }; - saveData.GotoPoints.Add(dataSet); - saveData.SaveChanges(); - } - } + using (var saveData = new DatabaseContext()) + { + var dataSet = new GotoPoint + { + Description = description, + X = player.Position.X, + Y = player.Position.Y, + Z = player.Position.Z, + Active = true + }; + saveData.GotoPoints.Add(dataSet); + saveData.SaveChanges(); + } + } public static void SaveAllOnSave() { @@ -222,8 +219,8 @@ namespace ReallifeGamemode.Server.Managers user.PositionZ = pos.Z; } - saveAll.SaveChanges(); - } + saveAll.SaveChanges(); + } + } } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Managers/ShopManager.cs b/ReallifeGamemode.Server/Managers/ShopManager.cs index 2b5762c7..89989a2a 100644 --- a/ReallifeGamemode.Server/Managers/ShopManager.cs +++ b/ReallifeGamemode.Server/Managers/ShopManager.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities.Saves; using ReallifeGamemode.Database.Models; @@ -11,59 +9,57 @@ using ReallifeGamemode.Server.Shop.SevenEleven; namespace ReallifeGamemode.Server.Managers { public class ShopManager - { - - public static List clotheStores = new List(); - public static List itemShops = new List(); - - public static void LoadClotheShops() { - using(var dbContext = new DatabaseContext()) - { - List discount = dbContext.Blips.ToList().FindAll(s => s.Name == "Binco" || s.Name == "Discount Store"); - List midclass = dbContext.Blips.ToList().FindAll(s => s.Name == "Suburban"); - List luxury = dbContext.Blips.ToList().FindAll(s => s.Name == "Ponsonbys"); + public static List clotheStores = new List(); + public static List itemShops = new List(); - foreach(var store in discount) { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ClotheShop newShop = new ClotheShop(1, pos); - clotheStores.Add(newShop); - NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); - } - foreach(var store in midclass) + public static void LoadClotheShops() { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ClotheShop newShop = new ClotheShop(2, pos); - clotheStores.Add(newShop); - NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); + using (var dbContext = new DatabaseContext()) + { + List discount = dbContext.Blips.ToList().FindAll(s => s.Name == "Binco" || s.Name == "Discount Store"); + List midclass = dbContext.Blips.ToList().FindAll(s => s.Name == "Suburban"); + List luxury = dbContext.Blips.ToList().FindAll(s => s.Name == "Ponsonbys"); + + foreach (var store in discount) + { + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ClotheShop newShop = new ClotheShop(1, pos); + clotheStores.Add(newShop); + NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); + } + foreach (var store in midclass) + { + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ClotheShop newShop = new ClotheShop(2, pos); + clotheStores.Add(newShop); + NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); + } + foreach (var store in luxury) + { + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ClotheShop newShop = new ClotheShop(3, pos); + clotheStores.Add(newShop); + NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); + } + } } - foreach (var store in luxury) + + public static void LoadItemShops() { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ClotheShop newShop = new ClotheShop(3, pos); - clotheStores.Add(newShop); - NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); + using (var dbContext = new DatabaseContext()) + { + int id = 0; + List shops = dbContext.Blips.ToList().FindAll(s => s.Name == "24/7"); + foreach (var store in shops) + { + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ItemShop newShop = new ItemShop(pos, id); + itemShops.Add(newShop); + id++; + } + NAPI.Util.ConsoleOutput($"Loaded {itemShops.Count}x 24/7"); + } } - } } - - public static void LoadItemShops() - { - using(var dbContext = new DatabaseContext()) - { - int id = 0; - List shops = dbContext.Blips.ToList().FindAll(s => s.Name == "24/7"); - foreach(var store in shops) - { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ItemShop newShop = new ItemShop(pos, id); - itemShops.Add(newShop); - id++; - } - NAPI.Util.ConsoleOutput($"Loaded {itemShops.Count}x 24/7"); - } - } - - - } } diff --git a/ReallifeGamemode.Server/Managers/TimeManager.cs b/ReallifeGamemode.Server/Managers/TimeManager.cs index 1d62ddcb..05153cf5 100644 --- a/ReallifeGamemode.Server/Managers/TimeManager.cs +++ b/ReallifeGamemode.Server/Managers/TimeManager.cs @@ -1,35 +1,33 @@ -using GTANetworkAPI; -using System; -using System.Collections.Generic; -using System.Text; +using System; using System.Timers; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Managers { public class TimeManager - { - private static Timer realTimeTimer; - - public static void StartTimeManager() { - if (realTimeTimer == null) - { - realTimeTimer = new Timer(1000); - realTimeTimer.Elapsed += SetTime; - } + private static Timer realTimeTimer; - realTimeTimer.Start(); - } + public static void StartTimeManager() + { + if (realTimeTimer == null) + { + realTimeTimer = new Timer(1000); + realTimeTimer.Elapsed += SetTime; + } - public static void PauseTimeManager() - { - realTimeTimer.Stop(); - } + realTimeTimer.Start(); + } - private static void SetTime(object sender, ElapsedEventArgs args) - { - DateTime now = DateTime.Now; - NAPI.World.SetTime(now.Hour, now.Minute, now.Second); + public static void PauseTimeManager() + { + realTimeTimer.Stop(); + } + + private static void SetTime(object sender, ElapsedEventArgs args) + { + DateTime now = DateTime.Now; + NAPI.World.SetTime(now.Hour, now.Minute, now.Second); + } } - } } diff --git a/ReallifeGamemode.Server/Managers/TuningManager.cs b/ReallifeGamemode.Server/Managers/TuningManager.cs index 0e77d79f..ee0b8a12 100644 --- a/ReallifeGamemode.Server/Managers/TuningManager.cs +++ b/ReallifeGamemode.Server/Managers/TuningManager.cs @@ -1,13 +1,13 @@ -using GTANetworkAPI; -using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Database.Models; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; +using GTANetworkAPI; +using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; +using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { - class TuningManager : Script + internal class TuningManager : Script { private static List tuningGarages = new List(); @@ -21,6 +21,7 @@ namespace ReallifeGamemode.Server.Managers } } } + /// /// Fügt eine Tuning-Garage zum Spiel hinzu /// @@ -56,7 +57,6 @@ namespace ReallifeGamemode.Server.Managers Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(sVeh); if (veh == null) return; - veh.SetSharedData("mod18", false); using (var dbContext = new DatabaseContext()) diff --git a/ReallifeGamemode.Server/Managers/VehicleManager.cs b/ReallifeGamemode.Server/Managers/VehicleManager.cs index f366d345..50329a94 100644 --- a/ReallifeGamemode.Server/Managers/VehicleManager.cs +++ b/ReallifeGamemode.Server/Managers/VehicleManager.cs @@ -1,4 +1,5 @@ using GTANetworkAPI; +using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; @@ -778,7 +779,6 @@ namespace ReallifeGamemode.Server.Managers if (sVeh == null) continue; sVeh.DistanceDriven = (float)v.GetSharedData("drivenDistance"); - } dbContext.SaveChanges(); } @@ -799,6 +799,7 @@ namespace ReallifeGamemode.Server.Managers _serverVehicles[serverVehicle.Id] = vehicle.Handle; } + internal static void DeleteVehicle(Vehicle veh) { ServerVehicle sVeh; @@ -869,7 +870,6 @@ namespace ReallifeGamemode.Server.Managers { ServerVehicle serverVehicle = GetServerVehicleFromVehicle(vehicle); - if (serverVehicle == null) { vehicle.Delete(); @@ -879,8 +879,14 @@ namespace ReallifeGamemode.Server.Managers await Task.Delay(2000); newVeh.Repair(); newVeh.Rotation = new Vector3(0, 0, serverVehicle.Heading); - } + [RemoteEvent("CLIENT:setMarkerBehindVehicle")] + public void setVectorBehindVehicle(Player player, int id, string jsonX, string jsonY, string jsonZ) + { + Vehicle vehicle = NAPI.Pools.GetAllVehicles().Find(v => v.Id == id); + Vector3 vector3 = new Vector3(Convert.ToSingle((double)JsonConvert.DeserializeObject(jsonX)), Convert.ToSingle((double)JsonConvert.DeserializeObject(jsonY)), Convert.ToSingle((double)JsonConvert.DeserializeObject(jsonZ))); + vehicle.AddMarkerBehind(vector3); + } } } diff --git a/ReallifeGamemode.Server/Managers/WeaponManager.cs b/ReallifeGamemode.Server/Managers/WeaponManager.cs index e9822ed2..861ca0c8 100644 --- a/ReallifeGamemode.Server/Managers/WeaponManager.cs +++ b/ReallifeGamemode.Server/Managers/WeaponManager.cs @@ -1,11 +1,10 @@ -using GTANetworkAPI; -using System; +using System; using System.Collections.Generic; -using System.Text; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Managers { - class WeaponManager + internal class WeaponManager { private static readonly List _modWeapons = new List() { @@ -336,8 +335,6 @@ namespace ReallifeGamemode.Server.Managers { 727643628, "Ceramic Pistol"} }; - - public static bool IsValidHash(uint hash) { foreach (WeaponHash vh in Enum.GetValues(typeof(WeaponHash))) diff --git a/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs b/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs index 7d0c512d..bdd0b5cf 100644 --- a/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs +++ b/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs @@ -5,877 +5,877 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class Initial : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "BankAccountTransactionLogs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Sender = table.Column(maxLength: 32, nullable: true), - SenderBalance = table.Column(nullable: false), - MoneySent = table.Column(nullable: false), - Receiver = table.Column(maxLength: 32, nullable: true), - ReceiverBalance = table.Column(nullable: false), - NewSenderBalance = table.Column(nullable: false), - NewReceiverBalance = table.Column(nullable: false), - Fee = table.Column(nullable: false), - Origin = table.Column(maxLength: 32, nullable: true), - Timestamp = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) - }, - constraints: table => - { - table.PrimaryKey("PK_BankAccountTransactionLogs", x => x.Id); - }); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "BankAccountTransactionLogs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Sender = table.Column(maxLength: 32, nullable: true), + SenderBalance = table.Column(nullable: false), + MoneySent = table.Column(nullable: false), + Receiver = table.Column(maxLength: 32, nullable: true), + ReceiverBalance = table.Column(nullable: false), + NewSenderBalance = table.Column(nullable: false), + NewReceiverBalance = table.Column(nullable: false), + Fee = table.Column(nullable: false), + Origin = table.Column(maxLength: 32, nullable: true), + Timestamp = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + }, + constraints: table => + { + table.PrimaryKey("PK_BankAccountTransactionLogs", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Blips", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Sprite = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Name = table.Column(nullable: true), - Scale = table.Column(nullable: false), - Color = table.Column(nullable: false), - Alpha = table.Column(nullable: false), - DrawDistance = table.Column(nullable: false), - ShortRange = table.Column(nullable: false), - Rotation = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Blips", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Blips", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Sprite = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Name = table.Column(nullable: true), + Scale = table.Column(nullable: false), + Color = table.Column(nullable: false), + Alpha = table.Column(nullable: false), + DrawDistance = table.Column(nullable: false), + ShortRange = table.Column(nullable: false), + Rotation = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Blips", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "BusinessBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false), - BusinessId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BusinessBankAccounts", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "BusinessBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false), + BusinessId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BusinessBankAccounts", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "ClothCombinations", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Gender = table.Column(nullable: false), - Top = table.Column(nullable: false), - Torso = table.Column(nullable: false), - Undershirt = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ClothCombinations", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "ClothCombinations", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Gender = table.Column(nullable: false), + Top = table.Column(nullable: false), + Torso = table.Column(nullable: false), + Undershirt = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClothCombinations", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Factions", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(maxLength: 32, nullable: true), - StateOwned = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Factions", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Factions", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(maxLength: 32, nullable: true), + StateOwned = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Factions", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "GotoPoints", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(maxLength: 32, nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GotoPoints", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "GotoPoints", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(maxLength: 32, nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GotoPoints", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Interiors", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true), - EnterPosition = table.Column(nullable: true), - ExitPosition = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Interiors", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Interiors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + EnterPosition = table.Column(nullable: true), + ExitPosition = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Interiors", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Markers", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Scale = table.Column(nullable: false), - DirectionX = table.Column(nullable: false), - DirectionY = table.Column(nullable: false), - DirectionZ = table.Column(nullable: false), - RotationX = table.Column(nullable: false), - RotationY = table.Column(nullable: false), - RotationZ = table.Column(nullable: false), - ColorR = table.Column(nullable: false), - ColorG = table.Column(nullable: false), - ColorB = table.Column(nullable: false), - ColorA = table.Column(nullable: false), - Visible = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Markers", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Markers", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Scale = table.Column(nullable: false), + DirectionX = table.Column(nullable: false), + DirectionY = table.Column(nullable: false), + DirectionZ = table.Column(nullable: false), + RotationX = table.Column(nullable: false), + RotationY = table.Column(nullable: false), + RotationZ = table.Column(nullable: false), + ColorR = table.Column(nullable: false), + ColorG = table.Column(nullable: false), + ColorB = table.Column(nullable: false), + ColorA = table.Column(nullable: false), + Visible = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Markers", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Peds", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - HashModel = table.Column(nullable: true), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Heading = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Peds", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Peds", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + HashModel = table.Column(nullable: true), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Heading = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Peds", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Pickups", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - PositionX = table.Column(maxLength: 128, nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - RotationX = table.Column(nullable: false), - RotationY = table.Column(nullable: false), - RotationZ = table.Column(nullable: false), - Vehicle = table.Column(nullable: false), - RespawnTime = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Pickups", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Pickups", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + PositionX = table.Column(maxLength: 128, nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + RotationX = table.Column(nullable: false), + RotationY = table.Column(nullable: false), + RotationZ = table.Column(nullable: false), + Vehicle = table.Column(nullable: false), + RespawnTime = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Pickups", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "TextLabels", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Text = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - LOS = table.Column(nullable: false), - Font = table.Column(nullable: false), - DrawDistance = table.Column(nullable: false), - ColorR = table.Column(nullable: false), - ColorG = table.Column(nullable: false), - ColorB = table.Column(nullable: false), - ColorA = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TextLabels", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "TextLabels", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Text = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + LOS = table.Column(nullable: false), + Font = table.Column(nullable: false), + DrawDistance = table.Column(nullable: false), + ColorR = table.Column(nullable: false), + ColorG = table.Column(nullable: false), + ColorB = table.Column(nullable: false), + ColorA = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TextLabels", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "WhitelistEntries", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - SocialClubName = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_WhitelistEntries", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "WhitelistEntries", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + SocialClubName = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WhitelistEntries", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "Doors", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Category = table.Column(nullable: true), - Name = table.Column(nullable: true), - Locked = table.Column(nullable: false), - Model = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Radius = table.Column(nullable: false), - FactionId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Doors", x => x.Id); - table.ForeignKey( - name: "FK_Doors_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "Doors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Category = table.Column(nullable: true), + Name = table.Column(nullable: true), + Locked = table.Column(nullable: false), + Model = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Radius = table.Column(nullable: false), + FactionId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Doors", x => x.Id); + table.ForeignKey( + name: "FK_Doors_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateTable( - name: "DutyClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - SlotType = table.Column(nullable: false), - SlotId = table.Column(nullable: false), - ClothId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_DutyClothes", x => x.Id); - table.ForeignKey( - name: "FK_DutyClothes_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "DutyClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + SlotType = table.Column(nullable: false), + SlotId = table.Column(nullable: false), + ClothId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_DutyClothes", x => x.Id); + table.ForeignKey( + name: "FK_DutyClothes_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "FactionBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - Bic = table.Column(maxLength: 12, nullable: true), - Iban = table.Column(maxLength: 32, nullable: true), - Balance = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_FactionBankAccounts_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "FactionBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + Bic = table.Column(maxLength: 12, nullable: true), + Iban = table.Column(maxLength: 32, nullable: true), + Balance = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_FactionBankAccounts_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "FactionRanks", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - RankName = table.Column(nullable: true), - Order = table.Column(nullable: false), - FactionId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionRanks", x => x.Id); - table.ForeignKey( - name: "FK_FactionRanks_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "FactionRanks", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + RankName = table.Column(nullable: true), + Order = table.Column(nullable: false), + FactionId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionRanks", x => x.Id); + table.ForeignKey( + name: "FK_FactionRanks_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "Users", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(maxLength: 32, nullable: true), - SocialClubName = table.Column(maxLength: 32, nullable: true), - Password = table.Column(maxLength: 64, nullable: true), - LogUserId = table.Column(nullable: false), - RegistrationDate = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Email = table.Column(maxLength: 64, nullable: true), - AdminLevel = table.Column(nullable: false), - Dead = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - CharacterId = table.Column(nullable: true), - BanId = table.Column(nullable: true), - FactionId = table.Column(nullable: true), - FactionLeader = table.Column(nullable: false), - FactionRankId = table.Column(nullable: true), - BusinessId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Users", x => x.Id); - table.ForeignKey( - name: "FK_Users_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_Users_FactionRanks_FactionRankId", - column: x => x.FactionRankId, - principalTable: "FactionRanks", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(maxLength: 32, nullable: true), + SocialClubName = table.Column(maxLength: 32, nullable: true), + Password = table.Column(maxLength: 64, nullable: true), + LogUserId = table.Column(nullable: false), + RegistrationDate = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Email = table.Column(maxLength: 64, nullable: true), + AdminLevel = table.Column(nullable: false), + Dead = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + CharacterId = table.Column(nullable: true), + BanId = table.Column(nullable: true), + FactionId = table.Column(nullable: true), + FactionLeader = table.Column(nullable: false), + FactionRankId = table.Column(nullable: true), + BusinessId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + table.ForeignKey( + name: "FK_Users_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Users_FactionRanks_FactionRankId", + column: x => x.FactionRankId, + principalTable: "FactionRanks", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateTable( - name: "Bans", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Reason = table.Column(nullable: true), - BannedBy = table.Column(nullable: true), - Applied = table.Column(nullable: false), - UntilDateTime = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Bans", x => x.Id); - table.ForeignKey( - name: "FK_Bans_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "Bans", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Reason = table.Column(nullable: true), + BannedBy = table.Column(nullable: true), + Applied = table.Column(nullable: false), + UntilDateTime = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Bans", x => x.Id); + table.ForeignKey( + name: "FK_Bans_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "CharacterClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Duty = table.Column(nullable: false), - SlotType = table.Column(nullable: false), - SlotId = table.Column(nullable: false), - ClothId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CharacterClothes", x => x.Id); - table.ForeignKey( - name: "FK_CharacterClothes_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "CharacterClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Duty = table.Column(nullable: false), + SlotType = table.Column(nullable: false), + SlotId = table.Column(nullable: false), + ClothId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CharacterClothes", x => x.Id); + table.ForeignKey( + name: "FK_CharacterClothes_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "Characters", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - Father = table.Column(nullable: false), - Mother = table.Column(nullable: false), - Similarity = table.Column(nullable: false), - SkinSimilarity = table.Column(nullable: false), - NoseWidth = table.Column(nullable: false), - NoseBottomHeight = table.Column(nullable: false), - NoseTipLength = table.Column(nullable: false), - NoseBridgeDepth = table.Column(nullable: false), - NoseTipHeight = table.Column(nullable: false), - NoseBroken = table.Column(nullable: false), - BrowHeight = table.Column(nullable: false), - BrowDepth = table.Column(nullable: false), - CheekboneHeight = table.Column(nullable: false), - CheekboneWidth = table.Column(nullable: false), - CheekDepth = table.Column(nullable: false), - EyeSize = table.Column(nullable: false), - LipThickness = table.Column(nullable: false), - JawWidth = table.Column(nullable: false), - JawShape = table.Column(nullable: false), - ChinHeight = table.Column(nullable: false), - ChinDepth = table.Column(nullable: false), - ChinWidth = table.Column(nullable: false), - ChinIndent = table.Column(nullable: false), - NeckWidth = table.Column(nullable: false), - Blemishes = table.Column(nullable: false), - BlemishesOpacity = table.Column(nullable: false), - FacialHair = table.Column(nullable: false), - FacialHairOpacity = table.Column(nullable: false), - Eyebrows = table.Column(nullable: false), - EyebrowsOpacity = table.Column(nullable: false), - Ageing = table.Column(nullable: false), - AgeingOpacity = table.Column(nullable: false), - Makeup = table.Column(nullable: false), - MakeupOpacity = table.Column(nullable: false), - Blush = table.Column(nullable: false), - BlushOpacity = table.Column(nullable: false), - Complexion = table.Column(nullable: false), - ComplexionOpacity = table.Column(nullable: false), - SunDamage = table.Column(nullable: false), - SunDamageOpacity = table.Column(nullable: false), - Lipstick = table.Column(nullable: false), - LipstickOpacity = table.Column(nullable: false), - Freckles = table.Column(nullable: false), - FrecklesOpacity = table.Column(nullable: false), - ChestHair = table.Column(nullable: false), - ChestHairOpacity = table.Column(nullable: false), - Hair = table.Column(nullable: false), - HairColor = table.Column(nullable: false), - HairHighlightColor = table.Column(nullable: false), - EyebrowColor = table.Column(nullable: false), - BeardColor = table.Column(nullable: false), - EyeColor = table.Column(nullable: false), - BlushColor = table.Column(nullable: false), - LipstickColor = table.Column(nullable: false), - ChestHairColor = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Characters", x => x.Id); - table.ForeignKey( - name: "FK_Characters_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "Characters", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + Father = table.Column(nullable: false), + Mother = table.Column(nullable: false), + Similarity = table.Column(nullable: false), + SkinSimilarity = table.Column(nullable: false), + NoseWidth = table.Column(nullable: false), + NoseBottomHeight = table.Column(nullable: false), + NoseTipLength = table.Column(nullable: false), + NoseBridgeDepth = table.Column(nullable: false), + NoseTipHeight = table.Column(nullable: false), + NoseBroken = table.Column(nullable: false), + BrowHeight = table.Column(nullable: false), + BrowDepth = table.Column(nullable: false), + CheekboneHeight = table.Column(nullable: false), + CheekboneWidth = table.Column(nullable: false), + CheekDepth = table.Column(nullable: false), + EyeSize = table.Column(nullable: false), + LipThickness = table.Column(nullable: false), + JawWidth = table.Column(nullable: false), + JawShape = table.Column(nullable: false), + ChinHeight = table.Column(nullable: false), + ChinDepth = table.Column(nullable: false), + ChinWidth = table.Column(nullable: false), + ChinIndent = table.Column(nullable: false), + NeckWidth = table.Column(nullable: false), + Blemishes = table.Column(nullable: false), + BlemishesOpacity = table.Column(nullable: false), + FacialHair = table.Column(nullable: false), + FacialHairOpacity = table.Column(nullable: false), + Eyebrows = table.Column(nullable: false), + EyebrowsOpacity = table.Column(nullable: false), + Ageing = table.Column(nullable: false), + AgeingOpacity = table.Column(nullable: false), + Makeup = table.Column(nullable: false), + MakeupOpacity = table.Column(nullable: false), + Blush = table.Column(nullable: false), + BlushOpacity = table.Column(nullable: false), + Complexion = table.Column(nullable: false), + ComplexionOpacity = table.Column(nullable: false), + SunDamage = table.Column(nullable: false), + SunDamageOpacity = table.Column(nullable: false), + Lipstick = table.Column(nullable: false), + LipstickOpacity = table.Column(nullable: false), + Freckles = table.Column(nullable: false), + FrecklesOpacity = table.Column(nullable: false), + ChestHair = table.Column(nullable: false), + ChestHairOpacity = table.Column(nullable: false), + Hair = table.Column(nullable: false), + HairColor = table.Column(nullable: false), + HairHighlightColor = table.Column(nullable: false), + EyebrowColor = table.Column(nullable: false), + BeardColor = table.Column(nullable: false), + EyeColor = table.Column(nullable: false), + BlushColor = table.Column(nullable: false), + LipstickColor = table.Column(nullable: false), + ChestHairColor = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Characters", x => x.Id); + table.ForeignKey( + name: "FK_Characters_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "DeathLogs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - VictimId = table.Column(nullable: false), - KillerId = table.Column(nullable: true), - VictimPositionX = table.Column(nullable: false), - VictimPositionY = table.Column(nullable: false), - VictimPositionZ = table.Column(nullable: false), - VictimHeading = table.Column(nullable: false), - KillerPositionX = table.Column(nullable: false), - KillerPositionY = table.Column(nullable: false), - KillerPositionZ = table.Column(nullable: false), - KillerHeading = table.Column(nullable: false), - CauseOfDeath = table.Column(maxLength: 64, nullable: true), - Timestamp = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) - }, - constraints: table => - { - table.PrimaryKey("PK_DeathLogs", x => x.Id); - table.ForeignKey( - name: "FK_DeathLogs_Users_KillerId", - column: x => x.KillerId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_DeathLogs_Users_VictimId", - column: x => x.VictimId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "DeathLogs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + VictimId = table.Column(nullable: false), + KillerId = table.Column(nullable: true), + VictimPositionX = table.Column(nullable: false), + VictimPositionY = table.Column(nullable: false), + VictimPositionZ = table.Column(nullable: false), + VictimHeading = table.Column(nullable: false), + KillerPositionX = table.Column(nullable: false), + KillerPositionY = table.Column(nullable: false), + KillerPositionZ = table.Column(nullable: false), + KillerHeading = table.Column(nullable: false), + CauseOfDeath = table.Column(maxLength: 64, nullable: true), + Timestamp = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + }, + constraints: table => + { + table.PrimaryKey("PK_DeathLogs", x => x.Id); + table.ForeignKey( + name: "FK_DeathLogs_Users_KillerId", + column: x => x.KillerId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_DeathLogs_Users_VictimId", + column: x => x.VictimId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "News", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: true), - Caption = table.Column(nullable: true), - Content = table.Column(nullable: true), - Active = table.Column(nullable: false), - Timestamp = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_News", x => x.Id); - table.ForeignKey( - name: "FK_News_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "News", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: true), + Caption = table.Column(nullable: true), + Content = table.Column(nullable: true), + Active = table.Column(nullable: false), + Timestamp = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_News", x => x.Id); + table.ForeignKey( + name: "FK_News_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateTable( - name: "ServerVehicles", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Model = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Heading = table.Column(nullable: false), - NumberPlate = table.Column(maxLength: 8, nullable: true), - PrimaryColor = table.Column(nullable: false), - SecondaryColor = table.Column(nullable: false), - Locked = table.Column(nullable: false), - Active = table.Column(nullable: false, defaultValue: true), - Discriminator = table.Column(nullable: false), - FactionId = table.Column(nullable: true), - ShopId = table.Column(nullable: true), - BusinessId = table.Column(nullable: true), - Price = table.Column(nullable: true), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ServerVehicles", x => x.Id); - table.ForeignKey( - name: "FK_ServerVehicles_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_ServerVehicles_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "ServerVehicles", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Model = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Heading = table.Column(nullable: false), + NumberPlate = table.Column(maxLength: 8, nullable: true), + PrimaryColor = table.Column(nullable: false), + SecondaryColor = table.Column(nullable: false), + Locked = table.Column(nullable: false), + Active = table.Column(nullable: false, defaultValue: true), + Discriminator = table.Column(nullable: false), + FactionId = table.Column(nullable: true), + ShopId = table.Column(nullable: true), + BusinessId = table.Column(nullable: true), + Price = table.Column(nullable: true), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ServerVehicles", x => x.Id); + table.ForeignKey( + name: "FK_ServerVehicles_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ServerVehicles_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "UserBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Bic = table.Column(maxLength: 12, nullable: true), - Iban = table.Column(maxLength: 32, nullable: true), - Balance = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_UserBankAccounts_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "UserBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Bic = table.Column(maxLength: 12, nullable: true), + Iban = table.Column(maxLength: 32, nullable: true), + Balance = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_UserBankAccounts_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "UserItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ItemId = table.Column(nullable: false), - UserId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Slot = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserItems", x => x.Id); - table.ForeignKey( - name: "FK_UserItems_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "UserItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemId = table.Column(nullable: false), + UserId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Slot = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserItems", x => x.Id); + table.ForeignKey( + name: "FK_UserItems_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "VehicleMods", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ServerVehicleId = table.Column(nullable: false), - Slot = table.Column(nullable: false), - ModId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_VehicleMods", x => x.Id); - table.ForeignKey( - name: "FK_VehicleMods_ServerVehicles_ServerVehicleId", - column: x => x.ServerVehicleId, - principalTable: "ServerVehicles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "VehicleMods", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ServerVehicleId = table.Column(nullable: false), + Slot = table.Column(nullable: false), + ModId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VehicleMods", x => x.Id); + table.ForeignKey( + name: "FK_VehicleMods_ServerVehicles_ServerVehicleId", + column: x => x.ServerVehicleId, + principalTable: "ServerVehicles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateIndex( - name: "IX_Bans_UserId", - table: "Bans", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_Bans_UserId", + table: "Bans", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_BusinessBankAccounts_BusinessId", - table: "BusinessBankAccounts", - column: "BusinessId", - unique: true); + migrationBuilder.CreateIndex( + name: "IX_BusinessBankAccounts_BusinessId", + table: "BusinessBankAccounts", + column: "BusinessId", + unique: true); - migrationBuilder.CreateIndex( - name: "IX_CharacterClothes_UserId", - table: "CharacterClothes", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_CharacterClothes_UserId", + table: "CharacterClothes", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_Characters_UserId", - table: "Characters", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_Characters_UserId", + table: "Characters", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_DeathLogs_KillerId", - table: "DeathLogs", - column: "KillerId"); + migrationBuilder.CreateIndex( + name: "IX_DeathLogs_KillerId", + table: "DeathLogs", + column: "KillerId"); - migrationBuilder.CreateIndex( - name: "IX_DeathLogs_VictimId", - table: "DeathLogs", - column: "VictimId"); + migrationBuilder.CreateIndex( + name: "IX_DeathLogs_VictimId", + table: "DeathLogs", + column: "VictimId"); - migrationBuilder.CreateIndex( - name: "IX_Doors_FactionId", - table: "Doors", - column: "FactionId"); + migrationBuilder.CreateIndex( + name: "IX_Doors_FactionId", + table: "Doors", + column: "FactionId"); - migrationBuilder.CreateIndex( - name: "IX_DutyClothes_FactionId", - table: "DutyClothes", - column: "FactionId"); + migrationBuilder.CreateIndex( + name: "IX_DutyClothes_FactionId", + table: "DutyClothes", + column: "FactionId"); - migrationBuilder.CreateIndex( - name: "IX_FactionBankAccounts_FactionId", - table: "FactionBankAccounts", - column: "FactionId"); + migrationBuilder.CreateIndex( + name: "IX_FactionBankAccounts_FactionId", + table: "FactionBankAccounts", + column: "FactionId"); - migrationBuilder.CreateIndex( - name: "IX_FactionRanks_FactionId", - table: "FactionRanks", - column: "FactionId"); + migrationBuilder.CreateIndex( + name: "IX_FactionRanks_FactionId", + table: "FactionRanks", + column: "FactionId"); - migrationBuilder.CreateIndex( - name: "IX_News_UserId", - table: "News", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_News_UserId", + table: "News", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_FactionId", - table: "ServerVehicles", - column: "FactionId"); + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_FactionId", + table: "ServerVehicles", + column: "FactionId"); - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_UserId", - table: "ServerVehicles", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_UserId", + table: "ServerVehicles", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_UserBankAccounts_UserId", - table: "UserBankAccounts", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_UserBankAccounts_UserId", + table: "UserBankAccounts", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_UserItems_UserId", - table: "UserItems", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_UserItems_UserId", + table: "UserItems", + column: "UserId"); - migrationBuilder.CreateIndex( - name: "IX_Users_BanId", - table: "Users", - column: "BanId"); + migrationBuilder.CreateIndex( + name: "IX_Users_BanId", + table: "Users", + column: "BanId"); - migrationBuilder.CreateIndex( - name: "IX_Users_BusinessId", - table: "Users", - column: "BusinessId", - unique: true); + migrationBuilder.CreateIndex( + name: "IX_Users_BusinessId", + table: "Users", + column: "BusinessId", + unique: true); - migrationBuilder.CreateIndex( - name: "IX_Users_CharacterId", - table: "Users", - column: "CharacterId"); + migrationBuilder.CreateIndex( + name: "IX_Users_CharacterId", + table: "Users", + column: "CharacterId"); - migrationBuilder.CreateIndex( - name: "IX_Users_FactionId", - table: "Users", - column: "FactionId"); + migrationBuilder.CreateIndex( + name: "IX_Users_FactionId", + table: "Users", + column: "FactionId"); - migrationBuilder.CreateIndex( - name: "IX_Users_FactionRankId", - table: "Users", - column: "FactionRankId"); + migrationBuilder.CreateIndex( + name: "IX_Users_FactionRankId", + table: "Users", + column: "FactionRankId"); - migrationBuilder.CreateIndex( - name: "IX_VehicleMods_ServerVehicleId_Slot", - table: "VehicleMods", - columns: new[] { "ServerVehicleId", "Slot" }, - unique: true); + migrationBuilder.CreateIndex( + name: "IX_VehicleMods_ServerVehicleId_Slot", + table: "VehicleMods", + columns: new[] { "ServerVehicleId", "Slot" }, + unique: true); - migrationBuilder.AddForeignKey( - name: "FK_Users_Bans_BanId", - table: "Users", - column: "BanId", - principalTable: "Bans", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Users_Bans_BanId", + table: "Users", + column: "BanId", + principalTable: "Bans", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); - migrationBuilder.AddForeignKey( - name: "FK_Users_Characters_CharacterId", - table: "Users", - column: "CharacterId", - principalTable: "Characters", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Users_Characters_CharacterId", + table: "Users", + column: "CharacterId", + principalTable: "Characters", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Bans_Users_UserId", + table: "Bans"); + + migrationBuilder.DropForeignKey( + name: "FK_Characters_Users_UserId", + table: "Characters"); + + migrationBuilder.DropTable( + name: "BankAccountTransactionLogs"); + + migrationBuilder.DropTable( + name: "Blips"); + + migrationBuilder.DropTable( + name: "BusinessBankAccounts"); + + migrationBuilder.DropTable( + name: "CharacterClothes"); + + migrationBuilder.DropTable( + name: "ClothCombinations"); + + migrationBuilder.DropTable( + name: "DeathLogs"); + + migrationBuilder.DropTable( + name: "Doors"); + + migrationBuilder.DropTable( + name: "DutyClothes"); + + migrationBuilder.DropTable( + name: "FactionBankAccounts"); + + migrationBuilder.DropTable( + name: "GotoPoints"); + + migrationBuilder.DropTable( + name: "Interiors"); + + migrationBuilder.DropTable( + name: "Markers"); + + migrationBuilder.DropTable( + name: "News"); + + migrationBuilder.DropTable( + name: "Peds"); + + migrationBuilder.DropTable( + name: "Pickups"); + + migrationBuilder.DropTable( + name: "TextLabels"); + + migrationBuilder.DropTable( + name: "UserBankAccounts"); + + migrationBuilder.DropTable( + name: "UserItems"); + + migrationBuilder.DropTable( + name: "VehicleMods"); + + migrationBuilder.DropTable( + name: "WhitelistEntries"); + + migrationBuilder.DropTable( + name: "ServerVehicles"); + + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropTable( + name: "Bans"); + + migrationBuilder.DropTable( + name: "Characters"); + + migrationBuilder.DropTable( + name: "FactionRanks"); + + migrationBuilder.DropTable( + name: "Factions"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Bans_Users_UserId", - table: "Bans"); - - migrationBuilder.DropForeignKey( - name: "FK_Characters_Users_UserId", - table: "Characters"); - - migrationBuilder.DropTable( - name: "BankAccountTransactionLogs"); - - migrationBuilder.DropTable( - name: "Blips"); - - migrationBuilder.DropTable( - name: "BusinessBankAccounts"); - - migrationBuilder.DropTable( - name: "CharacterClothes"); - - migrationBuilder.DropTable( - name: "ClothCombinations"); - - migrationBuilder.DropTable( - name: "DeathLogs"); - - migrationBuilder.DropTable( - name: "Doors"); - - migrationBuilder.DropTable( - name: "DutyClothes"); - - migrationBuilder.DropTable( - name: "FactionBankAccounts"); - - migrationBuilder.DropTable( - name: "GotoPoints"); - - migrationBuilder.DropTable( - name: "Interiors"); - - migrationBuilder.DropTable( - name: "Markers"); - - migrationBuilder.DropTable( - name: "News"); - - migrationBuilder.DropTable( - name: "Peds"); - - migrationBuilder.DropTable( - name: "Pickups"); - - migrationBuilder.DropTable( - name: "TextLabels"); - - migrationBuilder.DropTable( - name: "UserBankAccounts"); - - migrationBuilder.DropTable( - name: "UserItems"); - - migrationBuilder.DropTable( - name: "VehicleMods"); - - migrationBuilder.DropTable( - name: "WhitelistEntries"); - - migrationBuilder.DropTable( - name: "ServerVehicles"); - - migrationBuilder.DropTable( - name: "Users"); - - migrationBuilder.DropTable( - name: "Bans"); - - migrationBuilder.DropTable( - name: "Characters"); - - migrationBuilder.DropTable( - name: "FactionRanks"); - - migrationBuilder.DropTable( - name: "Factions"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs b/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs index 56631e5f..5842ed79 100644 --- a/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs +++ b/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class VehicleDistanceDriven : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "DistanceDriven", - table: "ServerVehicles", - nullable: false, - defaultValue: 0f); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "DistanceDriven", + table: "ServerVehicles", + nullable: false, + defaultValue: 0f); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "DistanceDriven", - table: "ServerVehicles"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DistanceDriven", + table: "ServerVehicles"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs b/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs index ef03d08b..0efa656e 100644 --- a/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs +++ b/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class VehicleTank : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "TankAmount", - table: "ServerVehicles", - nullable: false, - defaultValue: 0f); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "TankAmount", + table: "ServerVehicles", + nullable: false, + defaultValue: 0f); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "TankAmount", - table: "ServerVehicles"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "TankAmount", + table: "ServerVehicles"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs b/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs index e2d35940..f435c951 100644 --- a/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs +++ b/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs @@ -4,32 +4,32 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class ATM : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "ATMs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Faulty = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ATMs", x => x.Id); - }); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "ATMs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Faulty = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ATMs", x => x.Id); + }); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ATMs"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ATMs"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs b/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs index 753b627d..f9667ffc 100644 --- a/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs +++ b/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class Handmoney : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "Handmoney", - table: "Users", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Handmoney", + table: "Users", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Handmoney", - table: "Users"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Handmoney", + table: "Users"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs b/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs index d561d60b..defe5236 100644 --- a/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs +++ b/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs @@ -4,29 +4,29 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class TuningGarage : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "TuningGarages", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TuningGarages", x => x.Id); - }); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "TuningGarages", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TuningGarages", x => x.Id); + }); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "TuningGarages"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "TuningGarages"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs b/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs index 96ab7199..b8795d1f 100644 --- a/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs +++ b/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs @@ -4,125 +4,125 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class Groups : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "GroupId", - table: "Users", - nullable: true); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "GroupId", + table: "Users", + nullable: true); - migrationBuilder.AddColumn( - name: "GroupRank", - table: "Users", - nullable: false, - defaultValue: 0); + migrationBuilder.AddColumn( + name: "GroupRank", + table: "Users", + nullable: false, + defaultValue: 0); - migrationBuilder.AddColumn( - name: "GroupId", - table: "ServerVehicles", - nullable: true); + migrationBuilder.AddColumn( + name: "GroupId", + table: "ServerVehicles", + nullable: true); - migrationBuilder.CreateTable( - name: "Groups", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Groups", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Groups", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Groups", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "GroupBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - GroupId = table.Column(nullable: true), - Balance = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GroupBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_GroupBankAccounts_Groups_GroupId", - column: x => x.GroupId, - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "GroupBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + GroupId = table.Column(nullable: true), + Balance = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GroupBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_GroupBankAccounts_Groups_GroupId", + column: x => x.GroupId, + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_Users_GroupId", - table: "Users", - column: "GroupId"); + migrationBuilder.CreateIndex( + name: "IX_Users_GroupId", + table: "Users", + column: "GroupId"); - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_GroupId", - table: "ServerVehicles", - column: "GroupId"); + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_GroupId", + table: "ServerVehicles", + column: "GroupId"); - migrationBuilder.CreateIndex( - name: "IX_GroupBankAccounts_GroupId", - table: "GroupBankAccounts", - column: "GroupId"); + migrationBuilder.CreateIndex( + name: "IX_GroupBankAccounts_GroupId", + table: "GroupBankAccounts", + column: "GroupId"); - migrationBuilder.AddForeignKey( - name: "FK_ServerVehicles_Groups_GroupId", - table: "ServerVehicles", - column: "GroupId", - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_ServerVehicles_Groups_GroupId", + table: "ServerVehicles", + column: "GroupId", + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); - migrationBuilder.AddForeignKey( - name: "FK_Users_Groups_GroupId", - table: "Users", - column: "GroupId", - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Users_Groups_GroupId", + table: "Users", + column: "GroupId", + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ServerVehicles_Groups_GroupId", + table: "ServerVehicles"); + + migrationBuilder.DropForeignKey( + name: "FK_Users_Groups_GroupId", + table: "Users"); + + migrationBuilder.DropTable( + name: "GroupBankAccounts"); + + migrationBuilder.DropTable( + name: "Groups"); + + migrationBuilder.DropIndex( + name: "IX_Users_GroupId", + table: "Users"); + + migrationBuilder.DropIndex( + name: "IX_ServerVehicles_GroupId", + table: "ServerVehicles"); + + migrationBuilder.DropColumn( + name: "GroupId", + table: "Users"); + + migrationBuilder.DropColumn( + name: "GroupRank", + table: "Users"); + + migrationBuilder.DropColumn( + name: "GroupId", + table: "ServerVehicles"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_ServerVehicles_Groups_GroupId", - table: "ServerVehicles"); - - migrationBuilder.DropForeignKey( - name: "FK_Users_Groups_GroupId", - table: "Users"); - - migrationBuilder.DropTable( - name: "GroupBankAccounts"); - - migrationBuilder.DropTable( - name: "Groups"); - - migrationBuilder.DropIndex( - name: "IX_Users_GroupId", - table: "Users"); - - migrationBuilder.DropIndex( - name: "IX_ServerVehicles_GroupId", - table: "ServerVehicles"); - - migrationBuilder.DropColumn( - name: "GroupId", - table: "Users"); - - migrationBuilder.DropColumn( - name: "GroupRank", - table: "Users"); - - migrationBuilder.DropColumn( - name: "GroupId", - table: "ServerVehicles"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs b/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs index 65486ab9..eddaa239 100644 --- a/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs +++ b/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs @@ -3,20 +3,20 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UnusedColumnRemove : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.DropColumn( - name: "ShopId", - table: "ServerVehicles"); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ShopId", + table: "ServerVehicles"); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "ShopId", - table: "ServerVehicles", - nullable: true); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ShopId", + table: "ServerVehicles", + nullable: true); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs b/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs index 5bd8c21a..be0e548d 100644 --- a/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs +++ b/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs @@ -4,87 +4,87 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class Jobs : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "JobId", - table: "Users", - nullable: true); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "JobId", + table: "Users", + nullable: true); - migrationBuilder.AddColumn( - name: "JobId", - table: "ServerVehicles", - nullable: true); + migrationBuilder.AddColumn( + name: "JobId", + table: "ServerVehicles", + nullable: true); - migrationBuilder.CreateTable( - name: "Jobs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Jobs", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Jobs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Jobs", x => x.Id); + }); - migrationBuilder.CreateIndex( - name: "IX_Users_JobId", - table: "Users", - column: "JobId"); + migrationBuilder.CreateIndex( + name: "IX_Users_JobId", + table: "Users", + column: "JobId"); - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles", - column: "JobId"); + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles", + column: "JobId"); - migrationBuilder.AddForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); - migrationBuilder.AddForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles"); + + migrationBuilder.DropForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users"); + + migrationBuilder.DropTable( + name: "Jobs"); + + migrationBuilder.DropIndex( + name: "IX_Users_JobId", + table: "Users"); + + migrationBuilder.DropIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles"); + + migrationBuilder.DropColumn( + name: "JobId", + table: "Users"); + + migrationBuilder.DropColumn( + name: "JobId", + table: "ServerVehicles"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles"); - - migrationBuilder.DropForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users"); - - migrationBuilder.DropTable( - name: "Jobs"); - - migrationBuilder.DropIndex( - name: "IX_Users_JobId", - table: "Users"); - - migrationBuilder.DropIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles"); - - migrationBuilder.DropColumn( - name: "JobId", - table: "Users"); - - migrationBuilder.DropColumn( - name: "JobId", - table: "ServerVehicles"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs b/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs index 1e4aa965..4197f8b2 100644 --- a/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs +++ b/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs @@ -4,70 +4,69 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class JobFix : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.DropForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles"); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles"); - migrationBuilder.DropForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users"); + migrationBuilder.DropForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users"); - migrationBuilder.DropTable( - name: "Jobs"); + migrationBuilder.DropTable( + name: "Jobs"); - migrationBuilder.DropIndex( - name: "IX_Users_JobId", - table: "Users"); + migrationBuilder.DropIndex( + name: "IX_Users_JobId", + table: "Users"); - migrationBuilder.DropIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles"); + migrationBuilder.DropIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Jobs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Jobs", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Users_JobId", + table: "Users", + column: "JobId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles", + column: "JobId"); + + migrationBuilder.AddForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - - migrationBuilder.CreateTable( - name: "Jobs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Jobs", x => x.Id); - }); - - migrationBuilder.CreateIndex( - name: "IX_Users_JobId", - table: "Users", - column: "JobId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles", - column: "JobId"); - - migrationBuilder.AddForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs b/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs index 3dcaff40..aff11e69 100644 --- a/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs +++ b/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class ClothesTexture : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "Texture", - table: "CharacterClothes", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Texture", + table: "CharacterClothes", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Texture", - table: "CharacterClothes"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Texture", + table: "CharacterClothes"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs b/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs index 41c8a46e..8f7d872c 100644 --- a/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs +++ b/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class PlayerWanteds : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "Wanteds", - table: "Users", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Wanteds", + table: "Users", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Wanteds", - table: "Users"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Wanteds", + table: "Users"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190626193631_House.cs b/ReallifeGamemode.Server/Migrations/20190626193631_House.cs index e65acfb1..13989a4a 100644 --- a/ReallifeGamemode.Server/Migrations/20190626193631_House.cs +++ b/ReallifeGamemode.Server/Migrations/20190626193631_House.cs @@ -4,50 +4,50 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class House : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "HouseId", - table: "Users", - nullable: true); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "HouseId", + table: "Users", + nullable: true); - migrationBuilder.CreateTable( - name: "Houses", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(nullable: true), - Price = table.Column(nullable: false), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Houses", x => x.Id); - table.ForeignKey( - name: "FK_Houses_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "Houses", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: true), + Price = table.Column(nullable: false), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Houses", x => x.Id); + table.ForeignKey( + name: "FK_Houses_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_Houses_UserId", - table: "Houses", - column: "UserId", - unique: true); + migrationBuilder.CreateIndex( + name: "IX_Houses_UserId", + table: "Houses", + column: "UserId", + unique: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Houses"); + + migrationBuilder.DropColumn( + name: "HouseId", + table: "Users"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Houses"); - - migrationBuilder.DropColumn( - name: "HouseId", - table: "Users"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs b/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs index 9a820adc..39c6799c 100644 --- a/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs +++ b/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs @@ -3,41 +3,41 @@ namespace ReallifeGamemode.Database.Migrations { public partial class HousePosition : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "X", - table: "Houses", - nullable: false, - defaultValue: 0f); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "X", + table: "Houses", + nullable: false, + defaultValue: 0f); - migrationBuilder.AddColumn( - name: "Y", - table: "Houses", - nullable: false, - defaultValue: 0f); + migrationBuilder.AddColumn( + name: "Y", + table: "Houses", + nullable: false, + defaultValue: 0f); - migrationBuilder.AddColumn( - name: "Z", - table: "Houses", - nullable: false, - defaultValue: 0f); + migrationBuilder.AddColumn( + name: "Z", + table: "Houses", + nullable: false, + defaultValue: 0f); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "X", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "Y", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "Z", + table: "Houses"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "X", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "Y", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "Z", - table: "Houses"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs b/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs index 4c01230a..8446b65b 100644 --- a/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs +++ b/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs @@ -3,25 +3,25 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UserHouseReference : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddForeignKey( - name: "FK_Users_Houses_HouseId", - table: "Users", - column: "HouseId", - principalTable: "Houses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddForeignKey( + name: "FK_Users_Houses_HouseId", + table: "Users", + column: "HouseId", + principalTable: "Houses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateIndex( - name: "IX_Houses_UserId", - table: "Houses", - column: "UserId", - unique: true); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateIndex( + name: "IX_Houses_UserId", + table: "Houses", + column: "UserId", + unique: true); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs b/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs index a0b5b1c2..11a3a362 100644 --- a/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs +++ b/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UserWage : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "Wage", - table: "Users", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Wage", + table: "Users", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Wage", - table: "Users"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Wage", + table: "Users"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs b/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs index b529a027..018c6d2d 100644 --- a/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs +++ b/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs @@ -4,58 +4,58 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class BusRoutes : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "BusRoutes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_BusRoutes", x => x.Id); - }); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "BusRoutes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BusRoutes", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "BusRoutesPoints", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - BusRouteId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_BusRoutesPoints", x => x.Id); - table.ForeignKey( - name: "FK_BusRoutesPoints_BusRoutes_BusRouteId", - column: x => x.BusRouteId, - principalTable: "BusRoutes", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "BusRoutesPoints", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + BusRouteId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BusRoutesPoints", x => x.Id); + table.ForeignKey( + name: "FK_BusRoutesPoints_BusRoutes_BusRouteId", + column: x => x.BusRouteId, + principalTable: "BusRoutes", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_BusRoutesPoints_BusRouteId", - table: "BusRoutesPoints", - column: "BusRouteId"); + migrationBuilder.CreateIndex( + name: "IX_BusRoutesPoints_BusRouteId", + table: "BusRoutesPoints", + column: "BusRouteId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BusRoutesPoints"); + + migrationBuilder.DropTable( + name: "BusRoutes"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "BusRoutesPoints"); - - migrationBuilder.DropTable( - name: "BusRoutes"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs b/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs index 52252cfb..fed69a47 100644 --- a/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs +++ b/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs @@ -3,41 +3,41 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UserHouseReferenceFix : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "OwnerId", - table: "Houses", - nullable: true); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "OwnerId", + table: "Houses", + nullable: true); - migrationBuilder.CreateIndex( - name: "IX_Houses_OwnerId", - table: "Houses", - column: "OwnerId"); + migrationBuilder.CreateIndex( + name: "IX_Houses_OwnerId", + table: "Houses", + column: "OwnerId"); - migrationBuilder.AddForeignKey( - name: "FK_Houses_Users_OwnerId", - table: "Houses", - column: "OwnerId", - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); + migrationBuilder.AddForeignKey( + name: "FK_Houses_Users_OwnerId", + table: "Houses", + column: "OwnerId", + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Houses_Users_OwnerId", + table: "Houses"); + + migrationBuilder.DropIndex( + name: "IX_Houses_OwnerId", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "OwnerId", + table: "Houses"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Houses_Users_OwnerId", - table: "Houses"); - - migrationBuilder.DropIndex( - name: "IX_Houses_OwnerId", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "OwnerId", - table: "Houses"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs b/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs index 3dd816f0..129f19ce 100644 --- a/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs +++ b/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class JailTime : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "JailTime", - table: "Users", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "JailTime", + table: "Users", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "JailTime", - table: "Users"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "JailTime", + table: "Users"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs b/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs index 9204a832..2769c249 100644 --- a/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs +++ b/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class PaydayTimer : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "PaydayTimer", - table: "Users", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "PaydayTimer", + table: "Users", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "PaydayTimer", - table: "Users"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "PaydayTimer", + table: "Users"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs b/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs index 38884914..94ea6dad 100644 --- a/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs +++ b/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs @@ -4,41 +4,41 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class FactionWeapons : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "FactionWeapons", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - WeaponModel = table.Column(nullable: true), - SlotID = table.Column(nullable: false), - Rank = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionWeapons", x => x.Id); - table.ForeignKey( - name: "FK_FactionWeapons_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "FactionWeapons", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + WeaponModel = table.Column(nullable: true), + SlotID = table.Column(nullable: false), + Rank = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionWeapons", x => x.Id); + table.ForeignKey( + name: "FK_FactionWeapons_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateIndex( - name: "IX_FactionWeapons_FactionId", - table: "FactionWeapons", - column: "FactionId"); - } + migrationBuilder.CreateIndex( + name: "IX_FactionWeapons_FactionId", + table: "FactionWeapons", + column: "FactionId"); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "FactionWeapons"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "FactionWeapons"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs b/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs index c5e781bb..904f1556 100644 --- a/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs +++ b/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class VehicleLivery : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "Livery", - table: "ServerVehicles", - nullable: false, - defaultValue: 0); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Livery", + table: "ServerVehicles", + nullable: false, + defaultValue: 0); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Livery", - table: "ServerVehicles"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Livery", + table: "ServerVehicles"); + } } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs b/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs index 4ec553bf..e3003c88 100644 --- a/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs +++ b/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs @@ -4,70 +4,70 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class HouseEnhancments : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.AddColumn( - name: "CanRentIn", - table: "Houses", - nullable: false, - defaultValue: false); + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CanRentIn", + table: "Houses", + nullable: false, + defaultValue: false); - migrationBuilder.AddColumn( - name: "RentalFee", - table: "Houses", - nullable: false, - defaultValue: 0); + migrationBuilder.AddColumn( + name: "RentalFee", + table: "Houses", + nullable: false, + defaultValue: 0); - migrationBuilder.CreateTable( - name: "HouseRentals", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - HouseId = table.Column(nullable: true), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_HouseRentals", x => x.Id); - table.ForeignKey( - name: "FK_HouseRentals_Houses_HouseId", - column: x => x.HouseId, - principalTable: "Houses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_HouseRentals_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "HouseRentals", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + HouseId = table.Column(nullable: true), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HouseRentals", x => x.Id); + table.ForeignKey( + name: "FK_HouseRentals_Houses_HouseId", + column: x => x.HouseId, + principalTable: "Houses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_HouseRentals_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_HouseRentals_HouseId", - table: "HouseRentals", - column: "HouseId"); + migrationBuilder.CreateIndex( + name: "IX_HouseRentals_HouseId", + table: "HouseRentals", + column: "HouseId"); - migrationBuilder.CreateIndex( - name: "IX_HouseRentals_UserId", - table: "HouseRentals", - column: "UserId"); + migrationBuilder.CreateIndex( + name: "IX_HouseRentals_UserId", + table: "HouseRentals", + column: "UserId"); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "HouseRentals"); + + migrationBuilder.DropColumn( + name: "CanRentIn", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "RentalFee", + table: "Houses"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "HouseRentals"); - - migrationBuilder.DropColumn( - name: "CanRentIn", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "RentalFee", - table: "Houses"); - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs b/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs index 965b3c68..3e410929 100644 --- a/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs +++ b/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs @@ -4,47 +4,41 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class VehicleItems : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "VehicleItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemId = table.Column(nullable: false), + VehicleId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Slot = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VehicleItems", x => x.Id); + table.ForeignKey( + name: "FK_VehicleItems_ServerVehicles_VehicleId", + column: x => x.VehicleId, + principalTable: "ServerVehicles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateTable( - name: "VehicleItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ItemId = table.Column(nullable: false), - VehicleId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Slot = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_VehicleItems", x => x.Id); - table.ForeignKey( - name: "FK_VehicleItems_ServerVehicles_VehicleId", - column: x => x.VehicleId, - principalTable: "ServerVehicles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_VehicleItems_VehicleId", - table: "VehicleItems", - column: "VehicleId"); - + migrationBuilder.CreateIndex( + name: "IX_VehicleItems_VehicleId", + table: "VehicleItems", + column: "VehicleId"); + } + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "VehicleItems"); + } } - - protected override void Down(MigrationBuilder migrationBuilder) - { - - migrationBuilder.DropTable( - name: "VehicleItems"); - - - } - } } diff --git a/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs b/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs index 528fa7c9..88402a1a 100644 --- a/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs +++ b/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs @@ -4,28 +4,28 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class BusinessData : Migration - { - protected override void Up(MigrationBuilder migrationBuilder) { - migrationBuilder.CreateTable( - name: "BusinessData", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - BusinessId = table.Column(nullable: false), - Price = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BusinessData", x => x.Id); - }); - } + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "BusinessData", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + BusinessId = table.Column(nullable: false), + Price = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BusinessData", x => x.Id); + }); + } - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "BusinessData"); + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BusinessData"); + } } - } } diff --git a/ReallifeGamemode.Server/ReallifeGamemode.Server.csproj b/ReallifeGamemode.Server/ReallifeGamemode.Server.csproj index 4259a105..8b100eb9 100644 --- a/ReallifeGamemode.Server/ReallifeGamemode.Server.csproj +++ b/ReallifeGamemode.Server/ReallifeGamemode.Server.csproj @@ -18,6 +18,7 @@ + diff --git a/ReallifeGamemode.Server/Report/Report.cs b/ReallifeGamemode.Server/Report/Report.cs index 9e26389f..b9668e5f 100644 --- a/ReallifeGamemode.Server/Report/Report.cs +++ b/ReallifeGamemode.Server/Report/Report.cs @@ -1,22 +1,17 @@ -using GTANetworkAPI; +using System; +using System.Collections.Generic; +using GTANetworkAPI; +using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Server.Extensions; -using ReallifeGamemode.Server.Finance; -using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Util; -using System; -using System.Linq; -using System.Collections; -using System.Collections.Generic; -using Newtonsoft.Json; -using ReallifeGamemode.Database; -using ReallifeGamemode.Services; using ReallifeGamemode.Server.Types; +using ReallifeGamemode.Server.Util; +using ReallifeGamemode.Services; namespace ReallifeGamemode.Server.Report { - class Report : Script + internal class Report : Script { public static List listReports = new List(); @@ -27,7 +22,6 @@ namespace ReallifeGamemode.Server.Report client.TriggerEvent("showReportType"); //ChatService.BroadcastAdmin("Eingehendes Ticket von " + client.Name + ": " + message + " (Benutze /showtickets)", AdminLevel.ADMIN); - } [Command("showtickets", "~m~Benutzung: ~s~/showtickets")] @@ -64,10 +58,8 @@ namespace ReallifeGamemode.Server.Report return; } client.TriggerEvent("showReportMenu", JsonConvert.SerializeObject(listPlayers), JsonConvert.SerializeObject(listTicketnames)); - } - [RemoteEvent("acceptReport")] public void AcceptReport(Player admin, string playerName) { @@ -75,7 +67,6 @@ namespace ReallifeGamemode.Server.Report if (player == null) return; - for (int a = 0; a < listReports.Count; a++) { ReportManage temp = listReports[a]; @@ -155,7 +146,6 @@ namespace ReallifeGamemode.Server.Report { userIsAdmin = true; } - } //Für User if ((!client.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) || userIsAdmin) @@ -232,7 +222,6 @@ namespace ReallifeGamemode.Server.Report break; } } - } } } diff --git a/ReallifeGamemode.Server/Report/ReportManage.cs b/ReallifeGamemode.Server/Report/ReportManage.cs index 6b2da7ab..d7f8a02b 100644 --- a/ReallifeGamemode.Server/Report/ReportManage.cs +++ b/ReallifeGamemode.Server/Report/ReportManage.cs @@ -1,10 +1,8 @@ using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.Report { - class ReportManage + internal class ReportManage { private String user; private String admin; @@ -29,6 +27,7 @@ namespace ReallifeGamemode.Server.Report { return this.admin; } + public bool isAssigned() { return this.assigned; @@ -38,6 +37,7 @@ namespace ReallifeGamemode.Server.Report { return this.user; } + public String getReporttext() { return this.reportText; diff --git a/ReallifeGamemode.Server/Services/ChatService.cs b/ReallifeGamemode.Server/Services/ChatService.cs index 3679f346..77df64e0 100644 --- a/ReallifeGamemode.Server/Services/ChatService.cs +++ b/ReallifeGamemode.Server/Services/ChatService.cs @@ -1,14 +1,12 @@ -using GTANetworkAPI; -using ReallifeGamemode.Database; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; -using System; -using System.Collections.Generic; -using System.Linq; /** * @overview Life of German Reallife - Chat Service (ChatService.cs) @@ -18,7 +16,7 @@ using System.Linq; namespace ReallifeGamemode.Server.Services { - class ChatService + internal class ChatService { public static void NotAuthorized(Player player) { @@ -93,6 +91,7 @@ namespace ReallifeGamemode.Server.Services } }); } + public static void BroadcastDutyAdmin(string message) { foreach (Player admin in GlobalHelper.DutyAdmins) diff --git a/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs b/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs index 09b7ace0..04e8103b 100644 --- a/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs +++ b/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs @@ -10,35 +10,35 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Shop.Clothing { public class ClotheShop - { - public int category { get; set; } - public Vector3 vector { get; set; } - public List clotheList = new List(); - - public ClotheShop(int category, Vector3 vector) { - this.category = category; - this.vector = vector; - LoadClothes(); - } + public int category { get; set; } + public Vector3 vector { get; set; } + public List clotheList = new List(); - public void LoadClothes() - { - using (var dbContext = new DatabaseContext()) - { - clotheList = dbContext.ShopClothes.ToList().FindAll(c => c.Category == category); - } - } + public ClotheShop(int category, Vector3 vector) + { + this.category = category; + this.vector = vector; + LoadClothes(); + } - public void LoadShopNUI(Player client) - { - bool gender = client.GetUser().GetCharacter().Gender; - List tops = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 11); - List legs = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 4); - List shoes = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 6); - List accessoires = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 7); + public void LoadClothes() + { + using (var dbContext = new DatabaseContext()) + { + clotheList = dbContext.ShopClothes.ToList().FindAll(c => c.Category == category); + } + } - List clothes = new List + public void LoadShopNUI(Player client) + { + bool gender = client.GetUser().GetCharacter().Gender; + List tops = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 11); + List legs = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 4); + List shoes = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 6); + List accessoires = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 7); + + List clothes = new List { tops.ToArray(), legs.ToArray(), @@ -46,7 +46,7 @@ namespace ReallifeGamemode.Server.Shop.Clothing accessoires.ToArray() }; - client.TriggerEvent("clothesMenu:updateData", JsonConvert.SerializeObject(category), JsonConvert.SerializeObject(clothes.ToArray()), gender); + client.TriggerEvent("clothesMenu:updateData", JsonConvert.SerializeObject(category), JsonConvert.SerializeObject(clothes.ToArray()), gender); + } } - } } diff --git a/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs b/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs index b2502396..65d9535a 100644 --- a/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs +++ b/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs @@ -1,7 +1,5 @@ -using System; -using System.Collections.Generic; +using System.Collections.Generic; using System.Linq; -using System.Text; using GTANetworkAPI; using Newtonsoft.Json; using ReallifeGamemode.Database.Entities; @@ -12,33 +10,34 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Shop.SevenEleven { public class ItemShop - { - public Vector3 vector3; - public int id; - public List shopItems = new List(); + { + public Vector3 vector3; + public int id; + public List shopItems = new List(); - public ItemShop(Vector3 vector3, int id) - { - this.vector3 = vector3; - this.id = id; - } + public ItemShop(Vector3 vector3, int id) + { + this.vector3 = vector3; + this.id = id; + } - public void LoadItems() - { - using(var dbContext = new DatabaseContext()) - { - shopItems = dbContext.ShopItems.ToList().FindAll(i => i.ShopId == id); - } + public void LoadItems() + { + using (var dbContext = new DatabaseContext()) + { + shopItems = dbContext.ShopItems.ToList().FindAll(i => i.ShopId == id); + } + } + + public void LoadShopNUI(Player client) + { + List itemList = shopItems.ToList().FindAll(s => s.Amount > 0); + List items = new List(); + foreach (var item in itemList) + { + items.Add(InventoryManager.GetItemById(item.ItemId)); + } + client.TriggerEvent("itemMenu:updateData", JsonConvert.SerializeObject(items.ToArray())); + } } - public void LoadShopNUI(Player client) - { - List itemList = shopItems.ToList().FindAll(s => s.Amount > 0); - List items = new List(); - foreach(var item in itemList) - { - items.Add(InventoryManager.GetItemById(item.ItemId)); - } - client.TriggerEvent("itemMenu:updateData", JsonConvert.SerializeObject(items.ToArray())); - } - } } diff --git a/ReallifeGamemode.Server/Util/CheckPointHandle.cs b/ReallifeGamemode.Server/Util/CheckPointHandle.cs index 40ff99e7..98d5f2ff 100644 --- a/ReallifeGamemode.Server/Util/CheckPointHandle.cs +++ b/ReallifeGamemode.Server/Util/CheckPointHandle.cs @@ -1,106 +1,108 @@ using System.Collections.Generic; -using ReallifeGamemode.Server.Services; -using GTANetworkAPI; using System.Linq; +using GTANetworkAPI; + namespace ReallifeGamemode.Server.Util { public class CheckPointHandle : Script - { - public static List listHandle = new List(); - - public static void DeleteCheckpoints(Player player) { - RemovePlayerHandlerFromList(player); - player.TriggerEvent("destroyCP"); - } + public static List listHandle = new List(); - public static void StartCheckPointRoute(Player player, IEnumerable nListCps, int delay, int markerID, int markerSize, string nEvent) - { - RemovePlayerHandlerFromList(player); - CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, nEvent); - playerHandle.DeleteCheckpoints(); - - listHandle.Add(playerHandle); - - playerHandle.StartRoute(); - } - public static void RemovePlayerHandlerFromList(Player player) - { - CheckPointListForPlayer temp = null; - for (int a = 0; a < listHandle.Count; a++) - { - temp = listHandle[a]; - if (temp.player == player) + public static void DeleteCheckpoints(Player player) { - listHandle.Remove(temp); + RemovePlayerHandlerFromList(player); + player.TriggerEvent("destroyCP"); } - } - } - [RemoteEvent("playerInCheckpoint")] - public void PlayerInCheckpoint(Player user) - { - CheckPointListForPlayer temp = null; - for (int a = 0; a < listHandle.Count; a++) - { - temp = listHandle[a]; - if (temp.player == user) + public static void StartCheckPointRoute(Player player, IEnumerable nListCps, int delay, int markerID, int markerSize, string nEvent) { - break; + RemovePlayerHandlerFromList(player); + CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, nEvent); + playerHandle.DeleteCheckpoints(); + + listHandle.Add(playerHandle); + + playerHandle.StartRoute(); + } + + public static void RemovePlayerHandlerFromList(Player player) + { + CheckPointListForPlayer temp = null; + for (int a = 0; a < listHandle.Count; a++) + { + temp = listHandle[a]; + if (temp.player == player) + { + listHandle.Remove(temp); + } + } + } + + [RemoteEvent("playerInCheckpoint")] + public void PlayerInCheckpoint(Player user) + { + CheckPointListForPlayer temp = null; + for (int a = 0; a < listHandle.Count; a++) + { + temp = listHandle[a]; + if (temp.player == user) + { + break; + } + } + temp.NextCheckpoint(); } - } - temp.NextCheckpoint(); } - } - public class CheckPointListForPlayer - { - public IEnumerable list = new List(); - public Player player; - public int delay = 0; - public int markerID; - public int markerSize; - public string eventInCheckpoint = ""; + public class CheckPointListForPlayer + { + public IEnumerable list = new List(); + public Player player; + public int delay = 0; + public int markerID; + public int markerSize; + public string eventInCheckpoint = ""; - int checkPointsDone = 0; + private int checkPointsDone = 0; public CheckPointListForPlayer(Player nPlayer, IEnumerable nList, int nDelay, int nMarkerID, int nMarkerSize, string nEvent) - { - this.player = nPlayer; - this.list = nList; - this.delay = nDelay; - this.markerID = nMarkerID; - this.markerSize = nMarkerSize; - this.eventInCheckpoint = nEvent; - this.checkPointsDone = 0; - } - - public void StartRoute() - { - player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.eventInCheckpoint); - } - public void NextCheckpoint() - { - this.checkPointsDone++; - if (this.list.Count() > checkPointsDone) - { - Vector3 nextCp = list.ElementAt(checkPointsDone); - this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.eventInCheckpoint); - } - if (this.list.Count() == checkPointsDone) - { - CheckPointHandle.RemovePlayerHandlerFromList(this.player); - - if (this.eventInCheckpoint == "busDriverJob") { - Job.BusDriverJob.payWage(this.player, 1000); + this.player = nPlayer; + this.list = nList; + this.delay = nDelay; + this.markerID = nMarkerID; + this.markerSize = nMarkerSize; + this.eventInCheckpoint = nEvent; + this.checkPointsDone = 0; } - } - } - public void DeleteCheckpoints() - { - this.player.TriggerEvent("destroyCP"); + public void StartRoute() + { + player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.eventInCheckpoint); + } + + public void NextCheckpoint() + { + this.checkPointsDone++; + if (this.list.Count() > checkPointsDone) + { + Vector3 nextCp = list.ElementAt(checkPointsDone); + this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.eventInCheckpoint); + } + if (this.list.Count() == checkPointsDone) + { + CheckPointHandle.RemovePlayerHandlerFromList(this.player); + + if (this.eventInCheckpoint == "busDriverJob") + { + Job.BusDriverJob.payWage(this.player, 1000); + } + } + } + + public void DeleteCheckpoints() + { + this.player.TriggerEvent("destroyCP"); + } } - } } diff --git a/ReallifeGamemode.Server/Util/Converter.cs b/ReallifeGamemode.Server/Util/Converter.cs index 7b282d58..5eccaac1 100644 --- a/ReallifeGamemode.Server/Util/Converter.cs +++ b/ReallifeGamemode.Server/Util/Converter.cs @@ -1,40 +1,37 @@ -using GTANetworkAPI; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Text; +using System.Globalization; +using GTANetworkAPI; namespace ReallifeGamemode.Server.Util { public class Converter - { - public static Color HexToColor(string hexColor) { - //Remove # if present - if (hexColor.IndexOf('#') != -1) - hexColor = hexColor.Replace("#", ""); + public static Color HexToColor(string hexColor) + { + //Remove # if present + if (hexColor.IndexOf('#') != -1) + hexColor = hexColor.Replace("#", ""); - int red = 0; - int green = 0; - int blue = 0; + int red = 0; + int green = 0; + int blue = 0; - if (hexColor.Length == 6) - { - //#RRGGBB - red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier); - green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier); - blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier); - } - else if (hexColor.Length == 3) - { - //#RGB - red = int.Parse(hexColor[0].ToString() + hexColor[0].ToString(), NumberStyles.AllowHexSpecifier); - green = int.Parse(hexColor[1].ToString() + hexColor[1].ToString(), NumberStyles.AllowHexSpecifier); - blue = int.Parse(hexColor[2].ToString() + hexColor[2].ToString(), NumberStyles.AllowHexSpecifier); - } + if (hexColor.Length == 6) + { + //#RRGGBB + red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier); + green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier); + blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier); + } + else if (hexColor.Length == 3) + { + //#RGB + red = int.Parse(hexColor[0].ToString() + hexColor[0].ToString(), NumberStyles.AllowHexSpecifier); + green = int.Parse(hexColor[1].ToString() + hexColor[1].ToString(), NumberStyles.AllowHexSpecifier); + blue = int.Parse(hexColor[2].ToString() + hexColor[2].ToString(), NumberStyles.AllowHexSpecifier); + } - Color returnColor = new Color(red, green, blue); - return returnColor; + Color returnColor = new Color(red, green, blue); + return returnColor; + } } - } } diff --git a/ReallifeGamemode.Server/Util/DatabaseHelper.cs b/ReallifeGamemode.Server/Util/DatabaseHelper.cs index 64b08ef6..7713bd5f 100644 --- a/ReallifeGamemode.Server/Util/DatabaseHelper.cs +++ b/ReallifeGamemode.Server/Util/DatabaseHelper.cs @@ -1,10 +1,10 @@ -using GTANetworkAPI; +using System.Linq; +using GTANetworkAPI; using ReallifeGamemode.Database.Models; -using System.Linq; namespace ReallifeGamemode.Server.Util { - class DatabaseHelper + internal class DatabaseHelper { public static void InitDatabaseFirstTime() { diff --git a/ReallifeGamemode.Server/Util/FactionHelper.cs b/ReallifeGamemode.Server/Util/FactionHelper.cs index 2170afee..c1565cac 100644 --- a/ReallifeGamemode.Server/Util/FactionHelper.cs +++ b/ReallifeGamemode.Server/Util/FactionHelper.cs @@ -8,7 +8,7 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Util { - class FactionHelper + internal class FactionHelper { public static void CheckFactionBankAccounts() { diff --git a/ReallifeGamemode.Server/Util/FactionRankHelper.cs b/ReallifeGamemode.Server/Util/FactionRankHelper.cs index 20df8fe4..93a5438c 100644 --- a/ReallifeGamemode.Server/Util/FactionRankHelper.cs +++ b/ReallifeGamemode.Server/Util/FactionRankHelper.cs @@ -1,17 +1,15 @@ -using System; -using System.Collections.Generic; -using System.Text; +using System.Collections.Generic; namespace ReallifeGamemode.Server.Util { - class FactionRankHelper + internal class FactionRankHelper { public string FactionName { get; set; } public int FactionId { get; set; } public List Ranks { get; set; } } - class Rank + internal class Rank { public int Id { get; set; } public string Name { get; set; } diff --git a/ReallifeGamemode.Server/Util/GlobalHelper.cs b/ReallifeGamemode.Server/Util/GlobalHelper.cs index 1f5c7282..9dde7e76 100644 --- a/ReallifeGamemode.Server/Util/GlobalHelper.cs +++ b/ReallifeGamemode.Server/Util/GlobalHelper.cs @@ -1,22 +1,19 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Collections; +using System.Collections.Generic; using GTANetworkAPI; namespace ReallifeGamemode.Server.Util { public static class GlobalHelper - { - public static List DutyAdmins = new List(); - public static List tsupAdmins = new List(); + { + public static List DutyAdmins = new List(); + public static List tsupAdmins = new List(); - public static Dictionary CustomJoinMessages = new Dictionary + public static Dictionary CustomJoinMessages = new Dictionary { { ".MichaPlays.", "Der Echte Ballas Leader ist online (MichaPlays)" }, { "balboistderbeste", "Hurra! Hurra! Der Balbo ist jetzt da! (balbo)" }, { "Roachkook", "Niemand, nicht einmal deine Mutter möchte so etwas sehen. (Siga)" }, { "Paaqo1337", "Picasso is back! (Paaqo)" } }; - } + } } diff --git a/ReallifeGamemode.Server/Util/IndicatorData.cs b/ReallifeGamemode.Server/Util/IndicatorData.cs index 891232a0..a9dc68ef 100644 --- a/ReallifeGamemode.Server/Util/IndicatorData.cs +++ b/ReallifeGamemode.Server/Util/IndicatorData.cs @@ -1,8 +1,8 @@ namespace ReallifeGamemode.Server.Util { public class IndicatorData - { - public bool Left { get; set; } = false; - public bool Right { get; set; } = false; - } -} \ No newline at end of file + { + public bool Left { get; set; } = false; + public bool Right { get; set; } = false; + } +} diff --git a/ReallifeGamemode.Server/Util/SmoothThrottle.cs b/ReallifeGamemode.Server/Util/SmoothThrottle.cs index 7b3fcbf0..65ec3d65 100644 --- a/ReallifeGamemode.Server/Util/SmoothThrottle.cs +++ b/ReallifeGamemode.Server/Util/SmoothThrottle.cs @@ -3,38 +3,38 @@ namespace ReallifeGamemode.Server.Util { public class SmoothThrottleAntiReverse : Script - { - [ServerEvent(Event.PlayerExitVehicle)] - public void SmoothThrottleExitEvent(Player player, Vehicle veh) { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerExitVehicle", veh); - } + [ServerEvent(Event.PlayerExitVehicle)] + public void SmoothThrottleExitEvent(Player player, Vehicle veh) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerExitVehicle", veh); + } - [ServerEvent(Event.PlayerEnterVehicle)] - public void SmoothThrottleEnterEvent(Player player, Vehicle veh, sbyte seat) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerEnterVehicle", veh, seat); - } + [ServerEvent(Event.PlayerEnterVehicle)] + public void SmoothThrottleEnterEvent(Player player, Vehicle veh, sbyte seat) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerEnterVehicle", veh, seat); + } - //You can call these to change settings on player if you want. - //Note that these are toggles, you only need to call them once. + //You can call these to change settings on player if you want. + //Note that these are toggles, you only need to call them once. - //This disables/enables the smooth throttle - public static void SetSmoothThrottle(Player player, bool turnedOn) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetSmoothThrottle", turnedOn); - } + //This disables/enables the smooth throttle + public static void SetSmoothThrottle(Player player, bool turnedOn) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetSmoothThrottle", turnedOn); + } - //This disables/enables anti reverse - public static void SetAntiReverse(Player player, bool turnedOn) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetAntiReverse", turnedOn); - } + //This disables/enables anti reverse + public static void SetAntiReverse(Player player, bool turnedOn) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetAntiReverse", turnedOn); + } - //This disables/enables both - public static void SetSmoothThrottleAntiReverse(Player player, bool turnedOn) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetGlobal", turnedOn); + //This disables/enables both + public static void SetSmoothThrottleAntiReverse(Player player, bool turnedOn) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetGlobal", turnedOn); + } } - } } diff --git a/ReallifeGamemode.Server/Util/TaxiContract.cs b/ReallifeGamemode.Server/Util/TaxiContract.cs index e3794840..b4c1449b 100644 --- a/ReallifeGamemode.Server/Util/TaxiContract.cs +++ b/ReallifeGamemode.Server/Util/TaxiContract.cs @@ -1,16 +1,13 @@ using GTANetworkAPI; -using System; -using System.Collections.Generic; -using System.Text; namespace ReallifeGamemode.Server.Util { public class TaxiContract - { - public string Name { get; set; } + { + public string Name { get; set; } - public Vector3 Position { get; set; } + public Vector3 Position { get; set; } - public Player Driver { get; set; } - } + public Player Driver { get; set; } + } } diff --git a/ReallifeGamemode.Server/Util/ThreadTimers.cs b/ReallifeGamemode.Server/Util/ThreadTimers.cs index d960a370..09880058 100644 --- a/ReallifeGamemode.Server/Util/ThreadTimers.cs +++ b/ReallifeGamemode.Server/Util/ThreadTimers.cs @@ -1,61 +1,57 @@ -using System; -using System.Collections.Generic; -using System.Text; -using System.Timers; -using ReallifeGamemode.Server.Wanted; +using System.Timers; using ReallifeGamemode.Server.Finance; -using ReallifeGamemode.Server.WeaponDeal; using ReallifeGamemode.Server.Job; using ReallifeGamemode.Server.Managers; +using ReallifeGamemode.Server.Wanted; +using ReallifeGamemode.Server.WeaponDeal; namespace ReallifeGamemode.Server.Util { public class ThreadTimers - { - - private static Timer timer500 = new Timer(500); //0.5 seconds timer - private static Timer timer2500 = new Timer(2500); //2.5 seconds timer - private static Timer timer10000 = new Timer(10000); // 10 second timer - private static Timer timer60000 = new Timer(60000); //60 seconds timer - - public static void StartAllTimers() { - timer500.Start(); - timer500.Elapsed += Timer500_Elapsed; + private static Timer timer500 = new Timer(500); //0.5 seconds timer + private static Timer timer2500 = new Timer(2500); //2.5 seconds timer + private static Timer timer10000 = new Timer(10000); // 10 second timer + private static Timer timer60000 = new Timer(60000); //60 seconds timer - timer2500.Start(); - timer2500.Elapsed += Timer2500_Elapsed; + public static void StartAllTimers() + { + timer500.Start(); + timer500.Elapsed += Timer500_Elapsed; - timer10000.Start(); - timer10000.Elapsed += Timer10000_Elapsed; + timer2500.Start(); + timer2500.Elapsed += Timer2500_Elapsed; - timer60000.Start(); - timer60000.Elapsed += Timer60000_Elapsed; + timer10000.Start(); + timer10000.Elapsed += Timer10000_Elapsed; + + timer60000.Start(); + timer60000.Elapsed += Timer60000_Elapsed; + } + + private static void Timer500_Elapsed(object sender, ElapsedEventArgs e) + { + TaxiDriverJob.UpdateFare(); + VehicleManager.VehicleTimerTick(); + } + + private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e) + { + Jail.JailOut_Elapsed(); + Economy.Timer_Elapsed(); + WeaponDealManager.Timer_Elapsed(); + } + + private static void Timer10000_Elapsed(object sender, ElapsedEventArgs e) + { + Jail.BrakeOut_Elapsed(); + } + + private static void Timer2500_Elapsed(object sender, ElapsedEventArgs e) + { + WantedEscapeTimer.Timer_Elapsed(); + Jail.JailIn_Elapsed(); + Gangwar.Gangwar.Value_TimerElapsed(); + } } - - private static void Timer500_Elapsed(object sender, ElapsedEventArgs e) - { - TaxiDriverJob.UpdateFare(); - VehicleManager.VehicleTimerTick(); - } - - private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e) - { - Jail.JailOut_Elapsed(); - Economy.Timer_Elapsed(); - WeaponDealManager.Timer_Elapsed(); - } - - private static void Timer10000_Elapsed(object sender, ElapsedEventArgs e) - { - Jail.BrakeOut_Elapsed(); - } - - private static void Timer2500_Elapsed(object sender, ElapsedEventArgs e) - { - WantedEscapeTimer.Timer_Elapsed(); - Jail.JailIn_Elapsed(); - Gangwar.Gangwar.Value_TimerElapsed(); - } - } } diff --git a/ReallifeGamemode.Server/Util/TransactionResult.cs b/ReallifeGamemode.Server/Util/TransactionResult.cs index dc8c2265..c9453987 100644 --- a/ReallifeGamemode.Server/Util/TransactionResult.cs +++ b/ReallifeGamemode.Server/Util/TransactionResult.cs @@ -1,15 +1,11 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace ReallifeGamemode.Server.Util +namespace ReallifeGamemode.Server.Util { public enum TransactionResult - { - SUCCESS, - SENDER_NO_BANKACCOUNT, - RECEIVER_NO_BANKACCOUNT, - SENDER_NOT_ENOUGH_MONEY, - NEGATIVE_MONEY_SENT - } + { + SUCCESS, + SENDER_NO_BANKACCOUNT, + RECEIVER_NO_BANKACCOUNT, + SENDER_NOT_ENOUGH_MONEY, + NEGATIVE_MONEY_SENT + } } diff --git a/ReallifeGamemode.Server/Util/VehicleSync.cs b/ReallifeGamemode.Server/Util/VehicleSync.cs index c8a124bb..b876bcc3 100644 --- a/ReallifeGamemode.Server/Util/VehicleSync.cs +++ b/ReallifeGamemode.Server/Util/VehicleSync.cs @@ -6,523 +6,523 @@ namespace ReallifeGamemode.Server.Util { //Enums for ease of use public enum WindowID - { - WindowFrontRight, - WindowFrontLeft, - WindowRearRight, - WindowRearLeft - } - - public enum WindowState - { - WindowFixed, - WindowDown, - WindowBroken - } - - public enum DoorID - { - DoorFrontLeft, - DoorFrontRight, - DoorRearLeft, - DoorRearRight, - DoorHood, - DoorTrunk - } - - public enum DoorState - { - DoorClosed, - DoorOpen, - DoorBroken, - } - - public enum WheelID - { - Wheel0, - Wheel1, - Wheel2, - Wheel3, - Wheel4, - Wheel5, - Wheel6, - Wheel7, - Wheel8, - Wheel9 - } - - public enum WheelState - { - WheelFixed, - WheelBurst, - WheelOnRim, - } - - public class VehicleStreaming : Script - { - //This is the data object which will be synced to vehicles - public class VehicleSyncData { - //Used to bypass some streaming bugs - public Vector3 Position { get; set; } = new Vector3(); - public Vector3 Rotation { get; set; } = new Vector3(); - - //Basics - public float Dirt { get; set; } = 0.0f; - public bool Locked { get; set; } = true; - public bool Engine { get; set; } = false; - - //(Not synced) - //public float BodyHealth { get; set; } = 1000.0f; - //public float EngineHealth { get; set; } = 1000.0f; - - //Doors 0-7 (0 = closed, 1 = open, 2 = broken) (This uses enums so don't worry about it) - public int[] Door { get; set; } = new int[8] { 0, 0, 0, 0, 0, 0, 0, 0 }; - - //Windows (0 = up, 1 = down, 2 = smashed) (This uses enums so don't worry about it) - public int[] Window { get; set; } = new int[4] { 0, 0, 0, 0 }; - - //Wheels 0-7, 45/47 (0 = fixed, 1 = flat, 2 = missing) (This uses enums so don't worry about it) - public int[] Wheel { get; set; } = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + WindowFrontRight, + WindowFrontLeft, + WindowRearRight, + WindowRearLeft } - //API functions for people to use - public static void SetVehicleWindowState(Vehicle veh, WindowID window, WindowState state) + public enum WindowState { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) //If data doesn't exist create a new one. This is the process for all API functions - data = new VehicleSyncData(); - - data.Window[(int)window] = (int)state; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus_Single", veh.Handle, (int)window, (int)state); + WindowFixed, + WindowDown, + WindowBroken } - public static WindowState GetVehicleWindowState(Vehicle veh, WindowID window) + public enum DoorID { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return (WindowState)data.Window[(int)window]; + DoorFrontLeft, + DoorFrontRight, + DoorRearLeft, + DoorRearRight, + DoorHood, + DoorTrunk } - public static void SetVehicleWheelState(Vehicle veh, WheelID wheel, WheelState state) + public enum DoorState { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Wheel[(int)wheel] = (int)state; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus_Single", veh.Handle, (int)wheel, (int)state); + DoorClosed, + DoorOpen, + DoorBroken, } - public static WheelState GetVehicleWheelState(Vehicle veh, WheelID wheel) + public enum WheelID { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return (WheelState)data.Wheel[(int)wheel]; + Wheel0, + Wheel1, + Wheel2, + Wheel3, + Wheel4, + Wheel5, + Wheel6, + Wheel7, + Wheel8, + Wheel9 } - public static void SetVehicleDirt(Vehicle veh, float dirt) + public enum WheelState { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Dirt = dirt; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); + WheelFixed, + WheelBurst, + WheelOnRim, } - public static float GetVehicleDirt(Vehicle veh) + public class VehicleStreaming : Script { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return data.Dirt; - } - - public static void SetDoorState(Vehicle veh, DoorID door, DoorState state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Door[(int)door] = (int)state; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus_Single", veh, (int)door, (int)state); - } - - public static DoorState GetDoorState(Vehicle veh, DoorID door) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return (DoorState)data.Door[(int)door]; - } - - public static void SetEngineState(Vehicle veh, bool status) - { - veh.EngineStatus = status; - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Engine = status; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetEngineStatus", veh, status); - } - - public static bool GetEngineState(Vehicle veh) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return veh.EngineStatus; - } - - public static void SetLockStatus(Vehicle veh, bool status) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Locked = status; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetLockStatus", veh, status); - NAPI.Pools.GetAllPlayers().ForEach(p => - { - if (p.IsInVehicle && p.Vehicle.Handle == veh.Handle) + //This is the data object which will be synced to vehicles + public class VehicleSyncData { - p.TriggerEvent("Vehicle_setLockStatus", status); + //Used to bypass some streaming bugs + public Vector3 Position { get; set; } = new Vector3(); + + public Vector3 Rotation { get; set; } = new Vector3(); + + //Basics + public float Dirt { get; set; } = 0.0f; + + public bool Locked { get; set; } = true; + public bool Engine { get; set; } = false; + + //(Not synced) + //public float BodyHealth { get; set; } = 1000.0f; + //public float EngineHealth { get; set; } = 1000.0f; + + //Doors 0-7 (0 = closed, 1 = open, 2 = broken) (This uses enums so don't worry about it) + public int[] Door { get; set; } = new int[8] { 0, 0, 0, 0, 0, 0, 0, 0 }; + + //Windows (0 = up, 1 = down, 2 = smashed) (This uses enums so don't worry about it) + public int[] Window { get; set; } = new int[4] { 0, 0, 0, 0 }; + + //Wheels 0-7, 45/47 (0 = fixed, 1 = flat, 2 = missing) (This uses enums so don't worry about it) + public int[] Wheel { get; set; } = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; } - }); - } - public static bool GetLockState(Vehicle veh) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return data.Locked; - } - - //Used internally only but publicly available in case any of you need it - public static VehicleSyncData GetVehicleSyncData(Vehicle veh) - { - if (veh != null) - { - if (NAPI.Entity.DoesEntityExist(veh)) + //API functions for people to use + public static void SetVehicleWindowState(Vehicle veh, WindowID window, WindowState state) { - if (NAPI.Data.HasEntitySharedData(veh, "VehicleSyncData")) - { - try + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) //If data doesn't exist create a new one. This is the process for all API functions + data = new VehicleSyncData(); + + data.Window[(int)window] = (int)state; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus_Single", veh.Handle, (int)window, (int)state); + } + + public static WindowState GetVehicleWindowState(Vehicle veh, WindowID window) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) { - //API converts class objects to JObject so we have to change it back - JObject obj = (JObject)NAPI.Data.GetEntitySharedData(veh, "VehicleSyncData"); - return obj.ToObject(); + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); } - catch (Exception) { return null; } - } + return (WindowState)data.Window[(int)window]; } - } - return default; //null - } - - //Used internally only but publicly available in case any of you need it - public static bool UpdateVehicleSyncData(Vehicle veh, VehicleSyncData data) - { - if (veh != null) - { - if (NAPI.Entity.DoesEntityExist(veh)) + public static void SetVehicleWheelState(Vehicle veh, WheelID wheel, WheelState state) { - if (data != null) - { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Wheel[(int)wheel] = (int)state; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus_Single", veh.Handle, (int)wheel, (int)state); + } + + public static WheelState GetVehicleWheelState(Vehicle veh, WheelID wheel) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return (WheelState)data.Wheel[(int)wheel]; + } + + public static void SetVehicleDirt(Vehicle veh, float dirt) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Dirt = dirt; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); + } + + public static float GetVehicleDirt(Vehicle veh) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return data.Dirt; + } + + public static void SetDoorState(Vehicle veh, DoorID door, DoorState state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Door[(int)door] = (int)state; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus_Single", veh, (int)door, (int)state); + } + + public static DoorState GetDoorState(Vehicle veh, DoorID door) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return (DoorState)data.Door[(int)door]; + } + + public static void SetEngineState(Vehicle veh, bool status) + { + veh.EngineStatus = status; + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Engine = status; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetEngineStatus", veh, status); + } + + public static bool GetEngineState(Vehicle veh) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return veh.EngineStatus; + } + + public static void SetLockStatus(Vehicle veh, bool status) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Locked = status; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetLockStatus", veh, status); + NAPI.Pools.GetAllPlayers().ForEach(p => + { + if (p.IsInVehicle && p.Vehicle.Handle == veh.Handle) + { + p.TriggerEvent("Vehicle_setLockStatus", status); + } + }); + } + + public static bool GetLockState(Vehicle veh) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return data.Locked; + } + + //Used internally only but publicly available in case any of you need it + public static VehicleSyncData GetVehicleSyncData(Vehicle veh) + { + if (veh != null) + { + if (NAPI.Entity.DoesEntityExist(veh)) + { + if (NAPI.Data.HasEntitySharedData(veh, "VehicleSyncData")) + { + try + { + //API converts class objects to JObject so we have to change it back + JObject obj = (JObject)NAPI.Data.GetEntitySharedData(veh, "VehicleSyncData"); + return obj.ToObject(); + } + catch (Exception) { return null; } + } + } + } + + return default; //null + } + + //Used internally only but publicly available in case any of you need it + public static bool UpdateVehicleSyncData(Vehicle veh, VehicleSyncData data) + { + if (veh != null) + { + if (NAPI.Entity.DoesEntityExist(veh)) + { + if (data != null) + { + data.Position = veh.Position; + data.Rotation = veh.Rotation; + NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); + return true; + } + } + } + return false; + } + + public static void SetVehicleRotation(Vehicle veh, VehicleSyncData data, Vector3 rot) + { + if (veh != null) + { + if (NAPI.Entity.DoesEntityExist(veh)) + { + if (data != null) + { + data.Rotation = rot; + NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); + } + } + } + } + + //Called from the client to sync dirt level + [RemoteEvent("VehStream_SetDirtLevel")] + public void VehStreamSetDirtLevel(Player player, Vehicle veh, float dirt) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Dirt = dirt; + + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); + } + + //Called from the client to sync door data + [RemoteEvent("VehStream_SetDoorData")] + public void VehStreamSetDoorData(Player player, Vehicle veh, int door1state, int door2state, int door3state, int door4state, int door5state, int door6state, int door7state, int door8state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Door[0] = door1state; + data.Door[1] = door2state; + data.Door[2] = door3state; + data.Door[3] = door4state; + data.Door[4] = door5state; + data.Door[5] = door6state; + data.Door[6] = door7state; + data.Door[7] = door8state; + + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, door1state, door2state, door3state, door4state, door5state, door6state, door7state, door8state); + } + + //Called from the client to sync window data + [RemoteEvent("VehStream_SetWindowData")] + public void VehStreamSetWindowData(Player player, Vehicle veh, int window1state, int window2state, int window3state, int window4state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Window[0] = window1state; + data.Window[1] = window2state; + data.Window[2] = window3state; + data.Window[3] = window4state; + + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus", veh.Handle, window1state, window2state, window3state, window4state); + } + + //Called from the client to sync wheel data + [RemoteEvent("VehStream_SetWheelData")] + public void VehStreamSetWheelData(Player player, Vehicle veh, int wheel1state, int wheel2state, int wheel3state, int wheel4state, int wheel5state, int wheel6state, int wheel7state, int wheel8state, int wheel9state, int wheel10state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Wheel[0] = wheel1state; + data.Wheel[1] = wheel2state; + data.Wheel[2] = wheel3state; + data.Wheel[3] = wheel4state; + data.Wheel[4] = wheel5state; + data.Wheel[5] = wheel6state; + data.Wheel[6] = wheel7state; + data.Wheel[7] = wheel8state; + data.Wheel[8] = wheel9state; + data.Wheel[9] = wheel10state; + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus", veh.Handle, wheel1state, wheel2state, wheel3state, wheel4state, wheel5state, wheel6state, wheel7state, wheel8state, wheel9state, wheel10state); + } + + //Other events + [ServerEvent(Event.PlayerEnterVehicleAttempt)] + public void VehStreamEnterAttempt(Player player, Vehicle veh, sbyte seat) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicleAttempt", veh.Handle.Value, seat); + } + + [ServerEvent(Event.PlayerExitVehicleAttempt)] + public void VehStreamExitAttempt(Player player, Vehicle veh) + { + if (player.HasData("isDead") && player.GetData("isDead")) + return; + + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + data.Position = veh.Position; data.Rotation = veh.Rotation; - NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); - return true; - } - } - } - return false; - } - public static void SetVehicleRotation(Vehicle veh, VehicleSyncData data, Vector3 rot) - { - if (veh != null) - { - if (NAPI.Entity.DoesEntityExist(veh)) + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicleAttempt", veh); + } + + [ServerEvent(Event.PlayerExitVehicle)] + public void VehStreamExit(Player player, Vehicle veh) { - if (data != null) - { - data.Rotation = rot; - NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); - } + if (player.HasData("isDead") && player.GetData("isDead")) + return; + + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Position = veh.Position; + data.Rotation = veh.Rotation; + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicle", veh.Handle.Value); + } + + [ServerEvent(Event.PlayerEnterVehicle)] + public void VehStreamEnter(Player player, Vehicle veh, sbyte seat) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicle", veh, seat); + player.TriggerEvent("Vehicle_setLockStatus", data.Locked); + } + + //[ServerEvent(Event.VehicleDamage)] + //public void VehDamage(Vehicle veh, float bodyHealthLoss, float engineHealthLoss) + //{ + // VehicleSyncData data = GetVehicleSyncData(veh); + // if (data == default(VehicleSyncData)) + // data = new VehicleSyncData(); + + // data.BodyHealth -= bodyHealthLoss; + // data.EngineHealth -= engineHealthLoss; + + // UpdateVehicleSyncData(veh, data); + + // if (NAPI.Vehicle.GetVehicleDriver(veh) != default(Player)) //Doesn't work? + // NAPI.ClientEvent.TriggerClientEvent(NAPI.Vehicle.GetVehicleDriver(veh), "VehStream_PlayerExitVehicleAttempt", veh); + //} + + [ServerEvent(Event.VehicleDoorBreak)] + public void VehDoorBreak(Vehicle veh, int index) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Door[index] = 2; + + UpdateVehicleSyncData(veh, data); + + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, data.Door[0], data.Door[1], data.Door[2], data.Door[3], data.Door[4], data.Door[5], data.Door[6], data.Door[7]); + } + + // INDICATORS + + [RemoteEvent("CLIENT:toggleLeftIndicator")] + public void ToggleLeftIndicator(Player player) + { + if (!player.IsInVehicle || player.VehicleSeat != 0) return; + Vehicle veh = player.Vehicle; + + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + + if (data.Left && data.Right) + { + data.Right = false; + } + else + { + data.Left = !data.Left; + data.Right = false; + } + + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + } + + [RemoteEvent("CLIENT:toggleRightIndicator")] + public void ToggleRightIndicator(Player player) + { + if (!player.IsInVehicle || player.VehicleSeat != 0) return; + Vehicle veh = player.Vehicle; + + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + + if (data.Left && data.Right) + { + data.Left = false; + } + else + { + data.Right = !data.Right; + data.Left = false; + } + + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + } + + [RemoteEvent("CLIENT:toggleWarningIndicator")] + public void ToggleWarningIndicator(Player player) + { + if (!player.IsInVehicle || player.VehicleSeat != 0) return; + Vehicle veh = player.Vehicle; + + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + + if (data.Right && data.Left) + { + data.Right = false; + data.Left = false; + } + else + { + data.Right = true; + data.Left = true; + } + + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); } - } } - - //Called from the client to sync dirt level - [RemoteEvent("VehStream_SetDirtLevel")] - public void VehStreamSetDirtLevel(Player player, Vehicle veh, float dirt) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Dirt = dirt; - - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); - } - - //Called from the client to sync door data - [RemoteEvent("VehStream_SetDoorData")] - public void VehStreamSetDoorData(Player player, Vehicle veh, int door1state, int door2state, int door3state, int door4state, int door5state, int door6state, int door7state, int door8state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Door[0] = door1state; - data.Door[1] = door2state; - data.Door[2] = door3state; - data.Door[3] = door4state; - data.Door[4] = door5state; - data.Door[5] = door6state; - data.Door[6] = door7state; - data.Door[7] = door8state; - - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, door1state, door2state, door3state, door4state, door5state, door6state, door7state, door8state); - } - - //Called from the client to sync window data - [RemoteEvent("VehStream_SetWindowData")] - public void VehStreamSetWindowData(Player player, Vehicle veh, int window1state, int window2state, int window3state, int window4state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Window[0] = window1state; - data.Window[1] = window2state; - data.Window[2] = window3state; - data.Window[3] = window4state; - - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus", veh.Handle, window1state, window2state, window3state, window4state); - } - - //Called from the client to sync wheel data - [RemoteEvent("VehStream_SetWheelData")] - public void VehStreamSetWheelData(Player player, Vehicle veh, int wheel1state, int wheel2state, int wheel3state, int wheel4state, int wheel5state, int wheel6state, int wheel7state, int wheel8state, int wheel9state, int wheel10state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Wheel[0] = wheel1state; - data.Wheel[1] = wheel2state; - data.Wheel[2] = wheel3state; - data.Wheel[3] = wheel4state; - data.Wheel[4] = wheel5state; - data.Wheel[5] = wheel6state; - data.Wheel[6] = wheel7state; - data.Wheel[7] = wheel8state; - data.Wheel[8] = wheel9state; - data.Wheel[9] = wheel10state; - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus", veh.Handle, wheel1state, wheel2state, wheel3state, wheel4state, wheel5state, wheel6state, wheel7state, wheel8state, wheel9state, wheel10state); - } - - //Other events - [ServerEvent(Event.PlayerEnterVehicleAttempt)] - public void VehStreamEnterAttempt(Player player, Vehicle veh, sbyte seat) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicleAttempt", veh.Handle.Value, seat); - } - - [ServerEvent(Event.PlayerExitVehicleAttempt)] - public void VehStreamExitAttempt(Player player, Vehicle veh) - { - - if (player.HasData("isDead") && player.GetData("isDead")) - return; - - - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Position = veh.Position; - data.Rotation = veh.Rotation; - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicleAttempt", veh); - } - - [ServerEvent(Event.PlayerExitVehicle)] - public void VehStreamExit(Player player, Vehicle veh) - { - if (player.HasData("isDead") && player.GetData("isDead")) - return; - - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Position = veh.Position; - data.Rotation = veh.Rotation; - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicle", veh.Handle.Value); - } - - [ServerEvent(Event.PlayerEnterVehicle)] - public void VehStreamEnter(Player player, Vehicle veh, sbyte seat) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicle", veh, seat); - player.TriggerEvent("Vehicle_setLockStatus", data.Locked); - } - - //[ServerEvent(Event.VehicleDamage)] - //public void VehDamage(Vehicle veh, float bodyHealthLoss, float engineHealthLoss) - //{ - // VehicleSyncData data = GetVehicleSyncData(veh); - // if (data == default(VehicleSyncData)) - // data = new VehicleSyncData(); - - // data.BodyHealth -= bodyHealthLoss; - // data.EngineHealth -= engineHealthLoss; - - // UpdateVehicleSyncData(veh, data); - - // if (NAPI.Vehicle.GetVehicleDriver(veh) != default(Player)) //Doesn't work? - // NAPI.ClientEvent.TriggerClientEvent(NAPI.Vehicle.GetVehicleDriver(veh), "VehStream_PlayerExitVehicleAttempt", veh); - //} - - [ServerEvent(Event.VehicleDoorBreak)] - public void VehDoorBreak(Vehicle veh, int index) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Door[index] = 2; - - UpdateVehicleSyncData(veh, data); - - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, data.Door[0], data.Door[1], data.Door[2], data.Door[3], data.Door[4], data.Door[5], data.Door[6], data.Door[7]); - } - - // INDICATORS - - [RemoteEvent("CLIENT:toggleLeftIndicator")] - public void ToggleLeftIndicator(Player player) - { - if (!player.IsInVehicle || player.VehicleSeat != 0) return; - Vehicle veh = player.Vehicle; - - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - - if (data.Left && data.Right) - { - data.Right = false; - } - else - { - data.Left = !data.Left; - data.Right = false; - } - - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); - } - - [RemoteEvent("CLIENT:toggleRightIndicator")] - public void ToggleRightIndicator(Player player) - { - if (!player.IsInVehicle || player.VehicleSeat != 0) return; - Vehicle veh = player.Vehicle; - - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - - if (data.Left && data.Right) - { - data.Left = false; - } - else - { - data.Right = !data.Right; - data.Left = false; - } - - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); - } - - [RemoteEvent("CLIENT:toggleWarningIndicator")] - public void ToggleWarningIndicator(Player player) - { - if (!player.IsInVehicle || player.VehicleSeat != 0) return; - Vehicle veh = player.Vehicle; - - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - - if (data.Right && data.Left) - { - data.Right = false; - data.Left = false; - } - else - { - data.Right = true; - data.Left = true; - } - - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); - } - } } diff --git a/ReallifeGamemode.Server/Wanted/Autowanted.cs b/ReallifeGamemode.Server/Wanted/Autowanted.cs index 34d06eb3..9f9df9d5 100644 --- a/ReallifeGamemode.Server/Wanted/Autowanted.cs +++ b/ReallifeGamemode.Server/Wanted/Autowanted.cs @@ -1,7 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; +using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; @@ -9,25 +6,24 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Wanted { public class Autowanted - { - public static void Check_AutoWanted(Player killerPlayer, Player copPlayer) { - User killer = killerPlayer.GetUser(); - if (killer.FactionId == 1 || killer.FactionId == 3) - return; - - User cop = copPlayer.GetUser(); - if (!cop.GetData("duty")) return; - if (cop.FactionId == 1 || cop.FactionId == 3) - { - using (var dbContext = new DatabaseContext()) + public static void Check_AutoWanted(Player killerPlayer, Player copPlayer) { - killer = killerPlayer.GetUser(dbContext); - killer.GiveWanteds(copPlayer, 10, "Beamten-Mord"); - dbContext.SaveChanges(); - } - } + User killer = killerPlayer.GetUser(); + if (killer.FactionId == 1 || killer.FactionId == 3) + return; + User cop = copPlayer.GetUser(); + if (!cop.GetData("duty")) return; + if (cop.FactionId == 1 || cop.FactionId == 3) + { + using (var dbContext = new DatabaseContext()) + { + killer = killerPlayer.GetUser(dbContext); + killer.GiveWanteds(copPlayer, 10, "Beamten-Mord"); + dbContext.SaveChanges(); + } + } + } } - } } diff --git a/ReallifeGamemode.Server/Wanted/Jail.cs b/ReallifeGamemode.Server/Wanted/Jail.cs index 77dcba58..65d9905e 100644 --- a/ReallifeGamemode.Server/Wanted/Jail.cs +++ b/ReallifeGamemode.Server/Wanted/Jail.cs @@ -1,12 +1,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Text; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; +using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Factions.Medic; -using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Services; using ReallifeGamemode.Services; using System.Diagnostics; @@ -15,82 +14,81 @@ using Newtonsoft.Json; namespace ReallifeGamemode.Server.Wanted { public class Jail : Script - { - private static Dictionary Jailtime { get; set; } = new Dictionary(); //time in seconds - - - public static void Check_PutBehindBars(Player client) { - User user = client.GetUser(); - if (user.JailTime > 0) - { - client.RemoveAllWeapons(); - client.Health = 100; - client.Armor = 0; - Random rnd = new Random(); - int rndInt = rnd.Next(1, 3); - if (rndInt == 1) - NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail - if (rndInt == 2) - NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail - if (rndInt == 3) - NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail - Jailtime[user.Id] = user.JailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds - int timeMinutes = 0; + private static Dictionary Jailtime { get; set; } = new Dictionary(); //time in seconds - if (((int)(user.JailTime / 60)) <= 1 && user.JailTime != 0) + public static void Check_PutBehindBars(Player client) { - timeMinutes = 1; - } - else - { - timeMinutes = (int)(user.JailTime / 60); - } - client.TriggerEvent("jailTime", timeMinutes); - return; - } - if (user.Wanteds <= 0) - return; - foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) - { - if (!copPlayer.IsLoggedIn()) continue; - User cop = copPlayer.GetUser(); - if (cop?.FactionId == 1 || cop?.FactionId == 3) - { - int jailTime = user.Wanteds * 54; - if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(client.Position) <= 200 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) - { - using (var dbContext = new DatabaseContext()) + User user = client.GetUser(); + if (user.JailTime > 0) { - if (!client.HasData("isDead") || client.GetData("isDead") == false) - { - jailTime /= 2; - } + client.RemoveAllWeapons(); + client.Health = 100; + client.Armor = 0; + Random rnd = new Random(); + int rndInt = rnd.Next(1, 3); + if (rndInt == 1) + NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail + if (rndInt == 2) + NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail + if (rndInt == 3) + NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail + Jailtime[user.Id] = user.JailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds + int timeMinutes = 0; - client.GetUser(dbContext).JailTime = jailTime; - Jailtime[user.Id] = jailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds - - client.GetUser(dbContext).Wanteds = 0; - dbContext.SaveChanges(); + if (((int)(user.JailTime / 60)) <= 1 && user.JailTime != 0) + { + timeMinutes = 1; + } + else + { + timeMinutes = (int)(user.JailTime / 60); + } + client.TriggerEvent("jailTime", timeMinutes); + return; } - client.SetData("isDead", false); - client.RemoveAllWeapons(); - client.SetSharedData("blipColor", 0); - Random rnd = new Random(); - int rndInt = rnd.Next(1, 3); - if (rndInt == 1) - NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail - if (rndInt == 2) - NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail - if (rndInt == 3) - NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail + if (user.Wanteds <= 0) + return; + foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) + { + if (!copPlayer.IsLoggedIn()) continue; + User cop = copPlayer.GetUser(); + if (cop?.FactionId == 1 || cop?.FactionId == 3) + { + int jailTime = user.Wanteds * 54; + if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(client.Position) <= 200 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) + { + using (var dbContext = new DatabaseContext()) + { + if (!client.HasData("isDead") || client.GetData("isDead") == false) + { + jailTime /= 2; + } - client.TriggerEvent("onPlayerRevived"); - MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == client.Name); - Medic.RemoveTaskFromList(task); - client.Health = 100; + client.GetUser(dbContext).JailTime = jailTime; + Jailtime[user.Id] = jailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds - int timeMinutes = 0; + client.GetUser(dbContext).Wanteds = 0; + dbContext.SaveChanges(); + } + client.SetData("isDead", false); + client.RemoveAllWeapons(); + client.SetSharedData("blipColor", 0); + Random rnd = new Random(); + int rndInt = rnd.Next(1, 3); + if (rndInt == 1) + NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail + if (rndInt == 2) + NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail + if (rndInt == 3) + NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail + + client.TriggerEvent("onPlayerRevived"); + MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == client.Name); + Medic.RemoveTaskFromList(task); + client.Health = 100; + + int timeMinutes = 0; if (((int)(client.GetUser().JailTime / 60)) <= 1 && client.GetUser().JailTime != 0) { @@ -109,16 +107,18 @@ namespace ReallifeGamemode.Server.Wanted case null: client.SetSharedData("blipColor", 0); break; + case 8: client.SetSharedData("blipColor", 83); break; + case 7: client.SetSharedData("blipColor", 52); break; + case 4: client.SetSharedData("blipColor", 5); break; - } } else @@ -129,159 +129,152 @@ namespace ReallifeGamemode.Server.Wanted } } - - /* - public static void JailTimer() - { - System.Timers.Timer timer = new System.Timers.Timer(60000); - System.Timers.Timer brakeOut = new System.Timers.Timer(10000); - System.Timers.Timer jailIn = new System.Timers.Timer(2500); - timer.Start(); - brakeOut.Start(); - jailIn.Start(); - //timer.Elapsed += Timer_Elapsed; - //brakeOut.Elapsed += BrakeOut_Elapsed; - //jailIn.Elapsed += JailIn_Elapsed; - } - */ - public static void JailIn_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - if (user != null && !Jailtime.ContainsKey(user.Id)) + /* + public static void JailTimer() { - foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) - { - if (!copPlayer.IsLoggedIn()) return; - User cop = copPlayer.GetUser(); - if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(player.Position) <= 500 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) + System.Timers.Timer timer = new System.Timers.Timer(60000); + System.Timers.Timer brakeOut = new System.Timers.Timer(10000); + System.Timers.Timer jailIn = new System.Timers.Timer(2500); + timer.Start(); + brakeOut.Start(); + jailIn.Start(); + //timer.Elapsed += Timer_Elapsed; + //brakeOut.Elapsed += BrakeOut_Elapsed; + //jailIn.Elapsed += JailIn_Elapsed; + } + */ + + public static void JailIn_Elapsed() + { + foreach (var player in NAPI.Pools.GetAllPlayers()) { - if (player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) <= 7) - { - if (player.Position.DistanceTo2D(copPlayer.Position) < 5) + User user = player.GetUser(); + if (user != null && !Jailtime.ContainsKey(user.Id)) { - Check_PutBehindBars(player); + foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) + { + if (!copPlayer.IsLoggedIn()) return; + User cop = copPlayer.GetUser(); + if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(player.Position) <= 500 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) + { + if (player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) <= 7) + { + if (player.Position.DistanceTo2D(copPlayer.Position) < 5) + { + Check_PutBehindBars(player); + } + } + } + } } - } - } - - } } - } - } - public static void BrakeOut_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - - if (user != null && player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) > 7 && Jailtime.ContainsKey(user.Id)) + public static void BrakeOut_Elapsed() { - using (var dbContext = new DatabaseContext()) - { - user = player.GetUser(dbContext); - user.JailTime = 0; - user.GiveWanteds(null, 50, "Knast-Ausbruch"); - player.TriggerEvent("jailTime", 0); - dbContext.SaveChanges(); - Jailtime.Remove(user.Id); - } - - } - } - } - - public static void JailOut_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - if (user != null && Jailtime.ContainsKey(user.Id)) - { - - if (user.JailTime <= 0) - { - Jailtime.Remove(user.Id); - player.Position = new Vector3(461.7256, -988.6035, 24.91487); - player.TriggerEvent("jailTime", 0); - return; - } - if (user.JailTime > 0) - { - using (var dbContext = new DatabaseContext()) + foreach (var player in NAPI.Pools.GetAllPlayers()) { - player.GetUser(dbContext).JailTime -= 60; - dbContext.SaveChanges(); - } + User user = player.GetUser(); - int timeMinutes = 0; - - if (((int)(user.JailTime / 60)) == 0 && user.JailTime != 0) - { - timeMinutes = 1; + if (user != null && player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) > 7 && Jailtime.ContainsKey(user.Id)) + { + using (var dbContext = new DatabaseContext()) + { + user = player.GetUser(dbContext); + user.JailTime = 0; + user.GiveWanteds(null, 50, "Knast-Ausbruch"); + player.TriggerEvent("jailTime", 0); + dbContext.SaveChanges(); + Jailtime.Remove(user.Id); + } + } } - else - { - timeMinutes = (int)(user.JailTime / 60); - } - - player.TriggerEvent("jailTime", timeMinutes); - player.Health = 100; - } } - } - } - - [RemoteEvent("setPrisonerFree")] - public void Release_Jail(Player cop, string client) - { - Player player = PlayerService.GetPlayerByNameOrId(client); - if (player == null) - return; - - User user = player.GetUser(); - if (Jailtime.ContainsKey(user.Id)) - { - - Jailtime.Remove(user.Id); - using (var dbContext = new DatabaseContext()) + public static void JailOut_Elapsed() { - player.GetUser(dbContext).JailTime = 0; - dbContext.SaveChanges(); + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(); + if (user != null && Jailtime.ContainsKey(user.Id)) + { + if (user.JailTime <= 0) + { + Jailtime.Remove(user.Id); + player.Position = new Vector3(461.7256, -988.6035, 24.91487); + player.TriggerEvent("jailTime", 0); + return; + } + if (user.JailTime > 0) + { + using (var dbContext = new DatabaseContext()) + { + player.GetUser(dbContext).JailTime -= 60; + dbContext.SaveChanges(); + } + + int timeMinutes = 0; + + if (((int)(user.JailTime / 60)) == 0 && user.JailTime != 0) + { + timeMinutes = 1; + } + else + { + timeMinutes = (int)(user.JailTime / 60); + } + + player.TriggerEvent("jailTime", timeMinutes); + player.Health = 100; + } + } + } } - player.Health = 100; - player.Position = new Vector3(461.7256, -988.6035, 24.91487); - ChatService.HQMessage("!{#8181E9}HQ: Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen."); - ChatService.SendMessage(player, "!{#8181E9}Der Beamte " + cop.Name + " hat dich aus dem Knast entlassen"); - player.TriggerEvent("jailTime", 0); - } - } - - public static void Release_Jail_Admin(Player admin, Player target) - { - User user = target.GetUser(); - if (Jailtime.ContainsKey(user.Id)) - { - - Jailtime.Remove(user.Id); - using (var dbContext = new DatabaseContext()) + [RemoteEvent("setPrisonerFree")] + public void Release_Jail(Player cop, string client) { - target.GetUser(dbContext).JailTime = 0; - dbContext.SaveChanges(); - } - target.Health = 100; - target.Position = new Vector3(461.7256, -988.6035, 24.91487); + Player player = PlayerService.GetPlayerByNameOrId(client); + if (player == null) + return; - ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen."); - ChatService.SendMessage(target, "!{#8181E9}Admin " + admin.Name + " hat dich aus dem Knast entlassen"); - ChatService.SendMessage(admin, "!{#8181E9}Du hast " + user.Name + " administrativ aus dem Knast entlassen"); - target.TriggerEvent("jailTime", 0); - } + User user = player.GetUser(); + if (Jailtime.ContainsKey(user.Id)) + { + Jailtime.Remove(user.Id); + using (var dbContext = new DatabaseContext()) + { + player.GetUser(dbContext).JailTime = 0; + dbContext.SaveChanges(); + } + player.Health = 100; + player.Position = new Vector3(461.7256, -988.6035, 24.91487); + + ChatService.HQMessage("!{#8181E9}HQ: Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen."); + ChatService.SendMessage(player, "!{#8181E9}Der Beamte " + cop.Name + " hat dich aus dem Knast entlassen"); + player.TriggerEvent("jailTime", 0); + } + } + + public static void Release_Jail_Admin(Player admin, Player target) + { + User user = target.GetUser(); + if (Jailtime.ContainsKey(user.Id)) + { + Jailtime.Remove(user.Id); + using (var dbContext = new DatabaseContext()) + { + target.GetUser(dbContext).JailTime = 0; + dbContext.SaveChanges(); + } + target.Health = 100; + target.Position = new Vector3(461.7256, -988.6035, 24.91487); + + ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen."); + ChatService.SendMessage(target, "!{#8181E9}Admin " + admin.Name + " hat dich aus dem Knast entlassen"); + ChatService.SendMessage(admin, "!{#8181E9}Du hast " + user.Name + " administrativ aus dem Knast entlassen"); + target.TriggerEvent("jailTime", 0); + } + } } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs b/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs index 7174274a..5c5dcea4 100644 --- a/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs +++ b/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs @@ -1,70 +1,65 @@ -/*** +/*** @overview Life of German - Wanted (Wanted.cs) @author kookroach -@copyright (c) 2008 - 2019 Life of German +@copyright (c) 2008 - 2019 Life of German */ - -using System; using System.Collections.Generic; -using System.Text; -using System.Threading; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; -using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Database.Models; -using ReallifeGamemode.Server.Services; +using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Wanted { public class WantedEscapeTimer - { - public static Dictionary waTimer { get; set; } = new Dictionary(); //zeit in ms - /* - public static void WantedTimer() { - //System.Timers.Timer timer = new System.Timers.Timer(2500); - //timer.Start(); - //timer.Elapsed += Timer_Elapsed; - } - */ - public static void ResetWantedTimeToElapse(Player client) - { - User user = client.GetUser(); - if (user.FactionId == 1 || user.FactionId == 3) - return; - - waTimer[user.Id] = 300000; - } - - public static void Timer_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - if (user != null && user.Wanteds > 0) + public static Dictionary waTimer { get; set; } = new Dictionary(); //zeit in ms + /* + public static void WantedTimer() { - if (!waTimer.ContainsKey(user.Id)) - ResetWantedTimeToElapse(player); + //System.Timers.Timer timer = new System.Timers.Timer(2500); + //timer.Start(); + //timer.Elapsed += Timer_Elapsed; + } + */ - bool isNearCop = false; - foreach (var playerCop in NAPI.Pools.GetAllPlayers()) - { - if (!playerCop.IsLoggedIn()) continue; + public static void ResetWantedTimeToElapse(Player client) + { + User user = client.GetUser(); + if (user.FactionId == 1 || user.FactionId == 3) + return; - User cop = playerCop.GetUser(); - if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3)) + waTimer[user.Id] = 300000; + } + + public static void Timer_Elapsed() + { + foreach (var player in NAPI.Pools.GetAllPlayers()) { - if (cop.GetData("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500) - { - //Schriftzug 'abgetaucht' zerstören :( - isNearCop = true; - break; + User user = player.GetUser(); + if (user != null && user.Wanteds > 0) + { + if (!waTimer.ContainsKey(user.Id)) + ResetWantedTimeToElapse(player); - } - //Hier abgetaucht schriftzug einfügen :) - } - } + bool isNearCop = false; + foreach (var playerCop in NAPI.Pools.GetAllPlayers()) + { + if (!playerCop.IsLoggedIn()) continue; + + User cop = playerCop.GetUser(); + if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3)) + { + if (cop.GetData("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500) + { + //Schriftzug 'abgetaucht' zerstören :( + isNearCop = true; + break; + } + //Hier abgetaucht schriftzug einfügen :) + } + } if (!waTimer.ContainsKey(user.Id)) waTimer[user.Id] = 300000; @@ -82,12 +77,15 @@ namespace ReallifeGamemode.Server.Wanted case null: player.SetSharedData("blipColor", 0); break; + case 8: player.SetSharedData("blipColor", 83); break; + case 7: player.SetSharedData("blipColor", 52); break; + case 4: player.SetSharedData("blipColor", 5); break; @@ -95,13 +93,12 @@ namespace ReallifeGamemode.Server.Wanted } dbContext.SaveChanges(); } - } - if (!isNearCop) - waTimer[user.Id] -= 2500; + if (!isNearCop) + waTimer[user.Id] -= 2500; + } + } } - } } - } -} +} \ No newline at end of file diff --git a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs index 3bb9737c..2aec980c 100644 --- a/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs +++ b/ReallifeGamemode.Server/WeaponDeal/WeaponDealManager.cs @@ -1,14 +1,12 @@ using System; using System.Collections.Generic; -using System.Text; +using System.Linq; using GTANetworkAPI; using ReallifeGamemode.Database.Entities; using ReallifeGamemode.Database.Models; using ReallifeGamemode.Server.Extensions; using ReallifeGamemode.Server.Managers; -using System.Linq; using ReallifeGamemode.Server.Services; -using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.WeaponDeal { @@ -36,12 +34,55 @@ namespace ReallifeGamemode.Server.WeaponDeal ChatService.ErrorMessage(client, "Der Transporter ist zu weit entfernt"); return; } + WeaponDealPoints.factionWeaponDeal[user.FactionId.Value] = -1; + Vector3 vector; + vector = WeaponDealPoints.getRndWD_Route(client.GetUser().FactionId.Value); + if (vector == new Vector3()) + return; + fVeh.SetData("weaponDealPoint", vector); + if (user.Faction.WeaponDealTime <= 0) { - ChatService.BroadcastFaction("Die albanische Mafia hat einen Deal mit deiner Fraktion abgemacht!", user.Faction); - ChatService.SendMessage(client, "Steige in den Burrito ein und fahre zum Waffendeal."); + int i = 0; + string msg = ""; + foreach (var point in WeaponDealPoints.WT_Route) + { + i++; + if (point != vector) + continue; + + switch (i) + { + case 1: + msg = "Die albanische Mafia hat einen Waffendeal mit uns abgemacht."; + break; + + case 2: + msg = "Die Lost MC scheint wieder im Waffen-Business aktiv zu sein."; + break; + + case 3: + msg = "Ein paar hochrangige Militärs der U.S. Armee versuchen alte sowjetische Waffen los zu werden."; + break; + + case 4: + msg = "Die russische Mafia kann uns mit östliche Importe beliefern."; + break; + + case 5: + msg = "Die albanische Mafia will wohl wieder Geschäfte mit uns machen."; + break; + + case 6: + msg = "Die Waffen von den Russen waren schon immer zuverlässig..."; + break; + } + } + + ChatService.BroadcastFaction($"~y~[WAFFENDEAL]~s~ {msg}", user.Faction); + ChatService.SendMessage(client, "~y~[WAFFENDEAL]~s~ Steige in den Burrito ein und fahre zum Waffendeal."); fVeh.SetData("weaponDeal", true); - WeaponDealPoints.factionWeaponDeal[user.FactionId.Value] = -1; + InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh); Faction fac = context.Factions.Where(f => f.Id == user.FactionId).FirstOrDefault(); fac.WeaponDealTime = 60; context.SaveChanges(); @@ -61,6 +102,7 @@ namespace ReallifeGamemode.Server.WeaponDeal timer.Elapsed += Timer_Elapsed; } */ + public static void Timer_Elapsed() { using (var context = new DatabaseContext()) @@ -73,9 +115,14 @@ namespace ReallifeGamemode.Server.WeaponDeal } context.SaveChanges(); } - } + [ServerEvent(Event.PlayerWeaponSwitch)] + public void OnPlayerWeaponSwitch(Player player, WeaponHash oldWeapon, WeaponHash newWeapon) + { + if (!player.HasAttachment("ammobox")) return; + NAPI.Player.SetPlayerCurrentWeapon(player, WeaponHash.Unarmed); + } [RemoteEvent("loadWeaponTransport")] public void SrvEVENT_loadWeaponTransport(Player client) @@ -86,24 +133,24 @@ namespace ReallifeGamemode.Server.WeaponDeal User user = client.GetUser(); using (var context = new DatabaseContext()) { - FactionVehicle factionVehicle = context.FactionVehicles.Where(f => f.GetOwners().Contains(user.FactionId ?? 0) && f.Model == VehicleHash.Burrito3).FirstOrDefault(); + FactionVehicle factionVehicle = context.FactionVehicles.ToList().Find(f => f.GetOwners().Contains(user.FactionId ?? 0) && f.Model == VehicleHash.Burrito3); Vehicle fVeh = VehicleManager.GetVehicleFromServerVehicle(factionVehicle); fVeh.SetData("weaponDeal", false); fVeh.SetData("WeaponDealLoad", true); InventoryManager.RemoveAllItemsfromVehicleInventory(fVeh); Random rnd = new Random(); + int oMembers = NAPI.Pools.GetAllPlayers().Where(p => p.IsLoggedIn() && p.GetUser(context).FactionId == user.FactionId).Count(); + if (factionVehicle.GetOwners().Contains(8) || factionVehicle.GetOwners().Contains(7)) { - VehicleItem item = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = rnd.Next(45, 75) }; //pistole - InventoryManager.AddItemToVehicleInventory(client, item, fVeh); - VehicleItem item3 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = rnd.Next(30, 40) }; //Pumpe - InventoryManager.AddItemToVehicleInventory(client, item3, fVeh); - VehicleItem item2 = new VehicleItem() { ItemId = 16, VehicleId = factionVehicle.Id, Amount = rnd.Next(5, 15) }; //Schutzweste - InventoryManager.AddItemToVehicleInventory(client, item2, fVeh); + VehicleItem item = new VehicleItem() { ItemId = 11, VehicleId = factionVehicle.Id, Amount = rnd.Next(3, 5) * oMembers }; //pistole + InventoryManager.AddItemToVehicleInventory(fVeh, item.ItemId, item.Amount); + VehicleItem item3 = new VehicleItem() { ItemId = 14, VehicleId = factionVehicle.Id, Amount = rnd.Next(1, 4) * oMembers }; //Pumpe + InventoryManager.AddItemToVehicleInventory(fVeh, item3.ItemId, item3.Amount); + VehicleItem item2 = new VehicleItem() { ItemId = 16, VehicleId = factionVehicle.Id, Amount = 1 * oMembers }; //Schutzweste + InventoryManager.AddItemToVehicleInventory(fVeh, item2.ItemId, item2.Amount); } - } - } } } diff --git a/ReallifeGamemode.Server/WeaponDeal/WeaponDealPoints.cs b/ReallifeGamemode.Server/WeaponDeal/WeaponDealPoints.cs index 8d3ffdf1..769c343d 100644 --- a/ReallifeGamemode.Server/WeaponDeal/WeaponDealPoints.cs +++ b/ReallifeGamemode.Server/WeaponDeal/WeaponDealPoints.cs @@ -1,9 +1,7 @@ using System; using System.Collections.Generic; -using System.Text; -using GTANetworkAPI; using System.Linq; -using ReallifeGamemode.Database.Entities; +using GTANetworkAPI; namespace ReallifeGamemode.Server.WeaponDeal { @@ -11,8 +9,7 @@ namespace ReallifeGamemode.Server.WeaponDeal { public static Dictionary factionWeaponDeal = new Dictionary(); - - private static readonly IReadOnlyCollection WT_Route = new List + public static readonly IReadOnlyCollection WT_Route = new List { //new Vector3(2465.163, 1589.396, 32.72029), ungeeignet new Vector3(1532.045, 1702.775, 109.7561), //Hütte iwo Östlich From 914f2f9447a231e2dffa4a13b85cb7e436b5e2e1 Mon Sep 17 00:00:00 2001 From: Siga Date: Sun, 10 May 2020 19:20:20 +0200 Subject: [PATCH 2/3] =?UTF-8?q?miese=20Corona=20Zeiten=20push=20f=C3=BCr?= =?UTF-8?q?=20Lenhardt=20Lehmberger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReallifeGamemode.Client/Ped/PedCreator.ts | 768 +++++++++ .../css/inventory - backup with Trade.css | 968 +++++++++++ .../html/inventory/img/backpack/trash2.svg | 1 + .../util/attachmentMngr.ts | 279 ++++ .../util/relativevector.ts | 28 + .../20200407014500_PedType.Designer.cs | 1447 +++++++++++++++++ .../Migrations/20200407014500_PedType.cs | 23 + ReallifeGamemode.Server/Events/ExitVehicle.cs | 4 +- .../Managers/InteractionManager.cs | 604 +++---- .../Managers/InventoryManager.cs | 40 +- .../Managers/PedManager.cs | 96 ++ .../Util/AttachmentSync.cs | 153 ++ 12 files changed, 4074 insertions(+), 337 deletions(-) create mode 100644 ReallifeGamemode.Client/Ped/PedCreator.ts create mode 100644 ReallifeGamemode.Client/assets/html/inventory/css/inventory - backup with Trade.css create mode 100644 ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash2.svg create mode 100644 ReallifeGamemode.Client/util/attachmentMngr.ts create mode 100644 ReallifeGamemode.Client/util/relativevector.ts create mode 100644 ReallifeGamemode.Database/Migrations/20200407014500_PedType.Designer.cs create mode 100644 ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs create mode 100644 ReallifeGamemode.Server/Managers/PedManager.cs create mode 100644 ReallifeGamemode.Server/Util/AttachmentSync.cs diff --git a/ReallifeGamemode.Client/Ped/PedCreator.ts b/ReallifeGamemode.Client/Ped/PedCreator.ts new file mode 100644 index 00000000..600599be --- /dev/null +++ b/ReallifeGamemode.Client/Ped/PedCreator.ts @@ -0,0 +1,768 @@ +export default function PedCreator() { + // Update 04/03/2020, Ped count [739] + var PedHashes = { + a_c_boar: 0xCE5FF074, + a_c_cat_01: 0x573201B8, + a_c_chickenhawk: 0xAAB71F62, + a_c_chimp: 0xA8683715, + a_c_chop: 0x14EC17EA, + a_c_cormorant: 0x56E29962, + a_c_cow: 0xFCFA9E1E, + a_c_coyote: 0x644AC75E, + a_c_crow: 0x18012A9F, + a_c_deer: 0xD86B5A95, + a_c_dolphin: 0x8BBAB455, + a_c_fish: 0x2FD800B7, + a_c_hen: 0x6AF51FAF, + a_c_humpback: 0x471BE4B2, + a_c_husky: 0x4E8F95A2, + a_c_killerwhale: 0x8D8AC8B9, + a_c_mtlion: 0x1250D7BA, + a_c_pig: 0xB11BAB56, + a_c_pigeon: 0x06A20728, + a_c_poodle: 0x431D501C, + a_c_pug: 0x6D362854, + a_c_rabbit_01: 0xDFB55C81, + a_c_rat: 0xC3B52966, + a_c_retriever: 0x349F33E1, + a_c_rhesus: 0xC2D06F53, + a_c_rottweiler: 0x9563221D, + a_c_seagull: 0xD3939DFD, + a_c_sharkhammer: 0x3C831724, + a_c_sharktiger: 0x06C3F072, + a_c_shepherd: 0x431FC24C, + a_c_stingray: 0xA148614D, + a_c_westy: 0xAD7844BB, + a_f_m_beach_01: 0x303638A7, + a_f_m_bevhills_01: 0xBE086EFD, + a_f_m_bevhills_02: 0xA039335F, + a_f_m_bodybuild_01: 0x3BD99114, + a_f_m_business_02: 0x1FC37DBC, + a_f_m_downtown_01: 0x654AD86E, + a_f_m_eastsa_01: 0x9D3DCB7A, + a_f_m_eastsa_02: 0x63C8D891, + a_f_m_fatbla_01: 0xFAB48BCB, + a_f_m_fatcult_01: 0xB5CF80E4, + a_f_m_fatwhite_01: 0x38BAD33B, + a_f_m_ktown_01: 0x52C824DE, + a_f_m_ktown_02: 0x41018151, + a_f_m_prolhost_01: 0x169BD1E1, + a_f_m_salton_01: 0xDE0E0969, + a_f_m_skidrow_01: 0xB097523B, + a_f_m_soucent_01: 0x745855A1, + a_f_m_soucent_02: 0xF322D338, + a_f_m_soucentmc_01: 0xCDE955D2, + a_f_m_tourist_01: 0x505603B9, + a_f_m_tramp_01: 0x48F96F5B, + a_f_m_trampbeac_01: 0x8CA0C266, + a_f_o_genstreet_01: 0x61C81C85, + a_f_o_indian_01: 0xBAD7BB80, + a_f_o_ktown_01: 0x47CF5E96, + a_f_o_salton_01: 0xCCFF7D8A, + a_f_o_soucent_01: 0x3DFA1830, + a_f_o_soucent_02: 0xA56DE716, + a_f_y_beach_01: 0xC79F6928, + a_f_y_bevhills_01: 0x445AC854, + a_f_y_bevhills_02: 0x5C2CF7F8, + a_f_y_bevhills_03: 0x20C8012F, + a_f_y_bevhills_04: 0x36DF2D5D, + a_f_y_business_01: 0x2799EFD8, + a_f_y_business_02: 0x31430342, + a_f_y_business_03: 0xAE86FDB4, + a_f_y_business_04: 0xB7C61032, + a_f_y_eastsa_01: 0xF5B0079D, + a_f_y_eastsa_02: 0x0438A4AE, + a_f_y_eastsa_03: 0x51C03FA4, + a_f_y_epsilon_01: 0x689C2A80, + a_f_y_femaleagent: 0x50610C43, + a_f_y_fitness_01: 0x457C64FB, + a_f_y_fitness_02: 0x13C4818C, + a_f_y_genhot_01: 0x2F4AEC3E, + a_f_y_golfer_01: 0x7DD8FB58, + a_f_y_hiker_01: 0x30830813, + a_f_y_hippie_01: 0x1475B827, + a_f_y_hipster_01: 0x8247D331, + a_f_y_hipster_02: 0x97F5FE8D, + a_f_y_hipster_03: 0xA5BA9A16, + a_f_y_hipster_04: 0x199881DC, + a_f_y_indian_01: 0x092D9CC1, + a_f_y_juggalo_01: 0xDB134533, + a_f_y_runner_01: 0xC7496729, + a_f_y_rurmeth_01: 0x3F789426, + a_f_y_scdressy_01: 0xDB5EC400, + a_f_y_skater_01: 0x695FE666, + a_f_y_soucent_01: 0x2C641D7A, + a_f_y_soucent_02: 0x5A8EF9CF, + a_f_y_soucent_03: 0x87B25415, + a_f_y_tennis_01: 0x550C79C6, + a_f_y_topless_01: 0x9CF26183, + a_f_y_tourist_01: 0x563B8570, + a_f_y_tourist_02: 0x9123FB40, + a_f_y_vinewood_01: 0x19F41F65, + a_f_y_vinewood_02: 0xDAB6A0EB, + a_f_y_vinewood_03: 0x379DDAB8, + a_f_y_vinewood_04: 0xFAE46146, + a_f_y_yoga_01: 0xC41B062E, + a_m_m_acult_01: 0x5442C66B, + a_m_m_afriamer_01: 0xD172497E, + a_m_m_beach_01: 0x403DB4FD, + a_m_m_beach_02: 0x787FA588, + a_m_m_bevhills_01: 0x54DBEE1F, + a_m_m_bevhills_02: 0x3FB5C3D3, + a_m_m_business_01: 0x7E6A64B7, + a_m_m_eastsa_01: 0xF9A6F53F, + a_m_m_eastsa_02: 0x07DD91AC, + a_m_m_farmer_01: 0x94562DD7, + a_m_m_fatlatin_01: 0x61D201B3, + a_m_m_genfat_01: 0x06DD569F, + a_m_m_genfat_02: 0x13AEF042, + a_m_m_golfer_01: 0xA9EB0E42, + a_m_m_hasjew_01: 0x6BD9B68C, + a_m_m_hillbilly_01: 0x6C9B2849, + a_m_m_hillbilly_02: 0x7B0E452F, + a_m_m_indian_01: 0xDDCAAA2C, + a_m_m_ktown_01: 0xD15D7E71, + a_m_m_malibu_01: 0x2FDE6EB7, + a_m_m_mexcntry_01: 0xDD817EAD, + a_m_m_mexlabor_01: 0xB25D16B2, + a_m_m_og_boss_01: 0x681BD012, + a_m_m_paparazzi_01: 0xECCA8C15, + a_m_m_polynesian_01: 0xA9D9B69E, + a_m_m_prolhost_01: 0x9712C38F, + a_m_m_rurmeth_01: 0x3BAD4184, + a_m_m_salton_01: 0x4F2E038A, + a_m_m_salton_02: 0x60F4A717, + a_m_m_salton_03: 0xB28C4A45, + a_m_m_salton_04: 0x964511B7, + a_m_m_skater_01: 0xD9D7588C, + a_m_m_skidrow_01: 0x01EEA6BD, + a_m_m_socenlat_01: 0x0B8D69E3, + a_m_m_soucent_01: 0x6857C9B7, + a_m_m_soucent_02: 0x9F6D37E1, + a_m_m_soucent_03: 0x8BD990BA, + a_m_m_soucent_04: 0xC2FBFEFE, + a_m_m_stlat_02: 0xC2A87702, + a_m_m_tennis_01: 0x546A5344, + a_m_m_tourist_01: 0xC89F0184, + a_m_m_tramp_01: 0x1EC93FD0, + a_m_m_trampbeac_01: 0x53B57EB0, + a_m_m_tranvest_01: 0xE0E69974, + a_m_m_tranvest_02: 0xF70EC5C4, + a_m_o_acult_01: 0x55446010, + a_m_o_acult_02: 0x4BA14CCA, + a_m_o_beach_01: 0x8427D398, + a_m_o_genstreet_01: 0xAD54E7A8, + a_m_o_ktown_01: 0x1536D95A, + a_m_o_salton_01: 0x20208E4D, + a_m_o_soucent_01: 0x2AD8921B, + a_m_o_soucent_02: 0x4086BD77, + a_m_o_soucent_03: 0x0E32D8D0, + a_m_o_tramp_01: 0x174D4245, + a_m_y_acult_01: 0xB564882B, + a_m_y_acult_02: 0x80E59F2E, + a_m_y_beach_01: 0xD1FEB884, + a_m_y_beach_02: 0x23C7DC11, + a_m_y_beach_03: 0xE7A963D9, + a_m_y_beachvesp_01: 0x7E0961B8, + a_m_y_beachvesp_02: 0xCA56FA52, + a_m_y_bevhills_01: 0x76284640, + a_m_y_bevhills_02: 0x668BA707, + a_m_y_breakdance_01: 0x379F9596, + a_m_y_busicas_01: 0x9AD32FE9, + a_m_y_business_01: 0xC99F21C4, + a_m_y_business_02: 0xB3B3F5E6, + a_m_y_business_03: 0xA1435105, + a_m_y_cyclist_01: 0xFDC653C7, + a_m_y_dhill_01: 0xFF3E88AB, + a_m_y_downtown_01: 0x2DADF4AA, + a_m_y_eastsa_01: 0xA4471173, + a_m_y_eastsa_02: 0x168775F6, + a_m_y_epsilon_01: 0x77D41A3E, + a_m_y_epsilon_02: 0xAA82FF9B, + a_m_y_gay_01: 0xD1CCE036, + a_m_y_gay_02: 0xA5720781, + a_m_y_genstreet_01: 0x9877EF71, + a_m_y_genstreet_02: 0x3521A8D2, + a_m_y_golfer_01: 0xD71FE131, + a_m_y_hasjew_01: 0xE16D8F01, + a_m_y_hiker_01: 0x50F73C0C, + a_m_y_hippy_01: 0x7D03E617, + a_m_y_hipster_01: 0x2307A353, + a_m_y_hipster_02: 0x14D506EE, + a_m_y_hipster_03: 0x4E4179C6, + a_m_y_indian_01: 0x2A22FBCE, + a_m_y_jetski_01: 0x2DB7EEF3, + a_m_y_juggalo_01: 0x91CA3E2C, + a_m_y_ktown_01: 0x1AF6542C, + a_m_y_ktown_02: 0x297FF13F, + a_m_y_latino_01: 0x132C1A8E, + a_m_y_methhead_01: 0x696BE0A9, + a_m_y_mexthug_01: 0x3053E555, + a_m_y_motox_01: 0x64FDEA7D, + a_m_y_motox_02: 0x77AC8FDA, + a_m_y_musclbeac_01: 0x4B652906, + a_m_y_musclbeac_02: 0xC923247C, + a_m_y_polynesian_01: 0x8384FC9F, + a_m_y_roadcyc_01: 0xF561A4C6, + a_m_y_runner_01: 0x25305EEE, + a_m_y_runner_02: 0x843D9D0F, + a_m_y_salton_01: 0xD7606C30, + a_m_y_skater_01: 0xC1C46677, + a_m_y_skater_02: 0xAFFAC2E4, + a_m_y_soucent_01: 0xE716BDCB, + a_m_y_soucent_02: 0xACA3C8CA, + a_m_y_soucent_03: 0xC3F0F764, + a_m_y_soucent_04: 0x8A3703F1, + a_m_y_stbla_01: 0xCF92ADE9, + a_m_y_stbla_02: 0x98C7404F, + a_m_y_stlat_01: 0x8674D5FC, + a_m_y_stwhi_01: 0x2418C430, + a_m_y_stwhi_02: 0x36C6E98C, + a_m_y_sunbathe_01: 0xB7292F0C, + a_m_y_surfer_01: 0xEAC2C7EE, + a_m_y_vindouche_01: 0xC19377E7, + a_m_y_vinewood_01: 0x4B64199D, + a_m_y_vinewood_02: 0x5D15BD00, + a_m_y_vinewood_03: 0x1FDF4294, + a_m_y_vinewood_04: 0x31C9E669, + a_m_y_yoga_01: 0xAB0A7155, + cs_amandatownley: 0x95EF18E3, + cs_andreas: 0xE7565327, + cs_ashley: 0x26C3D079, + cs_bankman: 0x9760192E, + cs_barry: 0x69591CF7, + cs_beverly: 0xB46EC356, + cs_brad: 0xEFE5AFE6, + cs_bradcadaver: 0x7228AF60, + cs_carbuyer: 0x8CCE790F, + cs_casey: 0xEA969C40, + cs_chengsr: 0x30DB9D7B, + cs_chrisformage: 0xC1F380E6, + cs_clay: 0xDBCB9834, + cs_dale: 0x0CE81655, + cs_davenorton: 0x8587248C, + cs_debra: 0xECD04FE9, + cs_denise: 0x6F802738, + cs_devin: 0x2F016D02, + cs_dom: 0x4772AF42, + cs_dreyfuss: 0x3C60A153, + cs_drfriedlander: 0xA3A35C2F, + cs_fabien: 0x47035EC1, + cs_fbisuit_01: 0x585C0B52, + cs_floyd: 0x062547E7, + cs_guadalope: 0x0F9513F1, + cs_gurk: 0xC314F727, + cs_hunter: 0x5B44892C, + cs_janet: 0x3034F9E2, + cs_jewelass: 0x4440A804, + cs_jimmyboston: 0x039677BD, + cs_jimmydisanto: 0xB8CC92B4, + cs_joeminuteman: 0xF09D5E29, + cs_johnnyklebitz: 0xFA8AB881, + cs_josef: 0x459762CA, + cs_josh: 0x450EEF9D, + cs_karen_daniels: 0x4BAF381C, + cs_lamardavis: 0x45463A0D, + cs_lazlow: 0x38951A1B, + cs_lestercrest: 0xB594F5C3, + cs_lifeinvad_01: 0x72551375, + cs_magenta: 0x5816C61A, + cs_manuel: 0xFBB374CA, + cs_marnie: 0x574DE134, + cs_martinmadrazo: 0x43595670, + cs_maryann: 0x0998C7AD, + cs_michelle: 0x70AEB9C8, + cs_milton: 0xB76A330F, + cs_molly: 0x45918E44, + cs_movpremf_01: 0x4BBA84D9, + cs_movpremmale: 0x8D67EE7D, + cs_mrk: 0xC3CC9A75, + cs_mrs_thornhill: 0x4F921E6E, + cs_mrsphillips: 0xCBFDA3CF, + cs_natalia: 0x4EFEB1F0, + cs_nervousron: 0x7896DA94, + cs_nigel: 0xE1479C0B, + cs_old_man1a: 0x1EEC7BDC, + cs_old_man2: 0x98F9E770, + cs_omega: 0x8B70B405, + cs_orleans: 0xAD340F5A, + cs_paper: 0x6B38B8F8, + cs_patricia: 0xDF8B1301, + cs_priest: 0x4D6DE57E, + cs_prolsec_02: 0x1E9314A2, + cs_russiandrunk: 0x46521A32, + cs_siemonyetarian: 0xC0937202, + cs_solomon: 0xF6D1E04E, + cs_stevehains: 0xA4E0A1FE, + cs_stretch: 0x893D6805, + cs_tanisha: 0x42FE5370, + cs_taocheng: 0x8864083D, + cs_taostranslator: 0x53536529, + cs_tenniscoach: 0x5C26040A, + cs_terry: 0x3A5201C5, + cs_tom: 0x69E8ABC3, + cs_tomepsilon: 0x8C0FD4E2, + cs_tracydisanto: 0x0609B130, + cs_wade: 0xD266D9D6, + cs_zimbor: 0xEAACAAF0, + csb_abigail: 0x89768941, + csb_agent: 0xD770C9B4, + csb_anita: 0x0703F106, + csb_anton: 0xA5C787B6, + csb_ballasog: 0xABEF0004, + csb_bride: 0x82BF7EA1, + csb_burgerdrug: 0x8CDCC057, + csb_car3guy1: 0x04430687, + csb_car3guy2: 0x1383A508, + csb_chef: 0xA347CA8A, + csb_chef2: 0xAE5BE23A, + csb_chin_goon: 0xA8C22996, + csb_cletus: 0xCAE9E5D5, + csb_cop: 0x9AB35F63, + csb_customer: 0xA44F6F8B, + csb_denise_friend: 0xB58D2529, + csb_fos_rep: 0x1BCC157B, + csb_g: 0xA28E71D7, + csb_groom: 0x7AAB19D2, + csb_grove_str_dlr: 0xE8594E22, + csb_hao: 0xEC9E8F1C, + csb_hugh: 0x6F139B54, + csb_imran: 0xE3420BDB, + csb_jackhowitzer: 0x44BC7BB1, + csb_janitor: 0xC2005A40, + csb_maude: 0xBCC475CB, + csb_money: 0x989DFD9A, + csb_mp_agent14: 0x6DBBFC8B, + csb_mweather: 0x613E626C, + csb_ortega: 0xC0DB04CF, + csb_oscar: 0xF41F399B, + csb_paige: 0x5B1FA0C3, + csb_popov: 0x617D89E2, + csb_porndudes: 0x2F4AFE35, + csb_prologuedriver: 0xF00B49DB, + csb_prolsec: 0x7FA2F024, + csb_ramp_gang: 0xC2800DBE, + csb_ramp_hic: 0x858C94B8, + csb_ramp_hipster: 0x21F58BB4, + csb_ramp_marine: 0x616C97B9, + csb_ramp_mex: 0xF64ED7D0, + csb_rashcosvki: 0x188099A9, + csb_reporter: 0x2E420A24, + csb_roccopelosi: 0xAA64168C, + csb_screen_writer: 0x8BE12CEC, + csb_stripper_01: 0xAEEA76B5, + csb_stripper_02: 0x81441B71, + csb_tonya: 0x6343DD19, + csb_trafficwarden: 0xDE2937F3, + csb_undercover: 0xEF785A6A, + csb_vagspeak: 0x48FF4CA9, + g_f_importexport_01: 0x84A1B11A, + g_f_y_ballas_01: 0x158C439C, + g_f_y_families_01: 0x4E0CE5D3, + g_f_y_lost_01: 0xFD5537DE, + g_f_y_vagos_01: 0x5AA42C21, + g_m_importexport_01: 0xBCA2CCEA, + g_m_m_armboss_01: 0xF1E823A2, + g_m_m_armgoon_01: 0xFDA94268, + g_m_m_armlieut_01: 0xE7714013, + g_m_m_chemwork_01: 0xF6157D8F, + g_m_m_chiboss_01: 0xB9DD0300, + g_m_m_chicold_01: 0x106D9A99, + g_m_m_chigoon_01: 0x7E4F763F, + g_m_m_chigoon_02: 0xFF71F826, + g_m_m_korboss_01: 0x352A026F, + g_m_m_mexboss_01: 0x5761F4AD, + g_m_m_mexboss_02: 0x4914D813, + g_m_y_armgoon_02: 0xC54E878A, + g_m_y_azteca_01: 0x68709618, + g_m_y_ballaeast_01: 0xF42EE883, + g_m_y_ballaorig_01: 0x231AF63F, + g_m_y_ballasout_01: 0x23B88069, + g_m_y_famca_01: 0xE83B93B7, + g_m_y_famdnf_01: 0xDB729238, + g_m_y_famfor_01: 0x84302B09, + g_m_y_korean_01: 0x247502A9, + g_m_y_korean_02: 0x8FEDD989, + g_m_y_korlieut_01: 0x7CCBE17A, + g_m_y_lost_01: 0x4F46D607, + g_m_y_lost_02: 0x3D843282, + g_m_y_lost_03: 0x32B11CDC, + g_m_y_mexgang_01: 0xBDDD5546, + g_m_y_mexgoon_01: 0x26EF3426, + g_m_y_mexgoon_02: 0x31A3498E, + g_m_y_mexgoon_03: 0x964D12DC, + g_m_y_pologoon_01: 0x4F3FBA06, + g_m_y_pologoon_02: 0xA2E86156, + g_m_y_salvaboss_01: 0x905CE0CA, + g_m_y_salvagoon_01: 0x278C8CB7, + g_m_y_salvagoon_02: 0x3273A285, + g_m_y_salvagoon_03: 0x03B8C510, + g_m_y_strpunk_01: 0xFD1C49BB, + g_m_y_strpunk_02: 0x0DA1EAC6, + hc_driver: 0x3B474ADF, + hc_gunman: 0x0B881AEE, + hc_hacker: 0x99BB00F8, + ig_abigail: 0x400AEC41, + ig_agent: 0x246AF208, + ig_amandatownley: 0x6D1E15F7, + ig_andreas: 0x47E4EEA0, + ig_ashley: 0x7EF440DB, + ig_avon: 0xFCE270C2, + ig_ballasog: 0xA70B4A92, + ig_bankman: 0x909D9E7F, + ig_barry: 0x2F8845A3, + ig_benny: 0xC4B715D2, + ig_bestmen: 0x5746CD96, + ig_beverly: 0xBDA21E5C, + ig_brad: 0xBDBB4922, + ig_bride: 0x6162EC47, + ig_car3guy1: 0x84F9E937, + ig_car3guy2: 0x75C34ACA, + ig_casey: 0xE0FA2554, + ig_chef: 0x49EADBF6, + ig_chef2: 0x85889AC3, + ig_chengsr: 0xAAE4EA7B, + ig_chrisformage: 0x286E54A7, + ig_clay: 0x6CCFE08A, + ig_claypain: 0x9D0087A8, + ig_cletus: 0xE6631195, + ig_dale: 0x467415E9, + ig_davenorton: 0x15CD4C33, + ig_denise: 0x820B33BD, + ig_devin: 0x7461A0B0, + ig_dom: 0x9C2DB088, + ig_dreyfuss: 0xDA890932, + ig_drfriedlander: 0xCBFC0DF5, + ig_fabien: 0xD090C350, + ig_fbisuit_01: 0x3AE4A33B, + ig_floyd: 0xB1B196B2, + ig_g: 0x841BA933, + ig_groom: 0xFECE8B85, + ig_hao: 0x65978363, + ig_hunter: 0xCE1324DE, + ig_janet: 0x0D6D9C49, + ig_jay_norris: 0x7A32EE74, + ig_jewelass: 0x0F5D26BB, + ig_jimmyboston: 0xEDA0082D, + ig_jimmydisanto: 0x570462B9, + ig_joeminuteman: 0xBE204C9B, + ig_johnnyklebitz: 0x87CA80AE, + ig_josef: 0xE11A9FB4, + ig_josh: 0x799E9EEE, + ig_karen_daniels: 0xEB51D959, + ig_kerrymcintosh: 0x5B3BD90D, + ig_lamardavis: 0x65B93076, + ig_lazlow: 0xDFE443E5, + ig_lestercrest_2: 0x6E42FD26, + ig_lestercrest: 0x4DA6E849, + ig_lifeinvad_01: 0x5389A93C, + ig_lifeinvad_02: 0x27BD51D4, + ig_magenta: 0xFCDC910A, + ig_malc: 0xF1BCA919, + ig_manuel: 0xFD418E10, + ig_marnie: 0x188232D0, + ig_maryann: 0xA36F9806, + ig_maude: 0x3BE8287E, + ig_michelle: 0xBF9672F4, + ig_milton: 0xCB3059B2, + ig_molly: 0xAF03DDE1, + ig_money: 0x37FACDA6, + ig_mp_agent14: 0xFBF98469, + ig_mrk: 0xEDDCAB6D, + ig_mrs_thornhill: 0x1E04A96B, + ig_mrsphillips: 0x3862EEA8, + ig_natalia: 0xDE17DD3B, + ig_nervousron: 0xBD006AF1, + ig_nigel: 0xC8B7167D, + ig_old_man1a: 0x719D27F4, + ig_old_man2: 0xEF154C47, + ig_omega: 0x60E6A7D8, + ig_oneil: 0x2DC6D3E7, + ig_orleans: 0x61D4C771, + ig_ortega: 0x26A562B7, + ig_paige: 0x154FCF3F, + ig_paper: 0x999B00C6, + ig_patricia: 0xC56E118C, + ig_popov: 0x267630FE, + ig_priest: 0x6437E77D, + ig_prolsec_02: 0x27B3AD75, + ig_ramp_gang: 0xE52E126C, + ig_ramp_hic: 0x45753032, + ig_ramp_hipster: 0xDEEF9F6E, + ig_ramp_mex: 0xE6AC74A4, + ig_rashcosvki: 0x380C4DE6, + ig_roccopelosi: 0xD5BA52FF, + ig_russiandrunk: 0x3D0A5EB1, + ig_screen_writer: 0xFFE63677, + ig_siemonyetarian: 0x4C7B2F05, + ig_solomon: 0x86BDFE26, + ig_stevehains: 0x382121C8, + ig_stretch: 0x36984358, + ig_talina: 0xE793C8E8, + ig_tanisha: 0x0D810489, + ig_taocheng: 0xDC5C5EA5, + ig_taostranslator: 0x7C851464, + ig_tenniscoach: 0xA23B5F57, + ig_terry: 0x67000B94, + ig_tomepsilon: 0xCD777AAA, + ig_tonya: 0xCAC85344, + ig_tracydisanto: 0xDE352A35, + ig_trafficwarden: 0x5719786D, + ig_tylerdix: 0x5265F707, + ig_vagspeak: 0xF9FD068C, + ig_wade: 0x92991B72, + ig_zimbor: 0x0B34D6F5, + mp_f_boatstaff_01: 0x3293B9CE, + mp_f_cardesign_01: 0x242C34A7, + mp_f_chbar_01: 0xC3F6E385, + mp_f_cocaine_01: 0x4B657AF8, + mp_f_counterfeit_01: 0xB788F1F5, + mp_f_deadhooker: 0x73DEA88B, + mp_f_execpa_01: 0x432CA064, + mp_f_execpa_02: 0x5972CCF0, + mp_f_forgery_01: 0x781A3CF8, + mp_f_freemode_01: 0x9C9EFFD8, + mp_f_helistaff_01: 0x19B6FF06, + mp_f_meth_01: 0xD2B27EC1, + mp_f_misty_01: 0xD128FF9D, + mp_f_stripperlite: 0x2970A494, + mp_f_weed_01: 0xB26573A3, + mp_g_m_pros_01: 0x6C9DD7C9, + mp_m_avongoon: 0x9C13CB95, + mp_m_boatstaff_01: 0xC85F0A88, + mp_m_bogdangoon: 0x4D5696F7, + mp_m_claude_01: 0xC0F371B7, + mp_m_cocaine_01: 0x56D38F95, + mp_m_counterfeit_01: 0x9855C974, + mp_m_exarmy_01: 0x45348DBB, + mp_m_execpa_01: 0x3E8417BC, + mp_m_famdd_01: 0x33A464E5, + mp_m_fibsec_01: 0x5CDEF405, + mp_m_forgery_01: 0x613E709B, + mp_m_freemode_01: 0x705E61F2, + mp_m_g_vagfun_01: 0xC4A617BD, + mp_m_marston_01: 0x38430167, + mp_m_meth_01: 0xEDB42F3F, + mp_m_niko_01: 0xEEDACFC9, + mp_m_securoguard_01: 0xDA2C984E, + mp_m_shopkeep_01: 0x18CE57D0, + mp_m_waremech_01: 0xF7A74139, + mp_m_weapexp_01: 0x36EA5B09, + mp_m_weapwork_01: 0x4186506E, + mp_m_weed_01: 0x917ED459, + mp_s_m_armoured_01: 0xCDEF5408, + player_one: 0x9B22DBAF, + player_two: 0x9B810FA2, + player_zero: 0x0D7114C9, + s_f_m_fembarber: 0x163B875B, + s_f_m_maid_01: 0xE093C5C6, + s_f_m_shop_high: 0xAE47E4B0, + s_f_m_sweatshop_01: 0x312B5BC0, + s_f_y_airhostess_01: 0x5D71A46F, + s_f_y_bartender_01: 0x780C01BD, + s_f_y_baywatch_01: 0x4A8E5536, + s_f_y_cop_01: 0x15F8700D, + s_f_y_factory_01: 0x69F46BF3, + s_f_y_hooker_01: 0x028ABF95, + s_f_y_hooker_02: 0x14C3E407, + s_f_y_hooker_03: 0x031640AC, + s_f_y_migrant_01: 0xD55B2BF5, + s_f_y_movprem_01: 0x2300C816, + s_f_y_ranger_01: 0x9FC7F637, + s_f_y_scrubs_01: 0xAB594AB6, + s_f_y_sheriff_01: 0x4161D042, + s_f_y_shop_low: 0xA96E2604, + s_f_y_shop_mid: 0x3EECBA5D, + s_f_y_stripper_01: 0x52580019, + s_f_y_stripper_02: 0x6E0FB794, + s_f_y_stripperlite: 0x5C14EDFA, + s_f_y_sweatshop_01: 0x8502B6B2, + s_m_m_ammucountry: 0x0DE9A30A, + s_m_m_armoured_01: 0x95C76ECD, + s_m_m_armoured_02: 0x63858A4A, + s_m_m_autoshop_01: 0x040EABE3, + s_m_m_autoshop_02: 0xF06B849D, + s_m_m_bouncer_01: 0x9FD4292D, + s_m_m_ccrew_01: 0xC9E5F56B, + s_m_m_chemsec_01: 0x2EFEAFD5, + s_m_m_ciasec_01: 0x625D6958, + s_m_m_cntrybar_01: 0x1A021B83, + s_m_m_dockwork_01: 0x14D7B4E0, + s_m_m_doctor_01: 0xD47303AC, + s_m_m_fiboffice_01: 0xEDBC7546, + s_m_m_fiboffice_02: 0x26F067AD, + s_m_m_fibsec_01: 0x7B8B434B, + s_m_m_gaffer_01: 0xA956BD9E, + s_m_m_gardener_01: 0x49EA5685, + s_m_m_gentransport: 0x1880ED06, + s_m_m_hairdress_01: 0x418DFF92, + s_m_m_highsec_01: 0xF161D212, + s_m_m_highsec_02: 0x2930C1AB, + s_m_m_janitor: 0xA96BD9EC, + s_m_m_lathandy_01: 0x9E80D2CE, + s_m_m_lifeinvad_01: 0xDE0077FD, + s_m_m_linecook: 0xDB9C0997, + s_m_m_lsmetro_01: 0x765AAAE4, + s_m_m_mariachi_01: 0x7EA4FFA6, + s_m_m_marine_01: 0xF2DAA2ED, + s_m_m_marine_02: 0xF0259D83, + s_m_m_migrant_01: 0xED0CE4C6, + s_m_m_movalien_01: 0x64611296, + s_m_m_movprem_01: 0xD85E6D28, + s_m_m_movspace_01: 0xE7B31432, + s_m_m_paramedic_01: 0xB353629E, + s_m_m_pilot_01: 0xE75B4B1C, + s_m_m_pilot_02: 0xF63DE8E1, + s_m_m_postal_01: 0x62599034, + s_m_m_postal_02: 0x7367324F, + s_m_m_prisguard_01: 0x56C96FC6, + s_m_m_scientist_01: 0x4117D39B, + s_m_m_security_01: 0xD768B228, + s_m_m_snowcop_01: 0x1AE8BB58, + s_m_m_strperf_01: 0x795AC7A8, + s_m_m_strpreach_01: 0x1C0077FB, + s_m_m_strvend_01: 0xCE9113A9, + s_m_m_trucker_01: 0x59511A6C, + s_m_m_ups_01: 0x9FC37F22, + s_m_m_ups_02: 0xD0BDE116, + s_m_o_busker_01: 0xAD9EF1BB, + s_m_y_airworker: 0x62018559, + s_m_y_ammucity_01: 0x9E08633D, + s_m_y_armymech_01: 0x62CC28E2, + s_m_y_autopsy_01: 0xB2273D4E, + s_m_y_barman_01: 0xE5A11106, + s_m_y_baywatch_01: 0x0B4A6862, + s_m_y_blackops_01: 0xB3F3EE34, + s_m_y_blackops_02: 0x7A05FA59, + s_m_y_blackops_03: 0x5076A73B, + s_m_y_busboy_01: 0xD8F9CD47, + s_m_y_chef_01: 0x0F977CEB, + s_m_y_clown_01: 0x04498DDE, + s_m_y_construct_01: 0xD7DA9E99, + s_m_y_construct_02: 0xC5FEFADE, + s_m_y_cop_01: 0x5E3DA4A4, + s_m_y_dealer_01: 0xE497BBEF, + s_m_y_devinsec_01: 0x9B557274, + s_m_y_dockwork_01: 0x867639D1, + s_m_y_doorman_01: 0x22911304, + s_m_y_dwservice_01: 0x75D30A91, + s_m_y_dwservice_02: 0xF5908A06, + s_m_y_factory_01: 0x4163A158, + s_m_y_fireman_01: 0xB6B1EDA8, + s_m_y_garbage: 0xEE75A00F, + s_m_y_grip_01: 0x309E7DEA, + s_m_y_hwaycop_01: 0x739B1EF5, + s_m_y_marine_01: 0x65793043, + s_m_y_marine_02: 0x58D696FE, + s_m_y_marine_03: 0x72C0CAD2, + s_m_y_mime: 0x3CDCA742, + s_m_y_pestcont_01: 0x48114518, + s_m_y_pilot_01: 0xAB300C07, + s_m_y_prismuscl_01: 0x5F2113A1, + s_m_y_prisoner_01: 0xB1BB9B59, + s_m_y_ranger_01: 0xEF7135AE, + s_m_y_robber_01: 0xC05E1399, + s_m_y_sheriff_01: 0xB144F9B9, + s_m_y_shop_mask: 0x6E122C06, + s_m_y_strvend_01: 0x927F2323, + s_m_y_swat_01: 0x8D8F1B10, + s_m_y_uscg_01: 0xCA0050E9, + s_m_y_valet_01: 0x3B96F23E, + s_m_y_waiter_01: 0xAD4C724C, + s_m_y_winclean_01: 0x550D8D9D, + s_m_y_xmech_01: 0x441405EC, + s_m_y_xmech_02_mp: 0x69147A0D, + s_m_y_xmech_02: 0xBE20FA04, + u_f_m_corpse_01: 0x2E140314, + u_f_m_drowned_01: 0xD7F37609, + u_f_m_miranda: 0x414FA27B, + u_f_m_promourn_01: 0xA20899E7, + u_f_o_moviestar: 0x35578634, + u_f_o_prolhost_01: 0xC512DD23, + u_f_y_bikerchic: 0xFA389D4F, + u_f_y_comjane: 0xB6AA85CE, + u_f_y_corpse_01: 0x9C70109D, + u_f_y_corpse_02: 0x0D9C72F8, + u_f_y_hotposh_01: 0x969B6DFE, + u_f_y_jewelass_01: 0xF0D4BE2E, + u_f_y_mistress: 0x5DCA2528, + u_f_y_poppymich: 0x23E9A09E, + u_f_y_princess: 0xD2E3A284, + u_f_y_spyactress: 0x5B81D86C, + u_m_m_aldinapoli: 0xF0EC56E2, + u_m_m_bankman: 0xC306D6F5, + u_m_m_bikehire_01: 0x76474545, + u_m_m_doa_01: 0x621E6BFD, + u_m_m_edtoh: 0x2A797197, + u_m_m_fibarchitect: 0x342333D3, + u_m_m_filmdirector: 0x2B6E1BB6, + u_m_m_glenstank_01: 0x45BB1666, + u_m_m_griff_01: 0xC454BCBB, + u_m_m_jesus_01: 0xCE2CB751, + u_m_m_jewelsec_01: 0xACCCBDB6, + u_m_m_jewelthief: 0xE6CC3CDC, + u_m_m_markfost: 0x1C95CB0B, + u_m_m_partytarget: 0x81F74DE7, + u_m_m_prolsec_01: 0x709220C7, + u_m_m_promourn_01: 0xCE96030B, + u_m_m_rivalpap: 0x60D5D6DA, + u_m_m_spyactor: 0xAC0EA5D8, + u_m_m_streetart_01: 0x6C19E962, + u_m_m_willyfist: 0x90769A8F, + u_m_o_filmnoir: 0x2BACC2DB, + u_m_o_finguru_01: 0x46E39E63, + u_m_o_taphillbilly: 0x9A1E5E52, + u_m_o_tramp_01: 0x6A8F1F9B, + u_m_y_abner: 0xF0AC2626, + u_m_y_antonb: 0xCF623A2C, + u_m_y_babyd: 0xDA116E7E, + u_m_y_baygor: 0x5244247D, + u_m_y_burgerdrug_01: 0x8B7D3766, + u_m_y_chip: 0x24604B2B, + u_m_y_corpse_01: 0x94C2A03F, + u_m_y_cyclist_01: 0x2D0EFCEB, + u_m_y_fibmugger_01: 0x85B9C668, + u_m_y_guido_01: 0xC6B49A2F, + u_m_y_gunvend_01: 0xB3229752, + u_m_y_hippie_01: 0xF041880B, + u_m_y_imporage: 0x348065F5, + u_m_y_juggernaut_01: 0x90EF5134, + u_m_y_justin: 0x7DC3908F, + u_m_y_mani: 0xC8BB1E52, + u_m_y_militarybum: 0x4705974A, + u_m_y_paparazzi: 0x5048B328, + u_m_y_party_01: 0x36E70600, + u_m_y_pogo_01: 0xDC59940D, + u_m_y_prisoner_01: 0x7B9B4BC0, + u_m_y_proldriver_01: 0x855E36A3, + u_m_y_rsranger_01: 0x3C438CD2, + u_m_y_sbike: 0x6AF4185D, + u_m_y_staggrm_01: 0x9194CE03, + u_m_y_tattoo_01: 0x94AE2B8C, + u_m_y_zombie_01: 0xAC4B4506, + } + var CreatedPeds = []; + mp.events.add("SERVER:CreateStaticPeds", (jsonVector3s, jsonHeadings, jsonCharHashes, jsonDimension) => { + var vector3s = JSON.parse(jsonVector3s); + var headings = JSON.parse(jsonHeadings); + var charHashes = JSON.parse(jsonCharHashes); + var dimension = JSON.parse(jsonDimension); + for (var i = 0; i < vector3s.length; i++) { + let p = mp.peds.new(Number(charHashes[i]), vector3s[i], headings[i], dimension[i]); + p.freezePosition(true); + p.setInvincible(true); + p.setCollision(false, false); + CreatedPeds.push(p); + } + }); + mp.events.add('entityStreamIn', (entity: EntityMp) => { + CreatedPeds.forEach(function (p) { + if (entity == p) { + + p.freezePosition(true); + p.setInvincible(true); + p.setCollision(false, false); + } + }); + }); +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/css/inventory - backup with Trade.css b/ReallifeGamemode.Client/assets/html/inventory/css/inventory - backup with Trade.css new file mode 100644 index 00000000..1714eb32 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/css/inventory - backup with Trade.css @@ -0,0 +1,968 @@ +@font-face { + font-family: OSL; + src: url(../font/OSL.ttf); +} + +* { + -webkit-border-radius: 0; + -moz-border-radius: 0; + border-radius: 0; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +body { + width: 100%; + height: 100%; + margin: 0px auto; + background-color: transparent; +} + +.main2 { + z-index: 2; + background: #0c0c0cc4; + position: absolute; + padding-left: 100%; + padding-top: 100%; +} + +.main { + z-index: 1; + background: #272727; + position: absolute; + left: 19vw; + padding-left: 53vw; + padding-top: 33vw; + top: 5vw; + transition: 0.2s; +} + +.title { + font-size: 2vw; + position: absolute; + color: #fff; + font-family: 'OSL'; + left: 1vw; + top: 0.2vw; + background: #1b1b1b; +} + +.titletext { + position: absolute; + left: 21vw; + background: #1b1b1b; + padding-right: 22.7vw; +} + +.sidebar { + z-index: 1; + position: absolute; + right: 72.5vw; + cursor: pointer; + z-index: 200; + top: 9.5vw; +} + +.sidebaritem1 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem2 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem3 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem4 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem5 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem6 { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.sidebaritem { + z-index: 1; + margin-bottom: 0.2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.1vw; + transition: 0.2s; +} + +.items { + position: absolute; + left: 5.5vw; + top: 2.5vw; + cursor: default; + width: 6vw; +} + +.item { +} + +ul { + float: left; +} + +li { + display: block; +} + +.titlecount { + position: absolute; + font-size: 0.7vw; + width: 16.3vw; + top: 0vw; + background: #1b1b1b; + padding-top: 1.8vw; + left: -1vw; + padding-right: 10vw; + padding-left: 0.2vw; +} + +.sideicon1 { + padding-top: 0.2vw; +} + +.sideicon2 { + padding-top: 0.2vw; +} + +.sideicon3 { + padding-top: 0.2vw !important; +} + +.sideicon4 { + padding-top: 0.2vw; +} + +.sideicon5 { +} + +.sideicon6 { +} + +.sideicon7 { + width: 5vw; +} + +.sideicon8 { + width: 5vw; +} + +.sideicon9 { + width: 5vw; +} + +.sideicon10 { + width: 5vw; +} + +.sideicon11 { + width: 5vw; +} + +.sideicon12 { + width: 5vw; +} + +.sideicon13 { + width: 5vw; +} + +.sideicon14 { + width: 5vw; +} + +.sideicon15 { + width: 2vw; +} + +.sideicon16 { + width: 5vw; +} + +.sideicon17 { + width: 5vw; +} + +.sideicon18 { + width: 5vw; +} + +.sideicon7, .sideicon8, .sideicon9, .sideicon10, .sideicon11, .sideicon12, .sideicon13, .sideicon14, .sideicon15, .sideicon16, .sideicon17, .sideicon18 { + position: absolute; + left: 2.1vw; + top: 0.6vw; +} + +.sideicon1, .sideicon2, .sideicon3, .sideicon4, .sideicon5, .sideicon6 { + width: 2vw; + padding-bottom: 1.8vw; +} + +.bartext { + margin-top: -6.5vw; + font-size: 0.8vw; +} + +.sidebaritem1:hover { + background: #131313; +} + +.sidebaritem2:hover { + background: #131313; +} + +.sidebaritem3:hover { + background: #131313; +} + +.sidebaritem4:hover { + background: #131313; +} + +.sidebaritem5:hover { + background: #131313; +} + +.sidebaritem6:hover { + background: #131313; +} + +li.item1 { +} + +li.item2 { + top: -22vw; + left: 9vw; +} + +li.item3 { + top: -46vw; + left: 16vw; +} + +li.item4 { + top: -70vw; + left: 23vw; +} + +li.item5 { + top: -94vw; + left: 30vw; +} + +li.item6 { + top: -118vw; + left: 37vw; +} + +.item1, .item2, .item3, .item4, .item5, .item6 { + color: #fff; + font-family: 'OSL'; + position: relative; + margin-bottom: 2vw; + color: #fff; + font-family: OSL; + width: 6vw; + background: #1b1b1b; + height: 4vw; + text-align: center; + line-height: 6.5vw; + transition: 0.2s; + font-size: 0.5vw; + left: 2vw; + top: 2vw; +} + +.show { + display: show !important; +} + +.hidden { + display: none !important; +} + +.green { + z-index: 1; + position: relative; + width: 6vw; + background: #55ff0096; + height: 4vw; + line-height: 1; + top: -8vw; + cursor: pointer; + opacity: 0.0; + transition: 0.3s; +} + + .green:hover { + opacity: 1 + } + +.red { + z-index: 1; + position: relative; + width: 2.5vw; + left: 3.5vw; + background: #6d2525; + height: 1.5vw; + line-height: 1; + top: -2.4vw; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .red:hover { + opacity: 1 + } + +.blue { + z-index: 1; + position: relative; + width: 2.5vw; + left: 0vw; + background: #0d91af8c; + height: 1.5vw; + line-height: 1; + top: -7.9vw; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .blue:hover { + opacity: 1 + } + +.blue2 { + z-index: 1; + position: relative; + width: 2.5vw; + left: 0vw; + background: #0d91af8c; + height: 1.5vw; + line-height: 1; + top: -3.9vw; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .blue2:hover { + opacity: 1 + } + +.redImg { + width: 1.3vw; + margin-top: 0.1vw; +} + +.blueImg { + width: 1.3vw; + margin-top: 0.1vw; +} + +.greenImg { + width: 1.3vw; + margin-top: 1.2vw; +} + +body select { + display: block; + padding: 10px 70px 11px 13px !important; + margin-top: -29.9vw; + margin-left: -30.6vw; + height: auto !important; + border: 1px solid #000000; + border-radius: 3px; + background: url(https://i.ibb.co/b7xjLrB/selectbox-arrow.png) right center no-repeat; + background-color: #404040; + color: #fffbfb; + font-size: 12px; + line-height: 12px !important; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + /* body select.select_box option */ + body select option { + padding: 0 4px; + } +/* for IE and Edge */ +select::-ms-expand { + display: none; +} + +select:disabled::-ms-expand { + background: #f60; +} + +.Betrag { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +.Betrag4 { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +.Betrag3 { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +.Betrag2 { + z-index: 2; + background: rgba(0,0,0,0.6); + height: 100%; + width: 100%; + display: block; + transform: translate(-50%, -50%); + position: absolute; + left: 50%; + top: 50%; +} + +t#tf_nameorid { + background-color: #313131; + border: none; + height: 1.2vw; + width: 6vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 12px; + position: relative; + left: -30.1vw; + top: -29.9vw; + color: #ffffff; +} + +#tf_submitTrade { + background-color: #267d00; + border: none; + height: 1.2vw; + width: 4vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: -30vw; + top: -29.9vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitTrade { + opacity: 1; +} + +#tf_zahl { + background-color: #313131; /* blau */ + border: none; + height: 30px; + width: 124px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 12px; + position: relative; + left: 42%; + top: 40%; + color: #ffffff; +} + +#tf_cancle { + background-color: #ff0000; + border: none; + height: 32px; + width: 124px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: 33.7%; + top: 44%; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl { + background-color: #008CBA; /* blau */ + border: none; + height: 32px; + width: 124px; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 16px; + font-color: white; + position: relative; + left: 42%; + top: 40%; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl { + opacity: 1; +} + +#tf_zahl4 { + background-color: #313131; + border: none; + height: 1.5vw; + width: 5vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.6vw; + position: relative; + left: 19vw; + top: 13vw; + color: #ffffff; +} + +#tf_cancle4 { + background-color: #ff0000; + border: none; + height: 0.9vw; + width: 3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: relative; + left: 17.8vw; + top: 9.4vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_cancle4 { + opacity: 1; +} + +#tf_submitZahl4 { + background-color: #008CBA; + border: none; + height: 1.5vw; + width: 8vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: relative; + left: 21vw; + top: 13vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl4 { + opacity: 1; +} + +#tf_submitTrade { + background-color: #009b03; + border: none; + height: 1.6vw; + width: 4vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: absolute; + color: #ffffff; + top: 3vw; + left: 29.3vw; + opacity: 0.5; + transition: 0.3s; +} + + #tf_submitTrade:hover { + opacity: 1; + } + +#tf_acceptTrade { + background-color: #009b03; + border: none; + height: 1.6vw; + width: 4vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: absolute; + color: #ffffff; + top: 3vw; + left: 29.3vw; + opacity: 0.5; + transition: 0.3s; +} + + #tf_acceptTrade:hover { + opacity: 1; + } + +#tf_cancle3 { + background-color: #ff0000; + border: none; + height: 0.9vw; + width: 3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + font-color: white; + position: relative; + left: 17.8vw; + top: 9.4vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +i + +#tf_cancle3:hover { + opacity: 1 +} + +#tf_cancle:hover { + opacity: 1 +} + +#tf_cancle2:hover { + opacity: 1 +} + +#tf_zahl3 { + background-color: #313131; + border: none; + height: 1.5vw; + width: 5vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.6vw; + position: relative; + left: 19vw; + top: 13vw; + color: #ffffff; +} + +#tf_submitZahl3 { + background-color: #008CBA; + border: none; + height: 1.5vw; + width: 8vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.7vw; + font-color: white; + position: relative; + left: 21vw; + top: 13vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + +#tf_submitZahl3 { + opacity: 1; +} + +.BoxBlue { + background-color: #1b1b1b; + height: 11.1vw; + width: 20.2vw; + position: relative; + margin-top: 11vw; + margin-left: 16vw; +} + +#tf_cancle2 { + background-color: #ff0000; + border: none; + height: 1vw; + width: 3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 5.45vw; + top: 0vw; + color: #ffffff; +} + +#tf_submitZahlToHandel { + background-color: #008CBA; + border: none; + height: 1.4vw; + width: 7vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.6vw; + position: relative; + left: -3vw; + top: 7vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + + #tf_submitZahlToHandel:hover { + opacity: 1; + } + +#tf_submitZahlToVehicle { + background-color: #008CBA; + border: none; + height: 1.3vw; + width: 7.8vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.6vw; + position: relative; + left: 10.8vw; + top: 5.45vw; + color: #ffffff; + opacity: 0.5; + transition: 0.3s; +} + + #tf_submitZahlToVehicle:hover { + opacity: 1 + } + +#tf_zahl2 { + background-color: #313131; + border: none; + height: 1vw; + width: 4.3vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 0.5vw; + position: relative; + left: 7.5vw; + top: 4.4vw; + color: #ffffff; +} + +select.select_box2 { + margin-top: -1vw; + margin-left: 11.3vw; +} + +.blueIcon1 { + position: relative; + height: 3vw; + margin-bottom: -3.1vw; + margin-left: 13.4vw; +} + +.blueIcon2 { + position: relative; + height: 3vw; + margin-bottom: 0.9vw; + margin-left: 3.4vw; +} + +.blue3 { + z-index: 1; + position: relative; + width: 2.5vw; + left: 0vw; + background: #0d91af8c; + height: 1.5vw; + line-height: 1; + top: -2.45vw; + z-index: 10000; + cursor: pointer; + opacity: 0.5; + transition: 0.3s; +} + + .blue3:hover { + opacity: 1 + } + +#tf_nameorid { + background-color: #313131; + border: none; + height: 1.5vw; + width: 6vw; + text-align: center; + text-decoration: none; + display: inline-block; + font-size: 12px; + position: absolute; + left: 23vw; + top: 3vw; + color: #ffffff; +} + +.alert_green { + z-index: 2; + background: rgba(85, 255, 0, 0.90); + position: relative; + width: 17vw; + height: 1vw; + margin-left: 74.1vw; + padding-bottom: 3vw; + margin-top: -9.5vw; + font-family: 'OSL'; + font-size: 0.9vw; + text-align: center; + line-height: 3.9vw; +} + +.alert_red { + z-index: 2; + background: rgba(175, 0, 0, 0.9); + position: relative; + width: 17vw; + height: 1vw; + margin-left: 74.1vw; + padding-bottom: 3vw; + margin-top: -9.5vw; + font-family: 'OSL'; + text-align: center; + line-height: 3.9vw; + font-size: 0.7vw; + display: none; +} + +.alert_blue { + z-index: 2; + background: rgba(0, 140, 186, 0.90); + position: relative; + width: 17vw; + height: 1vw; + margin-left: 74.1vw; + padding-bottom: 3vw; + margin-top: -9.5vw; + font-family: 'OSL'; + text-align: center; + line-height: 3.9vw; + font-size: 0.7vw; + display: none; +} + +.alerts { + margin-bottom: 47.5vw; + padding-top: 43.3vw; +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash2.svg b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash2.svg new file mode 100644 index 00000000..418dd4e8 --- /dev/null +++ b/ReallifeGamemode.Client/assets/html/inventory/img/backpack/trash2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ReallifeGamemode.Client/util/attachmentMngr.ts b/ReallifeGamemode.Client/util/attachmentMngr.ts new file mode 100644 index 00000000..79f54a6e --- /dev/null +++ b/ReallifeGamemode.Client/util/attachmentMngr.ts @@ -0,0 +1,279 @@ +import { IGame, EntityType } from "../game"; +import relativeVector from "./relativevector"; + +export default function attachmentManager(game: IGame) { + mp.events.add("SERVER:LoadAttachments", () => { + attachmentMngr.register("char_creator_1", "prop_beggers_sign_04", 28422, new mp.Vector3(0, 0, 0), new mp.Vector3(0, 0, 0)); + attachmentMngr.register("ammobox", "gr_prop_gr_crate_mag_01a", 28422, new mp.Vector3(0, -0.18, -0.18), new mp.Vector3(0, 0, 0)); + attachmentMngr.register("binbag", "prop_cs_rub_binbag_01", 28422, new mp.Vector3(0.08, 0.0, -0.03), new mp.Vector3(270.0, 0.0, 25.0)); + attachmentMngr.register("weapondeal", "ex_prop_crate_ammo_bc", "chassis_dummy", new mp.Vector3(0.08, -0.9, -0.2), new mp.Vector3(0, 0, 0)); + attachmentMngr.register("weapondeal1", "ex_office_swag_guns02", "chassis_dummy", new mp.Vector3(0, 0.8, 0), new mp.Vector3(0, 0, 0)); + attachmentMngr.register("weapondeal2", "w_sg_pumpshotgun", "weapondeal2w_sg_pumpshotgun", new mp.Vector3(0.4, 1.6, 0.62), new mp.Vector3(90, 0, 180)); + }); + + const attachmentMngr = + { + attachments: {}, + + addFor: function (entityRage, id) { + let entity; + if (entityRage.type === "player") { + entity = game.players.at(entityRage.remoteId); + } else if (entityRage.type === "vehicle") { + entity = game.vehicles.at(entityRage.remoteId); + } + + let e = game.attachments.get(entity); + + if (this.attachments.hasOwnProperty(id)) { + if (e.__attachmentObjects == undefined) { e.__attachmentObjects = []; } + if (!e.__attachmentObjects.hasOwnProperty(id)) { + let attInfo = this.attachments[id]; + let object = mp.objects.new(attInfo.model, entityRage.position); + + object.attachTo(entityRage.handle, + (typeof (attInfo.boneName) === 'string') ? entityRage.getBoneIndexByName(attInfo.boneName) : entityRage.getBoneIndex(attInfo.boneName), + attInfo.offset.x, attInfo.offset.y, attInfo.offset.z, + attInfo.rotation.x, attInfo.rotation.y, attInfo.rotation.z, + false, false, false, false, 2, true); + + e.__attachmentObjects[id] = object; + } + } + else { + mp.game.graphics.notify(`Static Attachments Error: ~r~Unknown Attachment Used: ~w~0x${id.toString(16)}`); + } + }, + + removeFor: function (entityRage, id) { + let entity; + if (entityRage.type === "player") { + entity = game.players.at(entityRage.remoteId); + } else if (entityRage.type === "vehicle") { + entity = game.vehicles.at(entityRage.remoteId); + } + let e = game.attachments.get(entity); + + if (e.__attachmentObjects.hasOwnProperty(id)) { + let obj = e.__attachmentObjects[id]; + + obj.destroy(); + delete e.__attachmentObjects[id]; + } + }, + + initFor: function (entityRage) { + let entity; + if (entityRage.type === "player") { + entity = game.players.at(entityRage.remoteId); + } else if (entityRage.type === "vehicle") { + entity = game.vehicles.at(entityRage.remoteId); + } + + let e = game.attachments.get(entity); + if (e != null) { + for (let attachment of e.__attachments) { + attachmentMngr.addFor(entityRage, attachment); + } + } + }, + + shutdownFor: function (entityRage) { + let entity; + if (entityRage.type === "player") { + entity = game.players.at(entityRage.remoteId); + } else if (entityRage.type === "vehicle") { + entity = game.vehicles.at(entityRage.remoteId); + } + + let e = game.attachments.get(entity); + if (e != null) { + for (let attachment of e.__attachments) { + attachmentMngr.removeFor(entityRage, attachment); + } + } + }, + + register: function (id, model, boneName, offset, rotation) { + if (typeof (id) === 'string') { + id = mp.game.joaat(id); + } + + if (typeof (model) === 'string') { + model = mp.game.joaat(model); + } + + if (!this.attachments.hasOwnProperty(id)) { + if (mp.game.streaming.isModelInCdimage(model)) { + this.attachments[id] = + + { + id: id, + model: model, + offset: offset, + rotation: rotation, + boneName: boneName + }; + } + else { + mp.game.graphics.notify(`Static Attachments Error: ~r~Invalid Model(0x${model.toString(16)})`); + } + } + else { + mp.game.graphics.notify("Static Attachments Error: ~r~Duplicate Entry"); + } + }, + + unregister: function (id) { + if (typeof (id) === 'string') { + id = mp.game.joaat(id); + } + + if (this.attachments.hasOwnProperty(id)) { + this.attachments[id] = undefined; + } + }, + + addLocal: function (attachmentName) { + if (typeof (attachmentName) === 'string') { + attachmentName = mp.game.joaat(attachmentName); + } + + let entity = game.players.local; + let e = game.attachments.get(entity); + + if (!e.__attachments || e.__attachments.indexOf(attachmentName) === -1) { + mp.events.callRemote("staticAttachments.Add", attachmentName.toString(36)); + } + }, + + removeLocal: function (attachmentName) { + if (typeof (attachmentName) === 'string') { + attachmentName = mp.game.joaat(attachmentName); + } + + let entity = game.players.local; + let e = game.attachments.get(entity); + + if (e.__attachments && e.__attachments.indexOf(attachmentName) !== -1) { + mp.events.callRemote("staticAttachments.Remove", attachmentName.toString(36)); + } + }, + + getAttachments: function () { + return Object.assign({}, this.attachments); + } + }; + + mp.events.add("entityStreamIn", (entityRage) => { + if (entityRage.type === "player" || entityRage.type === "vehicle") { + let entity; + if (entityRage.type === "player") { + entity = game.players.at(entityRage.remoteId); + } else if (entityRage.type === "vehicle") { + entity = game.vehicles.at(entityRage.remoteId); + } + let e = game.attachments.get(entity); + if (e != null) { + if (e.__attachments) { + game.wait(5000); + attachmentMngr.initFor(entityRage); + } + } + } + }); + + mp.events.add("entityStreamOut", (entityRage) => { + if (entityRage == mp.players.local.vehicle) { mp.gui.chat.push("lol"); return; } + if (entityRage.type === "player" || entityRage.type === "vehicle") { + let e = game.attachments.at(entityRage.remoteId); + + if (e != null) { + if (e.__attachmentObjects) { + //game.wait(2500); + attachmentMngr.shutdownFor(entityRage); + } + } + } + }); + + mp.events.addDataHandler("attachmentsData", (entityRage, data) => { + let newAttachments = (data != null) ? data.split('|').map(att => parseInt(att, 36)) : []; + + if (entityRage.handle !== 0) { + let entity; + if (entityRage.type === "player") { + entity = game.players.at(entityRage.remoteId); + } else if (entityRage.type === "vehicle") { + entity = game.vehicles.at(entityRage.remoteId); + } + let e = game.attachments.get(entity); + if (e == null) { + let __attachments = []; + let __attachmentObjects = []; + e = game.attachments.set(entity, __attachments, __attachmentObjects); + } + + let oldAttachments = e.__attachments; + + if (!oldAttachments) { + oldAttachments = []; + e.__attachmentObjects = []; + } + + // process outdated first + for (let attachment of oldAttachments.keys()) { + var obj = oldAttachments[attachment]; + if (newAttachments.indexOf(obj) === -1) { + attachmentMngr.removeFor(entityRage, obj); + } + } + + // then new attachments + for (let attachment of newAttachments) { + if (oldAttachments.indexOf(attachment) === -1) { + attachmentMngr.addFor(entityRage, attachment); + } + } + e.__attachments = newAttachments; + } + }); + + function InitAttachmentsOnJoin() { + game.players.forEach(_player => { + let player = mp.players.at(_player.remoteId); + let e = game.attachments.get(_player); + if (e == null) { + let __attachments = []; + let __attachmentObjects = []; + e = game.attachments.set(_player, __attachments, __attachmentObjects); + } + let data = player.getVariable("attachmentsData"); + + if (data && data.length > 0) { + let atts = data.split('|').map(att => parseInt(att, 36)); + e.__attachments = atts; + e.__attachmentObjects = []; + } + }); + + game.vehicles.forEach(_veh => { + let vehicle = mp.vehicles.at(_veh.remoteId); + let e = game.attachments.get(_veh); + if (e == null) { + let __attachments = []; + let __attachmentObjects = []; + e = game.attachments.set(_veh, __attachments, __attachmentObjects); + } + let data = vehicle.getVariable("attachmentsData"); + + if (data && data.length > 0) { + let atts = data.split('|').map(att => parseInt(att, 36)); + e.__attachments = atts; + e.__attachmentObjects = []; + } + }); + } + + InitAttachmentsOnJoin(); +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/util/relativevector.ts b/ReallifeGamemode.Client/util/relativevector.ts new file mode 100644 index 00000000..c8ab3b31 --- /dev/null +++ b/ReallifeGamemode.Client/util/relativevector.ts @@ -0,0 +1,28 @@ +export default function relativeVector() { + mp.events.add("SERVER:setMarkerBehindVehicle", (vehicle: EntityMp) => { + var boneIndex2 = vehicle.getBoneIndexByName("platelight"); + var boneIndex1 = vehicle.getBoneIndexByName("chassis_dummy"); + + let posPlate = vehicle.getWorldPositionOfBone(boneIndex2); + let posCentre = vehicle.getWorldPositionOfBone(boneIndex1); + + let plateVec = new mp.Vector3(posPlate.x, posPlate.y, posPlate.z); + let lightVec = new mp.Vector3(posCentre.x, posCentre.y, posCentre.z); + + let posPL = lightVec.subtract(plateVec); + + let temp = new mp.Vector3(posPL.x * -1, posPL.y * -1, posPL.z * -1) + + let length = Math.sqrt((temp.x * temp.x) + (temp.y * temp.y) + (temp.z * temp.z)); + + let x = temp.x / length; + let y = temp.y / length; + let z = temp.z / length; + + temp = new mp.Vector3(x, y, z - 1); + + let pos = plateVec.add(temp); + + mp.events.callRemote("CLIENT:setMarkerBehindVehicle", JSON.stringify(vehicle.remoteId), JSON.stringify(pos.x), JSON.stringify(pos.y), JSON.stringify(pos.z)); + }); +} \ No newline at end of file diff --git a/ReallifeGamemode.Database/Migrations/20200407014500_PedType.Designer.cs b/ReallifeGamemode.Database/Migrations/20200407014500_PedType.Designer.cs new file mode 100644 index 00000000..969f84cb --- /dev/null +++ b/ReallifeGamemode.Database/Migrations/20200407014500_PedType.Designer.cs @@ -0,0 +1,1447 @@ +// +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("20200407014500_PedType")] + partial class PedType + { + 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.Property("Type"); + + 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("ColorA"); + + b.Property("ColorB"); + + b.Property("ColorG"); + + b.Property("ColorR"); + + b.Property("Dimension"); + + b.Property("DrawDistance"); + + b.Property("Font"); + + b.Property("LOS"); + + b.Property("PositionX"); + + b.Property("PositionY"); + + b.Property("PositionZ"); + + b.Property("Text") + .IsRequired(); + + b.HasKey("Id"); + + b.ToTable("TextLabels"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.ServerVehicle", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Active") + .ValueGeneratedOnAdd() + .HasDefaultValue(true); + + b.Property("Discriminator") + .IsRequired(); + + b.Property("DistanceDriven"); + + b.Property("Heading"); + + b.Property("Livery"); + + b.Property("Locked"); + + b.Property("Model"); + + b.Property("NumberPlate") + .HasMaxLength(8); + + b.Property("PositionX"); + + b.Property("PositionY"); + + b.Property("PositionZ"); + + b.Property("PrimaryColor"); + + b.Property("SecondaryColor"); + + b.Property("TankAmount"); + + b.HasKey("Id"); + + b.ToTable("ServerVehicles"); + + b.HasDiscriminator("Discriminator").HasValue("ServerVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.ShopClothe", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Category"); + + b.Property("ClotheId"); + + b.Property("ComponentId"); + + b.Property("Gender"); + + b.Property("Price"); + + b.Property("TypeId"); + + b.HasKey("Id"); + + b.ToTable("ShopClothes"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.ShopItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("ItemId"); + + b.Property("Price"); + + b.Property("ShopId"); + + b.HasKey("Id"); + + b.ToTable("ShopItems"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.TuningGarage", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("X"); + + b.Property("Y"); + + b.Property("Z"); + + b.HasKey("Id"); + + b.ToTable("TuningGarages"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Turfs", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Color"); + + b.Property("FactionId"); + + b.Property("MaxValue"); + + b.Property("Name"); + + b.Property("Owner"); + + b.Property("Range"); + + b.Property("Rotation"); + + b.Property("Surplus"); + + b.Property("Value"); + + b.Property("Vector"); + + b.Property("X"); + + b.Property("Y"); + + b.HasKey("Id"); + + b.ToTable("Turfs"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AdminLevel"); + + b.Property("BanId"); + + b.Property("BankAccountId"); + + b.Property("BusinessId"); + + b.Property("CharacterId"); + + b.Property("Dead"); + + b.Property("DriverLicenseBike"); + + b.Property("DriverLicenseVehicle"); + + b.Property("Email") + .HasMaxLength(64); + + b.Property("FactionId"); + + b.Property("FactionLeader"); + + b.Property("FactionRankId"); + + b.Property("FlyingLicensePlane"); + + b.Property("GroupId"); + + b.Property("GroupRank"); + + b.Property("Handmoney"); + + b.Property("HouseId"); + + b.Property("JailTime"); + + b.Property("JobId"); + + b.Property("LogUserId"); + + b.Property("Name") + .HasMaxLength(32); + + b.Property("Password") + .HasMaxLength(64); + + b.Property("PaydayTimer"); + + b.Property("PositionX"); + + b.Property("PositionY"); + + b.Property("PositionZ"); + + b.Property("RegistrationDate") + .ValueGeneratedOnAdd(); + + b.Property("SocialClubName") + .HasMaxLength(32); + + b.Property("Wage"); + + b.Property("Wanteds"); + + b.Property("WeaponLicense"); + + b.HasKey("Id"); + + b.HasIndex("BanId"); + + b.HasIndex("BankAccountId"); + + b.HasIndex("BusinessId") + .IsUnique(); + + b.HasIndex("CharacterId"); + + b.HasIndex("FactionId"); + + b.HasIndex("FactionRankId"); + + b.HasIndex("GroupId"); + + b.HasIndex("HouseId"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.UserBankAccount", 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("UserBankAccounts"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.UserItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("ItemId"); + + b.Property("Slot"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("UserItems"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.VehicleItem", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Amount"); + + b.Property("ItemId"); + + b.Property("Slot"); + + b.Property("VehicleId"); + + b.HasKey("Id"); + + b.HasIndex("VehicleId"); + + b.ToTable("VehicleItems"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.VehicleMod", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ModId"); + + b.Property("ServerVehicleId"); + + b.Property("Slot"); + + b.HasKey("Id"); + + b.HasIndex("ServerVehicleId", "Slot") + .IsUnique(); + + b.ToTable("VehicleMods"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Whitelist", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("SocialClubName"); + + b.HasKey("Id"); + + b.ToTable("WhitelistEntries"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + b.Property("Owners"); + + b.ToTable("FactionVehicles"); + + b.HasDiscriminator().HasValue("FactionVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.GroupVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + b.Property("GroupId"); + + b.HasIndex("GroupId"); + + b.ToTable("GroupVehicle"); + + b.HasDiscriminator().HasValue("GroupVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.JobVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + b.Property("JobId"); + + b.ToTable("JobVehicle"); + + b.HasDiscriminator().HasValue("JobVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Saves.SavedVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + + b.ToTable("SavedVehicle"); + + b.HasDiscriminator().HasValue("SavedVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.SchoolVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + b.Property("SchoolId"); + + b.ToTable("SchoolVehicle"); + + b.HasDiscriminator().HasValue("SchoolVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.ShopVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + b.Property("BusinessId"); + + b.Property("Price"); + + b.ToTable("ShopVehicles"); + + b.HasDiscriminator().HasValue("ShopVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.UserVehicle", b => + { + b.HasBaseType("ReallifeGamemode.Database.Entities.ServerVehicle"); + + b.Property("Price") + .HasColumnName("UserVehicle_Price"); + + b.Property("UserId"); + + b.HasIndex("UserId"); + + b.ToTable("UserVehicles"); + + b.HasDiscriminator().HasValue("UserVehicle"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Ban", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.BusRoutePoint", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.BusRoute", "BusRoute") + .WithMany("RoutePoints") + .HasForeignKey("BusRouteId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Character", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.CharacterCloth", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Door", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.Faction", "Faction") + .WithMany() + .HasForeignKey("FactionId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.DutyCloth", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.Faction", "Faction") + .WithMany() + .HasForeignKey("FactionId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Faction", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.FactionBankAccount", "BankAccount") + .WithMany() + .HasForeignKey("BankAccountId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionRank", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.Faction", "Faction") + .WithMany() + .HasForeignKey("FactionId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.FactionWeapon", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.Faction", "Faction") + .WithMany() + .HasForeignKey("FactionId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Group", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.GroupBankAccount", "BankAccount") + .WithMany() + .HasForeignKey("BankAccountId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.House", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.HouseBankAccount", "BankAccount") + .WithMany() + .HasForeignKey("BankAccountId"); + + b.HasOne("ReallifeGamemode.Database.Entities.User", "Owner") + .WithMany() + .HasForeignKey("OwnerId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.HouseRental", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.House", "House") + .WithMany("Rentals") + .HasForeignKey("HouseId"); + + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.Logs.Death", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "Killer") + .WithMany() + .HasForeignKey("KillerId"); + + b.HasOne("ReallifeGamemode.Database.Entities.User", "Victim") + .WithMany() + .HasForeignKey("VictimId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.News", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.User", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.Ban", "Ban") + .WithMany() + .HasForeignKey("BanId"); + + b.HasOne("ReallifeGamemode.Database.Entities.UserBankAccount", "BankAccount") + .WithMany() + .HasForeignKey("BankAccountId"); + + b.HasOne("ReallifeGamemode.Database.Entities.Character", "Character") + .WithMany() + .HasForeignKey("CharacterId"); + + b.HasOne("ReallifeGamemode.Database.Entities.Faction", "Faction") + .WithMany() + .HasForeignKey("FactionId"); + + b.HasOne("ReallifeGamemode.Database.Entities.FactionRank", "FactionRank") + .WithMany() + .HasForeignKey("FactionRankId"); + + b.HasOne("ReallifeGamemode.Database.Entities.Group", "Group") + .WithMany() + .HasForeignKey("GroupId"); + + b.HasOne("ReallifeGamemode.Database.Entities.House", "House") + .WithMany() + .HasForeignKey("HouseId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.UserItem", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.VehicleItem", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.ServerVehicle", "Vehicle") + .WithMany() + .HasForeignKey("VehicleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.VehicleMod", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.ServerVehicle", "Vehicle") + .WithMany() + .HasForeignKey("ServerVehicleId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.GroupVehicle", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.Group", "Group") + .WithMany() + .HasForeignKey("GroupId"); + }); + + modelBuilder.Entity("ReallifeGamemode.Database.Entities.UserVehicle", b => + { + b.HasOne("ReallifeGamemode.Database.Entities.User", "User") + .WithMany() + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs b/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs new file mode 100644 index 00000000..5862fadf --- /dev/null +++ b/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs @@ -0,0 +1,23 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace ReallifeGamemode.Database.Migrations +{ + public partial class PedType : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Type", + table: "Peds", + nullable: false, + defaultValue: 0); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Type", + table: "Peds"); + } + } +} diff --git a/ReallifeGamemode.Server/Events/ExitVehicle.cs b/ReallifeGamemode.Server/Events/ExitVehicle.cs index d3c71247..2e0fe9d3 100644 --- a/ReallifeGamemode.Server/Events/ExitVehicle.cs +++ b/ReallifeGamemode.Server/Events/ExitVehicle.cs @@ -14,8 +14,6 @@ namespace ReallifeGamemode.Server.Events if (client.VehicleSeat != 0) return; - client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); - if (vehicle.GetServerVehicle() is FactionVehicle veh) { User u = client.GetUser(); @@ -24,7 +22,7 @@ namespace ReallifeGamemode.Server.Events CheckPointHandle.RemovePlayerHandlerFromList(client); client.TriggerEvent("destroyCP"); } - else if ((u.FactionId != null) && (veh.GetOwners().Contains(u.FactionId ?? 0)) && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) && vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) + else if ((u.FactionId != null) && (veh.GetOwners().Contains(u.FactionId ?? 0)) && ((VehicleHash)vehicle.Model == VehicleHash.Burrito3 || (VehicleHash)vehicle.Model == VehicleHash.Policet) && vehicle.HasData("WeaponDealLoad") && vehicle.GetData("WeaponDealLoad") == true) { client.TriggerEvent("SERVER:setMarkerBehindVehicle", vehicle); } diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index 1a36e577..86426f82 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -10,10 +10,13 @@ using ReallifeGamemode.Server.Services; using ReallifeGamemode.Server.Types; using ReallifeGamemode.Server.Util; using ReallifeGamemode.Services; + using ReallifeGamemode.Server.Types; + using System.Buffers; using Microsoft.EntityFrameworkCore; using ReallifeGamemode.Server.Events; +using System; /** * @overview Life of German Reallife - Managers Interaction (InteractionManager.cs) @@ -24,30 +27,30 @@ using ReallifeGamemode.Server.Events; namespace ReallifeGamemode.Server.Managers { public class InteractionManager : Script + { + #region Eigeninteraktionen PFEILTASTE-RUNTER + + [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] + public void InteractionMenuAcceptInvite(Player player, string type) { - #region Eigeninteraktionen PFEILTASTE-RUNTER + if (type != "Fraktion" && type != "Gruppe") return; - [RemoteEvent("CLIENT:InteractionMenu_AcceptInvite")] - public void InteractionMenuAcceptInvite(Player player, string type) + if (type == "Fraktion") // Fraktions Invite annehmen + { + if (!player.HasData("accept_faction_invite")) { - if (type != "Fraktion" && type != "Gruppe") return; - - if (type == "Fraktion") // Fraktions Invite annehmen - { - if (!player.HasData("accept_faction_invite")) - { - ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Fraktion erhalten"); - return; - } + ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Fraktion erhalten"); + return; + } Player leader = NAPI.Player.GetPlayerFromName(player.GetData("accept_faction_invite")); player.ResetData("accept_faction_invite"); - if (leader == null) - { - ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); - return; - } + if (leader == null) + { + ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); + return; + } using (var dbContext = new DatabaseContext(true)) { @@ -64,8 +67,8 @@ namespace ReallifeGamemode.Server.Managers .Where(r => r.FactionId == own.FactionId) .FirstOrDefault(); - ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); - ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); + ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); + ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); switch (own.FactionId) { @@ -86,186 +89,186 @@ namespace ReallifeGamemode.Server.Managers break; } - dbContext.SaveChanges(); - } - } - else if (type == "Gruppe") // Gruppen Einladung annehmen - { - if (!player.HasData("accept_group_invite")) - { - ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Gruppe erhalten"); - return; - } + dbContext.SaveChanges(); + } + } + else if (type == "Gruppe") // Gruppen Einladung annehmen + { + if (!player.HasData("accept_group_invite")) + { + ChatService.ErrorMessage(player, "Du hast keine Einladung in eine Gruppe erhalten"); + return; + } Player leader = NAPI.Player.GetPlayerFromName(player.GetData("accept_group_invite")); player.ResetData("accept_group_invite"); - if (leader == null) - { - ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); - return; - } - - using (var dbContext = new DatabaseContext()) - { - User u = leader.GetUser(dbContext); - User own = player.GetUser(dbContext); - - own.Group = u.Group; - own.GroupRank = GroupRank.MEMBER; - - ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); - ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); - - dbContext.SaveChanges(); - } - } + if (leader == null) + { + ChatService.ErrorMessage(player, "Die Einladung ist abgelaufen"); + return; } - [RemoteEvent("CLIENT:InteractionMenu_EndShow")] - public void InteractionMenuEndShow(Player client) + using (var dbContext = new DatabaseContext()) { - client.ResetData("ShowActive"); + User u = leader.GetUser(dbContext); + User own = player.GetUser(dbContext); + + own.Group = u.Group; + own.GroupRank = GroupRank.MEMBER; + + ChatService.SendMessage(leader, "!{02FCFF}" + player.Name + " hat die Einladung angenommen."); + ChatService.SendMessage(player, "!{02FCFF}Du hast die Einladung angenommen."); + + dbContext.SaveChanges(); + } + } + } + + [RemoteEvent("CLIENT:InteractionMenu_EndShow")] + public void InteractionMenuEndShow(Player client) + { + client.ResetData("ShowActive"); + } + + [RemoteEvent("CLIENT:InteractionMenu_Show")] + public void InteractionMenuShow(Player player, string type, string nameOrId) + { + if (type != "License") + return; + + Player target = PlayerService.GetPlayerByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "License") + { + if (!playerUser.DriverLicenseBike && !playerUser.DriverLicenseVehicle && !playerUser.FlyingLicensePlane && !playerUser.WeaponLicense) + { + player.SendNotification("~r~Sie besitzen keine Scheine!"); + return; + } + if (player.Position.DistanceTo(target.Position) > 5) + return; + + if (target.HasData("ShowActive")) + { + player.SendNotification("Spieler ist beschäftigt."); + return; + } + target.SetData("ShowActive", true); + List licenses = new List(); + licenses.Add(playerUser.DriverLicenseVehicle); + licenses.Add(playerUser.DriverLicenseBike); + licenses.Add(playerUser.FlyingLicensePlane); + licenses.Add(playerUser.WeaponLicense); + target.TriggerEvent("ShowLicenses", player.Name, licenses.ToArray()); + } + } + + [RemoteEvent("CLIENT:InteractionMenu_Invite")] + public void InteractionMenuInviteFaction(Player player, string type, string nameOrId) + { + if (type != "Fraktion" && type != "Gruppe") return; + + Player target = PlayerService.GetPlayerByNameOrId(nameOrId); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "Fraktion") + { + if (playerUser?.FactionId == null || playerUser?.FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; } - [RemoteEvent("CLIENT:InteractionMenu_Show")] - public void InteractionMenuShow(Player player, string type, string nameOrId) + if (targetUser?.FactionId != null) { - if (type != "License") - return; - - Player target = PlayerService.GetPlayerByNameOrId(nameOrId); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } - - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); - - if (type == "License") - { - if (!playerUser.DriverLicenseBike && !playerUser.DriverLicenseVehicle && !playerUser.FlyingLicensePlane && !playerUser.WeaponLicense) - { - player.SendNotification("~r~Sie besitzen keine Scheine!"); - return; - } - if (player.Position.DistanceTo(target.Position) > 5) - return; - - if (target.HasData("ShowActive")) - { - player.SendNotification("Spieler ist beschäftigt."); - return; - } - target.SetData("ShowActive", true); - List licenses = new List(); - licenses.Add(playerUser.DriverLicenseVehicle); - licenses.Add(playerUser.DriverLicenseBike); - licenses.Add(playerUser.FlyingLicensePlane); - licenses.Add(playerUser.WeaponLicense); - target.TriggerEvent("ShowLicenses", player.Name, licenses.ToArray()); - } + ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Fraktion"); + return; } - [RemoteEvent("CLIENT:InteractionMenu_Invite")] - public void InteractionMenuInviteFaction(Player player, string type, string nameOrId) - { - if (type != "Fraktion" && type != "Gruppe") return; - - Player target = PlayerService.GetPlayerByNameOrId(nameOrId); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } - - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); - - if (type == "Fraktion") - { - if (playerUser?.FactionId == null || playerUser?.FactionLeader == false) - { - ChatService.NotAuthorized(player); - return; - } - - if (targetUser?.FactionId != null) - { - ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Fraktion"); - return; - } - target.SetData("accept_faction_invite", player.Name); - ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); - ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + playerUser.Faction.Name + "\" erhalten."); - ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); - } - else if (type == "Gruppe") - { - if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER) - { - ChatService.NotAuthorized(player); - return; - } + ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Fraktion gesendet."); + ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Fraktion \"" + playerUser.Faction.Name + "\" erhalten."); + ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + } + else if (type == "Gruppe") + { + if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.MANAGER) + { + ChatService.NotAuthorized(player); + return; + } - if (targetUser?.Group != null) - { - ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Gruppe"); - return; - } + if (targetUser?.Group != null) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist schon in einer Gruppe"); + return; + } target.SetData("accept_group_invite", player.Name); - ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet."); - ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + playerUser.Group.Name + "\" erhalten."); - ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); - } + ChatService.SendMessage(player, "!{02FCFF}Du hast dem Spieler " + target.Name + " eine Einladung in deine Gruppe gesendet."); + ChatService.SendMessage(target, "!{02FCFF}Du hast von " + player.Name + " eine Einladung in die Gruppe \"" + playerUser.Group.Name + "\" erhalten."); + ChatService.SendMessage(target, "!{02FCFF}Benutze das Interaktionsmenü, um die Einladung anzunehmen"); + } + } + + [RemoteEvent("CLIENT:InteractionMenu_Uninvite")] + public void InteractionMenuInviteGroup(Player player, string type, string name) + { + if (type != "Fraktion" && type != "Gruppe") return; + + Player target = PlayerService.GetPlayerByNameOrId(name); + if (target == null || !target.IsLoggedIn()) + { + ChatService.PlayerNotFound(player); + return; + } + + User targetUser = target.GetUser(); + User playerUser = player.GetUser(); + + if (type == "Fraktion") + { + if (playerUser?.FactionId == null || playerUser.FactionLeader == false) + { + ChatService.NotAuthorized(player); + return; } - [RemoteEvent("CLIENT:InteractionMenu_Uninvite")] - public void InteractionMenuInviteGroup(Player player, string type, string name) + if (targetUser?.FactionId != playerUser?.FactionId) { - if (type != "Fraktion" && type != "Gruppe") return; + ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); + return; + } - Player target = PlayerService.GetPlayerByNameOrId(name); - if (target == null || !target.IsLoggedIn()) - { - ChatService.PlayerNotFound(player); - return; - } + if (player.Handle == target.Handle) + { + ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); + return; + } - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); - - if (type == "Fraktion") - { - if (playerUser?.FactionId == null || playerUser.FactionLeader == false) - { - ChatService.NotAuthorized(player); - return; - } - - if (targetUser?.FactionId != playerUser?.FactionId) - { - ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); - return; - } - - if (player.Handle == target.Handle) - { - ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); - return; - } - - if (targetUser?.FactionLeader ?? false) - { - ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); - return; - } + if (targetUser?.FactionLeader ?? false) + { + ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); + return; + } using (var dbContext = new DatabaseContext()) { @@ -290,92 +293,93 @@ namespace ReallifeGamemode.Server.Managers return; } - if (targetUser?.Group.Id != playerUser?.Group.Id) - { - ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); - return; - } - - if (player.Handle == target.Handle) - { - ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); - return; - } - - if (targetUser?.GroupRank >= GroupRank.MANAGER && playerUser?.GroupRank != GroupRank.OWNER) - { - ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); - return; - } - - using (var dbContext = new DatabaseContext()) - { - target.GetUser(dbContext).Group = null; - target.GetUser(dbContext).GroupRank = GroupRank.NONE; - - ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen."); - ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen."); - - dbContext.SaveChanges(); - } - } + if (targetUser?.Group.Id != playerUser?.Group.Id) + { + ChatService.ErrorMessage(player, "Dieser Spieler ist nicht in deiner Fraktion"); + return; } - [RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")] - public void CallServiceTaxi(Player player, string street, string zone) + if (player.Handle == target.Handle) { - var taxiJob = JobManager.GetJob(); - - if (taxiJob.TaxiContracts.Where(t => t.Name == player.Name).Count() != 0) - { - ChatService.ErrorMessage(player, "Du kannst nur einmal ein Taxi rufen"); - return; - } - - taxiJob.TaxiContracts.Add(new TaxiContract() - { - Name = player.Name, - Position = player.Position - }); - - string msg = $"!{{02FCFF}}{player.Name} hat in der Straße {street} in {zone} ein Taxi gerufen."; - ChatService.BroadcastJob(msg, taxiJob); - ChatService.SendMessage(player, "!{02FCFF}Du hast erfolgreich ein Taxi zu deiner aktuellen Position gerufen."); + ChatService.ErrorMessage(player, "Du kannst dich nicht selber uninviten"); + return; } - [RemoteEvent("CLIENT:InteractionMenu_VehicleInteraction")] - public void VehicleInteraction(Player player, int id, string selection) + if (targetUser?.GroupRank >= GroupRank.MANAGER && playerUser?.GroupRank != GroupRank.OWNER) { - using var dbContext = new DatabaseContext(true); - var user = player.GetUser(dbContext); + ChatService.ErrorMessage(player, "Du kannst keinen Leader uninviten"); + return; + } - var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); - if (userVehicle == null) - { - ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden"); - } + using (var dbContext = new DatabaseContext()) + { + target.GetUser(dbContext).Group = null; + target.GetUser(dbContext).GroupRank = GroupRank.NONE; + + ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Gruppe geworfen."); + ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Gruppe geworfen."); + + dbContext.SaveChanges(); + } + } + } + + [RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")] + public void CallServiceTaxi(Player player, string street, string zone) + { + var taxiJob = JobManager.GetJob(); + + if (taxiJob.TaxiContracts.Where(t => t.Name == player.Name).Count() != 0) + { + ChatService.ErrorMessage(player, "Du kannst nur einmal ein Taxi rufen"); + return; + } + + taxiJob.TaxiContracts.Add(new TaxiContract() + { + Name = player.Name, + Position = player.Position + }); + + string msg = $"!{{02FCFF}}{player.Name} hat in der Straße {street} in {zone} ein Taxi gerufen."; + ChatService.BroadcastJob(msg, taxiJob); + ChatService.SendMessage(player, "!{02FCFF}Du hast erfolgreich ein Taxi zu deiner aktuellen Position gerufen."); + } + + [RemoteEvent("CLIENT:InteractionMenu_VehicleInteraction")] + public void VehicleInteraction(Player player, int id, string selection) + { + using var dbContext = new DatabaseContext(true); + var user = player.GetUser(dbContext); + + var userVehicle = dbContext.UserVehicles.Where(v => v.Id == id && v.UserId == user.Id).FirstOrDefault(); + if (userVehicle == null) + { + ChatService.ErrorMessage(player, "Das Fahrzeug wurde nicht gefunden"); + } GTANetworkAPI.Vehicle veh = VehicleManager.GetVehicleFromServerVehicle(userVehicle); - if (selection == "Finden") - { - player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y); - } - else if (selection == "Verkaufen") - { - var vehPrice = dbContext.ShopVehicles.Where(v => v.Model == userVehicle.Model).Select(v => v.Price).FirstOrDefault(); - var backPrice = (int)(vehPrice * 0.6); + if (selection == "Finden") + { + player.TriggerEvent("SERVER:Util_setWaypoint", veh.Position.X, veh.Position.Y); + } + else if (selection == "Verkaufen") + { + var vehPrice = dbContext.ShopVehicles.Where(v => v.Model == userVehicle.Model).Select(v => v.Price).FirstOrDefault(); + var backPrice = (int)(vehPrice * 0.6); - user.BankAccount.Balance += backPrice; + user.BankAccount.Balance += backPrice; - ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten."); + ChatService.SendMessage(player, $"~b~[INFO]~s~ Du hast durch den Autoverkauf ~g~{backPrice.ToMoneyString()}~s~ erhalten."); - dbContext.UserVehicles.Remove(userVehicle); - dbContext.SaveChanges(); + dbContext.UserVehicles.Remove(userVehicle); + dbContext.SaveChanges(); veh.Delete(); } } + [RemoteEvent("CLIENT:InteractionMenu_LSPD_Ticket3")] public void InteractionMenu_LSPD_Ticket3(Player player, string jsonNameOrId, string stringAmount, string jsonReason) { @@ -411,6 +415,7 @@ namespace ReallifeGamemode.Server.Managers } } } + [RemoteEvent("CLIENT:InteractionMenu_LSPD_Points3")] public void InteractionMenu_LSPD_Points3(Player player, string jsonNameOrId, string jsoAmount, string jsonReason) { @@ -489,6 +494,7 @@ namespace ReallifeGamemode.Server.Managers } } } + [RemoteEvent("CLIENT:InteractionMenu_Ticket")] public void InteractionMenuTicket(Player target, string type, int ticket_amount) { @@ -551,58 +557,58 @@ namespace ReallifeGamemode.Server.Managers player.TriggerEvent("openTradeMenu", targetPlayer); } - [RemoteEvent("sendTradeItemsToPartner")] - public void SendTradeItemsToPartner(Player player, string tradeItemArray, int tradePrize, string tradePartnerName) - { - var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); - Player tradePartner = PlayerService.GetPlayerByNameOrId(tradePartnerName); - InventoryManager.GetUserItems(player); - tradePartner.TriggerEvent("showTradeRequest", player.Name, tradeItems, tradePrize); - player.TriggerEvent("startTradeRequestTimer"); - } - - [RemoteEvent("tradeDecision")] - public void TradeDecision(Player player, string tradeSelection, string tradeItemArray, string tradeRequesterName, int tradePrize) - { - var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); - Player tradeRequester = PlayerService.GetPlayerByNameOrId(tradeRequesterName); - if (tradeSelection == "accept") - { - if (player.GetUser().Handmoney < tradePrize) - { - tradeRequester.TriggerEvent("unlockTradeItems"); - tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen."); - player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen."); - } - else - { - InventoryManager.GetUserItems(player); - tradeRequester.TriggerEvent("clearTradeItems"); - player.TriggerEvent("showTradeItems", tradeItemArray); - - using (var dbContext = new DatabaseContext()) - { - var playerUserId = player.GetUser().Id; - var tradeRUserId = tradeRequester.GetUser().Id; - var playerUser = dbContext.Users.FirstOrDefault(u => u.Id == playerUserId); - var tradeRequesterUser = dbContext.Users.FirstOrDefault(u => u.Id == tradeRUserId); - - playerUser.Handmoney -= tradePrize; - player.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", playerUser.Handmoney); - - tradeRequesterUser.Handmoney += tradePrize; - tradeRequester.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradeRequesterUser.Handmoney); - - dbContext.SaveChanges(); - } - } - } - else - { - tradeRequester.TriggerEvent("unlockTradeItems"); - } - } - - #endregion Spielerinteraktionen PFEILTASTE-LINKS + [RemoteEvent("sendTradeItemsToPartner")] + public void SendTradeItemsToPartner(Player player, string tradeItemArray, int tradePrize, string tradePartnerName) + { + var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); + Player tradePartner = PlayerService.GetPlayerByNameOrId(tradePartnerName); + InventoryManager.GetUserItems(player); + tradePartner.TriggerEvent("showTradeRequest", player.Name, tradeItems, tradePrize); + player.TriggerEvent("startTradeRequestTimer"); } -} \ No newline at end of file + + [RemoteEvent("tradeDecision")] + public void TradeDecision(Player player, string tradeSelection, string tradeItemArray, string tradeRequesterName, int tradePrize) + { + var tradeItems = JsonConvert.DeserializeObject(tradeItemArray); + Player tradeRequester = PlayerService.GetPlayerByNameOrId(tradeRequesterName); + if (tradeSelection == "accept") + { + if (player.GetUser().Handmoney < tradePrize) + { + tradeRequester.TriggerEvent("unlockTradeItems"); + tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen."); + player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen."); + } + else + { + InventoryManager.GetUserItems(player); + tradeRequester.TriggerEvent("clearTradeItems"); + player.TriggerEvent("showTradeItems", tradeItemArray); + + using (var dbContext = new DatabaseContext()) + { + var playerUserId = player.GetUser().Id; + var tradeRUserId = tradeRequester.GetUser().Id; + var playerUser = dbContext.Users.FirstOrDefault(u => u.Id == playerUserId); + var tradeRequesterUser = dbContext.Users.FirstOrDefault(u => u.Id == tradeRUserId); + + playerUser.Handmoney -= tradePrize; + player.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", playerUser.Handmoney); + + tradeRequesterUser.Handmoney += tradePrize; + tradeRequester.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradeRequesterUser.Handmoney); + + dbContext.SaveChanges(); + } + } + } + else + { + tradeRequester.TriggerEvent("unlockTradeItems"); + } + } + + #endregion Spielerinteraktionen PFEILTASTE-LINKS + } +} diff --git a/ReallifeGamemode.Server/Managers/InventoryManager.cs b/ReallifeGamemode.Server/Managers/InventoryManager.cs index 7d15d68f..4aa2ee0e 100644 --- a/ReallifeGamemode.Server/Managers/InventoryManager.cs +++ b/ReallifeGamemode.Server/Managers/InventoryManager.cs @@ -161,23 +161,7 @@ namespace ReallifeGamemode.Server.Managers List itemList = GetUserItems(player); if (itemList == null) return; - - if (!backpackItems.ContainsKey(player)) - backpackItems.Add(player, new List()); - - backpackItems[player] = new List(); - - foreach (var i in itemList) - { - var newItem = new InventoryItem - { - Name = GetItemById(i.ItemId).Name, - Amount = i.Amount, - ItemId = i.ItemId, - Weight = GetUserInventoryWeight(player), - }; - backpackItems[player].Add(newItem); - } + dbContext.SaveChanges(); } } @@ -196,25 +180,10 @@ namespace ReallifeGamemode.Server.Managers dbContext.Remove(vehicleItem); dbContext.SaveChanges(); } - List itemList = GetUserItems(player); + Vehicle vehicle = sVeh.GetVehicle(); + List itemList = GetVehicleItems(vehicle); if (itemList == null) return; - - if (!vehicleItems.ContainsKey(player)) - vehicleItems.Add(player, new List()); - - vehicleItems[player] = new List(); - - foreach (var i in itemList) - { - var newItem = new InventoryItem - { - Name = GetItemById(i.ItemId).Name, - Amount = i.Amount, - ItemId = i.ItemId, - Weight = GetUserInventoryWeight(player), - }; - vehicleItems[player].Add(newItem); - } + dbContext.SaveChanges(); } } @@ -596,6 +565,7 @@ namespace ReallifeGamemode.Server.Managers { context.UserItems.Remove(fItem); } + context.SaveChanges(); SetBackpackItems(player); player.TriggerEvent("aproveThrow", amount, iItem.Name); } diff --git a/ReallifeGamemode.Server/Managers/PedManager.cs b/ReallifeGamemode.Server/Managers/PedManager.cs new file mode 100644 index 00000000..d6ba37da --- /dev/null +++ b/ReallifeGamemode.Server/Managers/PedManager.cs @@ -0,0 +1,96 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; +using Newtonsoft.Json; +using ReallifeGamemode.Database.Entities.Saves; +using ReallifeGamemode.Database.Models; + +namespace ReallifeGamemode.Server.Managers +{ + public class PedManager : Script + { + private List pedDatas = new List(); + public static List serverPeds = new List(); + private static Dictionary> dataDict = new Dictionary>(); + private void GetPedsFromDatabase() + { + using (var dbContext = new DatabaseContext()) + { + serverPeds = dbContext.Peds.Where(x => x.HashModel != null).ToList(); + } + } + + private List FindDataThroughPlayer(Player player) + { + if (!dataDict.ContainsKey(player)) return null; + return dataDict[player]; + } + + [ServerEvent(Event.PlayerConnected)] + public void LoadServerPedForPlayer(Player player) + { + if (serverPeds.Count == 0) + GetPedsFromDatabase(); + List vector3s = new List(); + List headings = new List(); + List hashes = new List(); + List dimensions = new List(); + pedDatas = new List(); + foreach (var s in serverPeds) + { + if (!s.Active) continue; + Vector3 vector3 = new Vector3(s.PositionX, s.PositionY, s.PositionZ); + pedDatas.Add(new PedData(player, (DataType)s.Type, vector3, s.Heading, s.HashModel)); + + vector3s.Add(vector3); + headings.Add(s.Heading); + hashes.Add(s.HashModel); + dimensions.Add(s.Dimension); + } + dataDict[player] = pedDatas; + Console.WriteLine($"[DEBUG] DATA ADDED - PED Data registered :{dataDict.Count}"); + + player.TriggerEvent("SERVER:CreateStaticPeds", JsonConvert.SerializeObject(vector3s.ToArray()), JsonConvert.SerializeObject(headings.ToArray()), JsonConvert.SerializeObject(hashes.ToArray()), JsonConvert.SerializeObject(dimensions.ToArray())); + } + + [ServerEvent(Event.PlayerDisconnected)] + public void RemovePlayerPedDataOnDc(Player player, DisconnectionType type, string reason) + { + List data = FindDataThroughPlayer(player); + if (data == null) return; + dataDict.Remove(player); + Console.WriteLine($"[DEBUG] DATA REMOVED - PED Data left :{dataDict.Count}"); + } + } + + public enum DataType : int + { + WeponDealPed, + DepartmentPed, + PrisonPed + } + + public class PedData + { + private DataType type; + public Player player; + public Vector3 vector3; + public float heading; + public string HashModel; + + public PedData(Player player, DataType type, Vector3 vector3, float heading, string HashModel) + { + this.player = player; + this.type = type; + this.vector3 = vector3; + this.heading = heading; + this.HashModel = HashModel; + } + + public DataType getType() + { + return type; + } + } +} diff --git a/ReallifeGamemode.Server/Util/AttachmentSync.cs b/ReallifeGamemode.Server/Util/AttachmentSync.cs new file mode 100644 index 00000000..f659b550 --- /dev/null +++ b/ReallifeGamemode.Server/Util/AttachmentSync.cs @@ -0,0 +1,153 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using GTANetworkAPI; + +public static class AttachmentSync +{ + /// + /// Adds/Removes an attachment for an entity + /// + /// The entity to attach the object to + /// The attachment, should be in string or long type + /// Pass true to remove the specified attachment, false otherwise. + public static void AddAttachment(this Entity entity, dynamic attachment, bool remove) + { + if (!entity.HasData("Attachments")) + entity.SetData("Attachments", new List()); + + List currentAttachments = entity.GetData>("Attachments"); + + uint attachmentHash = 0; + + if (attachment.GetType() == typeof(string)) + attachmentHash = NAPI.Util.GetHashKey(attachment); + else + attachmentHash = Convert.ToUInt32(attachment); + + if (attachmentHash == 0) + { + Console.WriteLine($"Attachment hash couldn't be found for { attachment }"); + return; + } + + if (currentAttachments.IndexOf(attachmentHash) == -1) // if current attachment hasn't already been added + { + if (!remove) // if it needs to be added + { + currentAttachments.Add(attachmentHash); + } + } + else if (remove) // if it was found and needs to be removed + { + currentAttachments.Remove(attachmentHash); + } + + // send updated data to playerside + entity.SetSharedData("attachmentsData", currentAttachments.Serialize()); + } + + /// + /// Returns true if an entity has a certain attachment + /// + /// The entity to check + /// The attachment to look for + /// True if attachment was found, false otherwise + public static bool HasAttachment(this Entity entity, dynamic attachment) + { + if (!entity.HasData("Attachments")) + return false; + + List currentAttachments = entity.GetData>("Attachments"); + + uint attachmentHash = 0; + + if (attachment.GetType() == typeof(string)) + attachmentHash = NAPI.Util.GetHashKey(attachment); + else + attachmentHash = Convert.ToUInt32(attachment); + + if (attachmentHash == 0) + { + Console.WriteLine($"Attachment hash couldn't be found for { attachment }"); + return false; + } + + return currentAttachments.IndexOf(attachmentHash) != -1; + } + + /// + /// Clears the entity's current attachments + /// + /// The entity to clear the attachments of + public static void ClearAttachments(this Entity entity) + { + if (!entity.HasData("Attachments")) + return; + + List currentAttachments = entity.GetData>("Attachments"); + + if (currentAttachments.Count > 0) + { + for (int i = currentAttachments.Count - 1; i >= 0; i--) + { + entity.AddAttachment(currentAttachments[i], true); + } + } + + entity.ResetSharedData("attachmentsData"); + entity.SetData("Attachments", new List()); + } + + /// + /// Serializes a list of attachments + /// + /// a list of attachments in uint type + /// serialized attachment string + public static string Serialize(this List attachments) + { + return string.Join('|', attachments.Select(a => Base36Extensions.ToBase36(a)).ToArray()); + } +} + +public class AttachmentSyncExample : Script +{ + //REQUIRED + [ServerEvent(Event.PlayerConnected)] + public void OnPlayerConnect(Player player) + { + // reset data on connect + player.ClearAttachments(); + player.TriggerEvent("SERVER:LoadAttachments"); + } + + //REQUIRED + [RemoteEvent("staticAttachments.Add")] + private void OnStaticAttachmentAdd(Player player, string hash) + { + player.AddAttachment(Base36Extensions.FromBase36(hash), false); + } + + //REQUIRED + [RemoteEvent("staticAttachments.Remove")] + private void OnStaticAttachmentRemove(Player player, string hash) + { + player.AddAttachment(Base36Extensions.FromBase36(hash), true); + } + + [Command("xdd")] + public void attachment(Player player) + { + Vehicle veh = player.Vehicle; + if (!veh.HasAttachment("weapondeal")) + { + veh.AddAttachment("weapondeal", false); + //veh.AddAttachment("weapondeal1", false); + //veh.AddAttachment("weapondeal2", false); + } + else + { + veh.ClearAttachments(); + } + } +} From 2c648d52ddcc3d7b80865a0eeb09dfc35a616749 Mon Sep 17 00:00:00 2001 From: hydrant Date: Sun, 10 May 2020 22:54:18 +0200 Subject: [PATCH 3/3] bissl formattiert --- ReallifeGamemode.DataService/Startup.cs | 2 +- .../Entities/JobVehicle.cs | 2 +- ReallifeGamemode.Database/Entities/Turfs.cs | 2 +- .../Migrations/20200126141420_Initial.cs | 2552 ++++++++--------- .../Migrations/20200202153232_ShopItems.cs | 50 +- .../20200313203304_UserWeaponLicense.cs | 32 +- .../20200317192534_VehicleAddPrice.cs | 30 +- .../20200324175347_HouseWeeklyRentalFee.cs | 32 +- .../20200330201122_HouseBankAccounts.cs | 98 +- .../20200403035225_TurfSurplusValue.cs | 50 +- .../Migrations/20200405102619_TurfMaxValue.cs | 32 +- .../Migrations/20200407014500_PedType.cs | 32 +- .../Migrations/20200408151729_UserPoints.cs | 32 +- .../Commands/CommandHandler.cs | 2 +- .../Business/BikeDealerBusiness.cs | 30 +- .../Business/BoatDealerBusiness.cs | 30 +- .../Business/BusinessBase.cs | 358 +-- .../Business/CarDealerBusinessBase.cs | 6 +- ...remiumDeluxeMotorsportCarDealerBusiness.cs | 26 +- .../Business/ShopBusiness.cs | 18 +- .../Business/TelefonBusiness.cs | 18 +- .../Business/VapidCarDealerBusiness.cs | 26 +- ReallifeGamemode.Server/Classes/TempBlip.cs | 16 +- .../DrivingSchool/Licenses.cs | 38 +- ReallifeGamemode.Server/Events/Chat.cs | 22 +- ReallifeGamemode.Server/Events/Death.cs | 218 +- ReallifeGamemode.Server/Events/Disconnect.cs | 76 +- .../Events/EnterVehicleAttempt.cs | 82 +- ReallifeGamemode.Server/Events/Inventory.cs | 108 +- ReallifeGamemode.Server/Events/Login.cs | 266 +- .../Events/ResourceStop.cs | 30 +- .../Events/UpdateCharacterCloth.cs | 494 ++-- .../Events/UpdateCharacterElevator.cs | 18 +- .../Events/UpdateCharacterWeapon.cs | 186 +- ReallifeGamemode.Server/Events/Vehicle.cs | 510 ++-- .../Extensions/ClientExtension.cs | 328 +-- .../Extensions/EnumExtensions.cs | 90 +- .../Extensions/IntegerExtension.cs | 18 +- .../Extensions/ServerVehicleExtensions.cs | 120 +- .../Extensions/VehicleExtension.cs | 18 +- .../Factions/Medic/Medic.cs | 168 +- .../Factions/Medic/MedicTask.cs | 32 +- ReallifeGamemode.Server/Finance/Economy.cs | 262 +- ReallifeGamemode.Server/Finance/Paycheck.cs | 36 +- ReallifeGamemode.Server/Gangwar/Gangwar.cs | 418 +-- ReallifeGamemode.Server/Gangwar/Turf.cs | 668 ++--- .../Inventory/Interfaces/IDroppableItem.cs | 6 +- .../Inventory/Interfaces/IItem.cs | 16 +- .../Inventory/Interfaces/IUsableItem.cs | 6 +- .../Inventory/Interfaces/IWeaponDealItem.cs | 6 +- .../Inventory/Items/DropItem.cs | 28 +- .../Inventory/Items/FoodItem.cs | 42 +- .../Inventory/Items/WeaponDealItem.cs | 32 +- ReallifeGamemode.Server/Job/JobBase.cs | 102 +- .../Job/RefuseCollectorJob.cs | 626 ++-- ReallifeGamemode.Server/Main.cs | 162 +- .../Managers/ATMManager.cs | 246 +- .../Managers/BankManager.cs | 174 +- .../Managers/CharacterCreator.cs | 624 ++-- .../Managers/DoorManager.cs | 126 +- .../Managers/JobManager.cs | 622 ++-- .../Managers/LoadManager.cs | 42 +- .../Managers/PedManager.cs | 4 +- .../Managers/SaveManager.cs | 348 +-- .../Managers/ShopManager.cs | 92 +- .../Managers/TimeManager.cs | 44 +- .../Migrations/20190226185806_Initial.cs | 1742 +++++------ .../20190306194826_VehicleDistanceDriven.cs | 30 +- .../Migrations/20190307163335_VehicleTank.cs | 30 +- .../Migrations/20190309184251_ATM.cs | 52 +- .../Migrations/20190408143319_Handmoney.cs | 30 +- .../Migrations/20190411180607_TuningGarage.cs | 46 +- .../Migrations/20190505154643_Groups.cs | 220 +- .../20190513111017_UnusedColumnRemove.cs | 28 +- .../Migrations/20190513161249_Jobs.cs | 150 +- .../Migrations/20190516094446_JobFix.cs | 118 +- .../20190624153156_ClothesTexture.cs | 30 +- .../20190625202943_ClientWanteds.cs | 30 +- .../Migrations/20190626193631_House.cs | 84 +- .../20190626202159_HousePosition.cs | 66 +- .../20190627162731_UserHouseReference.cs | 38 +- .../Migrations/20190706132925_UserWage.cs | 30 +- .../Migrations/20190707184050_BusRoutes.cs | 100 +- .../20190708161922_UserHouseReferenceFix.cs | 66 +- .../Migrations/20190715192123_JailTime.cs | 30 +- .../Migrations/20190719210722_PaydayTimer.cs | 30 +- .../20190721144830_FactionWeapons.cs | 68 +- .../20190722201850_VehicleLivery.cs | 30 +- .../20190728142431_HouseEnhancments.cs | 120 +- .../Migrations/20190805184145_VehicleItems.cs | 68 +- .../Migrations/20190911192912_BusinessData.cs | 44 +- .../Shop/Clothing/ClotheShop.cs | 54 +- .../Shop/SevenEleven/ItemShop.cs | 56 +- .../Util/CheckPointHandle.cs | 182 +- ReallifeGamemode.Server/Util/Converter.cs | 50 +- ReallifeGamemode.Server/Util/GlobalHelper.cs | 10 +- ReallifeGamemode.Server/Util/IndicatorData.cs | 8 +- .../Util/SmoothThrottle.cs | 64 +- ReallifeGamemode.Server/Util/TaxiContract.cs | 10 +- ReallifeGamemode.Server/Util/ThreadTimers.cs | 82 +- .../Util/TransactionResult.cs | 14 +- ReallifeGamemode.Server/Util/VehicleSync.cs | 974 +++---- ReallifeGamemode.Server/Wanted/Autowanted.cs | 32 +- ReallifeGamemode.Server/Wanted/Jail.cs | 430 +-- .../Wanted/WantedEscapeTimer.cs | 92 +- 105 files changed, 8184 insertions(+), 8184 deletions(-) diff --git a/ReallifeGamemode.DataService/Startup.cs b/ReallifeGamemode.DataService/Startup.cs index 06830c90..a6349227 100644 --- a/ReallifeGamemode.DataService/Startup.cs +++ b/ReallifeGamemode.DataService/Startup.cs @@ -29,7 +29,7 @@ namespace ReallifeGamemode.DataService private readonly IConfiguration configuration; private readonly IWebHostEnvironment environment; - public Startup(IConfiguration configuration,IWebHostEnvironment environment, ILogger logger) + public Startup(IConfiguration configuration, IWebHostEnvironment environment, ILogger logger) { this.configuration = configuration; this.environment = environment; diff --git a/ReallifeGamemode.Database/Entities/JobVehicle.cs b/ReallifeGamemode.Database/Entities/JobVehicle.cs index 712fa83a..8a66bdad 100644 --- a/ReallifeGamemode.Database/Entities/JobVehicle.cs +++ b/ReallifeGamemode.Database/Entities/JobVehicle.cs @@ -1,6 +1,6 @@ namespace ReallifeGamemode.Database.Entities { - public partial class JobVehicle : ServerVehicle + public partial class JobVehicle : ServerVehicle { public int JobId { get; set; } } diff --git a/ReallifeGamemode.Database/Entities/Turfs.cs b/ReallifeGamemode.Database/Entities/Turfs.cs index 9ca8a6be..a6db8b19 100644 --- a/ReallifeGamemode.Database/Entities/Turfs.cs +++ b/ReallifeGamemode.Database/Entities/Turfs.cs @@ -22,7 +22,7 @@ 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 Value { get; set; } = 0; public int MaxValue { get; set; } = 0; public bool Surplus { get; set; } = false; diff --git a/ReallifeGamemode.Database/Migrations/20200126141420_Initial.cs b/ReallifeGamemode.Database/Migrations/20200126141420_Initial.cs index 617406c5..7d1b77ab 100644 --- a/ReallifeGamemode.Database/Migrations/20200126141420_Initial.cs +++ b/ReallifeGamemode.Database/Migrations/20200126141420_Initial.cs @@ -4,1282 +4,1282 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { - public partial class Initial : Migration + public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "ATMs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Faulty = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ATMs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BankAccountTransactionLogs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Sender = table.Column(maxLength: 32, nullable: true), - SenderBalance = table.Column(nullable: false), - MoneySent = table.Column(nullable: false), - Receiver = table.Column(maxLength: 32, nullable: true), - ReceiverBalance = table.Column(nullable: false), - NewSenderBalance = table.Column(nullable: false), - NewReceiverBalance = table.Column(nullable: false), - Fee = table.Column(nullable: false), - Origin = table.Column(maxLength: 32, nullable: true), - Timestamp = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) - }, - constraints: table => - { - table.PrimaryKey("PK_BankAccountTransactionLogs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Blips", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Sprite = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Name = table.Column(nullable: true), - Scale = table.Column(nullable: false), - Color = table.Column(nullable: false), - Alpha = table.Column(nullable: false), - DrawDistance = table.Column(nullable: false), - ShortRange = table.Column(nullable: false), - Rotation = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Blips", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BusinessBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false), - BusinessId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BusinessBankAccounts", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BusinessData", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - BusinessId = table.Column(nullable: false), - Price = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BusinessData", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BusRoutes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_BusRoutes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "ClothCombinations", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Gender = table.Column(nullable: false), - Top = table.Column(nullable: false), - Torso = table.Column(nullable: false), - Undershirt = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ClothCombinations", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Factions", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(maxLength: 32, nullable: true), - StateOwned = table.Column(nullable: false), - WeaponDealTime = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Factions", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "GotoPoints", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(maxLength: 32, nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GotoPoints", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Groups", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Groups", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Interiors", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true), - EnterPosition = table.Column(nullable: true), - ExitPosition = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Interiors", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Locations", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Heading = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Locations", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Markers", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Scale = table.Column(nullable: false), - DirectionX = table.Column(nullable: false), - DirectionY = table.Column(nullable: false), - DirectionZ = table.Column(nullable: false), - RotationX = table.Column(nullable: false), - RotationY = table.Column(nullable: false), - RotationZ = table.Column(nullable: false), - ColorR = table.Column(nullable: false), - ColorG = table.Column(nullable: false), - ColorB = table.Column(nullable: false), - ColorA = table.Column(nullable: false), - Visible = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Markers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Peds", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - HashModel = table.Column(nullable: true), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Heading = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Peds", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Pickups", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - PositionX = table.Column(maxLength: 128, nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - RotationX = table.Column(nullable: false), - RotationY = table.Column(nullable: false), - RotationZ = table.Column(nullable: false), - Vehicle = table.Column(nullable: false), - RespawnTime = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Pickups", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "ShopClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ClotheId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - TypeId = table.Column(nullable: true), - ComponentId = table.Column(nullable: false), - Category = table.Column(nullable: false), - Price = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ShopClothes", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "TextLabels", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Text = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - LOS = table.Column(nullable: false), - Font = table.Column(nullable: false), - DrawDistance = table.Column(nullable: false), - ColorR = table.Column(nullable: false), - ColorG = table.Column(nullable: false), - ColorB = table.Column(nullable: false), - ColorA = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TextLabels", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "TuningGarages", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TuningGarages", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Turfs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: true), - Owner = table.Column(nullable: true), - Name = table.Column(nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Rotation = table.Column(nullable: false), - Range = table.Column(nullable: false), - Color = table.Column(nullable: false), - Vector = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Turfs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "WhitelistEntries", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - SocialClubName = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_WhitelistEntries", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BusRoutesPoints", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - BusRouteId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_BusRoutesPoints", x => x.Id); - table.ForeignKey( - name: "FK_BusRoutesPoints_BusRoutes_BusRouteId", - column: x => x.BusRouteId, - principalTable: "BusRoutes", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "Doors", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Category = table.Column(nullable: true), - Name = table.Column(nullable: true), - Locked = table.Column(nullable: false), - Model = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Radius = table.Column(nullable: false), - FactionId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Doors", x => x.Id); - table.ForeignKey( - name: "FK_Doors_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "DutyClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - SlotType = table.Column(nullable: false), - SlotId = table.Column(nullable: false), - ClothId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_DutyClothes", x => x.Id); - table.ForeignKey( - name: "FK_DutyClothes_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "FactionBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - Bic = table.Column(maxLength: 12, nullable: true), - Iban = table.Column(maxLength: 32, nullable: true), - Balance = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_FactionBankAccounts_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "FactionRanks", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - RankName = table.Column(nullable: true), - Order = table.Column(nullable: false), - FactionId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionRanks", x => x.Id); - table.ForeignKey( - name: "FK_FactionRanks_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "FactionWeapons", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: true), - WeaponModel = table.Column(nullable: true), - SlotID = table.Column(nullable: false), - Rank = table.Column(nullable: false), - Ammount = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionWeapons", x => x.Id); - table.ForeignKey( - name: "FK_FactionWeapons_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "GroupBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - GroupId = table.Column(nullable: true), - Balance = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GroupBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_GroupBankAccounts_Groups_GroupId", - column: x => x.GroupId, - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "Users", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(maxLength: 32, nullable: true), - SocialClubName = table.Column(maxLength: 32, nullable: true), - Password = table.Column(maxLength: 64, nullable: true), - LogUserId = table.Column(nullable: false), - RegistrationDate = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Email = table.Column(maxLength: 64, nullable: true), - AdminLevel = table.Column(nullable: false), - Dead = table.Column(nullable: false), - Handmoney = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - CharacterId = table.Column(nullable: true), - BanId = table.Column(nullable: true), - BusinessId = table.Column(nullable: true), - FactionId = table.Column(nullable: true), - FactionLeader = table.Column(nullable: false), - FactionRankId = table.Column(nullable: true), - GroupId = table.Column(nullable: true), - GroupRank = table.Column(nullable: false), - HouseId = table.Column(nullable: true), - JobId = table.Column(nullable: true), - Wanteds = table.Column(nullable: false), - Wage = table.Column(nullable: false), - JailTime = table.Column(nullable: false), - PaydayTimer = table.Column(nullable: false), - DriverLicenseVehicle = table.Column(nullable: false), - FlyingLicensePlane = table.Column(nullable: false), - DriverLicenseBike = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Users", x => x.Id); - table.ForeignKey( - name: "FK_Users_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_Users_FactionRanks_FactionRankId", - column: x => x.FactionRankId, - principalTable: "FactionRanks", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_Users_Groups_GroupId", - column: x => x.GroupId, - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "Bans", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Reason = table.Column(nullable: true), - BannedBy = table.Column(nullable: true), - Applied = table.Column(nullable: false), - UntilDateTime = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Bans", x => x.Id); - table.ForeignKey( - name: "FK_Bans_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CharacterClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Duty = table.Column(nullable: false), - SlotType = table.Column(nullable: false), - SlotId = table.Column(nullable: false), - ClothId = table.Column(nullable: false), - Texture = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CharacterClothes", x => x.Id); - table.ForeignKey( - name: "FK_CharacterClothes_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Characters", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - Father = table.Column(nullable: false), - Mother = table.Column(nullable: false), - Similarity = table.Column(nullable: false), - SkinSimilarity = table.Column(nullable: false), - NoseWidth = table.Column(nullable: false), - NoseBottomHeight = table.Column(nullable: false), - NoseTipLength = table.Column(nullable: false), - NoseBridgeDepth = table.Column(nullable: false), - NoseTipHeight = table.Column(nullable: false), - NoseBroken = table.Column(nullable: false), - BrowHeight = table.Column(nullable: false), - BrowDepth = table.Column(nullable: false), - CheekboneHeight = table.Column(nullable: false), - CheekboneWidth = table.Column(nullable: false), - CheekDepth = table.Column(nullable: false), - EyeSize = table.Column(nullable: false), - LipThickness = table.Column(nullable: false), - JawWidth = table.Column(nullable: false), - JawShape = table.Column(nullable: false), - ChinHeight = table.Column(nullable: false), - ChinDepth = table.Column(nullable: false), - ChinWidth = table.Column(nullable: false), - ChinIndent = table.Column(nullable: false), - NeckWidth = table.Column(nullable: false), - Blemishes = table.Column(nullable: false), - BlemishesOpacity = table.Column(nullable: false), - FacialHair = table.Column(nullable: false), - FacialHairOpacity = table.Column(nullable: false), - Eyebrows = table.Column(nullable: false), - EyebrowsOpacity = table.Column(nullable: false), - Ageing = table.Column(nullable: false), - AgeingOpacity = table.Column(nullable: false), - Makeup = table.Column(nullable: false), - MakeupOpacity = table.Column(nullable: false), - Blush = table.Column(nullable: false), - BlushOpacity = table.Column(nullable: false), - Complexion = table.Column(nullable: false), - ComplexionOpacity = table.Column(nullable: false), - SunDamage = table.Column(nullable: false), - SunDamageOpacity = table.Column(nullable: false), - Lipstick = table.Column(nullable: false), - LipstickOpacity = table.Column(nullable: false), - Freckles = table.Column(nullable: false), - FrecklesOpacity = table.Column(nullable: false), - ChestHair = table.Column(nullable: false), - ChestHairOpacity = table.Column(nullable: false), - Hair = table.Column(nullable: false), - HairColor = table.Column(nullable: false), - HairHighlightColor = table.Column(nullable: false), - EyebrowColor = table.Column(nullable: false), - BeardColor = table.Column(nullable: false), - EyeColor = table.Column(nullable: false), - BlushColor = table.Column(nullable: false), - LipstickColor = table.Column(nullable: false), - ChestHairColor = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Characters", x => x.Id); - table.ForeignKey( - name: "FK_Characters_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "DeathLogs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - VictimId = table.Column(nullable: false), - KillerId = table.Column(nullable: true), - VictimPositionX = table.Column(nullable: false), - VictimPositionY = table.Column(nullable: false), - VictimPositionZ = table.Column(nullable: false), - VictimHeading = table.Column(nullable: false), - KillerPositionX = table.Column(nullable: false), - KillerPositionY = table.Column(nullable: false), - KillerPositionZ = table.Column(nullable: false), - KillerHeading = table.Column(nullable: false), - CauseOfDeath = table.Column(maxLength: 64, nullable: true), - Timestamp = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) - }, - constraints: table => - { - table.PrimaryKey("PK_DeathLogs", x => x.Id); - table.ForeignKey( - name: "FK_DeathLogs_Users_KillerId", - column: x => x.KillerId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_DeathLogs_Users_VictimId", - column: x => x.VictimId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Houses", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(nullable: true), - Price = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - RentalFee = table.Column(nullable: false), - CanRentIn = table.Column(nullable: false), - OwnerId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Houses", x => x.Id); - table.ForeignKey( - name: "FK_Houses_Users_OwnerId", - column: x => x.OwnerId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "News", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: true), - Caption = table.Column(nullable: true), - Content = table.Column(nullable: true), - Active = table.Column(nullable: false), - Timestamp = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_News", x => x.Id); - table.ForeignKey( - name: "FK_News_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "ServerVehicles", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Model = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Heading = table.Column(nullable: false), - NumberPlate = table.Column(maxLength: 8, nullable: true), - PrimaryColor = table.Column(nullable: false), - SecondaryColor = table.Column(nullable: false), - Locked = table.Column(nullable: false), - Active = table.Column(nullable: false, defaultValue: true), - DistanceDriven = table.Column(nullable: false), - TankAmount = table.Column(nullable: false), - Livery = table.Column(nullable: false), - Discriminator = table.Column(nullable: false), - FactionId = table.Column(nullable: true), - GroupId = table.Column(nullable: true), - JobId = table.Column(nullable: true), - SchoolId = table.Column(nullable: true), - BusinessId = table.Column(nullable: true), - Price = table.Column(nullable: true), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ServerVehicles", x => x.Id); - table.ForeignKey( - name: "FK_ServerVehicles_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_ServerVehicles_Groups_GroupId", - column: x => x.GroupId, - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_ServerVehicles_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "UserBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Bic = table.Column(maxLength: 12, nullable: true), - Iban = table.Column(maxLength: 32, nullable: true), - Balance = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_UserBankAccounts_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "UserItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ItemId = table.Column(nullable: false), - UserId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Slot = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserItems", x => x.Id); - table.ForeignKey( - name: "FK_UserItems_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "HouseRentals", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - HouseId = table.Column(nullable: true), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_HouseRentals", x => x.Id); - table.ForeignKey( - name: "FK_HouseRentals_Houses_HouseId", - column: x => x.HouseId, - principalTable: "Houses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_HouseRentals_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "VehicleItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ItemId = table.Column(nullable: false), - VehicleId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Slot = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_VehicleItems", x => x.Id); - table.ForeignKey( - name: "FK_VehicleItems_ServerVehicles_VehicleId", - column: x => x.VehicleId, - principalTable: "ServerVehicles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "VehicleMods", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ServerVehicleId = table.Column(nullable: false), - Slot = table.Column(nullable: false), - ModId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_VehicleMods", x => x.Id); - table.ForeignKey( - name: "FK_VehicleMods_ServerVehicles_ServerVehicleId", - column: x => x.ServerVehicleId, - principalTable: "ServerVehicles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Bans_UserId", - table: "Bans", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_BusinessBankAccounts_BusinessId", - table: "BusinessBankAccounts", - column: "BusinessId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_BusRoutesPoints_BusRouteId", - table: "BusRoutesPoints", - column: "BusRouteId"); - - migrationBuilder.CreateIndex( - name: "IX_CharacterClothes_UserId", - table: "CharacterClothes", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_Characters_UserId", - table: "Characters", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_DeathLogs_KillerId", - table: "DeathLogs", - column: "KillerId"); - - migrationBuilder.CreateIndex( - name: "IX_DeathLogs_VictimId", - table: "DeathLogs", - column: "VictimId"); - - migrationBuilder.CreateIndex( - name: "IX_Doors_FactionId", - table: "Doors", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_DutyClothes_FactionId", - table: "DutyClothes", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_FactionBankAccounts_FactionId", - table: "FactionBankAccounts", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_FactionRanks_FactionId", - table: "FactionRanks", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_FactionWeapons_FactionId", - table: "FactionWeapons", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_GroupBankAccounts_GroupId", - table: "GroupBankAccounts", - column: "GroupId"); - - migrationBuilder.CreateIndex( - name: "IX_HouseRentals_HouseId", - table: "HouseRentals", - column: "HouseId"); - - migrationBuilder.CreateIndex( - name: "IX_HouseRentals_UserId", - table: "HouseRentals", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_Houses_OwnerId", - table: "Houses", - column: "OwnerId"); - - migrationBuilder.CreateIndex( - name: "IX_News_UserId", - table: "News", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_FactionId", - table: "ServerVehicles", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_GroupId", - table: "ServerVehicles", - column: "GroupId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_UserId", - table: "ServerVehicles", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_UserBankAccounts_UserId", - table: "UserBankAccounts", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_UserItems_UserId", - table: "UserItems", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_BanId", - table: "Users", - column: "BanId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_BusinessId", - table: "Users", - column: "BusinessId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_Users_CharacterId", - table: "Users", - column: "CharacterId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_FactionId", - table: "Users", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_FactionRankId", - table: "Users", - column: "FactionRankId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_GroupId", - table: "Users", - column: "GroupId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_HouseId", - table: "Users", - column: "HouseId"); - - migrationBuilder.CreateIndex( - name: "IX_VehicleItems_VehicleId", - table: "VehicleItems", - column: "VehicleId"); - - migrationBuilder.CreateIndex( - name: "IX_VehicleMods_ServerVehicleId_Slot", - table: "VehicleMods", - columns: new[] { "ServerVehicleId", "Slot" }, - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Houses_HouseId", - table: "Users", - column: "HouseId", - principalTable: "Houses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Bans_BanId", - table: "Users", - column: "BanId", - principalTable: "Bans", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Characters_CharacterId", - table: "Users", - column: "CharacterId", - principalTable: "Characters", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Bans_Users_UserId", - table: "Bans"); - - migrationBuilder.DropForeignKey( - name: "FK_Characters_Users_UserId", - table: "Characters"); - - migrationBuilder.DropForeignKey( - name: "FK_Houses_Users_OwnerId", - table: "Houses"); - - migrationBuilder.DropTable( - name: "ATMs"); - - migrationBuilder.DropTable( - name: "BankAccountTransactionLogs"); - - migrationBuilder.DropTable( - name: "Blips"); - - migrationBuilder.DropTable( - name: "BusinessBankAccounts"); - - migrationBuilder.DropTable( - name: "BusinessData"); - - migrationBuilder.DropTable( - name: "BusRoutesPoints"); - - migrationBuilder.DropTable( - name: "CharacterClothes"); - - migrationBuilder.DropTable( - name: "ClothCombinations"); - - migrationBuilder.DropTable( - name: "DeathLogs"); - - migrationBuilder.DropTable( - name: "Doors"); - - migrationBuilder.DropTable( - name: "DutyClothes"); - - migrationBuilder.DropTable( - name: "FactionBankAccounts"); - - migrationBuilder.DropTable( - name: "FactionWeapons"); - - migrationBuilder.DropTable( - name: "GotoPoints"); - - migrationBuilder.DropTable( - name: "GroupBankAccounts"); - - migrationBuilder.DropTable( - name: "HouseRentals"); - - migrationBuilder.DropTable( - name: "Interiors"); - - migrationBuilder.DropTable( - name: "Locations"); - - migrationBuilder.DropTable( - name: "Markers"); - - migrationBuilder.DropTable( - name: "News"); - - migrationBuilder.DropTable( - name: "Peds"); - - migrationBuilder.DropTable( - name: "Pickups"); - - migrationBuilder.DropTable( - name: "ShopClothes"); - - migrationBuilder.DropTable( - name: "TextLabels"); - - migrationBuilder.DropTable( - name: "TuningGarages"); - - migrationBuilder.DropTable( - name: "Turfs"); - - migrationBuilder.DropTable( - name: "UserBankAccounts"); - - migrationBuilder.DropTable( - name: "UserItems"); - - migrationBuilder.DropTable( - name: "VehicleItems"); - - migrationBuilder.DropTable( - name: "VehicleMods"); - - migrationBuilder.DropTable( - name: "WhitelistEntries"); - - migrationBuilder.DropTable( - name: "BusRoutes"); - - migrationBuilder.DropTable( - name: "ServerVehicles"); - - migrationBuilder.DropTable( - name: "Users"); - - migrationBuilder.DropTable( - name: "Bans"); - - migrationBuilder.DropTable( - name: "Characters"); - - migrationBuilder.DropTable( - name: "FactionRanks"); - - migrationBuilder.DropTable( - name: "Groups"); - - migrationBuilder.DropTable( - name: "Houses"); - - migrationBuilder.DropTable( - name: "Factions"); - } + migrationBuilder.CreateTable( + name: "ATMs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Faulty = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ATMs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BankAccountTransactionLogs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Sender = table.Column(maxLength: 32, nullable: true), + SenderBalance = table.Column(nullable: false), + MoneySent = table.Column(nullable: false), + Receiver = table.Column(maxLength: 32, nullable: true), + ReceiverBalance = table.Column(nullable: false), + NewSenderBalance = table.Column(nullable: false), + NewReceiverBalance = table.Column(nullable: false), + Fee = table.Column(nullable: false), + Origin = table.Column(maxLength: 32, nullable: true), + Timestamp = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + }, + constraints: table => + { + table.PrimaryKey("PK_BankAccountTransactionLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Blips", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Sprite = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Name = table.Column(nullable: true), + Scale = table.Column(nullable: false), + Color = table.Column(nullable: false), + Alpha = table.Column(nullable: false), + DrawDistance = table.Column(nullable: false), + ShortRange = table.Column(nullable: false), + Rotation = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Blips", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BusinessBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false), + BusinessId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BusinessBankAccounts", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BusinessData", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + BusinessId = table.Column(nullable: false), + Price = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BusinessData", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BusRoutes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BusRoutes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ClothCombinations", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Gender = table.Column(nullable: false), + Top = table.Column(nullable: false), + Torso = table.Column(nullable: false), + Undershirt = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClothCombinations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Factions", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(maxLength: 32, nullable: true), + StateOwned = table.Column(nullable: false), + WeaponDealTime = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Factions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "GotoPoints", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(maxLength: 32, nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GotoPoints", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Groups", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Groups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Interiors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + EnterPosition = table.Column(nullable: true), + ExitPosition = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Interiors", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Locations", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Heading = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Locations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Markers", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Scale = table.Column(nullable: false), + DirectionX = table.Column(nullable: false), + DirectionY = table.Column(nullable: false), + DirectionZ = table.Column(nullable: false), + RotationX = table.Column(nullable: false), + RotationY = table.Column(nullable: false), + RotationZ = table.Column(nullable: false), + ColorR = table.Column(nullable: false), + ColorG = table.Column(nullable: false), + ColorB = table.Column(nullable: false), + ColorA = table.Column(nullable: false), + Visible = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Markers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Peds", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + HashModel = table.Column(nullable: true), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Heading = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Peds", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Pickups", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + PositionX = table.Column(maxLength: 128, nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + RotationX = table.Column(nullable: false), + RotationY = table.Column(nullable: false), + RotationZ = table.Column(nullable: false), + Vehicle = table.Column(nullable: false), + RespawnTime = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Pickups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ShopClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ClotheId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + TypeId = table.Column(nullable: true), + ComponentId = table.Column(nullable: false), + Category = table.Column(nullable: false), + Price = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ShopClothes", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "TextLabels", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Text = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + LOS = table.Column(nullable: false), + Font = table.Column(nullable: false), + DrawDistance = table.Column(nullable: false), + ColorR = table.Column(nullable: false), + ColorG = table.Column(nullable: false), + ColorB = table.Column(nullable: false), + ColorA = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TextLabels", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "TuningGarages", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TuningGarages", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Turfs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: true), + Owner = table.Column(nullable: true), + Name = table.Column(nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Rotation = table.Column(nullable: false), + Range = table.Column(nullable: false), + Color = table.Column(nullable: false), + Vector = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Turfs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WhitelistEntries", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + SocialClubName = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WhitelistEntries", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BusRoutesPoints", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + BusRouteId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BusRoutesPoints", x => x.Id); + table.ForeignKey( + name: "FK_BusRoutesPoints_BusRoutes_BusRouteId", + column: x => x.BusRouteId, + principalTable: "BusRoutes", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Doors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Category = table.Column(nullable: true), + Name = table.Column(nullable: true), + Locked = table.Column(nullable: false), + Model = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Radius = table.Column(nullable: false), + FactionId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Doors", x => x.Id); + table.ForeignKey( + name: "FK_Doors_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "DutyClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + SlotType = table.Column(nullable: false), + SlotId = table.Column(nullable: false), + ClothId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_DutyClothes", x => x.Id); + table.ForeignKey( + name: "FK_DutyClothes_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FactionBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + Bic = table.Column(maxLength: 12, nullable: true), + Iban = table.Column(maxLength: 32, nullable: true), + Balance = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_FactionBankAccounts_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FactionRanks", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + RankName = table.Column(nullable: true), + Order = table.Column(nullable: false), + FactionId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionRanks", x => x.Id); + table.ForeignKey( + name: "FK_FactionRanks_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FactionWeapons", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: true), + WeaponModel = table.Column(nullable: true), + SlotID = table.Column(nullable: false), + Rank = table.Column(nullable: false), + Ammount = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionWeapons", x => x.Id); + table.ForeignKey( + name: "FK_FactionWeapons_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "GroupBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + GroupId = table.Column(nullable: true), + Balance = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GroupBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_GroupBankAccounts_Groups_GroupId", + column: x => x.GroupId, + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(maxLength: 32, nullable: true), + SocialClubName = table.Column(maxLength: 32, nullable: true), + Password = table.Column(maxLength: 64, nullable: true), + LogUserId = table.Column(nullable: false), + RegistrationDate = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Email = table.Column(maxLength: 64, nullable: true), + AdminLevel = table.Column(nullable: false), + Dead = table.Column(nullable: false), + Handmoney = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + CharacterId = table.Column(nullable: true), + BanId = table.Column(nullable: true), + BusinessId = table.Column(nullable: true), + FactionId = table.Column(nullable: true), + FactionLeader = table.Column(nullable: false), + FactionRankId = table.Column(nullable: true), + GroupId = table.Column(nullable: true), + GroupRank = table.Column(nullable: false), + HouseId = table.Column(nullable: true), + JobId = table.Column(nullable: true), + Wanteds = table.Column(nullable: false), + Wage = table.Column(nullable: false), + JailTime = table.Column(nullable: false), + PaydayTimer = table.Column(nullable: false), + DriverLicenseVehicle = table.Column(nullable: false), + FlyingLicensePlane = table.Column(nullable: false), + DriverLicenseBike = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + table.ForeignKey( + name: "FK_Users_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Users_FactionRanks_FactionRankId", + column: x => x.FactionRankId, + principalTable: "FactionRanks", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Users_Groups_GroupId", + column: x => x.GroupId, + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Bans", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Reason = table.Column(nullable: true), + BannedBy = table.Column(nullable: true), + Applied = table.Column(nullable: false), + UntilDateTime = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Bans", x => x.Id); + table.ForeignKey( + name: "FK_Bans_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CharacterClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Duty = table.Column(nullable: false), + SlotType = table.Column(nullable: false), + SlotId = table.Column(nullable: false), + ClothId = table.Column(nullable: false), + Texture = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CharacterClothes", x => x.Id); + table.ForeignKey( + name: "FK_CharacterClothes_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Characters", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + Father = table.Column(nullable: false), + Mother = table.Column(nullable: false), + Similarity = table.Column(nullable: false), + SkinSimilarity = table.Column(nullable: false), + NoseWidth = table.Column(nullable: false), + NoseBottomHeight = table.Column(nullable: false), + NoseTipLength = table.Column(nullable: false), + NoseBridgeDepth = table.Column(nullable: false), + NoseTipHeight = table.Column(nullable: false), + NoseBroken = table.Column(nullable: false), + BrowHeight = table.Column(nullable: false), + BrowDepth = table.Column(nullable: false), + CheekboneHeight = table.Column(nullable: false), + CheekboneWidth = table.Column(nullable: false), + CheekDepth = table.Column(nullable: false), + EyeSize = table.Column(nullable: false), + LipThickness = table.Column(nullable: false), + JawWidth = table.Column(nullable: false), + JawShape = table.Column(nullable: false), + ChinHeight = table.Column(nullable: false), + ChinDepth = table.Column(nullable: false), + ChinWidth = table.Column(nullable: false), + ChinIndent = table.Column(nullable: false), + NeckWidth = table.Column(nullable: false), + Blemishes = table.Column(nullable: false), + BlemishesOpacity = table.Column(nullable: false), + FacialHair = table.Column(nullable: false), + FacialHairOpacity = table.Column(nullable: false), + Eyebrows = table.Column(nullable: false), + EyebrowsOpacity = table.Column(nullable: false), + Ageing = table.Column(nullable: false), + AgeingOpacity = table.Column(nullable: false), + Makeup = table.Column(nullable: false), + MakeupOpacity = table.Column(nullable: false), + Blush = table.Column(nullable: false), + BlushOpacity = table.Column(nullable: false), + Complexion = table.Column(nullable: false), + ComplexionOpacity = table.Column(nullable: false), + SunDamage = table.Column(nullable: false), + SunDamageOpacity = table.Column(nullable: false), + Lipstick = table.Column(nullable: false), + LipstickOpacity = table.Column(nullable: false), + Freckles = table.Column(nullable: false), + FrecklesOpacity = table.Column(nullable: false), + ChestHair = table.Column(nullable: false), + ChestHairOpacity = table.Column(nullable: false), + Hair = table.Column(nullable: false), + HairColor = table.Column(nullable: false), + HairHighlightColor = table.Column(nullable: false), + EyebrowColor = table.Column(nullable: false), + BeardColor = table.Column(nullable: false), + EyeColor = table.Column(nullable: false), + BlushColor = table.Column(nullable: false), + LipstickColor = table.Column(nullable: false), + ChestHairColor = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Characters", x => x.Id); + table.ForeignKey( + name: "FK_Characters_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "DeathLogs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + VictimId = table.Column(nullable: false), + KillerId = table.Column(nullable: true), + VictimPositionX = table.Column(nullable: false), + VictimPositionY = table.Column(nullable: false), + VictimPositionZ = table.Column(nullable: false), + VictimHeading = table.Column(nullable: false), + KillerPositionX = table.Column(nullable: false), + KillerPositionY = table.Column(nullable: false), + KillerPositionZ = table.Column(nullable: false), + KillerHeading = table.Column(nullable: false), + CauseOfDeath = table.Column(maxLength: 64, nullable: true), + Timestamp = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + }, + constraints: table => + { + table.PrimaryKey("PK_DeathLogs", x => x.Id); + table.ForeignKey( + name: "FK_DeathLogs_Users_KillerId", + column: x => x.KillerId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_DeathLogs_Users_VictimId", + column: x => x.VictimId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Houses", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: true), + Price = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + RentalFee = table.Column(nullable: false), + CanRentIn = table.Column(nullable: false), + OwnerId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Houses", x => x.Id); + table.ForeignKey( + name: "FK_Houses_Users_OwnerId", + column: x => x.OwnerId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "News", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: true), + Caption = table.Column(nullable: true), + Content = table.Column(nullable: true), + Active = table.Column(nullable: false), + Timestamp = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_News", x => x.Id); + table.ForeignKey( + name: "FK_News_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ServerVehicles", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Model = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Heading = table.Column(nullable: false), + NumberPlate = table.Column(maxLength: 8, nullable: true), + PrimaryColor = table.Column(nullable: false), + SecondaryColor = table.Column(nullable: false), + Locked = table.Column(nullable: false), + Active = table.Column(nullable: false, defaultValue: true), + DistanceDriven = table.Column(nullable: false), + TankAmount = table.Column(nullable: false), + Livery = table.Column(nullable: false), + Discriminator = table.Column(nullable: false), + FactionId = table.Column(nullable: true), + GroupId = table.Column(nullable: true), + JobId = table.Column(nullable: true), + SchoolId = table.Column(nullable: true), + BusinessId = table.Column(nullable: true), + Price = table.Column(nullable: true), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ServerVehicles", x => x.Id); + table.ForeignKey( + name: "FK_ServerVehicles_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ServerVehicles_Groups_GroupId", + column: x => x.GroupId, + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ServerVehicles_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "UserBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Bic = table.Column(maxLength: 12, nullable: true), + Iban = table.Column(maxLength: 32, nullable: true), + Balance = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_UserBankAccounts_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "UserItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemId = table.Column(nullable: false), + UserId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Slot = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserItems", x => x.Id); + table.ForeignKey( + name: "FK_UserItems_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "HouseRentals", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + HouseId = table.Column(nullable: true), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HouseRentals", x => x.Id); + table.ForeignKey( + name: "FK_HouseRentals_Houses_HouseId", + column: x => x.HouseId, + principalTable: "Houses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_HouseRentals_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "VehicleItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemId = table.Column(nullable: false), + VehicleId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Slot = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VehicleItems", x => x.Id); + table.ForeignKey( + name: "FK_VehicleItems_ServerVehicles_VehicleId", + column: x => x.VehicleId, + principalTable: "ServerVehicles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "VehicleMods", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ServerVehicleId = table.Column(nullable: false), + Slot = table.Column(nullable: false), + ModId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VehicleMods", x => x.Id); + table.ForeignKey( + name: "FK_VehicleMods_ServerVehicles_ServerVehicleId", + column: x => x.ServerVehicleId, + principalTable: "ServerVehicles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Bans_UserId", + table: "Bans", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_BusinessBankAccounts_BusinessId", + table: "BusinessBankAccounts", + column: "BusinessId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_BusRoutesPoints_BusRouteId", + table: "BusRoutesPoints", + column: "BusRouteId"); + + migrationBuilder.CreateIndex( + name: "IX_CharacterClothes_UserId", + table: "CharacterClothes", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_Characters_UserId", + table: "Characters", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_DeathLogs_KillerId", + table: "DeathLogs", + column: "KillerId"); + + migrationBuilder.CreateIndex( + name: "IX_DeathLogs_VictimId", + table: "DeathLogs", + column: "VictimId"); + + migrationBuilder.CreateIndex( + name: "IX_Doors_FactionId", + table: "Doors", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_DutyClothes_FactionId", + table: "DutyClothes", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_FactionBankAccounts_FactionId", + table: "FactionBankAccounts", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_FactionRanks_FactionId", + table: "FactionRanks", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_FactionWeapons_FactionId", + table: "FactionWeapons", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_GroupBankAccounts_GroupId", + table: "GroupBankAccounts", + column: "GroupId"); + + migrationBuilder.CreateIndex( + name: "IX_HouseRentals_HouseId", + table: "HouseRentals", + column: "HouseId"); + + migrationBuilder.CreateIndex( + name: "IX_HouseRentals_UserId", + table: "HouseRentals", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_Houses_OwnerId", + table: "Houses", + column: "OwnerId"); + + migrationBuilder.CreateIndex( + name: "IX_News_UserId", + table: "News", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_FactionId", + table: "ServerVehicles", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_GroupId", + table: "ServerVehicles", + column: "GroupId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_UserId", + table: "ServerVehicles", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_UserBankAccounts_UserId", + table: "UserBankAccounts", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_UserItems_UserId", + table: "UserItems", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_BanId", + table: "Users", + column: "BanId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_BusinessId", + table: "Users", + column: "BusinessId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Users_CharacterId", + table: "Users", + column: "CharacterId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_FactionId", + table: "Users", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_FactionRankId", + table: "Users", + column: "FactionRankId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_GroupId", + table: "Users", + column: "GroupId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_HouseId", + table: "Users", + column: "HouseId"); + + migrationBuilder.CreateIndex( + name: "IX_VehicleItems_VehicleId", + table: "VehicleItems", + column: "VehicleId"); + + migrationBuilder.CreateIndex( + name: "IX_VehicleMods_ServerVehicleId_Slot", + table: "VehicleMods", + columns: new[] { "ServerVehicleId", "Slot" }, + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Houses_HouseId", + table: "Users", + column: "HouseId", + principalTable: "Houses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Bans_BanId", + table: "Users", + column: "BanId", + principalTable: "Bans", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Characters_CharacterId", + table: "Users", + column: "CharacterId", + principalTable: "Characters", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Bans_Users_UserId", + table: "Bans"); + + migrationBuilder.DropForeignKey( + name: "FK_Characters_Users_UserId", + table: "Characters"); + + migrationBuilder.DropForeignKey( + name: "FK_Houses_Users_OwnerId", + table: "Houses"); + + migrationBuilder.DropTable( + name: "ATMs"); + + migrationBuilder.DropTable( + name: "BankAccountTransactionLogs"); + + migrationBuilder.DropTable( + name: "Blips"); + + migrationBuilder.DropTable( + name: "BusinessBankAccounts"); + + migrationBuilder.DropTable( + name: "BusinessData"); + + migrationBuilder.DropTable( + name: "BusRoutesPoints"); + + migrationBuilder.DropTable( + name: "CharacterClothes"); + + migrationBuilder.DropTable( + name: "ClothCombinations"); + + migrationBuilder.DropTable( + name: "DeathLogs"); + + migrationBuilder.DropTable( + name: "Doors"); + + migrationBuilder.DropTable( + name: "DutyClothes"); + + migrationBuilder.DropTable( + name: "FactionBankAccounts"); + + migrationBuilder.DropTable( + name: "FactionWeapons"); + + migrationBuilder.DropTable( + name: "GotoPoints"); + + migrationBuilder.DropTable( + name: "GroupBankAccounts"); + + migrationBuilder.DropTable( + name: "HouseRentals"); + + migrationBuilder.DropTable( + name: "Interiors"); + + migrationBuilder.DropTable( + name: "Locations"); + + migrationBuilder.DropTable( + name: "Markers"); + + migrationBuilder.DropTable( + name: "News"); + + migrationBuilder.DropTable( + name: "Peds"); + + migrationBuilder.DropTable( + name: "Pickups"); + + migrationBuilder.DropTable( + name: "ShopClothes"); + + migrationBuilder.DropTable( + name: "TextLabels"); + + migrationBuilder.DropTable( + name: "TuningGarages"); + + migrationBuilder.DropTable( + name: "Turfs"); + + migrationBuilder.DropTable( + name: "UserBankAccounts"); + + migrationBuilder.DropTable( + name: "UserItems"); + + migrationBuilder.DropTable( + name: "VehicleItems"); + + migrationBuilder.DropTable( + name: "VehicleMods"); + + migrationBuilder.DropTable( + name: "WhitelistEntries"); + + migrationBuilder.DropTable( + name: "BusRoutes"); + + migrationBuilder.DropTable( + name: "ServerVehicles"); + + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropTable( + name: "Bans"); + + migrationBuilder.DropTable( + name: "Characters"); + + migrationBuilder.DropTable( + name: "FactionRanks"); + + migrationBuilder.DropTable( + name: "Groups"); + + migrationBuilder.DropTable( + name: "Houses"); + + migrationBuilder.DropTable( + name: "Factions"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200202153232_ShopItems.cs b/ReallifeGamemode.Database/Migrations/20200202153232_ShopItems.cs index 6029e7a1..cc56b539 100644 --- a/ReallifeGamemode.Database/Migrations/20200202153232_ShopItems.cs +++ b/ReallifeGamemode.Database/Migrations/20200202153232_ShopItems.cs @@ -3,31 +3,31 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { - public partial class ShopItems : Migration + public partial class ShopItems : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "ShopItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ShopId = table.Column(nullable: false), - ItemId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Price = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ShopItems", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ShopItems"); - } + migrationBuilder.CreateTable( + name: "ShopItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ShopId = table.Column(nullable: false), + ItemId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Price = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ShopItems", x => x.Id); + }); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ShopItems"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200313203304_UserWeaponLicense.cs b/ReallifeGamemode.Database/Migrations/20200313203304_UserWeaponLicense.cs index c4d7d58f..a0636ff9 100644 --- a/ReallifeGamemode.Database/Migrations/20200313203304_UserWeaponLicense.cs +++ b/ReallifeGamemode.Database/Migrations/20200313203304_UserWeaponLicense.cs @@ -2,22 +2,22 @@ namespace ReallifeGamemode.Database.Migrations { - public partial class UserWeaponLicense : Migration + public partial class UserWeaponLicense : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "WeaponLicense", - table: "Users", - nullable: false, - defaultValue: false); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "WeaponLicense", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "WeaponLicense", + table: "Users", + nullable: false, + defaultValue: false); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "WeaponLicense", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200317192534_VehicleAddPrice.cs b/ReallifeGamemode.Database/Migrations/20200317192534_VehicleAddPrice.cs index 7ec05ec1..38ebad57 100644 --- a/ReallifeGamemode.Database/Migrations/20200317192534_VehicleAddPrice.cs +++ b/ReallifeGamemode.Database/Migrations/20200317192534_VehicleAddPrice.cs @@ -2,21 +2,21 @@ namespace ReallifeGamemode.Database.Migrations { - public partial class VehicleAddPrice : Migration + public partial class VehicleAddPrice : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "UserVehicle_Price", - table: "ServerVehicles", - nullable: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "UserVehicle_Price", - table: "ServerVehicles"); - } + migrationBuilder.AddColumn( + name: "UserVehicle_Price", + table: "ServerVehicles", + nullable: true); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "UserVehicle_Price", + table: "ServerVehicles"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200324175347_HouseWeeklyRentalFee.cs b/ReallifeGamemode.Database/Migrations/20200324175347_HouseWeeklyRentalFee.cs index 6554a409..105f64ae 100644 --- a/ReallifeGamemode.Database/Migrations/20200324175347_HouseWeeklyRentalFee.cs +++ b/ReallifeGamemode.Database/Migrations/20200324175347_HouseWeeklyRentalFee.cs @@ -3,22 +3,22 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { - public partial class HouseWeeklyRentalFee : Migration + public partial class HouseWeeklyRentalFee : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "LastRentSetTime", - table: "Houses", - nullable: false, - defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "LastRentSetTime", - table: "Houses"); - } + migrationBuilder.AddColumn( + name: "LastRentSetTime", + table: "Houses", + nullable: false, + defaultValue: new DateTime(1, 1, 1, 0, 0, 0, 0, DateTimeKind.Unspecified)); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "LastRentSetTime", + table: "Houses"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200330201122_HouseBankAccounts.cs b/ReallifeGamemode.Database/Migrations/20200330201122_HouseBankAccounts.cs index 11683989..e94870c8 100644 --- a/ReallifeGamemode.Database/Migrations/20200330201122_HouseBankAccounts.cs +++ b/ReallifeGamemode.Database/Migrations/20200330201122_HouseBankAccounts.cs @@ -3,58 +3,58 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { - public partial class HouseBankAccounts : Migration + public partial class HouseBankAccounts : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "BankAccountId", - table: "Houses", - nullable: true); + migrationBuilder.AddColumn( + name: "BankAccountId", + table: "Houses", + nullable: true); - migrationBuilder.CreateTable( - name: "HouseBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_HouseBankAccounts", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "HouseBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_HouseBankAccounts", x => x.Id); + }); - migrationBuilder.CreateIndex( - name: "IX_Houses_BankAccountId", - table: "Houses", - column: "BankAccountId"); + migrationBuilder.CreateIndex( + name: "IX_Houses_BankAccountId", + table: "Houses", + column: "BankAccountId"); - migrationBuilder.AddForeignKey( - name: "FK_Houses_HouseBankAccounts_BankAccountId", - table: "Houses", - column: "BankAccountId", - principalTable: "HouseBankAccounts", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Houses_HouseBankAccounts_BankAccountId", - table: "Houses"); - - migrationBuilder.DropTable( - name: "HouseBankAccounts"); - - migrationBuilder.DropIndex( - name: "IX_Houses_BankAccountId", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "BankAccountId", - table: "Houses"); - } + migrationBuilder.AddForeignKey( + name: "FK_Houses_HouseBankAccounts_BankAccountId", + table: "Houses", + column: "BankAccountId", + principalTable: "HouseBankAccounts", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Houses_HouseBankAccounts_BankAccountId", + table: "Houses"); + + migrationBuilder.DropTable( + name: "HouseBankAccounts"); + + migrationBuilder.DropIndex( + name: "IX_Houses_BankAccountId", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "BankAccountId", + table: "Houses"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.cs b/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.cs index 7a2460fb..1b155512 100644 --- a/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.cs +++ b/ReallifeGamemode.Database/Migrations/20200403035225_TurfSurplusValue.cs @@ -2,32 +2,32 @@ namespace ReallifeGamemode.Database.Migrations { - public partial class TurfSurplusValue : Migration + public partial class TurfSurplusValue : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Surplus", - table: "Turfs", - nullable: false, - defaultValue: false); + migrationBuilder.AddColumn( + name: "Surplus", + table: "Turfs", + nullable: false, + defaultValue: false); - migrationBuilder.AddColumn( - name: "Value", - table: "Turfs", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Surplus", - table: "Turfs"); - - migrationBuilder.DropColumn( - name: "Value", - table: "Turfs"); - } + migrationBuilder.AddColumn( + name: "Value", + table: "Turfs", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Surplus", + table: "Turfs"); + + migrationBuilder.DropColumn( + name: "Value", + table: "Turfs"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200405102619_TurfMaxValue.cs b/ReallifeGamemode.Database/Migrations/20200405102619_TurfMaxValue.cs index a332baa9..0ac59308 100644 --- a/ReallifeGamemode.Database/Migrations/20200405102619_TurfMaxValue.cs +++ b/ReallifeGamemode.Database/Migrations/20200405102619_TurfMaxValue.cs @@ -2,22 +2,22 @@ namespace ReallifeGamemode.Database.Migrations { - public partial class TurfMaxValue : Migration + public partial class TurfMaxValue : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "MaxValue", - table: "Turfs", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "MaxValue", - table: "Turfs"); - } + migrationBuilder.AddColumn( + name: "MaxValue", + table: "Turfs", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "MaxValue", + table: "Turfs"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs b/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs index 5862fadf..3995794d 100644 --- a/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs +++ b/ReallifeGamemode.Database/Migrations/20200407014500_PedType.cs @@ -2,22 +2,22 @@ namespace ReallifeGamemode.Database.Migrations { - public partial class PedType : Migration + public partial class PedType : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Type", - table: "Peds", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Type", - table: "Peds"); - } + migrationBuilder.AddColumn( + name: "Type", + table: "Peds", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Type", + table: "Peds"); + } + } } diff --git a/ReallifeGamemode.Database/Migrations/20200408151729_UserPoints.cs b/ReallifeGamemode.Database/Migrations/20200408151729_UserPoints.cs index 3be998db..d74af285 100644 --- a/ReallifeGamemode.Database/Migrations/20200408151729_UserPoints.cs +++ b/ReallifeGamemode.Database/Migrations/20200408151729_UserPoints.cs @@ -2,22 +2,22 @@ namespace ReallifeGamemode.Database.Migrations { - public partial class UserPoints : Migration + public partial class UserPoints : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Points", - table: "Users", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Points", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "Points", + table: "Users", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Points", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server.Core/Commands/CommandHandler.cs b/ReallifeGamemode.Server.Core/Commands/CommandHandler.cs index 2477a2f0..91819a84 100644 --- a/ReallifeGamemode.Server.Core/Commands/CommandHandler.cs +++ b/ReallifeGamemode.Server.Core/Commands/CommandHandler.cs @@ -33,7 +33,7 @@ namespace ReallifeGamemode.Server.Core.Commands logger.LogInformation("Player '{Name}' executed command '{command}'", player.Name, command); - if(legacyCommands.Contains(command)) + if (legacyCommands.Contains(command)) { return; } diff --git a/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs b/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs index 7c5b2a9e..48fff290 100644 --- a/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/BikeDealerBusiness.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Server.Business { public class BikeDealerBusiness : CarDealerBusinessBase + { + public override int Id => 8; + + public override string Name => "Motorrad Shop"; + + public override Vector3 Position => new Vector3(1180.997, -394.9542, 68.01635); + + public override Vector3 CarSpawnPositon => new Vector3(1148.25, -369.0642, 67.06199); + + public override float CarSpawnHeading => 356.6f; + + public override int? BlipSprite => 226; + + public override void Load() { - public override int Id => 8; - - public override string Name => "Motorrad Shop"; - - public override Vector3 Position => new Vector3(1180.997, -394.9542, 68.01635); - - public override Vector3 CarSpawnPositon => new Vector3(1148.25, -369.0642, 67.06199); - - public override float CarSpawnHeading => 356.6f; - - public override int? BlipSprite => 226; - - public override void Load() - { - } } + } } diff --git a/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs b/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs index 56344e6d..4c236a67 100644 --- a/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/BoatDealerBusiness.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Server.Business { public class BoatDealerBusiness : CarDealerBusinessBase + { + public override int Id => 5; + + public override string Name => "Boot Shop"; + + public override Vector3 Position => new Vector3(-712.2401, -1298.818, 5.101922); + + public override Vector3 CarSpawnPositon => new Vector3(-792.5602, -1433.158, 1.333062); + + public override float CarSpawnHeading => 356.6f; + + public override int? BlipSprite => 410; + + public override void Load() { - public override int Id => 5; - - public override string Name => "Boot Shop"; - - public override Vector3 Position => new Vector3(-712.2401, -1298.818, 5.101922); - - public override Vector3 CarSpawnPositon => new Vector3(-792.5602, -1433.158, 1.333062); - - public override float CarSpawnHeading => 356.6f; - - public override int? BlipSprite => 410; - - public override void Load() - { - } } + } } diff --git a/ReallifeGamemode.Server/Business/BusinessBase.cs b/ReallifeGamemode.Server/Business/BusinessBase.cs index 96041536..2e4e8b01 100644 --- a/ReallifeGamemode.Server/Business/BusinessBase.cs +++ b/ReallifeGamemode.Server/Business/BusinessBase.cs @@ -10,188 +10,188 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Business { public abstract class BusinessBase : BankAccountHolder, IBankAccountOwner + { + private TextLabel _informationLabel; + private ColShape _colShape; + private Blip _blip; + private Marker _marker; + + public virtual int? BlipSprite { get; } = null; + + public abstract int Id { get; } + + public abstract string Name { get; } + + public abstract Vector3 Position { get; } + + public override BusinessBankAccount BankAccount { - private TextLabel _informationLabel; - private ColShape _colShape; - private Blip _blip; - private Marker _marker; - - public virtual int? BlipSprite { get; } = null; - - public abstract int Id { get; } - - public abstract string Name { get; } - - public abstract Vector3 Position { get; } - - public override BusinessBankAccount BankAccount + get + { + using (var dbContext = new DatabaseContext()) { - get - { - using (var dbContext = new DatabaseContext()) - { - return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).FirstOrDefault(); - } - } - - set => throw new NotImplementedException(); + return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).FirstOrDefault(); } + } - public override int? BankAccountId - { - get - { - using (var dbContext = new DatabaseContext()) - { - return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).Select(b => b.Id).FirstOrDefault(); - } - } - - set => throw new NotImplementedException(); - } - - public override string BankAccountName => Name; - - public IBankAccount GetBankAccount(DatabaseContext databaseContext = null) - { - if (databaseContext == null) - { - using (databaseContext = new DatabaseContext()) - { - return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); - } - } - else - { - return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); - } - } - - public void Setup() - { - _informationLabel = NAPI.TextLabel.CreateTextLabel(Name, Position.Add(new Vector3(0, 0, 0.5)), 20.0f, 1.3f, 0, new Color(255, 255, 255)); - _marker = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, Position.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255)); - - if (BlipSprite != null) - { - _blip = NAPI.Blip.CreateBlip(BlipSprite.Value, Position, 1f, 4, Name, shortRange: true); - } - - _colShape = NAPI.ColShape.CreateSphereColShape(Position.Subtract(new Vector3(0, 0, 1.5)), 3f); - _colShape.OnEntityEnterColShape += EntityEnterBusinessColShape; - _colShape.OnEntityExitColShape += EntityExitBusinessColShape; - - if (GetBankAccount() == null) - { - NAPI.Util.ConsoleOutput("Creating Bank Account for Business: " + Name); - using (var dbContext = new DatabaseContext()) - { - dbContext.BusinessBankAccounts.Add(new BusinessBankAccount() - { - BusinessId = Id, - Balance = 0 - }); - dbContext.SaveChanges(); - } - } - - BusinessData data = GetData(); - - if (data == null) - { - using (var dbContext = new DatabaseContext()) - { - data = new BusinessData() - { - BusinessId = this.Id, - Price = -1 - }; - - dbContext.BusinessData.Add(data); - - dbContext.SaveChanges(); - } - } - } - - private void EntityExitBusinessColShape(ColShape colShape, Player client) - { - client.TriggerEvent("SERVER:Business_RemoveHelp", true); - } - - public BusinessData GetData(DatabaseContext dbContext = null) - { - if (dbContext == null) - { - using (dbContext = new DatabaseContext()) - { - return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); - } - } - else - { - return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); - } - } - - private void EntityEnterBusinessColShape(ColShape colShape, Player client) - { - if (client.IsInVehicle || !client.IsLoggedIn()) return; - - SendBusinessDataToPlayer(client); - client.TriggerEvent("SERVER:Business_ShowMenuHelp"); - } - - public void SendBusinessDataToPlayer(Player player) - { - User owner = GetOwner(); - - int state = -1; // Keine Beziehung - - if (owner == null) // Kein Besitzer - { - state = 0; - } - else if (owner.Id == player.GetUser()?.Id) // Besitzer - { - state = 1; - } - - var business = new - { - this.Name, - Price = this.GetData().Price.ToMoneyString(), - Balance = this.GetBankAccount().Balance.ToMoneyString() - }; - - player.TriggerEvent("SERVER:Business_SetData", JsonConvert.SerializeObject(business), state); - } - - public void Update(int? money = null) - { - if (money == null) money = GetBankAccount()?.Balance ?? 0; - User owner = GetOwner(); - string infoText = Name; - if (owner == null) infoText += "\n~g~Zum Verkauf\n~s~Preis: ~y~" + this.GetData().Price.ToMoneyString(); - else infoText += $"\nBesitzer: ~g~{owner.Name}\n~s~Kasse: ~y~{money.ToMoneyString()}"; - _informationLabel.Text = infoText; - } - - public User GetOwner(DatabaseContext dbContext = null) - { - if (dbContext == null) - { - using (dbContext = new DatabaseContext()) - { - return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); - } - } - else - { - return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); - } - } - - public abstract void Load(); + set => throw new NotImplementedException(); } + + public override int? BankAccountId + { + get + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.BusinessBankAccounts.Where(b => b.BusinessId == this.Id).Select(b => b.Id).FirstOrDefault(); + } + } + + set => throw new NotImplementedException(); + } + + public override string BankAccountName => Name; + + public IBankAccount GetBankAccount(DatabaseContext databaseContext = null) + { + if (databaseContext == null) + { + using (databaseContext = new DatabaseContext()) + { + return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); + } + } + else + { + return databaseContext.BusinessBankAccounts.FirstOrDefault(u => u.BusinessId == Id); + } + } + + public void Setup() + { + _informationLabel = NAPI.TextLabel.CreateTextLabel(Name, Position.Add(new Vector3(0, 0, 0.5)), 20.0f, 1.3f, 0, new Color(255, 255, 255)); + _marker = NAPI.Marker.CreateMarker(MarkerType.VerticalCylinder, Position.Subtract(new Vector3(0, 0, 1.5)), new Vector3(), new Vector3(), 1f, new Color(255, 255, 255)); + + if (BlipSprite != null) + { + _blip = NAPI.Blip.CreateBlip(BlipSprite.Value, Position, 1f, 4, Name, shortRange: true); + } + + _colShape = NAPI.ColShape.CreateSphereColShape(Position.Subtract(new Vector3(0, 0, 1.5)), 3f); + _colShape.OnEntityEnterColShape += EntityEnterBusinessColShape; + _colShape.OnEntityExitColShape += EntityExitBusinessColShape; + + if (GetBankAccount() == null) + { + NAPI.Util.ConsoleOutput("Creating Bank Account for Business: " + Name); + using (var dbContext = new DatabaseContext()) + { + dbContext.BusinessBankAccounts.Add(new BusinessBankAccount() + { + BusinessId = Id, + Balance = 0 + }); + dbContext.SaveChanges(); + } + } + + BusinessData data = GetData(); + + if (data == null) + { + using (var dbContext = new DatabaseContext()) + { + data = new BusinessData() + { + BusinessId = this.Id, + Price = -1 + }; + + dbContext.BusinessData.Add(data); + + dbContext.SaveChanges(); + } + } + } + + private void EntityExitBusinessColShape(ColShape colShape, Player client) + { + client.TriggerEvent("SERVER:Business_RemoveHelp", true); + } + + public BusinessData GetData(DatabaseContext dbContext = null) + { + if (dbContext == null) + { + using (dbContext = new DatabaseContext()) + { + return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + } + } + else + { + return dbContext.BusinessData.Where(b => b.BusinessId == this.Id).FirstOrDefault(); + } + } + + private void EntityEnterBusinessColShape(ColShape colShape, Player client) + { + if (client.IsInVehicle || !client.IsLoggedIn()) return; + + SendBusinessDataToPlayer(client); + client.TriggerEvent("SERVER:Business_ShowMenuHelp"); + } + + public void SendBusinessDataToPlayer(Player player) + { + User owner = GetOwner(); + + int state = -1; // Keine Beziehung + + if (owner == null) // Kein Besitzer + { + state = 0; + } + else if (owner.Id == player.GetUser()?.Id) // Besitzer + { + state = 1; + } + + var business = new + { + this.Name, + Price = this.GetData().Price.ToMoneyString(), + Balance = this.GetBankAccount().Balance.ToMoneyString() + }; + + player.TriggerEvent("SERVER:Business_SetData", JsonConvert.SerializeObject(business), state); + } + + public void Update(int? money = null) + { + if (money == null) money = GetBankAccount()?.Balance ?? 0; + User owner = GetOwner(); + string infoText = Name; + if (owner == null) infoText += "\n~g~Zum Verkauf\n~s~Preis: ~y~" + this.GetData().Price.ToMoneyString(); + else infoText += $"\nBesitzer: ~g~{owner.Name}\n~s~Kasse: ~y~{money.ToMoneyString()}"; + _informationLabel.Text = infoText; + } + + public User GetOwner(DatabaseContext dbContext = null) + { + if (dbContext == null) + { + using (dbContext = new DatabaseContext()) + { + return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); + } + } + else + { + return dbContext.Users.FirstOrDefault(u => u.BusinessId == Id); + } + } + + public abstract void Load(); + } } diff --git a/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs b/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs index a2817f1c..66cd65da 100644 --- a/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs +++ b/ReallifeGamemode.Server/Business/CarDealerBusinessBase.cs @@ -3,9 +3,9 @@ namespace ReallifeGamemode.Server.Business { public abstract class CarDealerBusinessBase : BusinessBase - { - public abstract Vector3 CarSpawnPositon { get; } - public abstract float CarSpawnHeading { get; } + { + public abstract Vector3 CarSpawnPositon { get; } + public abstract float CarSpawnHeading { get; } public override int? BlipSprite => 225; } diff --git a/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs b/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs index 3a6ea721..f143c95a 100644 --- a/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/PremiumDeluxeMotorsportCarDealerBusiness.cs @@ -3,19 +3,19 @@ namespace ReallifeGamemode.Server.Business { internal class PremiumDeluxeMotorsportCarDealerBusiness : CarDealerBusinessBase + { + public override Vector3 CarSpawnPositon => new Vector3(-59, -1108.1, 26.5); + + public override float CarSpawnHeading => 90; + + public override int Id => 4; + + public override string Name => "Premium Deluxe Motorsport"; + + public override Vector3 Position => new Vector3(-31.56, -1113.5, 26.42); + + public override void Load() { - public override Vector3 CarSpawnPositon => new Vector3(-59, -1108.1, 26.5); - - public override float CarSpawnHeading => 90; - - public override int Id => 4; - - public override string Name => "Premium Deluxe Motorsport"; - - public override Vector3 Position => new Vector3(-31.56, -1113.5, 26.42); - - public override void Load() - { - } } + } } diff --git a/ReallifeGamemode.Server/Business/ShopBusiness.cs b/ReallifeGamemode.Server/Business/ShopBusiness.cs index 8fc01140..d8f1f5cf 100644 --- a/ReallifeGamemode.Server/Business/ShopBusiness.cs +++ b/ReallifeGamemode.Server/Business/ShopBusiness.cs @@ -3,15 +3,15 @@ namespace ReallifeGamemode.Server.Business { public class ShopBusiness : BusinessBase + { + public override int Id => 2; + + public override string Name => "24/7 Business"; + + public override Vector3 Position => new Vector3(-443, 1134, 326); + + public override void Load() { - public override int Id => 2; - - public override string Name => "24/7 Business"; - - public override Vector3 Position => new Vector3(-443, 1134, 326); - - public override void Load() - { - } } + } } diff --git a/ReallifeGamemode.Server/Business/TelefonBusiness.cs b/ReallifeGamemode.Server/Business/TelefonBusiness.cs index e31e1deb..f77978f5 100644 --- a/ReallifeGamemode.Server/Business/TelefonBusiness.cs +++ b/ReallifeGamemode.Server/Business/TelefonBusiness.cs @@ -3,15 +3,15 @@ namespace ReallifeGamemode.Server.Business { public class TelefonBusiness : BusinessBase + { + public override int Id => 1; + + public override string Name => "Telefon Business"; + + public override Vector3 Position => new Vector3(-423, 1130, 326); + + public override void Load() { - public override int Id => 1; - - public override string Name => "Telefon Business"; - - public override Vector3 Position => new Vector3(-423, 1130, 326); - - public override void Load() - { - } } + } } diff --git a/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs b/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs index 336ddc55..923aa527 100644 --- a/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs +++ b/ReallifeGamemode.Server/Business/VapidCarDealerBusiness.cs @@ -3,19 +3,19 @@ namespace ReallifeGamemode.Server.Business { public class VapidCarDealerBusiness : CarDealerBusinessBase + { + public override int Id => 3; + + public override string Name => "Vapid Autohaus"; + + public override Vector3 Position => new Vector3(-177, -1156, 23); + + public override Vector3 CarSpawnPositon => new Vector3(-222, -1162, 22.5); + + public override float CarSpawnHeading => 356.6f; + + public override void Load() { - public override int Id => 3; - - public override string Name => "Vapid Autohaus"; - - public override Vector3 Position => new Vector3(-177, -1156, 23); - - public override Vector3 CarSpawnPositon => new Vector3(-222, -1162, 22.5); - - public override float CarSpawnHeading => 356.6f; - - public override void Load() - { - } } + } } diff --git a/ReallifeGamemode.Server/Classes/TempBlip.cs b/ReallifeGamemode.Server/Classes/TempBlip.cs index 8f4113ff..fc27c86d 100644 --- a/ReallifeGamemode.Server/Classes/TempBlip.cs +++ b/ReallifeGamemode.Server/Classes/TempBlip.cs @@ -1,12 +1,12 @@ namespace ReallifeGamemode.Server.Classes { public class TempBlip - { - public byte Color { get; set; } - public string Name { get; set; } - public byte Transparency { get; set; } - public bool ShortRange { get; set; } - public uint Sprite { get; set; } - public float Scale { get; set; } - } + { + public byte Color { get; set; } + public string Name { get; set; } + public byte Transparency { get; set; } + public bool ShortRange { get; set; } + public uint Sprite { get; set; } + public float Scale { get; set; } + } } diff --git a/ReallifeGamemode.Server/DrivingSchool/Licenses.cs b/ReallifeGamemode.Server/DrivingSchool/Licenses.cs index 3fabb853..7b6a8083 100644 --- a/ReallifeGamemode.Server/DrivingSchool/Licenses.cs +++ b/ReallifeGamemode.Server/DrivingSchool/Licenses.cs @@ -3,25 +3,25 @@ namespace ReallifeGamemode.Server.DrivingSchool { public class Licenses + { + [JsonProperty("drivingLicenseCar")] + public bool CarLicense { get; set; } + + [JsonProperty("drivingLicenseBike")] + public bool BikeLicense { get; set; } + + [JsonProperty("flightLicensePlane")] + public bool PlaneLicense { get; set; } + + [JsonProperty("weaponLicense")] + public bool WeaponLicense { get; set; } + + public Licenses(bool CarLicense, bool BikeLicense, bool PlaneLicense, bool weaponLicense) { - [JsonProperty("drivingLicenseCar")] - public bool CarLicense { get; set; } - - [JsonProperty("drivingLicenseBike")] - public bool BikeLicense { get; set; } - - [JsonProperty("flightLicensePlane")] - public bool PlaneLicense { get; set; } - - [JsonProperty("weaponLicense")] - public bool WeaponLicense { get; set; } - - public Licenses(bool CarLicense, bool BikeLicense, bool PlaneLicense, bool weaponLicense) - { - this.CarLicense = CarLicense; - this.BikeLicense = BikeLicense; - this.PlaneLicense = PlaneLicense; - this.WeaponLicense = weaponLicense; - } + this.CarLicense = CarLicense; + this.BikeLicense = BikeLicense; + this.PlaneLicense = PlaneLicense; + this.WeaponLicense = weaponLicense; } + } } diff --git a/ReallifeGamemode.Server/Events/Chat.cs b/ReallifeGamemode.Server/Events/Chat.cs index cf4619e0..e20a7499 100644 --- a/ReallifeGamemode.Server/Events/Chat.cs +++ b/ReallifeGamemode.Server/Events/Chat.cs @@ -5,16 +5,16 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Events { public class Chat : Script + { + [ServerEvent(Event.ChatMessage)] + public void ChatEvent(Player player, string message) { - [ServerEvent(Event.ChatMessage)] - public void ChatEvent(Player player, string message) - { - string serverMsg = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); - if (serverMsg.Trim().Length == 0) return; - NAPI.Player.GetPlayersInRadiusOfPlayer(10, player).ForEach(p => - { - ChatService.SendMessage(p, $"{player.Name} sagt: {serverMsg}"); - }); - } + string serverMsg = Regex.Replace(message, "(~[a-zA-Z]~)|(!{(.*)})", ""); + if (serverMsg.Trim().Length == 0) return; + NAPI.Player.GetPlayersInRadiusOfPlayer(10, player).ForEach(p => + { + ChatService.SendMessage(p, $"{player.Name} sagt: {serverMsg}"); + }); } -} \ No newline at end of file + } +} diff --git a/ReallifeGamemode.Server/Events/Death.cs b/ReallifeGamemode.Server/Events/Death.cs index be46aac2..ff67e254 100644 --- a/ReallifeGamemode.Server/Events/Death.cs +++ b/ReallifeGamemode.Server/Events/Death.cs @@ -22,49 +22,49 @@ using ReallifeGamemode.Server.Wanted; namespace ReallifeGamemode.Server.Events { public class Death : Script + { + [ServerEvent(Event.PlayerDeath)] + public void OnPlayerDeath(Player player, Player killer, uint reason) { - [ServerEvent(Event.PlayerDeath)] - public void OnPlayerDeath(Player player, Player killer, uint reason) + if (!player.IsLoggedIn()) player.Kick(); + player.SetData("isDead", true); + + //TODO: Zum Full Release entfernen + ChatService.SendMessage(player, "Du bist durch " + (killer?.Name ?? "Niemanden") + " gestorben: " + reason.ToString()); + + int? killerId; + float killerPosX; + float killerPosY; + float killerPosZ; + float killerHeading; + + if (killer == null || killer.IsNull) + { + killerId = null; + killerPosX = -1; + killerPosY = -1; + killerPosZ = -1; + killerHeading = -1; + } + else + { + killerId = killer.GetUser().Id; + killerPosX = killer.Position.X; + killerPosY = killer.Position.Y; + killerPosZ = killer.Position.Z; + killerHeading = killer.Heading; + if (player.HasData("inGangWar") && killer.HasData("inGangWar")) { - if (!player.IsLoggedIn()) player.Kick(); - player.SetData("isDead", true); + Gangwar.Gangwar.GangwarKill(killer, player); + } - //TODO: Zum Full Release entfernen - ChatService.SendMessage(player, "Du bist durch " + (killer?.Name ?? "Niemanden") + " gestorben: " + reason.ToString()); - - int? killerId; - float killerPosX; - float killerPosY; - float killerPosZ; - float killerHeading; - - if (killer == null || killer.IsNull) - { - killerId = null; - killerPosX = -1; - killerPosY = -1; - killerPosZ = -1; - killerHeading = -1; - } - else - { - killerId = killer.GetUser().Id; - killerPosX = killer.Position.X; - killerPosY = killer.Position.Y; - killerPosZ = killer.Position.Z; - killerHeading = killer.Heading; - if (player.HasData("inGangWar") && killer.HasData("inGangWar")) - { - Gangwar.Gangwar.GangwarKill(killer, player); - } - - if (player != killer) - { - Autowanted.Check_AutoWanted(killer, player); - string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + Managers.WeaponManager.GetCauseOfDeathByHash(reason) + ")"; - ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); - } - } + if (player != killer) + { + Autowanted.Check_AutoWanted(killer, player); + string message = "~y~[HINWEIS]: " + killer.Name + " hat " + player.Name + " getötet (" + Managers.WeaponManager.GetCauseOfDeathByHash(reason) + ")"; + ChatService.BroadcastAdmin(message, AdminLevel.ADMIN); + } + } User user = player.GetUser(); if (user.JailTime <= 0) @@ -83,75 +83,75 @@ namespace ReallifeGamemode.Server.Events }; Medic.AddTaskToList(reviveTask); - if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) - { - player.TriggerEvent("startDeathTimer", true); - } - else - { - player.TriggerEvent("startDeathTimer", false); - } - - //TODO PICTURE NOTIFICATION + SOUND für Medics - - player.ClearAttachments(); - - using (var userDeath = new DatabaseContext()) - { - List fItem = userDeath.UserItems.Where(u => u.UserId == user.Id).ToList(); - foreach (var item in fItem) - { - IItem iItem = InventoryManager.GetItemById(item.ItemId); - if (iItem is IWeaponDealItem obj) - { - int amount = item.Amount; - - Vector3 dropPosition = PlayerExtension.GetPositionFromPlayer(player, 0.6f, 0); - //new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8f); - Random r = new Random(); - GTANetworkAPI.Object grndObject; - Vector3 textPos = dropPosition; - - dropPosition.Z -= 1.05f; - grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0); - - GroundItem grndItem = new GroundItem { ItemId = iItem.Id, Amount = amount, Position = dropPosition }; - TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", textPos, 5, 0.5f, 4, new Color(255, 255, 255), false, 0); - GroundItem.AddGroundItem(grndItem, grndObject, grndTxtLbl); - - userDeath.Remove(item); - } - } - - var dead = new Database.Entities.Logs.Death - { - VictimId = player.GetUser().Id, - KillerId = killerId, - KillerPositionX = killerPosX, - KillerPositionY = killerPosY, - KillerPositionZ = killerPosZ, - KillerHeading = killerHeading, - VictimPositionX = player.Position.X, - VictimPositionY = player.Position.Y, - VictimPositionZ = player.Position.Z, - VictimHeading = player.Heading, - CauseOfDeath = reason.ToString() - }; - userDeath.DeathLogs.Add(dead); - userDeath.SaveChanges(); - } - } - - //JailTime.cs - Jail.Check_PutBehindBars(player); - } - - [RemoteEvent("RespawnPlayerAtHospital")] - public void RespawnPlayerAtHospital(Player player) + if (player.GetUser().IsAdmin(AdminLevel.ADMIN) == true) { - player.SetData("isDead", false); - player.RemoveAllWeapons(); - NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5)); + player.TriggerEvent("startDeathTimer", true); } + else + { + player.TriggerEvent("startDeathTimer", false); + } + + //TODO PICTURE NOTIFICATION + SOUND für Medics + + player.ClearAttachments(); + + using (var userDeath = new DatabaseContext()) + { + List fItem = userDeath.UserItems.Where(u => u.UserId == user.Id).ToList(); + foreach (var item in fItem) + { + IItem iItem = InventoryManager.GetItemById(item.ItemId); + if (iItem is IWeaponDealItem obj) + { + int amount = item.Amount; + + Vector3 dropPosition = PlayerExtension.GetPositionFromPlayer(player, 0.6f, 0); + //new Vector3(player.Position.X, player.Position.Y, player.Position.Z - 0.8f); + Random r = new Random(); + GTANetworkAPI.Object grndObject; + Vector3 textPos = dropPosition; + + dropPosition.Z -= 1.05f; + grndObject = NAPI.Object.CreateObject(3666746839, dropPosition, new Vector3(0, 0, r.Next(0, 360)), 255, 0); + + GroundItem grndItem = new GroundItem { ItemId = iItem.Id, Amount = amount, Position = dropPosition }; + TextLabel grndTxtLbl = NAPI.TextLabel.CreateTextLabel(iItem.Name + " ~s~(~y~" + amount + "~s~)", textPos, 5, 0.5f, 4, new Color(255, 255, 255), false, 0); + GroundItem.AddGroundItem(grndItem, grndObject, grndTxtLbl); + + userDeath.Remove(item); + } + } + + var dead = new Database.Entities.Logs.Death + { + VictimId = player.GetUser().Id, + KillerId = killerId, + KillerPositionX = killerPosX, + KillerPositionY = killerPosY, + KillerPositionZ = killerPosZ, + KillerHeading = killerHeading, + VictimPositionX = player.Position.X, + VictimPositionY = player.Position.Y, + VictimPositionZ = player.Position.Z, + VictimHeading = player.Heading, + CauseOfDeath = reason.ToString() + }; + userDeath.DeathLogs.Add(dead); + userDeath.SaveChanges(); + } + } + + //JailTime.cs + Jail.Check_PutBehindBars(player); } -} \ No newline at end of file + + [RemoteEvent("RespawnPlayerAtHospital")] + public void RespawnPlayerAtHospital(Player player) + { + player.SetData("isDead", false); + player.RemoveAllWeapons(); + NAPI.Player.SpawnPlayer(player, new Vector3(-495.45, -336.33, 34.5)); + } + } +} diff --git a/ReallifeGamemode.Server/Events/Disconnect.cs b/ReallifeGamemode.Server/Events/Disconnect.cs index 4da12d49..1efbaf96 100644 --- a/ReallifeGamemode.Server/Events/Disconnect.cs +++ b/ReallifeGamemode.Server/Events/Disconnect.cs @@ -16,50 +16,50 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Events { public class Disconnect : Script + { + [ServerEvent(Event.PlayerDisconnected)] + public void OnPlayerDisconnected(Player player, DisconnectionType type, string reason) { - [ServerEvent(Event.PlayerDisconnected)] - public void OnPlayerDisconnected(Player player, DisconnectionType type, string reason) - { - if (!player.IsLoggedIn()) return; + if (!player.IsLoggedIn()) return; - if (type == DisconnectionType.Left) - { - NAPI.Util.ConsoleOutput(player.Name + " left"); - } - if (type == DisconnectionType.Kicked) - { - NAPI.Util.ConsoleOutput(player.Name + " kicked"); - } - if (type == DisconnectionType.Timeout) - { - NAPI.Util.ConsoleOutput(player.Name + " Timeoutet"); - } + if (type == DisconnectionType.Left) + { + NAPI.Util.ConsoleOutput(player.Name + " left"); + } + if (type == DisconnectionType.Kicked) + { + NAPI.Util.ConsoleOutput(player.Name + " kicked"); + } + if (type == DisconnectionType.Timeout) + { + NAPI.Util.ConsoleOutput(player.Name + " Timeoutet"); + } - if (GlobalHelper.DutyAdmins.Contains(player)) - { - GlobalHelper.DutyAdmins.Remove(player); - } + if (GlobalHelper.DutyAdmins.Contains(player)) + { + GlobalHelper.DutyAdmins.Remove(player); + } - if (player.GetUser().IsAdmin(AdminLevel.MAPPING)) - { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); - } + if (player.GetUser().IsAdmin(AdminLevel.MAPPING)) + { + ChatService.BroadcastAdmin("!{#FFFF00}*** " + player.Name + " hat den Server verlassen", AdminLevel.MAPPING); + } - JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); - if (job != null) job.StopJob(player, true); + JobBase job = JobManager.GetJob(player.GetUser().JobId ?? -1); + if (job != null) job.StopJob(player, true); - using (var saveUser = new DatabaseContext()) - { - var user = player.GetUser(saveUser); - Vector3 pos = player.Position; + using (var saveUser = new DatabaseContext()) + { + var user = player.GetUser(saveUser); + Vector3 pos = player.Position; - user.PositionX = pos.X; - user.PositionY = pos.Y; - user.PositionZ = pos.Z; - saveUser.SaveChanges(); - user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; - } - player.SetData("isLoggedIn", false); - } + user.PositionX = pos.X; + user.PositionY = pos.Y; + user.PositionZ = pos.Z; + saveUser.SaveChanges(); + user.Dead = player.HasData("isDead") ? (bool)player.GetData("isDead") : false; + } + player.SetData("isLoggedIn", false); } + } } diff --git a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs index 9da246ef..09ad23c7 100644 --- a/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs +++ b/ReallifeGamemode.Server/Events/EnterVehicleAttempt.cs @@ -8,49 +8,49 @@ using ReallifeGamemode.Server.WeaponDeal; namespace ReallifeGamemode.Server.Events { public class EnterVehicleAttempt : Script + { + [ServerEvent(Event.PlayerEnterVehicleAttempt)] + public void OnPlayerEnterVehicleAttempt(Player player, GTANetworkAPI.Vehicle vehicle, sbyte seat) { - [ServerEvent(Event.PlayerEnterVehicleAttempt)] - public void OnPlayerEnterVehicleAttempt(Player player, GTANetworkAPI.Vehicle vehicle, sbyte seat) + if ((VehicleHash)vehicle.Model == VehicleHash.Dune3) + { + if (seat == 1) seat = 0; + else if (seat == 0) seat = 1; + } + + if (seat != 0) return; + + User u = player.GetUser(); + + if (vehicle.GetServerVehicle() is FactionVehicle veh) + { + if (!veh.GetOwners().Contains(player.GetUser().FactionId ?? 0) && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) { - if ((VehicleHash)vehicle.Model == VehicleHash.Dune3) - { - if (seat == 1) seat = 0; - else if (seat == 0) seat = 1; - } - - if (seat != 0) return; - - User u = player.GetUser(); - - if (vehicle.GetServerVehicle() is FactionVehicle veh) - { - if (!veh.GetOwners().Contains(player.GetUser().FactionId ?? 0) && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) - { - if ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) - { - if (WeaponDealManager.checkWeaponDbyVehicle(vehicle)) - return; - } - player.StopAnimation(); - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); - return; - } - } - if (vehicle.GetServerVehicle() is SchoolVehicle sVeh) - { - if (!player.HasData("ActiveSchool")) - { - player.StopAnimation(); - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); - return; - } - if (sVeh.SchoolId != player.GetData("ActiveSchool")) - { - player.StopAnimation(); - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); - return; - } - } + if ((VehicleHash)vehicle.Model == VehicleHash.Burrito3) + { + if (WeaponDealManager.checkWeaponDbyVehicle(vehicle)) + return; + } + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; } + } + if (vehicle.GetServerVehicle() is SchoolVehicle sVeh) + { + if (!player.HasData("ActiveSchool")) + { + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; + } + if (sVeh.SchoolId != player.GetData("ActiveSchool")) + { + player.StopAnimation(); + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht benutzen!", true); + return; + } + } } + } } diff --git a/ReallifeGamemode.Server/Events/Inventory.cs b/ReallifeGamemode.Server/Events/Inventory.cs index c2c7df99..e0aec817 100644 --- a/ReallifeGamemode.Server/Events/Inventory.cs +++ b/ReallifeGamemode.Server/Events/Inventory.cs @@ -11,65 +11,65 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Events { public class Inventory : Script + { + [RemoteEvent("getNearVehicles")] + public void SrvEvent_GetNearVehicles(Player client) { - [RemoteEvent("getNearVehicles")] - public void SrvEvent_GetNearVehicles(Player client) + var user = client.GetUser(); + if (!client.IsInVehicle) + { + using (var context = new DatabaseContext()) { - var user = client.GetUser(); - if (!client.IsInVehicle) - { - using (var context = new DatabaseContext()) - { - foreach (GTANetworkAPI.Vehicle veh in NAPI.Pools.GetAllVehicles()) - { - List vehicleInventory = new List(); - if (veh.Position.DistanceTo(client.Position) < 5f) - { - if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearLeft) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearRight) == DoorState.DoorOpen) - { - vehicleInventory = getVehItem(veh); - } - client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray()); - return; - } - } - } - } - } - - public List getVehItem(GTANetworkAPI.Vehicle veh) - { - List iName = new List(); - List iAmount = new List(); - List iId = new List(); + foreach (GTANetworkAPI.Vehicle veh in NAPI.Pools.GetAllVehicles()) + { List vehicleInventory = new List(); - var inventoryWeight = 0; - using (var context = new DatabaseContext()) + if (veh.Position.DistanceTo(client.Position) < 5f) { - ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); - List vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id); - foreach (var vehItem in vehicleItems) - { - IItem iItem = InventoryManager.GetItemById(vehItem.ItemId); - var currentItemWeight = iItem.Gewicht * vehItem.Amount; - inventoryWeight += currentItemWeight; - - iName.Add(iItem.Name); - iAmount.Add(vehItem.Amount); - iId.Add(iItem.Id); - } - var vehInv = new VehicleInventory - { - ID = serverVehicle.Id, - currentWeight = inventoryWeight, - totalWeight = 250, - ivehName = iName.ToArray(), - ivehAmount = iAmount.ToArray(), - ivehId = iId.ToArray() - }; - vehicleInventory.Add(vehInv); + if (VehicleStreaming.GetDoorState(veh, DoorID.DoorTrunk) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearLeft) == DoorState.DoorOpen || VehicleStreaming.GetDoorState(veh, DoorID.DoorRearRight) == DoorState.DoorOpen) + { + vehicleInventory = getVehItem(veh); + } + client.TriggerEvent("setVehiclesInventory", vehicleInventory.ToArray()); + return; } - return vehicleInventory; + } } + } } + + public List getVehItem(GTANetworkAPI.Vehicle veh) + { + List iName = new List(); + List iAmount = new List(); + List iId = new List(); + List vehicleInventory = new List(); + var inventoryWeight = 0; + using (var context = new DatabaseContext()) + { + ServerVehicle serverVehicle = VehicleManager.GetServerVehicleFromVehicle(veh, context); + List vehicleItems = context.VehicleItems.ToList().FindAll(i => i.VehicleId == serverVehicle.Id); + foreach (var vehItem in vehicleItems) + { + IItem iItem = InventoryManager.GetItemById(vehItem.ItemId); + var currentItemWeight = iItem.Gewicht * vehItem.Amount; + inventoryWeight += currentItemWeight; + + iName.Add(iItem.Name); + iAmount.Add(vehItem.Amount); + iId.Add(iItem.Id); + } + var vehInv = new VehicleInventory + { + ID = serverVehicle.Id, + currentWeight = inventoryWeight, + totalWeight = 250, + ivehName = iName.ToArray(), + ivehAmount = iAmount.ToArray(), + ivehId = iId.ToArray() + }; + vehicleInventory.Add(vehInv); + } + return vehicleInventory; + } + } } diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index 301c1fbc..0638c157 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -19,141 +19,141 @@ using ReallifeGamemode.Server.Wanted; namespace ReallifeGamemode.Server.Events { public class Login : Script + { + [RemoteEvent("CLIENT:Login_LoginRequest")] + public void OnPlayerLogin(Player player, string username, string password) { - [RemoteEvent("CLIENT:Login_LoginRequest")] - public void OnPlayerLogin(Player player, string username, string password) + using (var dbContext = new DatabaseContext()) + { + var user = dbContext.Users + .Include(u => u.Group) + .Include(u => u.BankAccount) + .SingleOrDefault(b => b.Name == username); + + if (user == null) { - using (var dbContext = new DatabaseContext()) - { - var user = dbContext.Users - .Include(u => u.Group) - .Include(u => u.BankAccount) - .SingleOrDefault(b => b.Name == username); - - if (user == null) - { - player.TriggerEvent("SERVER:Login_Error", "Benutzer existiert nicht! Registriere dich zuerst!"); - } - else - { - if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password)) - { - player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!"); - //TODO ?? Log einbauen für den bösen Bub. - player.Kick(); - } - if (user.Password != NAPI.Util.GetHashSha256(password)) - { - player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!"); - } - else - { - player.Name = username; - player.TriggerEvent("SERVER:Login_Success"); - player.SetData("isLoggedIn", true); - player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true)); - player.SetData("spec", true); - player.SetData("duty", false); - player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0); - Gangwar.Gangwar.loadPlayer(player); - if (user.FactionLeader) - { - player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); - } - if (user.IsAdmin(AdminLevel.HEADADMIN)) - { - player.SetData("editmode", false); - player.SetData("quicksavemode", "none"); - } - - var userBankAccount = user.BankAccount; - userBankAccount.Balance = userBankAccount.Balance; - - user.Wanteds = user.Wanteds; - - if (user.Group != null) - { - string msg = $"{player.Name} ist wieder online."; - ChatService.BroadcastGroup(msg, user.Group); - } - - if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName)) - { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING); - } - else if (user.IsAdmin(AdminLevel.MAPPING)) - { - ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING); - } - - var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); - player.SetData("items", userItems); - - switch (user.FactionId) - { - case null: - player.SetSharedData("blipColor", 0); - break; - - case 8: - player.SetSharedData("blipColor", 83); - break; - - case 7: - player.SetSharedData("blipColor", 52); - break; - - case 4: - player.SetSharedData("blipColor", 5); - break; - } - - if (user.CharacterId == null) - { - var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension"); - currentPlayerCreatorDimension++; - NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension); - player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension"); - player.Position = new Vector3(402.8664, -996.4108, -99.00027); - player.Rotation = new Vector3(0, 0, 180); - player.TriggerEvent("toggleCreator"); - } - else - { - CharacterCreator.ApplyCharacter(player); - UpdateCharacterCloth.LoadCharacterDefaults(player); - if (user.JailTime <= 0) - { - NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0); - } - else - { - Jail.Check_PutBehindBars(player); - } - } - - player.TriggerEvent("draw", player.Name, player.Handle.Value); - if (user.Dead == true) - { - if (user.IsAdmin(AdminLevel.ADMIN) == true) - { - player.TriggerEvent("startDeathTimer", true); - player.Health = 0; - } - else - { - player.TriggerEvent("startDeathTimer", false); - player.Health = 0; - } - player.SetData("isDead", true); - } - else - { - player.SetData("isDead", false); - } - } - } - } + player.TriggerEvent("SERVER:Login_Error", "Benutzer existiert nicht! Registriere dich zuerst!"); } + else + { + if (user.SocialClubName != player.SocialClubName && user.Password == NAPI.Util.GetHashSha256(password)) + { + player.TriggerEvent("SERVER:Login_Error", "Dieser Benutzer gehört dir nicht!"); + //TODO ?? Log einbauen für den bösen Bub. + player.Kick(); + } + if (user.Password != NAPI.Util.GetHashSha256(password)) + { + player.TriggerEvent("SERVER:Login_Error", "Passwort inkorrekt!"); + } + else + { + player.Name = username; + player.TriggerEvent("SERVER:Login_Success"); + player.SetData("isLoggedIn", true); + player.SetSharedData("isLoggedIn", JsonConvert.SerializeObject(true)); + player.SetData("spec", true); + player.SetData("duty", false); + player.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney, 0); + Gangwar.Gangwar.loadPlayer(player); + if (user.FactionLeader) + { + player.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); + } + if (user.IsAdmin(AdminLevel.HEADADMIN)) + { + player.SetData("editmode", false); + player.SetData("quicksavemode", "none"); + } + + var userBankAccount = user.BankAccount; + userBankAccount.Balance = userBankAccount.Balance; + + user.Wanteds = user.Wanteds; + + if (user.Group != null) + { + string msg = $"{player.Name} ist wieder online."; + ChatService.BroadcastGroup(msg, user.Group); + } + + if (GlobalHelper.CustomJoinMessages.ContainsKey(player.SocialClubName)) + { + ChatService.BroadcastAdmin("!{#FFFF00}*** " + GlobalHelper.CustomJoinMessages[player.SocialClubName] + " [ID: " + player.Handle.Value + "] (" + user.AdminLevel.GetName() + ")", AdminLevel.MAPPING); + } + else if (user.IsAdmin(AdminLevel.MAPPING)) + { + ChatService.BroadcastAdmin("!{#FFFF00}*** " + user.Name + " [ID: " + player.Handle.Value + "]" + " hat sich als " + user.AdminLevel.GetName() + " eingeloggt!", AdminLevel.MAPPING); + } + + var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); + player.SetData("items", userItems); + + switch (user.FactionId) + { + case null: + player.SetSharedData("blipColor", 0); + break; + + case 8: + player.SetSharedData("blipColor", 83); + break; + + case 7: + player.SetSharedData("blipColor", 52); + break; + + case 4: + player.SetSharedData("blipColor", 5); + break; + } + + if (user.CharacterId == null) + { + var currentPlayerCreatorDimension = (uint)NAPI.Data.GetWorldData("playerCreatorDimension"); + currentPlayerCreatorDimension++; + NAPI.Data.SetWorldData("playerCreatorDimension", currentPlayerCreatorDimension); + player.Dimension = NAPI.Data.GetWorldData("playerCreatorDimension"); + player.Position = new Vector3(402.8664, -996.4108, -99.00027); + player.Rotation = new Vector3(0, 0, 180); + player.TriggerEvent("toggleCreator"); + } + else + { + CharacterCreator.ApplyCharacter(player); + UpdateCharacterCloth.LoadCharacterDefaults(player); + if (user.JailTime <= 0) + { + NAPI.Player.SpawnPlayer(player, new Vector3(user.PositionX, user.PositionY, user.PositionZ), 0); + } + else + { + Jail.Check_PutBehindBars(player); + } + } + + player.TriggerEvent("draw", player.Name, player.Handle.Value); + if (user.Dead == true) + { + if (user.IsAdmin(AdminLevel.ADMIN) == true) + { + player.TriggerEvent("startDeathTimer", true); + player.Health = 0; + } + else + { + player.TriggerEvent("startDeathTimer", false); + player.Health = 0; + } + player.SetData("isDead", true); + } + else + { + player.SetData("isDead", false); + } + } + } + } } + } } diff --git a/ReallifeGamemode.Server/Events/ResourceStop.cs b/ReallifeGamemode.Server/Events/ResourceStop.cs index 285c3844..8673d4c1 100644 --- a/ReallifeGamemode.Server/Events/ResourceStop.cs +++ b/ReallifeGamemode.Server/Events/ResourceStop.cs @@ -11,24 +11,24 @@ using ReallifeGamemode.Database.Models; namespace ReallifeGamemode.Server.Events { public class ResourceStop : Script + { + [ServerEvent(Event.ResourceStop)] + public void OnResourceStop() { - [ServerEvent(Event.ResourceStop)] - public void OnResourceStop() + var users = NAPI.Pools.GetAllPlayers(); + + foreach (Player user in users) + { + using (var saveUsers = new DatabaseContext()) { - var users = NAPI.Pools.GetAllPlayers(); + var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name); - foreach (Player user in users) - { - using (var saveUsers = new DatabaseContext()) - { - var saveUser = saveUsers.Users.SingleOrDefault(u => u.Name == user.Name); - - saveUser.PositionX = user.Position.X; - saveUser.PositionY = user.Position.Y; - saveUser.PositionZ = user.Position.Z; - saveUsers.SaveChanges(); - } - } + saveUser.PositionX = user.Position.X; + saveUser.PositionY = user.Position.Y; + saveUser.PositionZ = user.Position.Z; + saveUsers.SaveChanges(); } + } } + } } diff --git a/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs b/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs index 4e91d05a..ad040010 100644 --- a/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs +++ b/ReallifeGamemode.Server/Events/UpdateCharacterCloth.cs @@ -9,253 +9,253 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Events { public class UpdateCharacterCloth : Script + { + [RemoteEvent("updateDutyProp")] + public void UpdateDutyProp(Player player, int componentId, int componentVariation) { - [RemoteEvent("updateDutyProp")] - public void UpdateDutyProp(Player player, int componentId, int componentVariation) - { - if (componentId != -1) - { - player.SetAccessories(componentId, componentVariation, 0); - } - else - { - player.ClearAccessory(0); - player.ClearAccessory(1); - player.ClearAccessory(2); - } - } - - [RemoteEvent("updateDutyCloth")] - public void UpdateDutyCloth(Player player, int componentId, int componentVariation) - { - if (componentId == 11) - { - //TODO Spezielle Duty Kleidung in Datenbank einpflegen (Ergibt bei Cop-Kleidung NULL) - using (var context = new DatabaseContext()) - { - var character = player.GetUser().GetCharacter(); - - var combination = context.ClothCombinations.FirstOrDefault(c => c.Top == componentVariation && c.Gender == character.Gender); - player.SetClothes(11, componentVariation, 0); - if (combination != null) - { - player.SetClothes(3, combination.Torso, 0); - player.SetClothes(8, combination.Undershirt, 0); - } - } - } - else - { - player.SetClothes(componentId, componentVariation, 0); - } - } - - [RemoteEvent("saveCharacterCloth")] - public void SaveDutyCloth(Player client, string JSlotType, string JSlotId, string JClothId) - { - using (var context = new DatabaseContext()) - { - int[] slotType = JsonConvert.DeserializeObject(JSlotType); - int[] slotId = JsonConvert.DeserializeObject(JSlotId); - int[] clothId = JsonConvert.DeserializeObject(JClothId); - - User user = client.GetUser(); - user = context.Users.FirstOrDefault(u => u.Id == user.Id); - - var character = client.GetUser().GetCharacter(); - - var charClothes = context.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id); - if (charClothes == null) - { - for (var x = 0; x < slotType.Length; x++) - { - CharacterCloth newCloth = new CharacterCloth - { - UserId = user.Id, - - Duty = true, - - SlotType = (byte)slotType[x], - SlotId = slotId[x], - ClothId = clothId[x] - }; - context.CharacterClothes.Add(newCloth); - } - if (user.GetCharacter().Gender == false) - { - CharacterCloth newTorso = new CharacterCloth - { - UserId = user.Id, - - Duty = true, - - SlotType = 0, - SlotId = 3, - ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso - }; - CharacterCloth newUndershirt = new CharacterCloth - { - UserId = user.Id, - - Duty = true, - - SlotType = 0, - SlotId = 8, - ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt - }; - context.CharacterClothes.Add(newTorso); - context.CharacterClothes.Add(newUndershirt); - } - } - else - { - for (var x = 0; x < slotType.Length; x++) - { - var loopCloth = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == slotType[x] && u.SlotId == slotId[x]); - loopCloth.ClothId = clothId[x]; - } - CharacterCloth torso = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 3); - CharacterCloth undershirt = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 8); - - torso.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso; - undershirt.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt; - } - context.SaveChanges(); - } - LoadCharacterDefaults(client); - } - - [RemoteEvent("defaultCharacterCloth")] - public static void LoadCharacterDefaults(Player player) - { - User user = player.GetUser(); - using (var context = new DatabaseContext()) - { - List charClothes = context.CharacterClothes.ToList().FindAll(c => c.UserId == user.Id && c.Duty == false); - player.ClearAccessory(0); - player.ClearAccessory(1); - player.ClearAccessory(2); - player.ClearAccessory(6); - player.ClearAccessory(7); - - foreach (var cloth in charClothes) - { - if (cloth.SlotType == 1) - { - player.SetAccessories(cloth.SlotId, cloth.ClothId, 0); - } - else - { - player.SetClothes(cloth.SlotId, cloth.ClothId, cloth.Texture); - } - } - } - } - - [RemoteEvent("SERVER:BuyCharacterClothes")] - public void RmtEvent_BuyClothes(Player client, string type, string jsonData) - { - /* - * [0] ComponentID - * [1] TextureID - * [2] ClotheID - * [3] TorsoID - * [4] UndershirtID - * [5] UndershirtTextureID - * [6] Price - */ - - int[] data = JsonConvert.DeserializeObject(jsonData); - User user = client.GetUser(); - if (user.Handmoney < data[6]) - { - client.TriggerEvent("clothesMenu:Error"); - return; - } - - if (type == "clothe") - { - if (data[0] == 11)//for tops - { - client.SetClothes(11, data[2], data[1]); //set Top - client.SetClothes(8, data[4], data[5]); //set undershirt - client.SetClothes(3, data[3], 0); //set Torso - } - else - { - client.SetClothes(data[0], data[2], data[1]); - } - using (var dbContext = new DatabaseContext()) - { - var clothes = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == data[0] && c.Duty == false); - - if (clothes == null) - { - CharacterCloth newCloth = new CharacterCloth - { - UserId = user.Id, - - Duty = false, - - SlotType = 0, - SlotId = data[0], - ClothId = data[2], - Texture = data[1] - }; - dbContext.CharacterClothes.Add(newCloth); - } - else - { - clothes.ClothId = data[2]; - clothes.Texture = data[1]; - } - if (data[0] == 11) - { - var torso = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 3 && c.Duty == false); - var undershirt = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 8 && c.Duty == false); - if (torso == null) - { - CharacterCloth newTorso = new CharacterCloth - { - UserId = user.Id, - - Duty = false, - - SlotType = 0, - SlotId = 3, - ClothId = data[3] - }; - dbContext.CharacterClothes.Add(newTorso); - } - else - { - torso.ClothId = data[3]; - } - if (undershirt == null) - { - CharacterCloth newUndershirt = new CharacterCloth - { - UserId = user.Id, - Duty = false, - SlotType = 0, - SlotId = 8, - ClothId = data[4], - Texture = data[5] - }; - dbContext.CharacterClothes.Add(newUndershirt); - } - else - { - undershirt.ClothId = data[4]; - undershirt.Texture = data[5]; - } - } - client.GetUser(dbContext).Handmoney -= data[6]; - dbContext.SaveChanges(); - client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); - } - client.TriggerEvent("clothesMenu:updateLast", data[2], data[1], data[4], data[5], data[3]); - } - } + if (componentId != -1) + { + player.SetAccessories(componentId, componentVariation, 0); + } + else + { + player.ClearAccessory(0); + player.ClearAccessory(1); + player.ClearAccessory(2); + } } + + [RemoteEvent("updateDutyCloth")] + public void UpdateDutyCloth(Player player, int componentId, int componentVariation) + { + if (componentId == 11) + { + //TODO Spezielle Duty Kleidung in Datenbank einpflegen (Ergibt bei Cop-Kleidung NULL) + using (var context = new DatabaseContext()) + { + var character = player.GetUser().GetCharacter(); + + var combination = context.ClothCombinations.FirstOrDefault(c => c.Top == componentVariation && c.Gender == character.Gender); + player.SetClothes(11, componentVariation, 0); + if (combination != null) + { + player.SetClothes(3, combination.Torso, 0); + player.SetClothes(8, combination.Undershirt, 0); + } + } + } + else + { + player.SetClothes(componentId, componentVariation, 0); + } + } + + [RemoteEvent("saveCharacterCloth")] + public void SaveDutyCloth(Player client, string JSlotType, string JSlotId, string JClothId) + { + using (var context = new DatabaseContext()) + { + int[] slotType = JsonConvert.DeserializeObject(JSlotType); + int[] slotId = JsonConvert.DeserializeObject(JSlotId); + int[] clothId = JsonConvert.DeserializeObject(JClothId); + + User user = client.GetUser(); + user = context.Users.FirstOrDefault(u => u.Id == user.Id); + + var character = client.GetUser().GetCharacter(); + + var charClothes = context.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id); + if (charClothes == null) + { + for (var x = 0; x < slotType.Length; x++) + { + CharacterCloth newCloth = new CharacterCloth + { + UserId = user.Id, + + Duty = true, + + SlotType = (byte)slotType[x], + SlotId = slotId[x], + ClothId = clothId[x] + }; + context.CharacterClothes.Add(newCloth); + } + if (user.GetCharacter().Gender == false) + { + CharacterCloth newTorso = new CharacterCloth + { + UserId = user.Id, + + Duty = true, + + SlotType = 0, + SlotId = 3, + ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso + }; + CharacterCloth newUndershirt = new CharacterCloth + { + UserId = user.Id, + + Duty = true, + + SlotType = 0, + SlotId = 8, + ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt + }; + context.CharacterClothes.Add(newTorso); + context.CharacterClothes.Add(newUndershirt); + } + } + else + { + for (var x = 0; x < slotType.Length; x++) + { + var loopCloth = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == slotType[x] && u.SlotId == slotId[x]); + loopCloth.ClothId = clothId[x]; + } + CharacterCloth torso = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 3); + CharacterCloth undershirt = context.CharacterClothes.FirstOrDefault(u => u.UserId == user.Id && u.SlotType == 0 && u.SlotId == 8); + + torso.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Torso; + undershirt.ClothId = context.ClothCombinations.FirstOrDefault(c => c.Top == clothId[1] && c.Gender == character.Gender).Undershirt; + } + context.SaveChanges(); + } + LoadCharacterDefaults(client); + } + + [RemoteEvent("defaultCharacterCloth")] + public static void LoadCharacterDefaults(Player player) + { + User user = player.GetUser(); + using (var context = new DatabaseContext()) + { + List charClothes = context.CharacterClothes.ToList().FindAll(c => c.UserId == user.Id && c.Duty == false); + player.ClearAccessory(0); + player.ClearAccessory(1); + player.ClearAccessory(2); + player.ClearAccessory(6); + player.ClearAccessory(7); + + foreach (var cloth in charClothes) + { + if (cloth.SlotType == 1) + { + player.SetAccessories(cloth.SlotId, cloth.ClothId, 0); + } + else + { + player.SetClothes(cloth.SlotId, cloth.ClothId, cloth.Texture); + } + } + } + } + + [RemoteEvent("SERVER:BuyCharacterClothes")] + public void RmtEvent_BuyClothes(Player client, string type, string jsonData) + { + /* + * [0] ComponentID + * [1] TextureID + * [2] ClotheID + * [3] TorsoID + * [4] UndershirtID + * [5] UndershirtTextureID + * [6] Price + */ + + int[] data = JsonConvert.DeserializeObject(jsonData); + User user = client.GetUser(); + if (user.Handmoney < data[6]) + { + client.TriggerEvent("clothesMenu:Error"); + return; + } + + if (type == "clothe") + { + if (data[0] == 11)//for tops + { + client.SetClothes(11, data[2], data[1]); //set Top + client.SetClothes(8, data[4], data[5]); //set undershirt + client.SetClothes(3, data[3], 0); //set Torso + } + else + { + client.SetClothes(data[0], data[2], data[1]); + } + using (var dbContext = new DatabaseContext()) + { + var clothes = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == data[0] && c.Duty == false); + + if (clothes == null) + { + CharacterCloth newCloth = new CharacterCloth + { + UserId = user.Id, + + Duty = false, + + SlotType = 0, + SlotId = data[0], + ClothId = data[2], + Texture = data[1] + }; + dbContext.CharacterClothes.Add(newCloth); + } + else + { + clothes.ClothId = data[2]; + clothes.Texture = data[1]; + } + if (data[0] == 11) + { + var torso = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 3 && c.Duty == false); + var undershirt = dbContext.CharacterClothes.FirstOrDefault(c => c.UserId == user.Id && c.SlotId == 8 && c.Duty == false); + if (torso == null) + { + CharacterCloth newTorso = new CharacterCloth + { + UserId = user.Id, + + Duty = false, + + SlotType = 0, + SlotId = 3, + ClothId = data[3] + }; + dbContext.CharacterClothes.Add(newTorso); + } + else + { + torso.ClothId = data[3]; + } + if (undershirt == null) + { + CharacterCloth newUndershirt = new CharacterCloth + { + UserId = user.Id, + Duty = false, + SlotType = 0, + SlotId = 8, + ClothId = data[4], + Texture = data[5] + }; + dbContext.CharacterClothes.Add(newUndershirt); + } + else + { + undershirt.ClothId = data[4]; + undershirt.Texture = data[5]; + } + } + client.GetUser(dbContext).Handmoney -= data[6]; + dbContext.SaveChanges(); + client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); + } + client.TriggerEvent("clothesMenu:updateLast", data[2], data[1], data[4], data[5], data[3]); + } + } + } } diff --git a/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs b/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs index 204ece77..33955c27 100644 --- a/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs +++ b/ReallifeGamemode.Server/Events/UpdateCharacterElevator.cs @@ -4,15 +4,15 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Events { public class UpdateCharacterElevator : Script + { + [RemoteEvent("sendPlayerToStage")] + public void SaveWeaponSelection(Player client, string stage) { - [RemoteEvent("sendPlayerToStage")] - public void SaveWeaponSelection(Player client, string stage) - { - ElevatorPoint elevator = PositionManager.ElevatorPoints.Find(e => e.Stage == stage); - if (elevator != null) - { - client.Position = elevator.Position; - } - } + ElevatorPoint elevator = PositionManager.ElevatorPoints.Find(e => e.Stage == stage); + if (elevator != null) + { + client.Position = elevator.Position; + } } + } } diff --git a/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs b/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs index 1e29236b..84b41b59 100644 --- a/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs +++ b/ReallifeGamemode.Server/Events/UpdateCharacterWeapon.cs @@ -7,101 +7,101 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Events { public class UpdateCharacterWeapon : Script + { + [RemoteEvent("updateWeaponSelection")] + public void UpdateWeaponSelection(Player client, string weaponModel, int slot) { - [RemoteEvent("updateWeaponSelection")] - public void UpdateWeaponSelection(Player client, string weaponModel, int slot) - { - if (weaponModel == "Keine") - { - client.RemoveAllWeapons(); - return; - } + if (weaponModel == "Keine") + { + client.RemoveAllWeapons(); + return; + } - WeaponHash weaponHash = NAPI.Util.WeaponNameToModel(weaponModel); + WeaponHash weaponHash = NAPI.Util.WeaponNameToModel(weaponModel); - if (slot == 1) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - if (slot == 2) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - if (slot == 3) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - if (slot == 4) - { - client.RemoveAllWeapons(); - client.GiveWeapon(weaponHash, 0); - } - } - - [RemoteEvent("cancelWeaponSelection")] - public void CancelWeaponSelection(Player client) - { - client.RemoveAllWeapons(); - } - - [RemoteEvent("saveWeaponSelection")] - public void SaveWeaponSelection(Player client, string primaryModel, string secondaryModel, string meleeModel, string specialModel) - { - client.RemoveAllWeapons(); - if (!uint.TryParse(primaryModel, out uint primary)) - { - if (primaryModel.Contains("mk2") && !primaryModel.Contains("_mk2")) primaryModel = primaryModel.Replace("mk2", "_mk2"); - primary = NAPI.Util.GetHashKey($"weapon_{primaryModel}"); - } - if (!uint.TryParse(secondaryModel, out uint secondary)) - { - if (secondaryModel.Contains("mk2") && !secondaryModel.Contains("_mk2")) secondaryModel = secondaryModel.Replace("mk2", "_mk2"); - secondary = NAPI.Util.GetHashKey($"weapon_{secondaryModel}"); - } - if (!uint.TryParse(meleeModel, out uint melee)) - { - if (meleeModel.Contains("mk2") && !meleeModel.Contains("_mk2")) meleeModel = meleeModel.Replace("mk2", "_mk2"); - melee = NAPI.Util.GetHashKey($"weapon_{meleeModel}"); - } - - client.GiveWeapon((WeaponHash)primary, 50); - client.GiveWeapon((WeaponHash)secondary, 150); - client.GiveWeapon((WeaponHash)melee, 1); - if (specialModel != "Schutzweste") - { - client.Armor = 0; - if (!uint.TryParse(specialModel, out uint special)) - { - if (specialModel.Contains("mk2") && !specialModel.Contains("_mk2")) specialModel = specialModel.Replace("mk2", "_mk2"); - special = NAPI.Util.GetHashKey($"weapon_{specialModel}"); - } - client.GiveWeapon((WeaponHash)special, 50); - } - else - { - client.Armor = 50; - } - - using (var context = new DatabaseContext()) - { - User user = client.GetUser(); - FactionWeapon slot1 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == primaryModel).FirstOrDefault(); - if (slot1 != null) - slot1.Ammount -= 1; - FactionWeapon slot2 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == secondaryModel).FirstOrDefault(); - if (slot2 != null) - slot2.Ammount -= 1; - FactionWeapon slot3 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == meleeModel).FirstOrDefault(); - if (slot3 != null) - slot3.Ammount -= 1; - FactionWeapon slot4 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == specialModel).FirstOrDefault(); - if (slot4 != null) - slot4.Ammount -= 1; - context.SaveChanges(); - } - } + if (slot == 1) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + if (slot == 2) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + if (slot == 3) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } + if (slot == 4) + { + client.RemoveAllWeapons(); + client.GiveWeapon(weaponHash, 0); + } } + + [RemoteEvent("cancelWeaponSelection")] + public void CancelWeaponSelection(Player client) + { + client.RemoveAllWeapons(); + } + + [RemoteEvent("saveWeaponSelection")] + public void SaveWeaponSelection(Player client, string primaryModel, string secondaryModel, string meleeModel, string specialModel) + { + client.RemoveAllWeapons(); + if (!uint.TryParse(primaryModel, out uint primary)) + { + if (primaryModel.Contains("mk2") && !primaryModel.Contains("_mk2")) primaryModel = primaryModel.Replace("mk2", "_mk2"); + primary = NAPI.Util.GetHashKey($"weapon_{primaryModel}"); + } + if (!uint.TryParse(secondaryModel, out uint secondary)) + { + if (secondaryModel.Contains("mk2") && !secondaryModel.Contains("_mk2")) secondaryModel = secondaryModel.Replace("mk2", "_mk2"); + secondary = NAPI.Util.GetHashKey($"weapon_{secondaryModel}"); + } + if (!uint.TryParse(meleeModel, out uint melee)) + { + if (meleeModel.Contains("mk2") && !meleeModel.Contains("_mk2")) meleeModel = meleeModel.Replace("mk2", "_mk2"); + melee = NAPI.Util.GetHashKey($"weapon_{meleeModel}"); + } + + client.GiveWeapon((WeaponHash)primary, 50); + client.GiveWeapon((WeaponHash)secondary, 150); + client.GiveWeapon((WeaponHash)melee, 1); + if (specialModel != "Schutzweste") + { + client.Armor = 0; + if (!uint.TryParse(specialModel, out uint special)) + { + if (specialModel.Contains("mk2") && !specialModel.Contains("_mk2")) specialModel = specialModel.Replace("mk2", "_mk2"); + special = NAPI.Util.GetHashKey($"weapon_{specialModel}"); + } + client.GiveWeapon((WeaponHash)special, 50); + } + else + { + client.Armor = 50; + } + + using (var context = new DatabaseContext()) + { + User user = client.GetUser(); + FactionWeapon slot1 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == primaryModel).FirstOrDefault(); + if (slot1 != null) + slot1.Ammount -= 1; + FactionWeapon slot2 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == secondaryModel).FirstOrDefault(); + if (slot2 != null) + slot2.Ammount -= 1; + FactionWeapon slot3 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == meleeModel).FirstOrDefault(); + if (slot3 != null) + slot3.Ammount -= 1; + FactionWeapon slot4 = context.FactionWeapons.Where(w => w.FactionId == user.FactionId && w.WeaponModel == specialModel).FirstOrDefault(); + if (slot4 != null) + slot4.Ammount -= 1; + context.SaveChanges(); + } + } + } } diff --git a/ReallifeGamemode.Server/Events/Vehicle.cs b/ReallifeGamemode.Server/Events/Vehicle.cs index 58e8e1e2..d8c8815e 100644 --- a/ReallifeGamemode.Server/Events/Vehicle.cs +++ b/ReallifeGamemode.Server/Events/Vehicle.cs @@ -9,274 +9,274 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Events { public class Vehicle : Script + { + [RemoteEvent("VehicleMenu_ToggleEngine")] + public void VehicleMenuToggleEngineEvent(Player player) { - [RemoteEvent("VehicleMenu_ToggleEngine")] - public void VehicleMenuToggleEngineEvent(Player player) + if (player.IsInVehicle && player.VehicleSeat == 0) + { + GTANetworkAPI.Vehicle v = player.Vehicle; + + User u = player.GetUser(); + if (u == null) return; + + if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16) { - if (player.IsInVehicle && player.VehicleSeat == 0) - { - GTANetworkAPI.Vehicle v = player.Vehicle; - - User u = player.GetUser(); - if (u == null) return; - - if (NAPI.Entity.GetEntityVelocity(v).Length() > 1 && v.Class != 16) - { - player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); - return; - } - - bool state = VehicleStreaming.GetEngineState(v); - ServerVehicle sV = v.GetServerVehicle(); - if (sV != null) - { - if (sV is ShopVehicle) - { - VehicleStreaming.SetEngineState(v, false); - return; - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) - { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is GroupVehicle gV) - { - if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3)) - { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is JobVehicle jV) - { - if (!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3)) - { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - return; - } - } - } - VehicleStreaming.SetEngineState(v, !state); - } + player.SendNotification("~r~Der Motor kann nur im Stand betätigt werden.", true); + return; } - [RemoteEvent("VehicleMenu_LockCar")] - public static void VehicleMenuLockCarEvent(Player player) + bool state = VehicleStreaming.GetEngineState(v); + ServerVehicle sV = v.GetServerVehicle(); + if (sV != null) { - if (player.IsInVehicle && player.VehicleSeat == 0) + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(v, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0) && !state && !(u.IsAdmin(AdminLevel.HEADADMIN) && GlobalHelper.DutyAdmins.Contains(player))) { - GTANetworkAPI.Vehicle v = player.Vehicle; - - User u = player.GetUser(); - if (u == null) return; - - bool state = VehicleStreaming.GetLockState(v); - ServerVehicle sV = v.GetServerVehicle(); - - if (sV != null) - { - if (sV is ShopVehicle) - { - VehicleStreaming.SetEngineState(v, false); - return; - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0)) - { - return; - } - } - else if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - player.SendNotification("~r~Du hast keinen Schlüssel."); - return; - } - } - else if (sV is JobVehicle) - { - return; - } - else if (sV is SchoolVehicle) - { - return; - } - } - state = !state; - VehicleStreaming.SetLockStatus(v, state); - string msg = "Fahrzeug "; - msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; - player.TriggerEvent("vehsync:OpenCar", state); - player.SendNotification(msg); + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; } - else if (!player.IsInVehicle) + } + else if (sV is GroupVehicle gV) + { + if (gV.GroupId != u.Group.Id && !state && !u.IsAdmin(AdminLevel.ADMIN3)) { - GTANetworkAPI.Vehicle vehicle = null; - foreach (var veh in NAPI.Pools.GetAllVehicles()) - { - if (player.Position.DistanceTo(veh.Position) <= 3f) - { - vehicle = veh; - break; - } - } - - if (vehicle == null) - return; - User u = player.GetUser(); - if (u == null) return; - - bool state = VehicleStreaming.GetLockState(vehicle); - ServerVehicle sV = vehicle.GetServerVehicle(); - - if (sV != null) - { - if (sV is ShopVehicle) - { - VehicleStreaming.SetEngineState(vehicle, false); - return; - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0)) - { - return; - } - } - else if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - return; - } - } - else if (sV is JobVehicle) - { - return; - } - } - state = !state; - VehicleStreaming.SetLockStatus(vehicle, state); - string msg = "Fahrzeug "; - msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; - player.TriggerEvent("vehsync:OpenCar", state); - player.SendNotification(msg); + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; } - } - - [RemoteEvent("CLIENT:VehicleMenu_ParkCar")] - public void VehicleMenuParkCarEvent(Player player) - { - if (player.IsInVehicle && player.VehicleSeat == 0) + } + else if (sV is JobVehicle jV) + { + if (!jV.GetJob().GetUsersInJob().Contains(player) && !u.IsAdmin(AdminLevel.ADMIN3)) { - GTANetworkAPI.Vehicle v = player.Vehicle; - - User u = player.GetUser(); - if (u == null) return; - - using (var dbContext = new DatabaseContext()) - { - ServerVehicle sV = v.GetServerVehicle(dbContext); - - if (sV == null) return; - - if (sV is UserVehicle uV) - { - if (uV.UserId != u.Id) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - } - else if (sV is FactionVehicle fV) - { - if (!fV.GetOwners().Contains(u.FactionId ?? 0) || !u.FactionLeader) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - } - else if (sV is GroupVehicle gV) - { - if (gV.GroupId != u.Group.Id || u.GroupRank < GroupRank.MANAGER) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - } - else if (sV is JobVehicle) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - else if (sV is SchoolVehicle) - { - player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); - return; - } - - Vector3 pos = v.Position; - - sV.PositionX = pos.X; - sV.PositionY = pos.Y; - sV.PositionZ = pos.Z; - sV.Heading = v.Heading; - - player.SendNotification("~g~Das Fahrzeug wurde geparkt."); - - dbContext.SaveChanges(); - } + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; } - } - - [RemoteEvent("VehicleMenu_ToggleSingleDoor")] - public void VehicleMenuToggleSingleDoorEvent(Player player, int door) - { - if (!player.IsInVehicle) return; - GTANetworkAPI.Vehicle veh = player.Vehicle; - - DoorID doorId = (DoorID)door; - - DoorState state = VehicleStreaming.GetDoorState(veh, doorId); - - VehicleStreaming.SetDoorState(veh, doorId, state == DoorState.DoorOpen ? DoorState.DoorClosed : DoorState.DoorOpen); - } - - [RemoteEvent("VehicleMenu_OpenAllDoors")] - public void VehicleMenuOpenAllDoorsEvent(Player player) - { - if (!player.IsInVehicle) return; - GTANetworkAPI.Vehicle veh = player.Vehicle; - - foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + } + else if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) { - VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorOpen); - } - } - - [RemoteEvent("VehicleMenu_CloseAllDoors")] - public void VehicleMenuCloseAllDoorsEvent(Player player) - { - if (!player.IsInVehicle) return; - GTANetworkAPI.Vehicle veh = player.Vehicle; - - foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) - { - VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorClosed); + return; } + } } + VehicleStreaming.SetEngineState(v, !state); + } } + + [RemoteEvent("VehicleMenu_LockCar")] + public static void VehicleMenuLockCarEvent(Player player) + { + if (player.IsInVehicle && player.VehicleSeat == 0) + { + GTANetworkAPI.Vehicle v = player.Vehicle; + + User u = player.GetUser(); + if (u == null) return; + + bool state = VehicleStreaming.GetLockState(v); + ServerVehicle sV = v.GetServerVehicle(); + + if (sV != null) + { + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(v, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0)) + { + return; + } + } + else if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + player.SendNotification("~r~Du hast keinen Schlüssel."); + return; + } + } + else if (sV is JobVehicle) + { + return; + } + else if (sV is SchoolVehicle) + { + return; + } + } + state = !state; + VehicleStreaming.SetLockStatus(v, state); + string msg = "Fahrzeug "; + msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; + player.TriggerEvent("vehsync:OpenCar", state); + player.SendNotification(msg); + } + else if (!player.IsInVehicle) + { + GTANetworkAPI.Vehicle vehicle = null; + foreach (var veh in NAPI.Pools.GetAllVehicles()) + { + if (player.Position.DistanceTo(veh.Position) <= 3f) + { + vehicle = veh; + break; + } + } + + if (vehicle == null) + return; + User u = player.GetUser(); + if (u == null) return; + + bool state = VehicleStreaming.GetLockState(vehicle); + ServerVehicle sV = vehicle.GetServerVehicle(); + + if (sV != null) + { + if (sV is ShopVehicle) + { + VehicleStreaming.SetEngineState(vehicle, false); + return; + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0)) + { + return; + } + } + else if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + return; + } + } + else if (sV is JobVehicle) + { + return; + } + } + state = !state; + VehicleStreaming.SetLockStatus(vehicle, state); + string msg = "Fahrzeug "; + msg += state ? "~g~abgeschlossen" : "~r~aufgeschlossen"; + player.TriggerEvent("vehsync:OpenCar", state); + player.SendNotification(msg); + } + } + + [RemoteEvent("CLIENT:VehicleMenu_ParkCar")] + public void VehicleMenuParkCarEvent(Player player) + { + if (player.IsInVehicle && player.VehicleSeat == 0) + { + GTANetworkAPI.Vehicle v = player.Vehicle; + + User u = player.GetUser(); + if (u == null) return; + + using (var dbContext = new DatabaseContext()) + { + ServerVehicle sV = v.GetServerVehicle(dbContext); + + if (sV == null) return; + + if (sV is UserVehicle uV) + { + if (uV.UserId != u.Id) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + } + else if (sV is FactionVehicle fV) + { + if (!fV.GetOwners().Contains(u.FactionId ?? 0) || !u.FactionLeader) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + } + else if (sV is GroupVehicle gV) + { + if (gV.GroupId != u.Group.Id || u.GroupRank < GroupRank.MANAGER) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + } + else if (sV is JobVehicle) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + else if (sV is SchoolVehicle) + { + player.SendNotification("~r~Du darfst dieses Fahrzeug nicht parken."); + return; + } + + Vector3 pos = v.Position; + + sV.PositionX = pos.X; + sV.PositionY = pos.Y; + sV.PositionZ = pos.Z; + sV.Heading = v.Heading; + + player.SendNotification("~g~Das Fahrzeug wurde geparkt."); + + dbContext.SaveChanges(); + } + } + } + + [RemoteEvent("VehicleMenu_ToggleSingleDoor")] + public void VehicleMenuToggleSingleDoorEvent(Player player, int door) + { + if (!player.IsInVehicle) return; + GTANetworkAPI.Vehicle veh = player.Vehicle; + + DoorID doorId = (DoorID)door; + + DoorState state = VehicleStreaming.GetDoorState(veh, doorId); + + VehicleStreaming.SetDoorState(veh, doorId, state == DoorState.DoorOpen ? DoorState.DoorClosed : DoorState.DoorOpen); + } + + [RemoteEvent("VehicleMenu_OpenAllDoors")] + public void VehicleMenuOpenAllDoorsEvent(Player player) + { + if (!player.IsInVehicle) return; + GTANetworkAPI.Vehicle veh = player.Vehicle; + + foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + { + VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorOpen); + } + } + + [RemoteEvent("VehicleMenu_CloseAllDoors")] + public void VehicleMenuCloseAllDoorsEvent(Player player) + { + if (!player.IsInVehicle) return; + GTANetworkAPI.Vehicle veh = player.Vehicle; + + foreach (DoorID doorId in Enum.GetValues(typeof(DoorID))) + { + VehicleStreaming.SetDoorState(veh, doorId, DoorState.DoorClosed); + } + } + } } diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index ddfccc05..9237290a 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -17,53 +17,53 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Extensions { public static class PlayerExtension + { + /// + /// Gibt das User-Objekt eines Player's zurück. + /// Gibt nichts zurück, wenn der Player nicht eingeloggt ist + /// + /// Der Player, dessen User man bekommen möchte + /// Ein eventuell vorhandener Datenbank-Context, falls man Änderungen in der Datenbank vornehmen will + /// + public static User GetUser(this Player client, DatabaseContext context = null) { - /// - /// Gibt das User-Objekt eines Player's zurück. - /// Gibt nichts zurück, wenn der Player nicht eingeloggt ist - /// - /// Der Player, dessen User man bekommen möchte - /// Ein eventuell vorhandener Datenbank-Context, falls man Änderungen in der Datenbank vornehmen will - /// - public static User GetUser(this Player client, DatabaseContext context = null) - { - context = context ?? new DatabaseContext(); - if (!client.IsLoggedIn()) return null; - return context - .Users - .Include(u => u.Faction) - .Include(u => u.FactionRank) - .Include(u => u.Group) - .Include(u => u.House) - .Include(u => u.BankAccount) - .Where(u => u.Name == client.Name) - .FirstOrDefault(); - } + context = context ?? new DatabaseContext(); + if (!client.IsLoggedIn()) return null; + return context + .Users + .Include(u => u.Faction) + .Include(u => u.FactionRank) + .Include(u => u.Group) + .Include(u => u.House) + .Include(u => u.BankAccount) + .Where(u => u.Name == client.Name) + .FirstOrDefault(); + } - public static Character GetCharacter(this User user, DatabaseContext context = null) + public static Character GetCharacter(this User user, DatabaseContext context = null) + { + if (context == null) + { + using (context = new DatabaseContext()) { - if (context == null) - { - using (context = new DatabaseContext()) - { - return context.Characters.FirstOrDefault(u => u.UserId == user.Id); - } - } - else - { - return context.Characters.FirstOrDefault(u => u.UserId == user.Id); - } + return context.Characters.FirstOrDefault(u => u.UserId == user.Id); } + } + else + { + return context.Characters.FirstOrDefault(u => u.UserId == user.Id); + } + } - /// - /// Gibt zurück, ob ein Player eingeloggt ist - /// - /// Der Player, dessen Login-Status man bekommen möchte - /// - public static bool IsLoggedIn(this Player player) - { - return player.HasData("isLoggedIn") ? player.GetData("isLoggedIn") : false; - } + /// + /// Gibt zurück, ob ein Player eingeloggt ist + /// + /// Der Player, dessen Login-Status man bekommen möchte + /// + public static bool IsLoggedIn(this Player player) + { + return player.HasData("isLoggedIn") ? player.GetData("isLoggedIn") : false; + } public static bool IsDuty(this Player player) { @@ -81,126 +81,126 @@ namespace ReallifeGamemode.Server.Extensions return newpos; } - internal static T GetData(this User user, string key, T nullValue) - { - key += "data_"; - if (!user.Player.HasData(key)) return nullValue; - return JsonConvert.DeserializeObject(user.Player.GetData(key)); - } - - internal static T GetData(this User user, string key) => user.GetData(key, default); - - internal static void SetData(this User user, string key, object value) - { - key += "data_"; - user.Player.SetData(key, JsonConvert.SerializeObject(value)); - } - - internal static void GiveWanteds(this User user, Player cop, int amount, string reason) - { - if (user.Wanteds + amount > 50) - { - ChatService.ErrorMessage(cop, "Die Wanteds dürfen ein Limit von 50 nicht überschreiten"); - return; - } - int newWanteds = user.Wanteds + amount; - using (var dbContext = new DatabaseContext()) - { - User dbUser = dbContext.Users.Where(u => u.Id == user.Id).FirstOrDefault(); - dbUser.Wanteds = newWanteds; - dbContext.SaveChanges(); - } - user.Player.SetSharedData("blipColor", 64); - ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : "")); - ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds); - - foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) - { - User copUser = copPlayer.GetUser(); - if (cop != null && (copUser.FactionId == 1 || copUser.FactionId == 3)) - { - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Straftat gemeldet von " + cop.Name + " mit Fahndungslevel " + amount + ". Straftäter: " + user.Name + "."); - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Grund: " + reason + "."); - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); - } - else if ((copUser.FactionId == 1 || copUser.FactionId == 3) && cop == null) - { - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + user.Name + " hat eine Straftat begangen. Grund: " + reason + "."); - ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); - } - } - } - - public static FactionRank GetFactionRank(this User user) - { - using (var dbContext = new DatabaseContext()) - { - FactionRank toReturn = dbContext.FactionRanks.FirstOrDefault(fR => fR.Id == user.FactionRankId); - if (toReturn == null) - { - toReturn = dbContext.FactionRanks.OrderBy(f => f.Order).FirstOrDefault(f => f.FactionId == user.FactionId); - } - - if (toReturn == null) - { - toReturn = new FactionRank - { - RankName = "Rang-Fehler" - }; - } - - return toReturn; - } - } - - public static void BanPlayer(this User user, Player admin, string reason, int mins) - { - using (var banUserContext = new DatabaseContext()) - { - int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; - Ban banUser; - - if (mins == 0) - { - ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]"); - banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp }; - - user.Player?.Kick(); - - mins--; - } - else - { - ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]"); - banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp + mins * 60 }; - user.Player?.Kick(); - } - - banUserContext.Bans.Add(banUser); - banUserContext.SaveChanges(); - - var targetUser = banUserContext.Users.Where(u => u.Name == user.Name).FirstOrDefault(); - targetUser.BanId = banUser.Id; - banUserContext.SaveChanges(); - } - } - - public static void UnbanPlayer(this User user) - { - using (var unbanUser = new DatabaseContext()) - { - var targetUser = unbanUser.Users.Where(u => u.Id == user.Id).FirstOrDefault(); - targetUser.BanId = null; - unbanUser.SaveChanges(); - } - } - - public static List GetItems(this User user) - { - using (var dbContext = new DatabaseContext()) - { - return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); - } - } + internal static T GetData(this User user, string key, T nullValue) + { + key += "data_"; + if (!user.Player.HasData(key)) return nullValue; + return JsonConvert.DeserializeObject(user.Player.GetData(key)); } -} \ No newline at end of file + + internal static T GetData(this User user, string key) => user.GetData(key, default); + + internal static void SetData(this User user, string key, object value) + { + key += "data_"; + user.Player.SetData(key, JsonConvert.SerializeObject(value)); + } + + internal static void GiveWanteds(this User user, Player cop, int amount, string reason) + { + if (user.Wanteds + amount > 50) + { + ChatService.ErrorMessage(cop, "Die Wanteds dürfen ein Limit von 50 nicht überschreiten"); + return; + } + int newWanteds = user.Wanteds + amount; + using (var dbContext = new DatabaseContext()) + { + User dbUser = dbContext.Users.Where(u => u.Id == user.Id).FirstOrDefault(); + dbUser.Wanteds = newWanteds; + dbContext.SaveChanges(); + } + user.Player.SetSharedData("blipColor", 64); + ChatService.SendMessage(user.Player, "!{#FF614A}Du hast ein Verbrechen begangen: " + reason + "" + (cop != null ? " | Gemeldet von: " + cop.Name + "." : "")); + ChatService.SendMessage(user.Player, " !{#FFFF00}Fahnundgslevel:~s~ " + newWanteds); + + foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) + { + User copUser = copPlayer.GetUser(); + if (cop != null && (copUser.FactionId == 1 || copUser.FactionId == 3)) + { + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Straftat gemeldet von " + cop.Name + " mit Fahndungslevel " + amount + ". Straftäter: " + user.Name + "."); + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Grund: " + reason + "."); + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); + } + else if ((copUser.FactionId == 1 || copUser.FactionId == 3) && cop == null) + { + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: " + user.Name + " hat eine Straftat begangen. Grund: " + reason + "."); + ChatService.SendMessage(copPlayer, "!{#8181E9}HQ: Der Straftäter: " + user.Name + " wird nun mit Fahndungslevel " + newWanteds + " gesucht."); + } + } + } + + public static FactionRank GetFactionRank(this User user) + { + using (var dbContext = new DatabaseContext()) + { + FactionRank toReturn = dbContext.FactionRanks.FirstOrDefault(fR => fR.Id == user.FactionRankId); + if (toReturn == null) + { + toReturn = dbContext.FactionRanks.OrderBy(f => f.Order).FirstOrDefault(f => f.FactionId == user.FactionId); + } + + if (toReturn == null) + { + toReturn = new FactionRank + { + RankName = "Rang-Fehler" + }; + } + + return toReturn; + } + } + + public static void BanPlayer(this User user, Player admin, string reason, int mins) + { + using (var banUserContext = new DatabaseContext()) + { + int unixTimestamp = (int)(DateTime.UtcNow.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; + Ban banUser; + + if (mins == 0) + { + ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " permanent gebannt. [" + reason + "]"); + banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp }; + + user.Player?.Kick(); + + mins--; + } + else + { + ChatService.Broadcast("!{#FF4040}[BAN] " + user.Name + " wurde von " + admin.Name + " für " + mins + " Minuten gebannt. [" + reason + "]"); + banUser = new Ban { UserId = user.Id, Reason = reason, BannedBy = admin.Name, Applied = unixTimestamp, UntilDateTime = unixTimestamp + mins * 60 }; + user.Player?.Kick(); + } + + banUserContext.Bans.Add(banUser); + banUserContext.SaveChanges(); + + var targetUser = banUserContext.Users.Where(u => u.Name == user.Name).FirstOrDefault(); + targetUser.BanId = banUser.Id; + banUserContext.SaveChanges(); + } + } + + public static void UnbanPlayer(this User user) + { + using (var unbanUser = new DatabaseContext()) + { + var targetUser = unbanUser.Users.Where(u => u.Id == user.Id).FirstOrDefault(); + targetUser.BanId = null; + unbanUser.SaveChanges(); + } + } + + public static List GetItems(this User user) + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); + } + } + } +} diff --git a/ReallifeGamemode.Server/Extensions/EnumExtensions.cs b/ReallifeGamemode.Server/Extensions/EnumExtensions.cs index 035e226a..99c0c7f7 100644 --- a/ReallifeGamemode.Server/Extensions/EnumExtensions.cs +++ b/ReallifeGamemode.Server/Extensions/EnumExtensions.cs @@ -4,57 +4,57 @@ using static ReallifeGamemode.Server.Types.AdminLevel; namespace ReallifeGamemode.Server.Extensions { public static class EnumExtensions + { + /// + /// Gibt den richtigen Namen eines Admin Levels zurück + /// + /// Das Admin Level, dessen Namen man bekommen möchte. + /// + public static string GetName(this AdminLevel level) { - /// - /// Gibt den richtigen Namen eines Admin Levels zurück - /// - /// Das Admin Level, dessen Namen man bekommen möchte. - /// - public static string GetName(this AdminLevel level) - { - switch (level) - { - case MAPPING: - return "Mapper"; + switch (level) + { + case MAPPING: + return "Mapper"; - case ENTWICKLUNG: - return "Entwickler"; + case ENTWICKLUNG: + return "Entwickler"; - case SUPPORTER: - return "Supporter"; + case SUPPORTER: + return "Supporter"; - case ADMIN: - case ADMIN2: - case ADMIN3: - return "Admin"; + case ADMIN: + case ADMIN2: + case ADMIN3: + return "Admin"; - case HEADADMIN: - return "Headadmin"; + case HEADADMIN: + return "Headadmin"; - case PROJEKTLEITUNG: - return "Projektleiter"; + case PROJEKTLEITUNG: + return "Projektleiter"; - default: - return "Spieler"; - } - } - - public static string GetName(this GroupRank rank) - { - switch (rank) - { - case GroupRank.OWNER: - return "Besitzer"; - - case GroupRank.MANAGER: - return "Manager"; - - case GroupRank.MEMBER: - return "Mitglied"; - - default: - return "Keiner"; - } - } + default: + return "Spieler"; + } } + + public static string GetName(this GroupRank rank) + { + switch (rank) + { + case GroupRank.OWNER: + return "Besitzer"; + + case GroupRank.MANAGER: + return "Manager"; + + case GroupRank.MEMBER: + return "Mitglied"; + + default: + return "Keiner"; + } + } + } } diff --git a/ReallifeGamemode.Server/Extensions/IntegerExtension.cs b/ReallifeGamemode.Server/Extensions/IntegerExtension.cs index d7297045..6a62a509 100644 --- a/ReallifeGamemode.Server/Extensions/IntegerExtension.cs +++ b/ReallifeGamemode.Server/Extensions/IntegerExtension.cs @@ -1,15 +1,15 @@ namespace ReallifeGamemode.Server.Extensions { public static class IntegerExtension + { + public static string ToMoneyString(this int? money) { - public static string ToMoneyString(this int? money) - { - return ToMoneyString(money ?? 0); - } - - public static string ToMoneyString(this int money) - { - return "$" + string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace("€", "").Trim(); - } + return ToMoneyString(money ?? 0); } + + public static string ToMoneyString(this int money) + { + return "$" + string.Format(Main.SERVER_CULTURE, "{0:C0}", money).Replace("€", "").Trim(); + } + } } diff --git a/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs b/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs index 25ae9cde..769f0576 100644 --- a/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs +++ b/ReallifeGamemode.Server/Extensions/ServerVehicleExtensions.cs @@ -7,66 +7,66 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Extensions { public static class ServerVehicleExtensions + { + public static JobBase GetJob(this JobVehicle vehicle) { - public static JobBase GetJob(this JobVehicle vehicle) - { - return JobManager.GetJob(vehicle.JobId); - } - - public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh); - - public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh = null) - { - if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh); - Vector3 position = veh.Position; - uint model = (uint)veh.Model; - float heading = veh.Heading; - int c1 = veh.PrimaryColor; - int c2 = veh.SecondaryColor; - Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false); - veh.Livery = veh.Livery; - VehicleStreaming.SetEngineState(newVeh, false); - VehicleStreaming.SetLockStatus(newVeh, veh.Locked); - VehicleManager.AddVehicle(veh, newVeh); - newVeh.Rotation = new Vector3(0, 0, heading); - - newVeh.SetSharedData("drivenDistance", veh.DistanceDriven); - - string numberplate = $"{veh.Id}"; - - if (veh is FactionVehicle fV) - { - numberplate = $"F{string.Join(".", fV.GetOwners())} " + numberplate; - } - - if (veh is UserVehicle uV) - { - numberplate = $"U{uV.UserId} " + numberplate; - } - - if (veh is ShopVehicle sV) - { - numberplate = "Shop"; - VehicleStreaming.SetLockStatus(newVeh, false); - TextLabel label = NAPI.TextLabel.CreateTextLabel("SHOPVEHICLE\n" + "~g~" + sV.Price.ToMoneyString(), - veh.Position.Add(new Vector3(0, 0, 1.3)), 20.0f, 1f, 1, new Color(255, 255, 255)); - - newVeh.SetSharedData("shopVehicleTextLabel", label.Handle.Value); - } - - if (veh is GroupVehicle gV) - { - numberplate = $"G{gV.GroupId} " + numberplate; - } - - if (veh is JobVehicle jV) - { - numberplate = $"J{jV.JobId} " + numberplate; - } - NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate); - veh.NumberPlate = numberplate; - - return newVeh; - } + return JobManager.GetJob(vehicle.JobId); } + + public static Vehicle GetVehicle(this ServerVehicle veh) => VehicleManager.GetVehicleFromServerVehicle(veh); + + public static Vehicle Spawn(this ServerVehicle veh, Vehicle currentVeh = null) + { + if (currentVeh != null) VehicleManager.DeleteVehicle(currentVeh); + Vector3 position = veh.Position; + uint model = (uint)veh.Model; + float heading = veh.Heading; + int c1 = veh.PrimaryColor; + int c2 = veh.SecondaryColor; + Vehicle newVeh = NAPI.Vehicle.CreateVehicle(model, position, heading, c1, c2, "", 255, false, false); + veh.Livery = veh.Livery; + VehicleStreaming.SetEngineState(newVeh, false); + VehicleStreaming.SetLockStatus(newVeh, veh.Locked); + VehicleManager.AddVehicle(veh, newVeh); + newVeh.Rotation = new Vector3(0, 0, heading); + + newVeh.SetSharedData("drivenDistance", veh.DistanceDriven); + + string numberplate = $"{veh.Id}"; + + if (veh is FactionVehicle fV) + { + numberplate = $"F{string.Join(".", fV.GetOwners())} " + numberplate; + } + + if (veh is UserVehicle uV) + { + numberplate = $"U{uV.UserId} " + numberplate; + } + + if (veh is ShopVehicle sV) + { + numberplate = "Shop"; + VehicleStreaming.SetLockStatus(newVeh, false); + TextLabel label = NAPI.TextLabel.CreateTextLabel("SHOPVEHICLE\n" + "~g~" + sV.Price.ToMoneyString(), + veh.Position.Add(new Vector3(0, 0, 1.3)), 20.0f, 1f, 1, new Color(255, 255, 255)); + + newVeh.SetSharedData("shopVehicleTextLabel", label.Handle.Value); + } + + if (veh is GroupVehicle gV) + { + numberplate = $"G{gV.GroupId} " + numberplate; + } + + if (veh is JobVehicle jV) + { + numberplate = $"J{jV.JobId} " + numberplate; + } + NAPI.Vehicle.SetVehicleNumberPlate(newVeh, numberplate); + veh.NumberPlate = numberplate; + + return newVeh; + } + } } diff --git a/ReallifeGamemode.Server/Extensions/VehicleExtension.cs b/ReallifeGamemode.Server/Extensions/VehicleExtension.cs index b2e1ed7e..9ec5361e 100644 --- a/ReallifeGamemode.Server/Extensions/VehicleExtension.cs +++ b/ReallifeGamemode.Server/Extensions/VehicleExtension.cs @@ -7,15 +7,15 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Extensions { public static class VehicleExtension + { + public static ServerVehicle GetServerVehicle(this Vehicle veh, DatabaseContext context = null) { - public static ServerVehicle GetServerVehicle(this Vehicle veh, DatabaseContext context = null) - { - return VehicleManager.GetServerVehicleFromVehicle(veh, context); - } - - public static Player GetDriver(this Vehicle veh) - { - return NAPI.Pools.GetAllPlayers().Where(p => p.Vehicle.Handle == veh.Handle && p.VehicleSeat == 0).FirstOrDefault(); - } + return VehicleManager.GetServerVehicleFromVehicle(veh, context); } + + public static Player GetDriver(this Vehicle veh) + { + return NAPI.Pools.GetAllPlayers().Where(p => p.Vehicle.Handle == veh.Handle && p.VehicleSeat == 0).FirstOrDefault(); + } + } } diff --git a/ReallifeGamemode.Server/Factions/Medic/Medic.cs b/ReallifeGamemode.Server/Factions/Medic/Medic.cs index 1469c741..3dd8a1ff 100644 --- a/ReallifeGamemode.Server/Factions/Medic/Medic.cs +++ b/ReallifeGamemode.Server/Factions/Medic/Medic.cs @@ -11,93 +11,93 @@ using Newtonsoft.Json; namespace ReallifeGamemode.Server.Factions.Medic { public class Medic : Script + { + public static List ReviveTasks = new List(); + public static List HealTasks = new List(); + public static List FireTasks = new List(); + + public static void AddTaskToList(MedicTask task) { - public static List ReviveTasks = new List(); - public static List HealTasks = new List(); - public static List FireTasks = new List(); + if (task == null) + { + return; + } - public static void AddTaskToList(MedicTask task) - { - if (task == null) - { - return; - } + switch (task.Type) + { + case MedicTaskType.REVIVE: + ReviveTasks.Add(task); + break; - switch (task.Type) - { - case MedicTaskType.REVIVE: - ReviveTasks.Add(task); - break; + case MedicTaskType.HEAL: + HealTasks.Add(task); + break; - case MedicTaskType.HEAL: - HealTasks.Add(task); - break; - - case MedicTaskType.FIRE: - FireTasks.Add(task); - break; - } - } - - public static void RemoveTaskFromList(MedicTask task) - { - if (task == null) - { - return; - } - - switch (task.Type) - { - case MedicTaskType.REVIVE: - ReviveTasks.Remove(task); - break; - - case MedicTaskType.HEAL: - HealTasks.Remove(task); - break; - - case MedicTaskType.FIRE: - FireTasks.Remove(task); - break; - } - } - - [RemoteEvent("loadMedicTasks")] - public void LoadMedicTasks(Player player, int type) - { - switch (type) - { - case 0: - player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks)); - break; - - case 1: - player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks)); - break; - - case 2: - player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks)); - break; - } - } - - [RemoteEvent("updateMedicTask")] - public void UpdateMedicTasks(Player player, int type, int index, string medicName) - { - switch (type) - { - case 0: - ReviveTasks[index].MedicName = medicName; - break; - - case 1: - HealTasks[index].MedicName = medicName; - break; - - case 2: - FireTasks[index].MedicName = medicName; - break; - } - } + case MedicTaskType.FIRE: + FireTasks.Add(task); + break; + } } + + public static void RemoveTaskFromList(MedicTask task) + { + if (task == null) + { + return; + } + + switch (task.Type) + { + case MedicTaskType.REVIVE: + ReviveTasks.Remove(task); + break; + + case MedicTaskType.HEAL: + HealTasks.Remove(task); + break; + + case MedicTaskType.FIRE: + FireTasks.Remove(task); + break; + } + } + + [RemoteEvent("loadMedicTasks")] + public void LoadMedicTasks(Player player, int type) + { + switch (type) + { + case 0: + player.TriggerEvent("showMedicTasks", 0, JsonConvert.SerializeObject(ReviveTasks)); + break; + + case 1: + player.TriggerEvent("showMedicTasks", 1, JsonConvert.SerializeObject(HealTasks)); + break; + + case 2: + player.TriggerEvent("showMedicTasks", 2, JsonConvert.SerializeObject(FireTasks)); + break; + } + } + + [RemoteEvent("updateMedicTask")] + public void UpdateMedicTasks(Player player, int type, int index, string medicName) + { + switch (type) + { + case 0: + ReviveTasks[index].MedicName = medicName; + break; + + case 1: + HealTasks[index].MedicName = medicName; + break; + + case 2: + FireTasks[index].MedicName = medicName; + break; + } + } + } } diff --git a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs index 0c0beb3f..50c0f2a8 100644 --- a/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs +++ b/ReallifeGamemode.Server/Factions/Medic/MedicTask.cs @@ -10,21 +10,21 @@ using GTANetworkAPI; namespace ReallifeGamemode.Server.Factions.Medic { public class MedicTask - { - public string Victim { get; set; } - public Vector3 Position { get; set; } - public MedicTaskType Type { get; set; } - public string CauseOfDeath { get; set; } - public string Description { get; set; } - public string Caller { get; set; } - public DateTime Time { get; set; } - public string MedicName { get; set; } - } + { + public string Victim { get; set; } + public Vector3 Position { get; set; } + public MedicTaskType Type { get; set; } + public string CauseOfDeath { get; set; } + public string Description { get; set; } + public string Caller { get; set; } + public DateTime Time { get; set; } + public string MedicName { get; set; } + } - public enum MedicTaskType - { - REVIVE, - HEAL, - FIRE - } + public enum MedicTaskType + { + REVIVE, + HEAL, + FIRE + } } diff --git a/ReallifeGamemode.Server/Finance/Economy.cs b/ReallifeGamemode.Server/Finance/Economy.cs index d0fc447f..8789e9ba 100644 --- a/ReallifeGamemode.Server/Finance/Economy.cs +++ b/ReallifeGamemode.Server/Finance/Economy.cs @@ -18,64 +18,64 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Finance { public class Economy + { + public static Dictionary Paychecks { get; set; } = new Dictionary(); + + public static (int, float, float) GetEconomyClass(Player client, int wage) { - public static Dictionary Paychecks { get; set; } = new Dictionary(); + int bankAccount = client.GetUser().BankAccount.Balance; + float financialHelp = -(float)Math.Pow(1.0005, -bankAccount) * -1000; + float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1; + if (financialInterest >= 0.7) + financialInterest = 0.7f; - public static (int, float, float) GetEconomyClass(Player client, int wage) + if (financialHelp > 2500) + financialHelp = 2500; + + return (bankAccount, financialHelp, financialInterest); + } + + public static int GetVehicleTaxation(Player client) + { + int vehicleTaxation = 0; + using (var dbContext = new DatabaseContext()) + { + User user = client.GetUser(dbContext); + foreach (UserVehicle uVeh in dbContext.UserVehicles.Where(u => u.UserId == user.Id)) { - int bankAccount = client.GetUser().BankAccount.Balance; - float financialHelp = -(float)Math.Pow(1.0005, -bankAccount) * -1000; - float financialInterest = 1 - (float)Math.Pow(1.00006, -wage) * 1; - if (financialInterest >= 0.7) - financialInterest = 0.7f; - - if (financialHelp > 2500) - financialHelp = 2500; - - return (bankAccount, financialHelp, financialInterest); + if (uVeh.Price == null) + { + vehicleTaxation += 400; + continue; + } + vehicleTaxation += (int)(uVeh.Price * 0.005f); } + } + return vehicleTaxation; + } - public static int GetVehicleTaxation(Player client) - { - int vehicleTaxation = 0; - using (var dbContext = new DatabaseContext()) - { - User user = client.GetUser(dbContext); - foreach (UserVehicle uVeh in dbContext.UserVehicles.Where(u => u.UserId == user.Id)) - { - if (uVeh.Price == null) - { - vehicleTaxation += 400; - continue; - } - vehicleTaxation += (int)(uVeh.Price * 0.005f); - } - } - return vehicleTaxation; - } + public static float GetPropertyTaxation(Player client) + { + float propertyTaxation = 0; + User user = client.GetUser(); + if (user.HouseId != null) + { + propertyTaxation += user.House.Price * 0.005f; + } - public static float GetPropertyTaxation(Player client) - { - float propertyTaxation = 0; - User user = client.GetUser(); - if (user.HouseId != null) - { - propertyTaxation += user.House.Price * 0.005f; - } + return propertyTaxation; + } - return propertyTaxation; - } + public static void SetPaycheck(Player client) + { + User user = client.GetUser(); + int wage = user.Wage; + (int bankAccount, float financialHelp, float financialInterest) = GetEconomyClass(client, wage); + float propertyTax = GetPropertyTaxation(client); + int vehicleTaxation = GetVehicleTaxation(client); + int rentalFees = GetRentalFees(client); - public static void SetPaycheck(Player client) - { - User user = client.GetUser(); - int wage = user.Wage; - (int bankAccount, float financialHelp, float financialInterest) = GetEconomyClass(client, wage); - float propertyTax = GetPropertyTaxation(client); - int vehicleTaxation = GetVehicleTaxation(client); - int rentalFees = GetRentalFees(client); - - int healthInsurance = (int)(user.BankAccount.Balance * 0.001); + int healthInsurance = (int)(user.BankAccount.Balance * 0.001); int? factionMoney = null; @@ -91,85 +91,85 @@ namespace ReallifeGamemode.Server.Finance ReleasePayDay(client, paycheck); } - private static int GetRentalFees(Player client) - { - using (var dbContext = new DatabaseContext()) - { - User user = client.GetUser(); - return dbContext.HouseRentals.Where(h => h.UserId == user.Id).Include(h => h.House).Sum(h => h.House.RentalFee); - } - } - - public static void ReleasePayDay(Player client, Paycheck paycheck) - { - NAPI.Util.ConsoleOutput("in release payday"); - if (client == null || paycheck == null) - { - return; - } - - NAPI.Util.ConsoleOutput($"client = {client.Name}, paycheck = {JsonConvert.SerializeObject(paycheck)}"); - - using (var dbContext = new DatabaseContext()) - { - User u = client.GetUser(dbContext); - NAPI.Util.ConsoleOutput("get user"); - u.BankAccount.Balance += paycheck.Amount; - u.Wage = 0; - - u.PaydayTimer = 60; - - NAPI.Util.ConsoleOutput("set sachen"); - - var rentals = dbContext.HouseRentals - .Include(hR => hR.House) - .ThenInclude(h => h.BankAccount) - .Where(hR => hR.UserId == u.Id); - - NAPI.Util.ConsoleOutput("get rentals"); - - dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += (int)(paycheck.HealthInsurance * 0.1); - - if (rentals.Any()) - { - NAPI.Util.ConsoleOutput("hat rentals"); - foreach (var rental in rentals) - { - if (rental?.House?.BankAccount != null) - { - rental.House.BankAccount.Balance += (int)(rental.House.RentalFee * 0.7); - } - } - } - - dbContext.SaveChanges(); - } - if (paycheck.Amount > 0) - ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt + $~g~" + paycheck.Amount + "~s~."); - else - ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt - $~r~" + paycheck.Amount + "~s~."); - } - - public static void Timer_Elapsed() - { - using var dbContext = new DatabaseContext(); - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(dbContext); - if (player.IsLoggedIn()) - { - if (user.PaydayTimer <= 0) - { - Economy.SetPaycheck(player); - user.PaydayTimer = 60; - } - else if (user.PaydayTimer > 0) - { - user.PaydayTimer -= 1; - } - } - } - dbContext.SaveChanges(); - } + private static int GetRentalFees(Player client) + { + using (var dbContext = new DatabaseContext()) + { + User user = client.GetUser(); + return dbContext.HouseRentals.Where(h => h.UserId == user.Id).Include(h => h.House).Sum(h => h.House.RentalFee); + } } -} \ No newline at end of file + + public static void ReleasePayDay(Player client, Paycheck paycheck) + { + NAPI.Util.ConsoleOutput("in release payday"); + if (client == null || paycheck == null) + { + return; + } + + NAPI.Util.ConsoleOutput($"client = {client.Name}, paycheck = {JsonConvert.SerializeObject(paycheck)}"); + + using (var dbContext = new DatabaseContext()) + { + User u = client.GetUser(dbContext); + NAPI.Util.ConsoleOutput("get user"); + u.BankAccount.Balance += paycheck.Amount; + u.Wage = 0; + + u.PaydayTimer = 60; + + NAPI.Util.ConsoleOutput("set sachen"); + + var rentals = dbContext.HouseRentals + .Include(hR => hR.House) + .ThenInclude(h => h.BankAccount) + .Where(hR => hR.UserId == u.Id); + + NAPI.Util.ConsoleOutput("get rentals"); + + dbContext.Factions.Include(f => f.BankAccount).Where(f => f.Id == 2).First().BankAccount.Balance += (int)(paycheck.HealthInsurance * 0.1); + + if (rentals.Any()) + { + NAPI.Util.ConsoleOutput("hat rentals"); + foreach (var rental in rentals) + { + if (rental?.House?.BankAccount != null) + { + rental.House.BankAccount.Balance += (int)(rental.House.RentalFee * 0.7); + } + } + } + + dbContext.SaveChanges(); + } + if (paycheck.Amount > 0) + ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt + $~g~" + paycheck.Amount + "~s~."); + else + ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Dein Stundenumsatz beträgt - $~r~" + paycheck.Amount + "~s~."); + } + + public static void Timer_Elapsed() + { + using var dbContext = new DatabaseContext(); + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(dbContext); + if (player.IsLoggedIn()) + { + if (user.PaydayTimer <= 0) + { + Economy.SetPaycheck(player); + user.PaydayTimer = 60; + } + else if (user.PaydayTimer > 0) + { + user.PaydayTimer -= 1; + } + } + } + dbContext.SaveChanges(); + } + } +} diff --git a/ReallifeGamemode.Server/Finance/Paycheck.cs b/ReallifeGamemode.Server/Finance/Paycheck.cs index 2de6adfb..3f96b286 100644 --- a/ReallifeGamemode.Server/Finance/Paycheck.cs +++ b/ReallifeGamemode.Server/Finance/Paycheck.cs @@ -3,30 +3,30 @@ namespace ReallifeGamemode.Server.Finance { public class Paycheck - { - [JsonProperty("financialHelp")] - public float FinancialHelp { get; set; } = 0; + { + [JsonProperty("financialHelp")] + public float FinancialHelp { get; set; } = 0; - [JsonProperty("financialInterest")] - public float FinancialInterest { get; set; } = 0; + [JsonProperty("financialInterest")] + public float FinancialInterest { get; set; } = 0; - [JsonProperty("vehicleTaxation")] - public int VehicleTaxation { get; set; } = 0; + [JsonProperty("vehicleTaxation")] + public int VehicleTaxation { get; set; } = 0; - [JsonProperty("propertyTaxation")] - public float PropertyTaxation { get; set; } = 0; + [JsonProperty("propertyTaxation")] + public float PropertyTaxation { get; set; } = 0; - [JsonProperty("wage")] - public int Wage { get; set; } = 0; + [JsonProperty("wage")] + public int Wage { get; set; } = 0; - [JsonProperty("amount")] - public int Amount { get; set; } = 0; + [JsonProperty("amount")] + public int Amount { get; set; } = 0; - [JsonProperty("rentalFees")] - public int RentalFees { get; set; } = 0; + [JsonProperty("rentalFees")] + public int RentalFees { get; set; } = 0; - [JsonProperty("healthInsurance")] - public int HealthInsurance { get; set; } = 0; + [JsonProperty("healthInsurance")] + public int HealthInsurance { get; set; } = 0; [JsonProperty("factionMoney")] public int? FactionMoney { get; set; } = 0; @@ -44,4 +44,4 @@ namespace ReallifeGamemode.Server.Finance this.FactionMoney = FactionMoney; } } -} \ No newline at end of file +} diff --git a/ReallifeGamemode.Server/Gangwar/Gangwar.cs b/ReallifeGamemode.Server/Gangwar/Gangwar.cs index aa18b371..08115ea8 100644 --- a/ReallifeGamemode.Server/Gangwar/Gangwar.cs +++ b/ReallifeGamemode.Server/Gangwar/Gangwar.cs @@ -10,217 +10,217 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Gangwar { public class Gangwar : Script + { + public static Turf[] _loadedTurfs; + private static List turfs; + + public static void loadTurfs() { - public static Turf[] _loadedTurfs; - private static List turfs; - - public static void loadTurfs() + _loadedTurfs = null; + using (var context = new DatabaseContext()) + { + turfs = context.Turfs.Select(t => t).ToList(); + List turfing = new List(); + foreach (var t in turfs) { - _loadedTurfs = null; - using (var context = new DatabaseContext()) - { - turfs = context.Turfs.Select(t => t).ToList(); - List turfing = new List(); - foreach (var t in turfs) - { - Turf newTurf = new Turf(t.Id, t.Name, t.Color, t.Owner, t.Value, t.MaxValue, t.Surplus); - turfing.Add(newTurf); - } - _loadedTurfs = turfing.ToArray(); - } - } - - public static void loadPlayer(Player client) - { - client.TriggerEvent("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); - } - - public static void loadTurfs_ToAllPlayers() - { - NAPI.ClientEvent.TriggerClientEventForAll("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); - foreach (var l in NAPI.Pools.GetAllPlayers()) - { - if (!l.IsLoggedIn() && !l.GetUser().FactionLeader) - return; - - l.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); - } - } - - public static void GangwarKill(Player killer, Player victim) - { - if (killer.HasData("GotInsideOfTurf") && victim.HasData("GotInsideOfTurf")) - { - foreach (var turf in getTurfs()) - { - if (turf.getId() == victim.GetData("inGangWar")) - { - turf.setKill(victim.GetUser().Faction.Name); - return; - } - } - } - } - - public static Turf[] getTurfs() - { - return _loadedTurfs; - } - - [RemoteEvent("Gangarea:Enter")] - public void RmtEvent_TurfEnter(Player client, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - - foreach (var turf in getTurfs()) - { - if (turf.getId() == id) - { - turf.enter(client); - return; - } - } - } - - [RemoteEvent("Gangarea:Leave")] - public void RmtEvent_TurfLeave(Player client, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - - foreach (var turf in getTurfs()) - { - if (turf.getId() == id) - { - turf.leave(client); - return; - } - } - } - - [RemoteEvent("SERVER:SetTurf")] - public void RmtEvent_SetTurf(Player client, string jsonX, string jsonY, string jsonRot, string jsonRange, string Name) - { - float pX = JsonConvert.DeserializeObject(jsonX); - float pY = (float)JsonConvert.DeserializeObject(jsonY); - float Rot = (float)JsonConvert.DeserializeObject(jsonRot); - float Range = (float)JsonConvert.DeserializeObject(jsonRange); - - var newTurf = new Turfs - { - Name = Name, - X = pX, - Y = pY, - Rotation = Rot, - Range = Range, - Owner = "Neutral", - Color = 0, - Vector = null - }; - using (var dbContext = new DatabaseContext()) - { - dbContext.Turfs.Add(newTurf); - dbContext.SaveChanges(); - } - loadTurfs(); - loadTurfs_ToAllPlayers(); - } - - [RemoteEvent("SERVER:DeleteTurf")] - public void RmtEvent_DeleteTurf(Player client, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - if (id == -1) - { - ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet!"); - return; - } - using (var dbContext = new DatabaseContext()) - { - Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); - if (dturf != null) - { - dbContext.Turfs.Remove(dturf); - dbContext.SaveChanges(); - loadTurfs(); - loadTurfs_ToAllPlayers(); - } - } - } - - [RemoteEvent("SERVER:Turf_SetNewLeaderPoint")] - public void RmtEvent_SetNewLeaderPoint(Player client, string vector, string jsonId) - { - int id = JsonConvert.DeserializeObject(jsonId); - if (id == -1) - { - ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet"); - return; - } - using (var dbContext = new DatabaseContext()) - { - Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); - if (dturf != null) - { - dturf.Vector = vector; - dbContext.SaveChanges(); - loadTurfs(); - loadTurfs_ToAllPlayers(); - } - } - } - - [RemoteEvent("SERVER:StartGangwar")] - public void RmtEvent_StartGangwar(Player client) - { - if (!client.GetUser().FactionLeader) - return; - - foreach (var turf in getTurfs()) - { - if (turf.status == "attack") - { - ChatService.ErrorMessage(client, "Du kannst momentan kein Gangwar starten"); - return; - } - } - if (client.GetUser().Faction.Name == "Ballas" || client.GetUser().Faction.Name == "Grove") - { - foreach (var turf in getTurfs()) - { - foreach (var u in turf.playerInside) - { - if (u == client) - { - if (turf.Owner != client.GetUser().Faction.Name) - turf.attack(client.GetUser().Faction.Name); - } - } - } - } - } - - public static void Value_TimerElapsed() - { - List values = new List(); - using (var dbContext = new DatabaseContext()) - { - foreach (var turf in getTurfs()) - { - if ((turf.getValue() + 5) >= turf.getMaxValue()) - { - turf.setValue(turf.getMaxValue()); - } - else - { - turf.addValue(5); - } - values.Add(turf.getValue()); - Turfs _turf = dbContext.Turfs.Where(t => t.Id == turf.getId()).FirstOrDefault(); - _turf.Value = turf.getValue(); - } - dbContext.SaveChanges(); - } - NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:UpdateTurfValue", JsonConvert.SerializeObject(values.ToArray())); + Turf newTurf = new Turf(t.Id, t.Name, t.Color, t.Owner, t.Value, t.MaxValue, t.Surplus); + turfing.Add(newTurf); } + _loadedTurfs = turfing.ToArray(); + } } + + public static void loadPlayer(Player client) + { + client.TriggerEvent("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); + } + + public static void loadTurfs_ToAllPlayers() + { + NAPI.ClientEvent.TriggerClientEventForAll("GangAreas:Create", JsonConvert.SerializeObject(turfs.ToArray())); + foreach (var l in NAPI.Pools.GetAllPlayers()) + { + if (!l.IsLoggedIn() && !l.GetUser().FactionLeader) + return; + + l.TriggerEvent("CLIENT:Turf_LoadLeaderBlip"); + } + } + + public static void GangwarKill(Player killer, Player victim) + { + if (killer.HasData("GotInsideOfTurf") && victim.HasData("GotInsideOfTurf")) + { + foreach (var turf in getTurfs()) + { + if (turf.getId() == victim.GetData("inGangWar")) + { + turf.setKill(victim.GetUser().Faction.Name); + return; + } + } + } + } + + public static Turf[] getTurfs() + { + return _loadedTurfs; + } + + [RemoteEvent("Gangarea:Enter")] + public void RmtEvent_TurfEnter(Player client, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + + foreach (var turf in getTurfs()) + { + if (turf.getId() == id) + { + turf.enter(client); + return; + } + } + } + + [RemoteEvent("Gangarea:Leave")] + public void RmtEvent_TurfLeave(Player client, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + + foreach (var turf in getTurfs()) + { + if (turf.getId() == id) + { + turf.leave(client); + return; + } + } + } + + [RemoteEvent("SERVER:SetTurf")] + public void RmtEvent_SetTurf(Player client, string jsonX, string jsonY, string jsonRot, string jsonRange, string Name) + { + float pX = JsonConvert.DeserializeObject(jsonX); + float pY = (float)JsonConvert.DeserializeObject(jsonY); + float Rot = (float)JsonConvert.DeserializeObject(jsonRot); + float Range = (float)JsonConvert.DeserializeObject(jsonRange); + + var newTurf = new Turfs + { + Name = Name, + X = pX, + Y = pY, + Rotation = Rot, + Range = Range, + Owner = "Neutral", + Color = 0, + Vector = null + }; + using (var dbContext = new DatabaseContext()) + { + dbContext.Turfs.Add(newTurf); + dbContext.SaveChanges(); + } + loadTurfs(); + loadTurfs_ToAllPlayers(); + } + + [RemoteEvent("SERVER:DeleteTurf")] + public void RmtEvent_DeleteTurf(Player client, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + if (id == -1) + { + ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet!"); + return; + } + using (var dbContext = new DatabaseContext()) + { + Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); + if (dturf != null) + { + dbContext.Turfs.Remove(dturf); + dbContext.SaveChanges(); + loadTurfs(); + loadTurfs_ToAllPlayers(); + } + } + } + + [RemoteEvent("SERVER:Turf_SetNewLeaderPoint")] + public void RmtEvent_SetNewLeaderPoint(Player client, string vector, string jsonId) + { + int id = JsonConvert.DeserializeObject(jsonId); + if (id == -1) + { + ChatService.ErrorMessage(client, "Du befindest dich in keinem Gebiet"); + return; + } + using (var dbContext = new DatabaseContext()) + { + Turfs dturf = dbContext.Turfs.Where(t => t.Id == id).FirstOrDefault(); + if (dturf != null) + { + dturf.Vector = vector; + dbContext.SaveChanges(); + loadTurfs(); + loadTurfs_ToAllPlayers(); + } + } + } + + [RemoteEvent("SERVER:StartGangwar")] + public void RmtEvent_StartGangwar(Player client) + { + if (!client.GetUser().FactionLeader) + return; + + foreach (var turf in getTurfs()) + { + if (turf.status == "attack") + { + ChatService.ErrorMessage(client, "Du kannst momentan kein Gangwar starten"); + return; + } + } + if (client.GetUser().Faction.Name == "Ballas" || client.GetUser().Faction.Name == "Grove") + { + foreach (var turf in getTurfs()) + { + foreach (var u in turf.playerInside) + { + if (u == client) + { + if (turf.Owner != client.GetUser().Faction.Name) + turf.attack(client.GetUser().Faction.Name); + } + } + } + } + } + + public static void Value_TimerElapsed() + { + List values = new List(); + using (var dbContext = new DatabaseContext()) + { + foreach (var turf in getTurfs()) + { + if ((turf.getValue() + 5) >= turf.getMaxValue()) + { + turf.setValue(turf.getMaxValue()); + } + else + { + turf.addValue(5); + } + values.Add(turf.getValue()); + Turfs _turf = dbContext.Turfs.Where(t => t.Id == turf.getId()).FirstOrDefault(); + _turf.Value = turf.getValue(); + } + dbContext.SaveChanges(); + } + NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:UpdateTurfValue", JsonConvert.SerializeObject(values.ToArray())); + } + } } diff --git a/ReallifeGamemode.Server/Gangwar/Turf.cs b/ReallifeGamemode.Server/Gangwar/Turf.cs index 7d053d48..8828a401 100644 --- a/ReallifeGamemode.Server/Gangwar/Turf.cs +++ b/ReallifeGamemode.Server/Gangwar/Turf.cs @@ -13,340 +13,340 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Gangwar { public class Turf + { + public int TurfID { get; set; } + public string TurfName { get; set; } + public int Color { get; set; } + public string Owner { get; set; } + public string Attacker { get; set; } + public int Att_Score { get; set; } + public int Def_Score { get; set; } + public string status { get; set; } + public int value { get; set; } + public int maxValue { get; set; } + public bool surplus { get; set; } + public List playerInside { get; set; } + public Timer timer { get; set; } + public Player[] playerInGangwar { get; set; } + public int timerCount; + + public Turf(int TurfID, string TurfName, int color, string Owner, int value, int maxValue, bool surplus) { - public int TurfID { get; set; } - public string TurfName { get; set; } - public int Color { get; set; } - public string Owner { get; set; } - public string Attacker { get; set; } - public int Att_Score { get; set; } - public int Def_Score { get; set; } - public string status { get; set; } - public int value { get; set; } - public int maxValue { get; set; } - public bool surplus { get; set; } - public List playerInside { get; set; } - public Timer timer { get; set; } - public Player[] playerInGangwar { get; set; } - public int timerCount; - - public Turf(int TurfID, string TurfName, int color, string Owner, int value, int maxValue, bool surplus) - { - this.TurfID = TurfID; - this.TurfName = TurfName; - this.Color = color; - this.Owner = Owner; - this.value = value; - this.maxValue = maxValue; - this.surplus = surplus; - this.Attacker = null; - this.Att_Score = 50; - this.Def_Score = 50; - this.status = "normal"; - this.timer = null; - this.playerInside = new List(); - this.timerCount = 0; - } - - public int getId() - { - return this.TurfID; - } - - public int getValue() - { - return this.value; - } - - public void setValue(int value) - { - this.value = value; - } - - public void addValue(int addedValue) - { - this.value += addedValue; - } - - public int getMaxValue() - { - return maxValue; - } - - public bool getSurplus() - { - return surplus; - } - - public void setSurplus(bool surplus) - { - this.surplus = surplus; - } - - public string getName() - { - return this.TurfName; - } - - public int getColor() - { - return this.Color; - } - - public string getOwner() - { - return this.Owner; - } - - public string getAttacker() - { - return this.Attacker; - } - - private void TurfTick() - { - this.timer = new System.Timers.Timer(1000); - - this.timer.Elapsed += Tick; - this.timer.AutoReset = true; - this.timer.Enabled = true; - this.timerCount = 0; - } - - private void Tick(object sender, System.Timers.ElapsedEventArgs e) - { - if (this.status == "attack") - { - update(); - } - } - - private void update() - { - #region Ticket system - - /* - try - { - Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Owner).ToArray(); - Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Attacker).ToArray(); - }catch(NullReferenceException ex) - { - int i = 0; - foreach(var c in playerInGangwar) - { - if (!NAPI.Entity.DoesEntityExist(c.Handle)) - { - this.playerInside = this.playerInside.Where(gp => gp != c).ToArray(); - } - i++; - } - } - if (owners.Length > attackers.Length) - this.Att_Score -= owners.Length - attackers.Length; - if(owners.Length < attackers.Length) - this.Def_Score -= attackers.Length - owners.Length; - */ - - #endregion Ticket system - - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); - } - if (this.Def_Score <= 0) - { - this.takeOver(this.Attacker); - } - else if (this.Att_Score <= 0) - { - this.takeOver(this.Owner); - } - timerCount += 1; - if (timerCount >= 900) //change to 900 (seconds) before release for testing reasons change to whatever you like - { - if (this.Def_Score > this.Att_Score) - { - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); - } - this.takeOver(this.Owner); - this.Att_Score = 0; - } - else if (this.Def_Score < this.Att_Score) - { - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); - } - this.takeOver(this.Attacker); - this.Def_Score = 0; - return; - } - else if (this.Def_Score == this.Att_Score) - { - foreach (Player gangwarPlayer in this.playerInGangwar) - { - gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); - } - this.takeOver(this.Attacker); - this.Def_Score = 0; - - return; - } - } - } - - public void enter(Player client) - { - if (this.status == "attack") - { - if (client.GetUser().Faction.Name != getOwner() && client.GetUser().Faction.Name != getAttacker()) - return; - Player gPlayer = playerInGangwar.Where(c => c.GetUser().Id == client.GetUser().Id).FirstOrDefault(); - if (gPlayer == null) - { - using (var dbContext = new DatabaseContext()) - { - ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); - } - return; - } - } - - if (playerInside.Find(c => c == client) == null) - { - playerInside.Add(client); - client.SetData("GotInsideOfTurf", true); - } - } - - public void leave(Player client) - { - if (playerInside.Find(c => c == client) != null) - { - this.playerInside = this.playerInside.Where(c => c != client).ToList(); - if (this.status != "attack") - client.ResetData("GotInsideOfTurf"); - } - } - - public void takeOver(string FactionName) - { - this.timer.Stop(); - this.timer = null; - using (var dbContext = new DatabaseContext()) - { - if (getOwner() == FactionName) - { - Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); - Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); - foreach (var o in owners) - { - o.TriggerEvent("CLIENT:win"); - } - foreach (var a in attackers) - { - a.TriggerEvent("CLIENT:loose"); - } - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat erfolgreich das Gebiet ~g~" + getName() + "~w~ verteidigt.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat den Angrif auf das Gebiet ~r~" + getName() + "~w~ verloren.", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); - } - else if (getOwner() != FactionName) - { - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte das Gebiet ~r~" + getName() + "~w~ nicht verteidigen.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); - Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); - foreach (var o in owners) - { - o.TriggerEvent("CLIENT:loose"); - } - foreach (var a in attackers) - { - a.TriggerEvent("CLIENT:win"); - } - this.Owner = FactionName; - ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte erfolgreich das Gebiet ~g~" + getName() + "~w~ erobern.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); - Turfs turf = dbContext.Turfs.Where(t => t.Id == getId()).FirstOrDefault(); - turf.Owner = this.Owner; - turf.FactionId = dbContext.Factions.Where(f => f.Name == this.Owner).FirstOrDefault().Id; - dbContext.SaveChanges(); - } - } - this.Attacker = null; - foreach (var c in playerInGangwar) - { - c.TriggerEvent("CLIENT:setAttackBlip", false, TurfID); - c.ResetData("inGangWar"); - c.ResetData("GotInsideOfTurf"); - } - this.playerInGangwar = null; - Gangwar.loadTurfs(); - Gangwar.loadTurfs_ToAllPlayers(); - } - - public void attack(string attacker) - { - Player[] usersInGangwar; - using (var context = new DatabaseContext()) - { - var onlinePlayers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn()).Select(c => c.Name); - - List ownersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == getOwner()).Select(u => u.Player).ToList(); - List attackersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker).Select(u => u.Player).ToList(); - - if (ownersInGangwar.Count < 1 && attackersInGangwar.Count < 1) - { - List leaders = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker && u.FactionLeader).Select(u => u.Player).ToList(); - foreach (var l in leaders) - { - ChatService.ErrorMessage(l, "Gangwarstart ist nicht möglich, da die beteiligten Fraktionen nicht genügend Mitglieder aufweisen."); - } - - return; - } - List inGangwar = new List(ownersInGangwar.Concat(attackersInGangwar)); - - usersInGangwar = inGangwar.ToArray(); - } - if (this.status == "normal") - { - if (this.timer != null) - { - this.timer.Stop(); - this.timer = null; - } - this.Attacker = attacker; - this.status = "attack"; - - List clientsInGangwar = new List(); - - foreach (var u in usersInGangwar) - { - u.TriggerEvent("CLIENT:setAttackBlip", true, TurfID); - u.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); - u.SetData("inGangWar", getId()); - ChatService.SendMessage(u, "~y~[GANGWAR]~w~ Die " + getAttacker() + " haben das Gebiet ~y~" + TurfName + "~w~ der " + getOwner() + " angegriffen."); - clientsInGangwar.Add(u); - } - playerInGangwar = clientsInGangwar.ToArray(); - NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:Turf_Update", JsonConvert.SerializeObject(this.TurfID), JsonConvert.SerializeObject(this.status), JsonConvert.SerializeObject(this.Owner), JsonConvert.SerializeObject(this.Attacker)); - this.TurfTick(); - } - } - - public void setKill(string FactionName) - { - if (getOwner() == FactionName) - { - Def_Score -= 1; - } - else if (getAttacker() == FactionName) - { - Att_Score -= 1; - } - } + this.TurfID = TurfID; + this.TurfName = TurfName; + this.Color = color; + this.Owner = Owner; + this.value = value; + this.maxValue = maxValue; + this.surplus = surplus; + this.Attacker = null; + this.Att_Score = 50; + this.Def_Score = 50; + this.status = "normal"; + this.timer = null; + this.playerInside = new List(); + this.timerCount = 0; } + + public int getId() + { + return this.TurfID; + } + + public int getValue() + { + return this.value; + } + + public void setValue(int value) + { + this.value = value; + } + + public void addValue(int addedValue) + { + this.value += addedValue; + } + + public int getMaxValue() + { + return maxValue; + } + + public bool getSurplus() + { + return surplus; + } + + public void setSurplus(bool surplus) + { + this.surplus = surplus; + } + + public string getName() + { + return this.TurfName; + } + + public int getColor() + { + return this.Color; + } + + public string getOwner() + { + return this.Owner; + } + + public string getAttacker() + { + return this.Attacker; + } + + private void TurfTick() + { + this.timer = new System.Timers.Timer(1000); + + this.timer.Elapsed += Tick; + this.timer.AutoReset = true; + this.timer.Enabled = true; + this.timerCount = 0; + } + + private void Tick(object sender, System.Timers.ElapsedEventArgs e) + { + if (this.status == "attack") + { + update(); + } + } + + private void update() + { + #region Ticket system + + /* + try + { + Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Owner).ToArray(); + Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.GetUser().Faction.Name == this.Attacker).ToArray(); + }catch(NullReferenceException ex) + { + int i = 0; + foreach(var c in playerInGangwar) + { + if (!NAPI.Entity.DoesEntityExist(c.Handle)) + { + this.playerInside = this.playerInside.Where(gp => gp != c).ToArray(); + } + i++; + } + } + if (owners.Length > attackers.Length) + this.Att_Score -= owners.Length - attackers.Length; + if(owners.Length < attackers.Length) + this.Def_Score -= attackers.Length - owners.Length; + */ + + #endregion Ticket system + + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); + } + if (this.Def_Score <= 0) + { + this.takeOver(this.Attacker); + } + else if (this.Att_Score <= 0) + { + this.takeOver(this.Owner); + } + timerCount += 1; + if (timerCount >= 900) //change to 900 (seconds) before release for testing reasons change to whatever you like + { + if (this.Def_Score > this.Att_Score) + { + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); + } + this.takeOver(this.Owner); + this.Att_Score = 0; + } + else if (this.Def_Score < this.Att_Score) + { + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); + } + this.takeOver(this.Attacker); + this.Def_Score = 0; + return; + } + else if (this.Def_Score == this.Att_Score) + { + foreach (Player gangwarPlayer in this.playerInGangwar) + { + gangwarPlayer.TriggerEvent("GangwarScore", this.Attacker, this.Owner, 0, 0); + } + this.takeOver(this.Attacker); + this.Def_Score = 0; + + return; + } + } + } + + public void enter(Player client) + { + if (this.status == "attack") + { + if (client.GetUser().Faction.Name != getOwner() && client.GetUser().Faction.Name != getAttacker()) + return; + Player gPlayer = playerInGangwar.Where(c => c.GetUser().Id == client.GetUser().Id).FirstOrDefault(); + if (gPlayer == null) + { + using (var dbContext = new DatabaseContext()) + { + ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + ChatService.BroadcastFaction("~y~[GANGWAR] ~r~" + client.Name + "~w~ ist nicht im Gangwar beteiligt !", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); + } + return; + } + } + + if (playerInside.Find(c => c == client) == null) + { + playerInside.Add(client); + client.SetData("GotInsideOfTurf", true); + } + } + + public void leave(Player client) + { + if (playerInside.Find(c => c == client) != null) + { + this.playerInside = this.playerInside.Where(c => c != client).ToList(); + if (this.status != "attack") + client.ResetData("GotInsideOfTurf"); + } + } + + public void takeOver(string FactionName) + { + this.timer.Stop(); + this.timer = null; + using (var dbContext = new DatabaseContext()) + { + if (getOwner() == FactionName) + { + Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); + Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); + foreach (var o in owners) + { + o.TriggerEvent("CLIENT:win"); + } + foreach (var a in attackers) + { + a.TriggerEvent("CLIENT:loose"); + } + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat erfolgreich das Gebiet ~g~" + getName() + "~w~ verteidigt.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion hat den Angrif auf das Gebiet ~r~" + getName() + "~w~ verloren.", dbContext.Factions.Where(f => f.Name == getAttacker()).FirstOrDefault()); + } + else if (getOwner() != FactionName) + { + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte das Gebiet ~r~" + getName() + "~w~ nicht verteidigen.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + Player[] owners = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Owner).ToArray(); + Player[] attackers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn() && c.GetUser().Faction.Name == this.Attacker).ToArray(); + foreach (var o in owners) + { + o.TriggerEvent("CLIENT:loose"); + } + foreach (var a in attackers) + { + a.TriggerEvent("CLIENT:win"); + } + this.Owner = FactionName; + ChatService.BroadcastFaction("~y~[GANGWAR] ~w~Deine Fraktion konnte erfolgreich das Gebiet ~g~" + getName() + "~w~ erobern.", dbContext.Factions.Where(f => f.Name == getOwner()).FirstOrDefault()); + Turfs turf = dbContext.Turfs.Where(t => t.Id == getId()).FirstOrDefault(); + turf.Owner = this.Owner; + turf.FactionId = dbContext.Factions.Where(f => f.Name == this.Owner).FirstOrDefault().Id; + dbContext.SaveChanges(); + } + } + this.Attacker = null; + foreach (var c in playerInGangwar) + { + c.TriggerEvent("CLIENT:setAttackBlip", false, TurfID); + c.ResetData("inGangWar"); + c.ResetData("GotInsideOfTurf"); + } + this.playerInGangwar = null; + Gangwar.loadTurfs(); + Gangwar.loadTurfs_ToAllPlayers(); + } + + public void attack(string attacker) + { + Player[] usersInGangwar; + using (var context = new DatabaseContext()) + { + var onlinePlayers = NAPI.Pools.GetAllPlayers().Where(c => c.IsLoggedIn()).Select(c => c.Name); + + List ownersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == getOwner()).Select(u => u.Player).ToList(); + List attackersInGangwar = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker).Select(u => u.Player).ToList(); + + if (ownersInGangwar.Count < 1 && attackersInGangwar.Count < 1) + { + List leaders = context.Users.Include(u => u.Faction).Where(u => onlinePlayers.Contains(u.Name) && u.Faction.Name == attacker && u.FactionLeader).Select(u => u.Player).ToList(); + foreach (var l in leaders) + { + ChatService.ErrorMessage(l, "Gangwarstart ist nicht möglich, da die beteiligten Fraktionen nicht genügend Mitglieder aufweisen."); + } + + return; + } + List inGangwar = new List(ownersInGangwar.Concat(attackersInGangwar)); + + usersInGangwar = inGangwar.ToArray(); + } + if (this.status == "normal") + { + if (this.timer != null) + { + this.timer.Stop(); + this.timer = null; + } + this.Attacker = attacker; + this.status = "attack"; + + List clientsInGangwar = new List(); + + foreach (var u in usersInGangwar) + { + u.TriggerEvent("CLIENT:setAttackBlip", true, TurfID); + u.TriggerEvent("GangwarScore", this.Attacker, this.Owner, this.Att_Score, this.Def_Score); + u.SetData("inGangWar", getId()); + ChatService.SendMessage(u, "~y~[GANGWAR]~w~ Die " + getAttacker() + " haben das Gebiet ~y~" + TurfName + "~w~ der " + getOwner() + " angegriffen."); + clientsInGangwar.Add(u); + } + playerInGangwar = clientsInGangwar.ToArray(); + NAPI.ClientEvent.TriggerClientEventForAll("CLIENT:Turf_Update", JsonConvert.SerializeObject(this.TurfID), JsonConvert.SerializeObject(this.status), JsonConvert.SerializeObject(this.Owner), JsonConvert.SerializeObject(this.Attacker)); + this.TurfTick(); + } + } + + public void setKill(string FactionName) + { + if (getOwner() == FactionName) + { + Def_Score -= 1; + } + else if (getAttacker() == FactionName) + { + Att_Score -= 1; + } + } + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs index b327b78d..bab77667 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IDroppableItem.cs @@ -7,7 +7,7 @@ namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IDroppableItem : IItem - { - uint Object { get; } - } + { + uint Object { get; } + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs index 9264a3c2..dd364314 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IItem.cs @@ -7,12 +7,12 @@ namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IItem - { - int Id { get; } - string Name { get; } - string Description { get; } - int Gewicht { get; } - string Einheit { get; } - int Price { get; } - } + { + int Id { get; } + string Name { get; } + string Description { get; } + int Gewicht { get; } + string Einheit { get; } + int Price { get; } + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs index 28ea7b2c..24383bee 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IUsableItem.cs @@ -9,7 +9,7 @@ namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IUsableItem : IItem, IDroppableItem - { - void Use(UserItem uItem); - } + { + void Use(UserItem uItem); + } } diff --git a/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs b/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs index da45b53d..e40c5d5f 100644 --- a/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs +++ b/ReallifeGamemode.Server/Inventory/Interfaces/IWeaponDealItem.cs @@ -4,7 +4,7 @@ using ReallifeGamemode.Database.Entities; namespace ReallifeGamemode.Server.Inventory.Interfaces { public interface IWeaponDealItem : IItem, IDroppableItem - { - bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh); - } + { + bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh); + } } diff --git a/ReallifeGamemode.Server/Inventory/Items/DropItem.cs b/ReallifeGamemode.Server/Inventory/Items/DropItem.cs index efeae4bd..f00121a0 100644 --- a/ReallifeGamemode.Server/Inventory/Items/DropItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/DropItem.cs @@ -7,20 +7,20 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Inventory.Items { public abstract class DropItem : IDroppableItem - { - public abstract int HpAmount { get; } - public abstract int Id { get; } - public abstract string Name { get; } - public abstract string Description { get; } - public abstract int Gewicht { get; } - public abstract string Einheit { get; } - public abstract uint Object { get; } - public abstract int Price { get; } + { + public abstract int HpAmount { get; } + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract int Gewicht { get; } + public abstract string Einheit { get; } + public abstract uint Object { get; } + public abstract int Price { get; } - public void Drop(UserItem uItem, Player player, int amount) - { - player.SendNotification("Du hast ~g~" + amount + " ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~weggeworfen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, amount); - } + public void Drop(UserItem uItem, Player player, int amount) + { + player.SendNotification("Du hast ~g~" + amount + " ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~weggeworfen.", false); + InventoryManager.RemoveUserItem(player.GetUser(), uItem, amount); } + } } diff --git a/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs b/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs index 93371992..77f76cd4 100644 --- a/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/FoodItem.cs @@ -7,29 +7,29 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Inventory.Items { public abstract class FoodItem : IUsableItem + { + public abstract int HpAmount { get; } + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract int Gewicht { get; } + public abstract string Einheit { get; } + public abstract uint Object { get; } + public abstract int Price { get; } + + public void Use(UserItem uItem) { - public abstract int HpAmount { get; } - public abstract int Id { get; } - public abstract string Name { get; } - public abstract string Description { get; } - public abstract int Gewicht { get; } - public abstract string Einheit { get; } - public abstract uint Object { get; } - public abstract int Price { get; } + Player player = uItem.GetUser().Player; - public void Use(UserItem uItem) - { - Player player = uItem.GetUser().Player; + int amountToAdd = HpAmount; + if (player.Health + amountToAdd > 100) + { + amountToAdd = 100 - player.Health; + } - int amountToAdd = HpAmount; - if (player.Health + amountToAdd > 100) - { - amountToAdd = 100 - player.Health; - } - - player.Health += amountToAdd; - player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false); - InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); - } + player.Health += amountToAdd; + player.SendNotification("Du hast ein/einen ~y~" + InventoryManager.GetItemById(uItem.ItemId).Name + " ~s~gegessen.", false); + InventoryManager.RemoveUserItem(player.GetUser(), uItem, 1); } + } } diff --git a/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs b/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs index ee91765c..fdaff5cd 100644 --- a/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs +++ b/ReallifeGamemode.Server/Inventory/Items/WeaponDealItem.cs @@ -6,23 +6,23 @@ using ReallifeGamemode.Server.Inventory.Interfaces; namespace ReallifeGamemode.Server.Inventory.Items { public abstract class WeaponDealItem : IWeaponDealItem + { + public abstract int Id { get; } + public abstract string Name { get; } + public abstract string Description { get; } + public abstract int Gewicht { get; } + public abstract string Einheit { get; } + public abstract uint Object { get; } + public abstract int Price { get; } + + public bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh) { - public abstract int Id { get; } - public abstract string Name { get; } - public abstract string Description { get; } - public abstract int Gewicht { get; } - public abstract string Einheit { get; } - public abstract uint Object { get; } - public abstract int Price { get; } + if (!fVeh.GetOwners().Contains(client.GetUser().FactionId ?? 0)) + return false; + if (fVeh.Model != VehicleHash.Burrito3) + return false; - public bool noTransfer(Player client, UserItem uItem, FactionVehicle fVeh) - { - if (!fVeh.GetOwners().Contains(client.GetUser().FactionId ?? 0)) - return false; - if (fVeh.Model != VehicleHash.Burrito3) - return false; - - return true; - } + return true; } + } } diff --git a/ReallifeGamemode.Server/Job/JobBase.cs b/ReallifeGamemode.Server/Job/JobBase.cs index fe23b679..56a4faee 100644 --- a/ReallifeGamemode.Server/Job/JobBase.cs +++ b/ReallifeGamemode.Server/Job/JobBase.cs @@ -8,59 +8,59 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Job { public abstract class JobBase : Script + { + public delegate void JobStartHandler(Player player); + + public delegate void JobStopHandler(Player player); + + public event JobStartHandler JobStart; + + public event JobStopHandler JobStop; + + private readonly List _inJob = new List(); + private static readonly List jobPlayer = new List(); + + public abstract int Id { get; } + + public abstract string Name { get; } + + public abstract bool NeedVehicleToStart { get; } + + public void StartJob(Player player) { - public delegate void JobStartHandler(Player player); + if (_inJob.Contains(player)) return; + _inJob.Add(player); + jobPlayer.Add(player); - public delegate void JobStopHandler(Player player); + ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); - public event JobStartHandler JobStart; - - public event JobStopHandler JobStop; - - private readonly List _inJob = new List(); - private static readonly List jobPlayer = new List(); - - public abstract int Id { get; } - - public abstract string Name { get; } - - public abstract bool NeedVehicleToStart { get; } - - public void StartJob(Player player) - { - if (_inJob.Contains(player)) return; - _inJob.Add(player); - jobPlayer.Add(player); - - ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); - - JobStart?.Invoke(player); - } - - public void StopJob(Player player, bool quit = false) - { - if (!_inJob.Contains(player)) return; - _inJob.Remove(player); - jobPlayer.Remove(player); - - if (quit) - { - ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); - } - - JobStop?.Invoke(player); - } - - public List GetJobVehicles() - { - using (var dbContext = new DatabaseContext()) - { - return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList(); - } - } - - public static List GetPlayerInJob() => jobPlayer; - - public List GetUsersInJob() => _inJob; + JobStart?.Invoke(player); } + + public void StopJob(Player player, bool quit = false) + { + if (!_inJob.Contains(player)) return; + _inJob.Remove(player); + jobPlayer.Remove(player); + + if (quit) + { + ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); + } + + JobStop?.Invoke(player); + } + + public List GetJobVehicles() + { + using (var dbContext = new DatabaseContext()) + { + return dbContext.JobVehicles.Where(j => j.JobId == Id).ToList(); + } + } + + public static List GetPlayerInJob() => jobPlayer; + + public List GetUsersInJob() => _inJob; + } } diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index da3ee506..fc8aaba8 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -8,33 +8,33 @@ using ReallifeGamemode.Server.Services; namespace ReallifeGamemode.Server.Job { public class RefuseCollectorJob : JobBase + { + public override int Id => 2; + + public override string Name => "Müllmann"; + + public override bool NeedVehicleToStart => false; + + public RefuseCollectorJob() { - public override int Id => 2; + JobStart += RefuseCollectorJobJobStart; + JobStop += RefuseCollectorJobJobStop; + } - public override string Name => "Müllmann"; + private void RefuseCollectorJobJobStart(Player player) + { + //setClothes + } - public override bool NeedVehicleToStart => false; + private void RefuseCollectorJobJobStop(Player player) + { + //removeClothes and replace with old + MuellmannJobBeenden(player); + } - public RefuseCollectorJob() - { - JobStart += RefuseCollectorJobJobStart; - JobStop += RefuseCollectorJobJobStop; - } + public static List muellmanData = new List(); - private void RefuseCollectorJobJobStart(Player player) - { - //setClothes - } - - private void RefuseCollectorJobJobStop(Player player) - { - //removeClothes and replace with old - MuellmannJobBeenden(player); - } - - public static List muellmanData = new List(); - - private readonly IReadOnlyCollection vector3s = new List + private readonly IReadOnlyCollection vector3s = new List { new Vector3(332.9839782714844, -1741.807373046875, 29.73055076599121), new Vector3(321.3463439941406, -1759.986572265625, 29.644014358520508), @@ -153,298 +153,298 @@ namespace ReallifeGamemode.Server.Job }.AsReadOnly(); - [RemoteEvent("CLIENT:MuellmannJobStarten")] - public void MuellmannJobStarten(Player player, Vehicle vehicle) + [RemoteEvent("CLIENT:MuellmannJobStarten")] + public void MuellmannJobStarten(Player player, Vehicle vehicle) + { + if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) + { + Vehicle veh; + foreach (var data in muellmanData) { - if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) - { - Vehicle veh; - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - veh = data.vehicle; - ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job gestartet!"); - player.TriggerEvent("SERVER:MuellmannStatusTrue"); - player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh); - return; - } - } + if (data.getDataFromClient(player) == null) continue; + veh = data.vehicle; + ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job gestartet!"); + player.TriggerEvent("SERVER:MuellmannStatusTrue"); + player.TriggerEvent("SERVER:MuellmannBCSErstellen", JsonConvert.SerializeObject(vector3s.ToArray()), veh); + return; } - - public void MuellmannJobBeenden(Player player) - { - ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job beendet!"); - player.TriggerEvent("SERVER:MuellmannStatusFalse"); - player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); - - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } - } - - [RemoteEvent("CLIENT:MuellmannImShape")] - public void MuellmannImShape(Player player, int colshapeIndex) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - Player target = data.getPartnerClient(player); - if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); - ChatService.SendMessage((Player)player, "Du hast den Müllsack in der Hand. Bringe ihm zum Müllwagen hinten."); - player.AddAttachment("binbag", false); - return; - } - } - - [RemoteEvent("CLIENT:MuellmannAddSack")] - public void MuellmannAddSack(Player player) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - data.setTrashCount(data.getTrashCount() + 1); - - Player target = data.getPartnerClient(player); - player.AddAttachment("binbag", true); - if (data.getTrashCount() >= 20) - { - ChatService.SendMessage((Player)player, "Auto ist voll fahre nun zu Base."); - if (target != null) { ChatService.SendMessage((Player)target, "Auto ist voll fahre nun zu Base."); target.TriggerEvent("SERVER:MuellmannZuBase"); } - player.TriggerEvent("SERVER:MuellmannZuBase"); - } - //bonus pro sack - return; - } - } - - [RemoteEvent("CLIENT:MuellmannBaseSack")] - public void MuellmannBaseSack(Player player) - { - if (player.VehicleSeat != 0) return; - - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - Player target = data.getPartnerClient(player); - if (target != null) ChatService.SendMessage((Player)target, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); - ChatService.SendMessage((Player)player, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); - //bonus pro sack - - data.setTrashCount(0); - Console.WriteLine($"[DATA DEBUG] vehicle: {data.vehicle.DisplayName} | Players: {data.getClientsFromData().Count} | Säcke: {data.getTrashCount()}"); - return; - } - } - - #region zweiSpeieler - - public void MuellmannOnPlayerDc(Player player) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } - } - - public void MuellmannOnPlayerDeath(Player player) - { - foreach (var data in muellmanData) - { - if (data.getDataFromClient(player) == null) continue; - - if (data.hasFreePlace()) - { - muellmanData.Remove(data); - //müllwagen respawnen - return; - } - - data.removeClientFromData(player); - return; - } - } - - [ServerEvent(Event.VehicleDeath)] - private void MuellmannOnVehicle(Vehicle veh) - { - if (veh.Model != (uint)Types.VehicleModel.Trash && veh.Model != (uint)Types.VehicleModel.Trash2) return; - foreach (var data in muellmanData) - { - if (data.vehicle == veh) - { - //müllfahrzeug respawnen - - List clients = data.getClientsFromData(); - foreach (var c in clients) { RefuseCollectorJobJobStop(c); } - - muellmanData.Remove(data); - return; - } - } - } - - public void MuellmannOnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat) - { - Player target; - if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) - { - foreach (var data in muellmanData) - { - if (data.vehicle == vehicle) - { - if (data.getDataFromClient(player) != null) - return; - - if (!data.hasFreePlace()) - { - player.StopAnimation(); - return; - } - CheckDataForDuplicatePlayer(player, data); - data.setClientToData(player); - //destroy veh - MuellmannJobStarten(player, vehicle); - - target = data.getPartnerClient(player); - if (target == null) - return; - - ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); - ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); - return; - } - } - - MuellmannData newData = new MuellmannData(vehicle); - muellmanData.Add(newData); - CheckDataForDuplicatePlayer(player, newData); - newData.setClientToData(player); - - MuellmannJobStarten(player, vehicle); - - target = newData.getPartnerClient(player); - if (target == null) - return; - - ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); - ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); - } - } - - public void CheckDataForDuplicatePlayer(Player player, MuellmannData data) - { - foreach (var d in muellmanData) - { - if (d == data) continue; - - MuellmannData temp = d.getDataFromClient(player); - if (temp == null) continue; - - temp.removeClientFromData(player); - } - } - - #endregion zweiSpeieler - - #region Data - - public class MuellmannData - { - private Player client1; - private Player client2; - public Vehicle vehicle; - private static int trashCount = 0; - - public MuellmannData(Vehicle vehicle) - { - this.vehicle = vehicle; - } - - public void setClientToData(Player player) - { - if (client1 == player || client2 == player) - { - Console.WriteLine("Spieler schon gespeichert"); - return; - } - - if (client1 == null) { client1 = player; return; } - else if (client2 == null) { client2 = player; return; } - else if (client1 != null && client2 != null) { Console.WriteLine("kein Platz"); } - } - - public void removeClientFromData(Player player) - { - if (client1 == player) { client1 = null; } - if (client2 == player) { client2 = null; } - } - - public int getTrashCount() - { - return trashCount; - } - - public void setTrashCount(int i) - { - trashCount = i; - } - - public List getClientsFromData() - { - List tempList = new List(); - if (client1 != null) { tempList.Add(client1); } - if (client2 != null) { tempList.Add(client2); } - return tempList; - } - - public MuellmannData getDataFromClient(Player player) - { - if (client1 != player && client2 != player) - return null; - return this; - } - - public bool hasFreePlace() - { - if (client1 != null && client2 != null) - return false; - return true; - } - - public Player getPartnerClient(Player player) - { - if (client1 != player && client2 != player) - return null; - - if (client1 == player) { return client2; } - if (client2 == player) { return client1; } - return null; - } - } - - #endregion Data + } } + + public void MuellmannJobBeenden(Player player) + { + ChatService.SendMessage((Player)player, "~g~Du hast den Müllmann-Job beendet!"); + player.TriggerEvent("SERVER:MuellmannStatusFalse"); + player.TriggerEvent("SERVER:MuellmannBCSEntfernen"); + + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + if (data.hasFreePlace()) + { + muellmanData.Remove(data); + //müllwagen respawnen + return; + } + + data.removeClientFromData(player); + return; + } + } + + [RemoteEvent("CLIENT:MuellmannImShape")] + public void MuellmannImShape(Player player, int colshapeIndex) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + Player target = data.getPartnerClient(player); + if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); + ChatService.SendMessage((Player)player, "Du hast den Müllsack in der Hand. Bringe ihm zum Müllwagen hinten."); + player.AddAttachment("binbag", false); + return; + } + } + + [RemoteEvent("CLIENT:MuellmannAddSack")] + public void MuellmannAddSack(Player player) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + data.setTrashCount(data.getTrashCount() + 1); + + Player target = data.getPartnerClient(player); + player.AddAttachment("binbag", true); + if (data.getTrashCount() >= 20) + { + ChatService.SendMessage((Player)player, "Auto ist voll fahre nun zu Base."); + if (target != null) { ChatService.SendMessage((Player)target, "Auto ist voll fahre nun zu Base."); target.TriggerEvent("SERVER:MuellmannZuBase"); } + player.TriggerEvent("SERVER:MuellmannZuBase"); + } + //bonus pro sack + return; + } + } + + [RemoteEvent("CLIENT:MuellmannBaseSack")] + public void MuellmannBaseSack(Player player) + { + if (player.VehicleSeat != 0) return; + + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + Player target = data.getPartnerClient(player); + if (target != null) ChatService.SendMessage((Player)target, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + ChatService.SendMessage((Player)player, $"Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + //bonus pro sack + + data.setTrashCount(0); + Console.WriteLine($"[DATA DEBUG] vehicle: {data.vehicle.DisplayName} | Players: {data.getClientsFromData().Count} | Säcke: {data.getTrashCount()}"); + return; + } + } + + #region zweiSpeieler + + public void MuellmannOnPlayerDc(Player player) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + if (data.hasFreePlace()) + { + muellmanData.Remove(data); + //müllwagen respawnen + return; + } + + data.removeClientFromData(player); + return; + } + } + + public void MuellmannOnPlayerDeath(Player player) + { + foreach (var data in muellmanData) + { + if (data.getDataFromClient(player) == null) continue; + + if (data.hasFreePlace()) + { + muellmanData.Remove(data); + //müllwagen respawnen + return; + } + + data.removeClientFromData(player); + return; + } + } + + [ServerEvent(Event.VehicleDeath)] + private void MuellmannOnVehicle(Vehicle veh) + { + if (veh.Model != (uint)Types.VehicleModel.Trash && veh.Model != (uint)Types.VehicleModel.Trash2) return; + foreach (var data in muellmanData) + { + if (data.vehicle == veh) + { + //müllfahrzeug respawnen + + List clients = data.getClientsFromData(); + foreach (var c in clients) { RefuseCollectorJobJobStop(c); } + + muellmanData.Remove(data); + return; + } + } + } + + public void MuellmannOnPlayerEnterVehicle(Player player, Vehicle vehicle, sbyte seat) + { + Player target; + if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) + { + foreach (var data in muellmanData) + { + if (data.vehicle == vehicle) + { + if (data.getDataFromClient(player) != null) + return; + + if (!data.hasFreePlace()) + { + player.StopAnimation(); + return; + } + CheckDataForDuplicatePlayer(player, data); + data.setClientToData(player); + //destroy veh + MuellmannJobStarten(player, vehicle); + + target = data.getPartnerClient(player); + if (target == null) + return; + + ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); + ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); + return; + } + } + + MuellmannData newData = new MuellmannData(vehicle); + muellmanData.Add(newData); + CheckDataForDuplicatePlayer(player, newData); + newData.setClientToData(player); + + MuellmannJobStarten(player, vehicle); + + target = newData.getPartnerClient(player); + if (target == null) + return; + + ChatService.SendMessage((Player)player, $"Dein Partner ist {target.Name} !"); + ChatService.SendMessage((Player)target, $"Dein Partner ist {player.Name} !"); + } + } + + public void CheckDataForDuplicatePlayer(Player player, MuellmannData data) + { + foreach (var d in muellmanData) + { + if (d == data) continue; + + MuellmannData temp = d.getDataFromClient(player); + if (temp == null) continue; + + temp.removeClientFromData(player); + } + } + + #endregion zweiSpeieler + + #region Data + + public class MuellmannData + { + private Player client1; + private Player client2; + public Vehicle vehicle; + private static int trashCount = 0; + + public MuellmannData(Vehicle vehicle) + { + this.vehicle = vehicle; + } + + public void setClientToData(Player player) + { + if (client1 == player || client2 == player) + { + Console.WriteLine("Spieler schon gespeichert"); + return; + } + + if (client1 == null) { client1 = player; return; } + else if (client2 == null) { client2 = player; return; } + else if (client1 != null && client2 != null) { Console.WriteLine("kein Platz"); } + } + + public void removeClientFromData(Player player) + { + if (client1 == player) { client1 = null; } + if (client2 == player) { client2 = null; } + } + + public int getTrashCount() + { + return trashCount; + } + + public void setTrashCount(int i) + { + trashCount = i; + } + + public List getClientsFromData() + { + List tempList = new List(); + if (client1 != null) { tempList.Add(client1); } + if (client2 != null) { tempList.Add(client2); } + return tempList; + } + + public MuellmannData getDataFromClient(Player player) + { + if (client1 != player && client2 != player) + return null; + return this; + } + + public bool hasFreePlace() + { + if (client1 != null && client2 != null) + return false; + return true; + } + + public Player getPartnerClient(Player player) + { + if (client1 != player && client2 != player) + return null; + + if (client1 == player) { return client2; } + if (client2 == player) { return client1; } + return null; + } + } + + #endregion Data + } } diff --git a/ReallifeGamemode.Server/Main.cs b/ReallifeGamemode.Server/Main.cs index dc220ac5..c2a3aeef 100644 --- a/ReallifeGamemode.Server/Main.cs +++ b/ReallifeGamemode.Server/Main.cs @@ -25,93 +25,93 @@ using ReallifeGamemode.Services; namespace ReallifeGamemode.Server { public class Main : Script + { + public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829); + public static readonly float DEFAULT_SPAWN_HEADING = 340.8f; + + public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE"); + + private EventHandler eventHandler; + + [ServerEvent(Event.ResourceStart)] + public void OnResourceStart() { - public static readonly Vector3 DEFAULT_SPAWN_POSITION = new Vector3(-427.5189, 1116.453, 326.7829); - public static readonly float DEFAULT_SPAWN_HEADING = 340.8f; + var methods = Assembly.GetExecutingAssembly() + .GetTypes() + .SelectMany(t => t.GetMethods()) + .Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0) + .ToArray(); - public static readonly CultureInfo SERVER_CULTURE = new CultureInfo("de-DE"); + var cmdAttributes = methods.Select(c => c.GetCustomAttribute()).ToList(); - private EventHandler eventHandler; + var registeredCommands = cmdAttributes.Select(c => c.CommandString).ToList(); + cmdAttributes.Where(c => c.Alias?.Any() ?? false).ToList().ForEach(a => + { + registeredCommands.AddRange(a.Alias.Split(',')); + }); - [ServerEvent(Event.ResourceStart)] - public void OnResourceStart() + IAPI apiInstance = new RageAPI(); + eventHandler = new EventHandler(apiInstance); + + new Core.Main(apiInstance, eventHandler, registeredCommands.ToArray()); + + NAPI.Server.SetGlobalServerChat(false); + + NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht."); + NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING); + NAPI.Server.SetAutoSpawnOnConnect(false); + NAPI.Server.SetAutoRespawnAfterDeath(false); + NAPI.Data.SetWorldData("playerCreatorDimension", 0); + + JsonConvert.DefaultSettings = () => + { + return new JsonSerializerSettings() { - var methods = Assembly.GetExecutingAssembly() - .GetTypes() - .SelectMany(t => t.GetMethods()) - .Where(m => m.GetCustomAttributes(typeof(CommandAttribute), false).Length > 0) - .ToArray(); + NullValueHandling = NullValueHandling.Ignore + }; + }; - var cmdAttributes = methods.Select(c => c.GetCustomAttribute()).ToList(); + InventoryManager.LoadItems(); + ShopManager.LoadClotheShops(); + ShopManager.LoadItemShops(); + TuningManager.LoadTuningGarages(); - var registeredCommands = cmdAttributes.Select(c => c.CommandString).ToList(); - cmdAttributes.Where(c => c.Alias?.Any() ?? false).ToList().ForEach(a => - { - registeredCommands.AddRange(a.Alias.Split(',')); - }); + TimeManager.StartTimeManager(); + VehicleManager.CheckEnabledMods(); - IAPI apiInstance = new RageAPI(); - eventHandler = new EventHandler(apiInstance); + DatabaseHelper.InitDatabaseFirstTime(); - new Core.Main(apiInstance, eventHandler, registeredCommands.ToArray()); + FactionHelper.CheckFactionBankAccounts(); + BusinessManager.LoadBusinesses(); + //InteriorManager.LoadInteriors(); + DoorManager.LoadDoors(); + ATMManager.InitATMs(); + CityHallManager.LoadCityHall(); + JobManager.LoadJobs(); + //TaxiDriverJob.StartTaxiTimer(); Obselete + //HouseManager.LoadHouses(); + DrivingSchool.DrivingSchool.Setup(); + PlaneSchool.Setup(); + Gangwar.Gangwar.loadTurfs(); - NAPI.Server.SetGlobalServerChat(false); + TempBlip tempBlip = new TempBlip() + { + Color = 1, + Name = "", + Transparency = 0, + ShortRange = true, + Sprite = 1, + Scale = 1, + }; - NAPI.Server.SetCommandErrorMessage("~r~[FEHLER]~s~ Dieser Command existiert nicht."); - NAPI.Server.SetDefaultSpawnLocation(DEFAULT_SPAWN_POSITION, DEFAULT_SPAWN_HEADING); - NAPI.Server.SetAutoSpawnOnConnect(false); - NAPI.Server.SetAutoRespawnAfterDeath(false); - NAPI.Data.SetWorldData("playerCreatorDimension", 0); + NAPI.Data.SetWorldData("blipTemplate", tempBlip); - JsonConvert.DefaultSettings = () => - { - return new JsonSerializerSettings() - { - NullValueHandling = NullValueHandling.Ignore - }; - }; + //WantedEscapeTimer.WantedTimer(); Obselete + //Jail.JailTimer(); Obselete + //Economy.PaydayTimer(); Obselete + // WeaponDealManager.WeaponDealTimer(); Obselete - InventoryManager.LoadItems(); - ShopManager.LoadClotheShops(); - ShopManager.LoadItemShops(); - TuningManager.LoadTuningGarages(); - - TimeManager.StartTimeManager(); - VehicleManager.CheckEnabledMods(); - - DatabaseHelper.InitDatabaseFirstTime(); - - FactionHelper.CheckFactionBankAccounts(); - BusinessManager.LoadBusinesses(); - //InteriorManager.LoadInteriors(); - DoorManager.LoadDoors(); - ATMManager.InitATMs(); - CityHallManager.LoadCityHall(); - JobManager.LoadJobs(); - //TaxiDriverJob.StartTaxiTimer(); Obselete - //HouseManager.LoadHouses(); - DrivingSchool.DrivingSchool.Setup(); - PlaneSchool.Setup(); - Gangwar.Gangwar.loadTurfs(); - - TempBlip tempBlip = new TempBlip() - { - Color = 1, - Name = "", - Transparency = 0, - ShortRange = true, - Sprite = 1, - Scale = 1, - }; - - NAPI.Data.SetWorldData("blipTemplate", tempBlip); - - //WantedEscapeTimer.WantedTimer(); Obselete - //Jail.JailTimer(); Obselete - //Economy.PaydayTimer(); Obselete - // WeaponDealManager.WeaponDealTimer(); Obselete - - ThreadTimers.StartAllTimers(); + ThreadTimers.StartAllTimers(); UserBankAccount.BalanceChanged += (account) => { @@ -129,11 +129,11 @@ namespace ReallifeGamemode.Server }; } - [RemoteEvent("CLIENT:Event")] - public void OnClientEvent(Player player, string dataStr) - { - var data = dataStr.DeserializeJson>(); - eventHandler.HandleEvent(new RagePlayer(player), data); - } + [RemoteEvent("CLIENT:Event")] + public void OnClientEvent(Player player, string dataStr) + { + var data = dataStr.DeserializeJson>(); + eventHandler.HandleEvent(new RagePlayer(player), data); } -} \ No newline at end of file + } +} diff --git a/ReallifeGamemode.Server/Managers/ATMManager.cs b/ReallifeGamemode.Server/Managers/ATMManager.cs index 4671862e..6d65e87e 100644 --- a/ReallifeGamemode.Server/Managers/ATMManager.cs +++ b/ReallifeGamemode.Server/Managers/ATMManager.cs @@ -14,140 +14,140 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class ATMManager : Script + { + public static List ATMColShapes = new List(); + + public static void InitATMs() { - public static List ATMColShapes = new List(); - - public static void InitATMs() + var addedATMs = 0; + using (var dbContext = new DatabaseContext()) + { + foreach (var currentATM in dbContext.Blips) { - var addedATMs = 0; - using (var dbContext = new DatabaseContext()) + if (currentATM.Sprite == 500) + { + if (dbContext.ATMs.FirstOrDefault(a => a.Id == currentATM.Id) == null) { - foreach (var currentATM in dbContext.Blips) - { - if (currentATM.Sprite == 500) - { - if (dbContext.ATMs.FirstOrDefault(a => a.Id == currentATM.Id) == null) - { - var dataSet = new ATM - { - Id = currentATM.Id, - X = currentATM.PositionX, - Y = currentATM.PositionY, - Z = currentATM.PositionZ - }; - dbContext.Add(dataSet); - addedATMs++; - } - else - { - continue; - } - } - } - if (addedATMs > 0) - { - NAPI.Util.ConsoleOutput(addedATMs + " Geldautomaten hinzugefügt"); - } - else - { - NAPI.Util.ConsoleOutput("Keine Geldautomaten hinzugefügt"); - } - - dbContext.SaveChanges(); - LoadATMs(); + var dataSet = new ATM + { + Id = currentATM.Id, + X = currentATM.PositionX, + Y = currentATM.PositionY, + Z = currentATM.PositionZ + }; + dbContext.Add(dataSet); + addedATMs++; } - } - - public static void LoadATMs() - { - using (var dbContext = new DatabaseContext()) + else { - foreach (var currentATM in dbContext.ATMs) - { - var currentColShape = NAPI.ColShape.CreateCylinderColShape(new Vector3(currentATM.X, currentATM.Y, currentATM.Z), 2.5f, 3, 0); - currentColShape.OnEntityEnterColShape += EnterATMRange; - currentColShape.OnEntityExitColShape += ExitATMRange; - ATMColShapes.Add(currentColShape); - currentColShape.SetData("id", currentATM.Id); - } + continue; } + } } - - public static void EnterATMRange(ColShape colShape, Player client) + if (addedATMs > 0) { - client.SetData("nearATM", colShape.GetData("id")); + NAPI.Util.ConsoleOutput(addedATMs + " Geldautomaten hinzugefügt"); } - - public static void ExitATMRange(ColShape colShape, Player client) + else { - client.ResetData("nearATM"); + NAPI.Util.ConsoleOutput("Keine Geldautomaten hinzugefügt"); } - public static void ShowAtmUi(Player player, int atmId) - { - player.TriggerEvent("SERVER:ShowAtmUi", atmId); - } - - [RemoteEvent("CLIENT:ATM_MANAGER:ATM_ACTION")] - public void AtmAction(Player client, int site, int inputField1, int inputField2) - { - using (var dbContext = new DatabaseContext()) - { - var user = client.GetUser(dbContext); - int nearATM = client.GetData("nearATM"); - //SITE //0 Geld einzahlen //1 Geld auszahlen //2 Geld überweisen - switch (site) - { - //GELD EINZAHLEN in1 - case 0: - - if (user.Handmoney < inputField1) - { - //TODO im CEFBrowser anzeigen - //client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance); - client.SendNotification("~r~Nicht genügend Geld auf der Hand!"); - } - else - { - var updateBankMoneyIn = user.BankAccount; - var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); - user.Handmoney -= inputField1; - updateBankMoneyIn.Balance += inputField1; - updateATMBalanceIn.Balance += inputField1; - client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); - } - break; - - //GELD AUSZAHLEN in1 - case 1: - var checkATM = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); - - if (user.BankAccount.Balance < inputField1) - { - client.SendNotification("~r~Nicht genügend Geld auf dem Bankkonto!"); //TODO Im Automaten anzeigen lassen - } - else if (checkATM.Balance < inputField1) - { - client.SendNotification("~r~Nicht genügend Geld im Automaten vorhanden!"); //TODO Im Automaten anzeigen lassen |||| oder OUT OF ORDER anzeigen wenn leer - } - else - { - var updateHandMoneyOut = dbContext.Users.FirstOrDefault(u => u.Id == user.Id); - var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); - updateHandMoneyOut.Handmoney += inputField1; - user.BankAccount.Balance -= inputField1; - updateATMBalanceOut.Balance -= inputField1; - client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney); - } - break; - - //GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag - case 2: - - break; - } - dbContext.SaveChanges(); - } - } + dbContext.SaveChanges(); + LoadATMs(); + } } + + public static void LoadATMs() + { + using (var dbContext = new DatabaseContext()) + { + foreach (var currentATM in dbContext.ATMs) + { + var currentColShape = NAPI.ColShape.CreateCylinderColShape(new Vector3(currentATM.X, currentATM.Y, currentATM.Z), 2.5f, 3, 0); + currentColShape.OnEntityEnterColShape += EnterATMRange; + currentColShape.OnEntityExitColShape += ExitATMRange; + ATMColShapes.Add(currentColShape); + currentColShape.SetData("id", currentATM.Id); + } + } + } + + public static void EnterATMRange(ColShape colShape, Player client) + { + client.SetData("nearATM", colShape.GetData("id")); + } + + public static void ExitATMRange(ColShape colShape, Player client) + { + client.ResetData("nearATM"); + } + + public static void ShowAtmUi(Player player, int atmId) + { + player.TriggerEvent("SERVER:ShowAtmUi", atmId); + } + + [RemoteEvent("CLIENT:ATM_MANAGER:ATM_ACTION")] + public void AtmAction(Player client, int site, int inputField1, int inputField2) + { + using (var dbContext = new DatabaseContext()) + { + var user = client.GetUser(dbContext); + int nearATM = client.GetData("nearATM"); + //SITE //0 Geld einzahlen //1 Geld auszahlen //2 Geld überweisen + switch (site) + { + //GELD EINZAHLEN in1 + case 0: + + if (user.Handmoney < inputField1) + { + //TODO im CEFBrowser anzeigen + //client.TriggerEvent("SERVER:WORLD_INTERACTION:ATM_ERROR", 0, checkATM.Balance); + client.SendNotification("~r~Nicht genügend Geld auf der Hand!"); + } + else + { + var updateBankMoneyIn = user.BankAccount; + var updateATMBalanceIn = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); + user.Handmoney -= inputField1; + updateBankMoneyIn.Balance += inputField1; + updateATMBalanceIn.Balance += inputField1; + client.TriggerEvent("SERVER:SET_HANDMONEY", user.Handmoney); + } + break; + + //GELD AUSZAHLEN in1 + case 1: + var checkATM = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); + + if (user.BankAccount.Balance < inputField1) + { + client.SendNotification("~r~Nicht genügend Geld auf dem Bankkonto!"); //TODO Im Automaten anzeigen lassen + } + else if (checkATM.Balance < inputField1) + { + client.SendNotification("~r~Nicht genügend Geld im Automaten vorhanden!"); //TODO Im Automaten anzeigen lassen |||| oder OUT OF ORDER anzeigen wenn leer + } + else + { + var updateHandMoneyOut = dbContext.Users.FirstOrDefault(u => u.Id == user.Id); + var updateATMBalanceOut = dbContext.ATMs.FirstOrDefault(a => a.Id == nearATM); + updateHandMoneyOut.Handmoney += inputField1; + user.BankAccount.Balance -= inputField1; + updateATMBalanceOut.Balance -= inputField1; + client.TriggerEvent("SERVER:SET_HANDMONEY", updateHandMoneyOut.Handmoney); + } + break; + + //GELD ÜBERWEISEN in1 = Kontonr // in2 = Betrag + case 2: + + break; + } + dbContext.SaveChanges(); + } + } + } } diff --git a/ReallifeGamemode.Server/Managers/BankManager.cs b/ReallifeGamemode.Server/Managers/BankManager.cs index 1a1d12dd..60e29d0c 100644 --- a/ReallifeGamemode.Server/Managers/BankManager.cs +++ b/ReallifeGamemode.Server/Managers/BankManager.cs @@ -15,98 +15,98 @@ using ReallifeGamemode.Server.Util; namespace ReallifeGamemode.Server.Managers { public class BankManager + { + public static TransactionResult SetMoney(Player admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt") { - public static TransactionResult SetMoney(Player admin, IBankAccountOwner owner, int amount, string reason = "Von Admin gesetzt") + using (var transferMoney = new DatabaseContext()) + { + if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; + + IBankAccount account = owner.GetBankAccount(transferMoney); + + if (account == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; + + var transactionLog = new BankAccountTransactionHistory { - using (var transferMoney = new DatabaseContext()) - { - if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; + Sender = "ADMIN: " + admin.Name, + SenderBalance = 0, + Receiver = owner.Name, + ReceiverBalance = amount, + NewReceiverBalance = amount, + NewSenderBalance = 0, + MoneySent = amount, + Fee = 0, + Origin = reason + }; - IBankAccount account = owner.GetBankAccount(transferMoney); + // add log + transferMoney.BankAccountTransactionLogs.Add(transactionLog); - if (account == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; + account.Balance = amount; - var transactionLog = new BankAccountTransactionHistory - { - Sender = "ADMIN: " + admin.Name, - SenderBalance = 0, - Receiver = owner.Name, - ReceiverBalance = amount, - NewReceiverBalance = amount, - NewSenderBalance = 0, - MoneySent = amount, - Fee = 0, - Origin = reason - }; + transferMoney.SaveChanges(); - // add log - transferMoney.BankAccountTransactionLogs.Add(transactionLog); - - account.Balance = amount; - - transferMoney.SaveChanges(); - - return TransactionResult.SUCCESS; - } - } - - public static TransactionResult TransferMoney( - BankAccountHolder sender, - BankAccountHolder receiver, - int amount, - string origin, - DatabaseContext dbContext) where TSender : class, IBankAccount, new() where TReceiver : class, IBankAccount, new() - { - if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; - - IBankAccount senderAccount; - IBankAccount receiverAccount; - - if (sender is BankAccountHolder businessSender) - { - senderAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessSender.BankAccountId).First(); - } - else - { - senderAccount = sender.BankAccount; - } - - if (receiver is BankAccountHolder businessReceiver) - { - receiverAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessReceiver.BankAccountId).First(); - } - else - { - receiverAccount = receiver.BankAccount; - } - - if (senderAccount == null) return TransactionResult.SENDER_NO_BANKACCOUNT; - if (receiverAccount == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; - - if (senderAccount.Balance < amount) return TransactionResult.SENDER_NOT_ENOUGH_MONEY; - - var transactionLog = new BankAccountTransactionHistory - { - Sender = sender.BankAccountName, - SenderBalance = senderAccount.Balance, - Receiver = receiver.BankAccountName, - ReceiverBalance = receiverAccount.Balance, - NewReceiverBalance = receiverAccount.Balance + amount, - NewSenderBalance = senderAccount.Balance - amount, - MoneySent = amount, - Fee = 0, - Origin = origin - }; - - // add log - dbContext.BankAccountTransactionLogs.Add(transactionLog); - - senderAccount.Balance -= amount; - receiverAccount.Balance += amount; - - dbContext.SaveChanges(); - - return TransactionResult.SUCCESS; - } + return TransactionResult.SUCCESS; + } } + + public static TransactionResult TransferMoney( + BankAccountHolder sender, + BankAccountHolder receiver, + int amount, + string origin, + DatabaseContext dbContext) where TSender : class, IBankAccount, new() where TReceiver : class, IBankAccount, new() + { + if (amount < 0) return TransactionResult.NEGATIVE_MONEY_SENT; + + IBankAccount senderAccount; + IBankAccount receiverAccount; + + if (sender is BankAccountHolder businessSender) + { + senderAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessSender.BankAccountId).First(); + } + else + { + senderAccount = sender.BankAccount; + } + + if (receiver is BankAccountHolder businessReceiver) + { + receiverAccount = dbContext.BusinessBankAccounts.Where(b => b.Id == businessReceiver.BankAccountId).First(); + } + else + { + receiverAccount = receiver.BankAccount; + } + + if (senderAccount == null) return TransactionResult.SENDER_NO_BANKACCOUNT; + if (receiverAccount == null) return TransactionResult.RECEIVER_NO_BANKACCOUNT; + + if (senderAccount.Balance < amount) return TransactionResult.SENDER_NOT_ENOUGH_MONEY; + + var transactionLog = new BankAccountTransactionHistory + { + Sender = sender.BankAccountName, + SenderBalance = senderAccount.Balance, + Receiver = receiver.BankAccountName, + ReceiverBalance = receiverAccount.Balance, + NewReceiverBalance = receiverAccount.Balance + amount, + NewSenderBalance = senderAccount.Balance - amount, + MoneySent = amount, + Fee = 0, + Origin = origin + }; + + // add log + dbContext.BankAccountTransactionLogs.Add(transactionLog); + + senderAccount.Balance -= amount; + receiverAccount.Balance += amount; + + dbContext.SaveChanges(); + + return TransactionResult.SUCCESS; + } + } } diff --git a/ReallifeGamemode.Server/Managers/CharacterCreator.cs b/ReallifeGamemode.Server/Managers/CharacterCreator.cs index 034886d9..871c35f7 100644 --- a/ReallifeGamemode.Server/Managers/CharacterCreator.cs +++ b/ReallifeGamemode.Server/Managers/CharacterCreator.cs @@ -7,326 +7,326 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class CharacterCreator : Script + { + [RemoteEvent("creator_GenderChange")] + public void changeGender(Player player, int gender) { - [RemoteEvent("creator_GenderChange")] - public void changeGender(Player player, int gender) + if (gender == 0) player.SetSkin(PedHash.FreemodeMale01); + else player.SetSkin(PedHash.FreemodeFemale01); + } + + [RemoteEvent("creatorSave")] + public void CreatorSave(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData) + { + var jParentData = JObject.Parse(parentData); + var jFeatureData = JArray.Parse(featureData); + var jAppearanceData = JArray.Parse(appearanceData); + var jHairAndColorData = JArray.Parse(hairAndColorData); + + byte father = jParentData.Value("Father"); + byte mother = jParentData.Value("Mother"); + float similarity = jParentData.Value("Similarity"); + float skinSimilarity = jParentData.Value("SkinSimilarity"); + + float noseWidth = jFeatureData.Value(0); + float noseBottomHeight = jFeatureData.Value(1); + float noseTipLength = jFeatureData.Value(2); + float noseBridgeDepth = jFeatureData.Value(3); + float noseTipHeight = jFeatureData.Value(4); + float noseBroken = jFeatureData.Value(5); + float browHeight = jFeatureData.Value(6); + float browDepth = jFeatureData.Value(7); + float cheekboneHeight = jFeatureData.Value(8); + float cheekboneWidth = jFeatureData.Value(9); + float cheekDepth = jFeatureData.Value(10); + float eyeSize = jFeatureData.Value(11); + float lipThickness = jFeatureData.Value(12); + float jawWidth = jFeatureData.Value(13); + float jawShape = jFeatureData.Value(14); + float chinHeight = jFeatureData.Value(15); + float chinDepth = jFeatureData.Value(16); + float chinWidth = jFeatureData.Value(17); + float chinIndent = jFeatureData.Value(18); + float neckWidth = jFeatureData.Value(19); + + byte blemishes = jAppearanceData[0].Value("Value"); + float blemishesOpacity = jAppearanceData[0].Value("Opacity"); + byte facialHair = jAppearanceData[1].Value("Value"); + float facialHairOpacity = jAppearanceData[1].Value("Opacity"); + byte eyebrows = jAppearanceData[2].Value("Value"); + float eyebrowsOpacity = jAppearanceData[2].Value("Opacity"); + byte ageing = jAppearanceData[3].Value("Value"); + float ageingOpacity = jAppearanceData[3].Value("Opacity"); + byte makeup = jAppearanceData[4].Value("Value"); + float makeupOpacity = jAppearanceData[4].Value("Opacity"); + byte blush = jAppearanceData[5].Value("Value"); + float blushOpacity = jAppearanceData[5].Value("Opacity"); + byte complexion = jAppearanceData[6].Value("Value"); + float complexionOpacity = jAppearanceData[6].Value("Opacity"); + byte sunDamage = jAppearanceData[7].Value("Value"); + float sunDamageOpacity = jAppearanceData[7].Value("Opacity"); + byte lipstick = jAppearanceData[8].Value("Value"); + float lipstickOpacity = jAppearanceData[8].Value("Opacity"); + byte freckles = jAppearanceData[9].Value("Value"); + float frecklesOpacity = jAppearanceData[9].Value("Opacity"); + byte chestHair = jAppearanceData[10].Value("Value"); + float chestHairOpacity = jAppearanceData[10].Value("Opacity"); + + byte hair = jHairAndColorData.Value(0); + byte hairColor = jHairAndColorData.Value(1); + byte hairHighlightColor = jHairAndColorData.Value(2); + byte eyebrowColor = jHairAndColorData.Value(3); + byte beardColor = jHairAndColorData.Value(4); + byte eyeColor = jHairAndColorData.Value(5); + byte blushColor = jHairAndColorData.Value(6); + byte lipstickColor = jHairAndColorData.Value(7); + byte chestHairColor = jHairAndColorData.Value(8); + + using (var saveCharacter = new DatabaseContext()) + { + var character = new Database.Entities.Character { - if (gender == 0) player.SetSkin(PedHash.FreemodeMale01); - else player.SetSkin(PedHash.FreemodeFemale01); + UserId = player.GetUser().Id, + Gender = gender, + Father = father, + Mother = mother, + Similarity = similarity, + SkinSimilarity = skinSimilarity, + + NoseWidth = noseWidth, + NoseBottomHeight = noseBottomHeight, + NoseTipLength = noseTipLength, + NoseBridgeDepth = noseBridgeDepth, + NoseTipHeight = noseTipHeight, + NoseBroken = noseBroken, + BrowHeight = browHeight, + BrowDepth = browDepth, + CheekboneHeight = cheekboneHeight, + CheekboneWidth = cheekboneWidth, + CheekDepth = cheekDepth, + EyeSize = eyeSize, + LipThickness = lipThickness, + JawWidth = jawWidth, + JawShape = jawShape, + ChinHeight = chinHeight, + ChinDepth = chinDepth, + ChinWidth = chinWidth, + ChinIndent = chinIndent, + NeckWidth = neckWidth, + + Blemishes = blemishes, + BlemishesOpacity = blemishesOpacity, + FacialHair = facialHair, + FacialHairOpacity = facialHairOpacity, + Eyebrows = eyebrows, + EyebrowsOpacity = eyebrowsOpacity, + Ageing = ageing, + AgeingOpacity = ageingOpacity, + Makeup = makeup, + MakeupOpacity = makeupOpacity, + Blush = blush, + BlushOpacity = blushOpacity, + Complexion = complexion, + ComplexionOpacity = complexionOpacity, + SunDamage = sunDamage, + SunDamageOpacity = sunDamageOpacity, + Lipstick = lipstick, + LipstickOpacity = lipstickOpacity, + Freckles = freckles, + FrecklesOpacity = frecklesOpacity, + ChestHair = chestHair, + ChestHairOpacity = chestHairOpacity, + + Hair = hair, + HairColor = hairColor, + HairHighlightColor = hairHighlightColor, + EyebrowColor = eyebrowColor, + BeardColor = beardColor, + EyeColor = eyeColor, + BlushColor = blushColor, + LipstickColor = lipstickColor, + ChestHairColor = chestHairColor + }; + + saveCharacter.Characters.Add(character); + saveCharacter.SaveChanges(); + + var userId = player.GetUser().Id; + var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId); + + user.CharacterId = character.Id; + saveCharacter.SaveChanges(); + } + //HeadOverlay makeupHo = new HeadOverlay() + //{ + // Index = 0, + // Opacity = 0.0f, + // Color = 0, + // SecondaryColor = 0 + //}; + //HeadOverlay blushHo = new HeadOverlay() + //{ + // Index = 0, + // Opacity = 0.0f, + // Color = 0, + // SecondaryColor = 0 + //}; + //player.SetHeadOverlay(4, makeupHo); + //player.SetHeadOverlay(5, blushHo); + NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); + player.TriggerEvent("draw", player.Name, player.Handle.Value); + player.Dimension = 0; + } + + /// + /// Wendet den Character eines Spielers auf diesen an + /// + /// Der Player, dessen Aussehen man setzen will + public static void ApplyCharacter(Player player) + { + var user = player.GetUser(); + using (var loadCharacter = new DatabaseContext()) + { + var character = loadCharacter.Characters.SingleOrDefault(c => c.Id == user.CharacterId); + + if (character == null) return; + + //Männlich / Weiblich + if (character.Gender == false) + { + player.SetSkin(PedHash.FreemodeMale01); + } + else + { + player.SetSkin(PedHash.FreemodeFemale01); } - [RemoteEvent("creatorSave")] - public void CreatorSave(Player player, bool gender, string parentData, string featureData, string appearanceData, string hairAndColorData) - { - var jParentData = JObject.Parse(parentData); - var jFeatureData = JArray.Parse(featureData); - var jAppearanceData = JArray.Parse(appearanceData); - var jHairAndColorData = JArray.Parse(hairAndColorData); - - byte father = jParentData.Value("Father"); - byte mother = jParentData.Value("Mother"); - float similarity = jParentData.Value("Similarity"); - float skinSimilarity = jParentData.Value("SkinSimilarity"); - - float noseWidth = jFeatureData.Value(0); - float noseBottomHeight = jFeatureData.Value(1); - float noseTipLength = jFeatureData.Value(2); - float noseBridgeDepth = jFeatureData.Value(3); - float noseTipHeight = jFeatureData.Value(4); - float noseBroken = jFeatureData.Value(5); - float browHeight = jFeatureData.Value(6); - float browDepth = jFeatureData.Value(7); - float cheekboneHeight = jFeatureData.Value(8); - float cheekboneWidth = jFeatureData.Value(9); - float cheekDepth = jFeatureData.Value(10); - float eyeSize = jFeatureData.Value(11); - float lipThickness = jFeatureData.Value(12); - float jawWidth = jFeatureData.Value(13); - float jawShape = jFeatureData.Value(14); - float chinHeight = jFeatureData.Value(15); - float chinDepth = jFeatureData.Value(16); - float chinWidth = jFeatureData.Value(17); - float chinIndent = jFeatureData.Value(18); - float neckWidth = jFeatureData.Value(19); - - byte blemishes = jAppearanceData[0].Value("Value"); - float blemishesOpacity = jAppearanceData[0].Value("Opacity"); - byte facialHair = jAppearanceData[1].Value("Value"); - float facialHairOpacity = jAppearanceData[1].Value("Opacity"); - byte eyebrows = jAppearanceData[2].Value("Value"); - float eyebrowsOpacity = jAppearanceData[2].Value("Opacity"); - byte ageing = jAppearanceData[3].Value("Value"); - float ageingOpacity = jAppearanceData[3].Value("Opacity"); - byte makeup = jAppearanceData[4].Value("Value"); - float makeupOpacity = jAppearanceData[4].Value("Opacity"); - byte blush = jAppearanceData[5].Value("Value"); - float blushOpacity = jAppearanceData[5].Value("Opacity"); - byte complexion = jAppearanceData[6].Value("Value"); - float complexionOpacity = jAppearanceData[6].Value("Opacity"); - byte sunDamage = jAppearanceData[7].Value("Value"); - float sunDamageOpacity = jAppearanceData[7].Value("Opacity"); - byte lipstick = jAppearanceData[8].Value("Value"); - float lipstickOpacity = jAppearanceData[8].Value("Opacity"); - byte freckles = jAppearanceData[9].Value("Value"); - float frecklesOpacity = jAppearanceData[9].Value("Opacity"); - byte chestHair = jAppearanceData[10].Value("Value"); - float chestHairOpacity = jAppearanceData[10].Value("Opacity"); - - byte hair = jHairAndColorData.Value(0); - byte hairColor = jHairAndColorData.Value(1); - byte hairHighlightColor = jHairAndColorData.Value(2); - byte eyebrowColor = jHairAndColorData.Value(3); - byte beardColor = jHairAndColorData.Value(4); - byte eyeColor = jHairAndColorData.Value(5); - byte blushColor = jHairAndColorData.Value(6); - byte lipstickColor = jHairAndColorData.Value(7); - byte chestHairColor = jHairAndColorData.Value(8); - - using (var saveCharacter = new DatabaseContext()) - { - var character = new Database.Entities.Character - { - UserId = player.GetUser().Id, - Gender = gender, - Father = father, - Mother = mother, - Similarity = similarity, - SkinSimilarity = skinSimilarity, - - NoseWidth = noseWidth, - NoseBottomHeight = noseBottomHeight, - NoseTipLength = noseTipLength, - NoseBridgeDepth = noseBridgeDepth, - NoseTipHeight = noseTipHeight, - NoseBroken = noseBroken, - BrowHeight = browHeight, - BrowDepth = browDepth, - CheekboneHeight = cheekboneHeight, - CheekboneWidth = cheekboneWidth, - CheekDepth = cheekDepth, - EyeSize = eyeSize, - LipThickness = lipThickness, - JawWidth = jawWidth, - JawShape = jawShape, - ChinHeight = chinHeight, - ChinDepth = chinDepth, - ChinWidth = chinWidth, - ChinIndent = chinIndent, - NeckWidth = neckWidth, - - Blemishes = blemishes, - BlemishesOpacity = blemishesOpacity, - FacialHair = facialHair, - FacialHairOpacity = facialHairOpacity, - Eyebrows = eyebrows, - EyebrowsOpacity = eyebrowsOpacity, - Ageing = ageing, - AgeingOpacity = ageingOpacity, - Makeup = makeup, - MakeupOpacity = makeupOpacity, - Blush = blush, - BlushOpacity = blushOpacity, - Complexion = complexion, - ComplexionOpacity = complexionOpacity, - SunDamage = sunDamage, - SunDamageOpacity = sunDamageOpacity, - Lipstick = lipstick, - LipstickOpacity = lipstickOpacity, - Freckles = freckles, - FrecklesOpacity = frecklesOpacity, - ChestHair = chestHair, - ChestHairOpacity = chestHairOpacity, - - Hair = hair, - HairColor = hairColor, - HairHighlightColor = hairHighlightColor, - EyebrowColor = eyebrowColor, - BeardColor = beardColor, - EyeColor = eyeColor, - BlushColor = blushColor, - LipstickColor = lipstickColor, - ChestHairColor = chestHairColor - }; - - saveCharacter.Characters.Add(character); - saveCharacter.SaveChanges(); - - var userId = player.GetUser().Id; - var user = saveCharacter.Users.SingleOrDefault(u => u.Id == userId); - - user.CharacterId = character.Id; - saveCharacter.SaveChanges(); - } - //HeadOverlay makeupHo = new HeadOverlay() - //{ - // Index = 0, - // Opacity = 0.0f, - // Color = 0, - // SecondaryColor = 0 - //}; - //HeadOverlay blushHo = new HeadOverlay() - //{ - // Index = 0, - // Opacity = 0.0f, - // Color = 0, - // SecondaryColor = 0 - //}; - //player.SetHeadOverlay(4, makeupHo); - //player.SetHeadOverlay(5, blushHo); - NAPI.Player.SpawnPlayer(player, Main.DEFAULT_SPAWN_POSITION, Main.DEFAULT_SPAWN_HEADING); - player.TriggerEvent("draw", player.Name, player.Handle.Value); - player.Dimension = 0; - } - - /// - /// Wendet den Character eines Spielers auf diesen an - /// - /// Der Player, dessen Aussehen man setzen will - public static void ApplyCharacter(Player player) - { - var user = player.GetUser(); - using (var loadCharacter = new DatabaseContext()) - { - var character = loadCharacter.Characters.SingleOrDefault(c => c.Id == user.CharacterId); - - if (character == null) return; - - //Männlich / Weiblich - if (character.Gender == false) - { - player.SetSkin(PedHash.FreemodeMale01); - } - else - { - player.SetSkin(PedHash.FreemodeFemale01); - } - - //Gesichtszüge - float[] faceFeatures = new float[] { character.NoseWidth, character.NoseBottomHeight, character.NoseTipLength, character.NoseBridgeDepth, character.NoseTipHeight, + //Gesichtszüge + float[] faceFeatures = new float[] { character.NoseWidth, character.NoseBottomHeight, character.NoseTipLength, character.NoseBridgeDepth, character.NoseTipHeight, character.NoseBroken, character.BrowHeight, character.BrowDepth, character.CheekboneHeight, character.CheekboneWidth, character.CheekboneWidth, character.CheekDepth, character.EyeSize, character.LipThickness, character.JawWidth, character.JawShape, character.ChinHeight, character.ChinDepth, character.ChinWidth, character.ChinIndent, character.NeckWidth }; - for (var i = 0; i < faceFeatures.Length; i++) - { - player.SetFaceFeature(i, faceFeatures[i]); - } - - //Gesichtsmerkmale - HeadOverlay blemishes = new HeadOverlay() - { - Index = character.Blemishes, - Opacity = character.BlemishesOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay facialHair = new HeadOverlay() - { - Index = character.FacialHair, - Opacity = character.FacialHairOpacity, - Color = character.BeardColor, - SecondaryColor = 255 - }; - HeadOverlay eyebrows = new HeadOverlay() - { - Index = character.Eyebrows, - Opacity = character.EyebrowsOpacity, - Color = character.EyebrowColor, - SecondaryColor = 255 - }; - HeadOverlay ageing = new HeadOverlay() - { - Index = character.Ageing, - Opacity = character.AgeingOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay makeup = new HeadOverlay() - { - Index = character.Makeup, - Opacity = character.MakeupOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay blush = new HeadOverlay() - { - Index = character.Blush, - Opacity = character.BlushOpacity, - Color = character.BlushColor, - SecondaryColor = 255 - }; - HeadOverlay complexion = new HeadOverlay() - { - Index = character.Complexion, - Opacity = character.ComplexionOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay sunDamage = new HeadOverlay() - { - Index = character.SunDamage, - Opacity = character.SunDamageOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay lipstick = new HeadOverlay() - { - Index = character.Lipstick, - Opacity = character.LipstickOpacity, - Color = character.LipstickColor, - SecondaryColor = 255 - }; - HeadOverlay freckles = new HeadOverlay() - { - Index = character.Freckles, - Opacity = character.FrecklesOpacity, - Color = 255, - SecondaryColor = 255 - }; - HeadOverlay chestHair = new HeadOverlay() - { - Index = character.ChestHair, - Opacity = character.ChestHairOpacity, - Color = character.ChestHairColor, - SecondaryColor = 255 - }; - - player.SetHeadOverlay(0, blemishes); - player.SetHeadOverlay(1, facialHair); - player.SetHeadOverlay(2, eyebrows); - player.SetHeadOverlay(3, ageing); - player.SetHeadOverlay(4, makeup); - player.SetHeadOverlay(5, blush); - player.SetHeadOverlay(6, complexion); - player.SetHeadOverlay(7, sunDamage); - player.SetHeadOverlay(8, lipstick); - player.SetHeadOverlay(9, freckles); - player.SetHeadOverlay(10, chestHair); - player.SetHeadOverlay(11, blemishes); - player.SetHeadOverlay(12, blemishes); - - //Gesicht (Vererbung durch Mutter / Vater) - HeadBlend headBlend = new HeadBlend() - { - ShapeFirst = character.Mother, - ShapeSecond = character.Father, - ShapeThird = 0, - SkinFirst = character.Mother, - SkinSecond = character.Father, - SkinThird = 0, - ShapeMix = character.Similarity, - SkinMix = character.SkinSimilarity, - ThirdMix = 0.0f - }; - NAPI.Player.SetPlayerHeadBlend(player, headBlend); - - //Haare und Haarfarbe - player.SetClothes(2, character.Hair, 0); - NAPI.Player.SetPlayerHairColor(player, character.HairColor, character.HairHighlightColor); - - //Augenfarbe - NAPI.Player.SetPlayerEyeColor(player, character.EyeColor); - } + for (var i = 0; i < faceFeatures.Length; i++) + { + player.SetFaceFeature(i, faceFeatures[i]); } + + //Gesichtsmerkmale + HeadOverlay blemishes = new HeadOverlay() + { + Index = character.Blemishes, + Opacity = character.BlemishesOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay facialHair = new HeadOverlay() + { + Index = character.FacialHair, + Opacity = character.FacialHairOpacity, + Color = character.BeardColor, + SecondaryColor = 255 + }; + HeadOverlay eyebrows = new HeadOverlay() + { + Index = character.Eyebrows, + Opacity = character.EyebrowsOpacity, + Color = character.EyebrowColor, + SecondaryColor = 255 + }; + HeadOverlay ageing = new HeadOverlay() + { + Index = character.Ageing, + Opacity = character.AgeingOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay makeup = new HeadOverlay() + { + Index = character.Makeup, + Opacity = character.MakeupOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay blush = new HeadOverlay() + { + Index = character.Blush, + Opacity = character.BlushOpacity, + Color = character.BlushColor, + SecondaryColor = 255 + }; + HeadOverlay complexion = new HeadOverlay() + { + Index = character.Complexion, + Opacity = character.ComplexionOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay sunDamage = new HeadOverlay() + { + Index = character.SunDamage, + Opacity = character.SunDamageOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay lipstick = new HeadOverlay() + { + Index = character.Lipstick, + Opacity = character.LipstickOpacity, + Color = character.LipstickColor, + SecondaryColor = 255 + }; + HeadOverlay freckles = new HeadOverlay() + { + Index = character.Freckles, + Opacity = character.FrecklesOpacity, + Color = 255, + SecondaryColor = 255 + }; + HeadOverlay chestHair = new HeadOverlay() + { + Index = character.ChestHair, + Opacity = character.ChestHairOpacity, + Color = character.ChestHairColor, + SecondaryColor = 255 + }; + + player.SetHeadOverlay(0, blemishes); + player.SetHeadOverlay(1, facialHair); + player.SetHeadOverlay(2, eyebrows); + player.SetHeadOverlay(3, ageing); + player.SetHeadOverlay(4, makeup); + player.SetHeadOverlay(5, blush); + player.SetHeadOverlay(6, complexion); + player.SetHeadOverlay(7, sunDamage); + player.SetHeadOverlay(8, lipstick); + player.SetHeadOverlay(9, freckles); + player.SetHeadOverlay(10, chestHair); + player.SetHeadOverlay(11, blemishes); + player.SetHeadOverlay(12, blemishes); + + //Gesicht (Vererbung durch Mutter / Vater) + HeadBlend headBlend = new HeadBlend() + { + ShapeFirst = character.Mother, + ShapeSecond = character.Father, + ShapeThird = 0, + SkinFirst = character.Mother, + SkinSecond = character.Father, + SkinThird = 0, + ShapeMix = character.Similarity, + SkinMix = character.SkinSimilarity, + ThirdMix = 0.0f + }; + NAPI.Player.SetPlayerHeadBlend(player, headBlend); + + //Haare und Haarfarbe + player.SetClothes(2, character.Hair, 0); + NAPI.Player.SetPlayerHairColor(player, character.HairColor, character.HairHighlightColor); + + //Augenfarbe + NAPI.Player.SetPlayerEyeColor(player, character.EyeColor); + } } + } } diff --git a/ReallifeGamemode.Server/Managers/DoorManager.cs b/ReallifeGamemode.Server/Managers/DoorManager.cs index 35e44bb7..45c661a5 100644 --- a/ReallifeGamemode.Server/Managers/DoorManager.cs +++ b/ReallifeGamemode.Server/Managers/DoorManager.cs @@ -15,71 +15,71 @@ using ReallifeGamemode.Server.Types; namespace ReallifeGamemode.Server.Managers { public class DoorManager : Script + { + private static Dictionary _doorColShapes = new Dictionary(); + + public static void LoadDoors() { - private static Dictionary _doorColShapes = new Dictionary(); - - public static void LoadDoors() + using (var dbContext = new DatabaseContext()) + { + foreach (Door door in dbContext.Doors) { - using (var dbContext = new DatabaseContext()) - { - foreach (Door door in dbContext.Doors) - { - _doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, 30f); - } - } - } - - public static void ReloadDoors() - { - foreach (var doorPair in _doorColShapes) - { - doorPair.Value.Entity().Delete(); - } - _doorColShapes.Clear(); - LoadDoors(); - } - - public static void ChangeDoorState(Player player) - { - var user = player.GetUser(); - - using (var dbContext = new DatabaseContext()) - { - IQueryable NearDoors = dbContext.Doors.Where(d => d.Position.DistanceTo(player.Position) <= d.Radius); - foreach (Door d in NearDoors) - { - if (!user.IsAdmin(AdminLevel.ADMIN) && (d.FactionId != user.FactionId || d.FactionId == null)) - { - string lockState = "~r~Du hast kein Recht diese T\u00fcr " + (d.Locked == true ? "auf" : "ab") + "zuschlie\u00dfen!"; - player.SendNotification(lockState, true); - continue; - } - - d.Locked = !d.Locked; - - string notStr = d.Name + " " + (d.Locked == false ? "~g~auf" : "~r~ab") + "geschlossen"; - - player.SendNotification(notStr, true); - - NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f)); - } - dbContext.SaveChanges(); - } - } - - [ServerEvent(Event.PlayerEnterColshape)] - public void DoorManagerPlayerEnterColShapeEvent(ColShape colShape, Player player) - { - if (_doorColShapes.ContainsValue(colShape.Handle)) - { - int doorId = _doorColShapes.Where(d => d.Value.Value == colShape.Handle.Value).FirstOrDefault().Key; - - using (var dbContext = new DatabaseContext()) - { - Door door = dbContext.Doors.Where(d => d.Id == doorId).First(); - player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f); - } - } + _doorColShapes[door.Id] = NAPI.ColShape.CreateSphereColShape(door.Position, 30f); } + } } + + public static void ReloadDoors() + { + foreach (var doorPair in _doorColShapes) + { + doorPair.Value.Entity().Delete(); + } + _doorColShapes.Clear(); + LoadDoors(); + } + + public static void ChangeDoorState(Player player) + { + var user = player.GetUser(); + + using (var dbContext = new DatabaseContext()) + { + IQueryable NearDoors = dbContext.Doors.Where(d => d.Position.DistanceTo(player.Position) <= d.Radius); + foreach (Door d in NearDoors) + { + if (!user.IsAdmin(AdminLevel.ADMIN) && (d.FactionId != user.FactionId || d.FactionId == null)) + { + string lockState = "~r~Du hast kein Recht diese T\u00fcr " + (d.Locked == true ? "auf" : "ab") + "zuschlie\u00dfen!"; + player.SendNotification(lockState, true); + continue; + } + + d.Locked = !d.Locked; + + string notStr = d.Name + " " + (d.Locked == false ? "~g~auf" : "~r~ab") + "geschlossen"; + + player.SendNotification(notStr, true); + + NAPI.Pools.GetAllPlayers().ForEach(p => p.TriggerEvent("changeDoorState", d.Model, d.X, d.Y, d.Z, (d.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f)); + } + dbContext.SaveChanges(); + } + } + + [ServerEvent(Event.PlayerEnterColshape)] + public void DoorManagerPlayerEnterColShapeEvent(ColShape colShape, Player player) + { + if (_doorColShapes.ContainsValue(colShape.Handle)) + { + int doorId = _doorColShapes.Where(d => d.Value.Value == colShape.Handle.Value).FirstOrDefault().Key; + + using (var dbContext = new DatabaseContext()) + { + Door door = dbContext.Doors.Where(d => d.Id == doorId).First(); + player.TriggerEvent("changeDoorState", door.Model, door.X, door.Y, door.Z, (door.Locked ? 1 : 0), 0.0f, 0.0f, 0.0f); + } + } + } + } } diff --git a/ReallifeGamemode.Server/Managers/JobManager.cs b/ReallifeGamemode.Server/Managers/JobManager.cs index 487bd9f1..6a32d06f 100644 --- a/ReallifeGamemode.Server/Managers/JobManager.cs +++ b/ReallifeGamemode.Server/Managers/JobManager.cs @@ -15,320 +15,320 @@ using ReallifeGamemode.Services; namespace ReallifeGamemode.Server.Managers { public class JobManager : Script + { + private static List _jobs = new List(); + + public static void LoadJobs() { - private static List _jobs = new List(); + IEnumerable jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract); - public static void LoadJobs() + foreach (var type in jobTypes) + { + var instance = Activator.CreateInstance(type) as JobBase; + if (GetJob(instance.Id) != null) { - IEnumerable jobTypes = Assembly.GetExecutingAssembly().GetTypes().Where(t => t.IsSubclassOf(typeof(JobBase)) && !t.IsAbstract); - - foreach (var type in jobTypes) - { - var instance = Activator.CreateInstance(type) as JobBase; - if (GetJob(instance.Id) != null) - { - throw new InvalidOperationException($"Double Job ID found: {instance.Id} | {instance.Name}"); - } - _jobs.Add(instance); - NAPI.Util.ConsoleOutput($"Loading job {instance.Name}"); - } - NAPI.Util.ConsoleOutput($"Loaded {_jobs.Count} jobs"); - } - - public static JobBase GetJob(int id) => _jobs.Where(j => j.Id == id).FirstOrDefault(); - - public static T GetJob() where T : JobBase - { - return _jobs.Where(j => j.GetType() == typeof(T)).FirstOrDefault() as T; - } - - public static List GetJobs() => _jobs.OrderBy(j => j.Id).ToList(); - - [RemoteEvent("CLIENT:JobCenter_CancelJob")] - public void CancelJobEvent(Player player) - { - using (var dbContext = new DatabaseContext()) - { - User u = player.GetUser(dbContext); - - if (u == null) return; - - if (u.JobId == null) - { - ChatService.ErrorMessage(player, "Du hast momentan keinen Job, den du kündigen könntest."); - return; - } - - u.JobId = null; - - ChatService.SendMessage(player, "~y~[JOBCENTER]~s~ Du hast deinen Job erfolgreich gekündigt."); - - dbContext.SaveChanges(); - } - } - - [RemoteEvent("CLIENT:JobCenter_AcceptJob")] - public void AcceptJobEvent(Player player, int jobId) - { - using (var dbContext = new DatabaseContext()) - { - User u = player.GetUser(dbContext); - - if (u == null) return; - - if (u.JobId != null) - { - ChatService.ErrorMessage(player, "Du musst deinen alten Job kündigen, bevor du einen neuen ausüben kannst"); - return; - } - - JobBase job = JobManager.GetJob(jobId); - - if (job == null) - { - ChatService.ErrorMessage(player, "Bei der Job-Annahme ist ein Fehler aufgetretet: Dieser Job wurde nicht gefunden"); - return; - } - - ChatService.SendMessage(player, $"~y~[JOBCENTER]~s~ Du hast erfolgreich deinen neuen Job: ~o~{job.Name}~s~ angenommen."); - - u.JobId = jobId; - - dbContext.SaveChanges(); - } - } - - [RemoteEvent("CLIENT:JobManager_ShowJobMenu")] - public void ShowJobMenuEvent(Player player) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - dynamic data = null; - - if (job.Id == 1 && job.GetUsersInJob().Contains(player)) - { - var taxiCalls = JobManager.GetJob().TaxiContracts; - if (!taxiCalls.Any(t => t.Driver?.Handle == player.Handle)) // Spieler in keiner aktiven Fahrt - { - data = new - { - job.Id, - Status = 0, - JobData = new - { - TaxiCalls = taxiCalls - .Where(t => t.Driver == null) - .Select(t => new - { - t.Name, - Distance = Math.Round(t.Position.DistanceTo(player.Position), 0) - }) - .OrderBy(t => t.Distance) - } - }; - } - else // Spieler in aktiver Fahrt - { - data = new - { - job.Id, - Status = 1, - JobData = new - { - taxiCalls.Where(t => t.Driver.Handle == player.Handle).First().Name - } - }; - } - } - JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2); - if (nearJobPoint == null && u.JobId == 2) return; - - var json = JsonConvert.SerializeObject(data); - - player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name, json); - } - - [RemoteEvent("CLIENT:Job_StartJob")] - public void StartJobEvent(Player player) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - if (job.GetUsersInJob().Contains(player)) - { - ChatService.ErrorMessage(player, "Du bist schon in deinem Job aktiv"); - return; - } - - if (job.NeedVehicleToStart && !job.GetJobVehicles().Any(v => v.GetVehicle().Handle.Value == player.Vehicle?.Handle.Value)) - { - ChatService.ErrorMessage(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein"); - return; - } - - job.StartJob(player); - } - - [RemoteEvent("CLIENT:Job_StopJob")] - public void StopJob(Player player) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - if (!job.GetUsersInJob().Contains(player)) - { - ChatService.ErrorMessage(player, "Du führst deinen Job momentan nicht aus"); - return; - } - - if (job.NeedVehicleToStart && player.Vehicle != null) - { - VehicleStreaming.SetEngineState(player.Vehicle, false); - } - - job.StopJob(player); - } - - [ServerEvent(Event.PlayerExitVehicle)] - public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) - { - User u = player.GetUser(); - - if (u.JobId == null) return; - - JobBase job = GetJob(u.JobId.Value); - - if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart) - { - job.StopJob(player); - return; - } - } - - [ServerEvent(Event.PlayerEnterVehicle)] - public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat) - { - if (seat == 0) return; - ServerVehicle sVeh = veh.GetServerVehicle(); - if (sVeh == null) return; - if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein - { - var taxiJob = JobManager.GetJob(); - - Player driver = veh.GetDriver(); - if (!driver.HasData("DriverPrice")) return; - int taxiPrice = driver.GetData("DriverPrice"); - float km = 0; - if (!driver.HasData("FareKm")) { driver.SetData("FareKm", km); } - km = driver.GetData("FareKm"); - if (driver.HasData("Passager")) return; - driver.SetData("Passager", player.GetUser().Id); - driver.SetData("hasPassager", true); - using (var dbContext = new DatabaseContext()) - { - User contractUser = player.GetUser(dbContext); - contractUser.Handmoney -= (int)Math.Round(km * taxiPrice); - dbContext.SaveChanges(); - contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney); - } - player.TriggerEvent("CLIENT:startCustomerFare", taxiPrice, km); - - var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name); - if (taxiContracts.Count() == 0) return; - - var contract = taxiContracts.First(); - taxiJob.TaxiContracts.Remove(contract); - - if (driver != null && contract.Driver != null && contract.Driver.Handle != veh.GetDriver().Handle) - { - ChatService.SendMessage(contract.Driver, $"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet."); - ChatService.SendMessage(player, $"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet."); - } - } - } - - [ServerEvent(Event.PlayerEnterVehicleAttempt)] - private void JobManagerEnterVehicleAttempt(Player player, Vehicle vehicle, sbyte seat) - { - if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerEnterVehicle(player, vehicle, seat); } - } - - [ServerEvent(Event.PlayerDeath)] - private void JobManagerOnPlayerDeath(Player player, Player killer, uint reason) - { - if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDeath(player); } - } - - [ServerEvent(Event.PlayerDisconnected)] - private void JobManagerOnPlayerDisconnect(Player player, DisconnectionType type, string reason) - { - if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDc(player); } - } - - [ServerEvent(Event.PlayerExitVehicle)] - public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh) - { - ServerVehicle sVeh = veh.GetServerVehicle(); - if (sVeh == null) return; - if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt vom Taxi aus - { - var taxiJob = JobManager.GetJob(); - if (veh.Occupants.Count == 0) return; - Player driver = veh.GetDriver(); - if (driver == null) return; - if (player.GetUser().Id != driver.GetData("Passager")) { player.TriggerEvent("CLIENT:cancelFare"); return; } - player.TriggerEvent("CLIENT:cancelFareCustomer"); - driver.TriggerEvent("CLIENT:resetFareClock"); - driver.ResetData("Passager"); - driver.ResetData("hasPassager"); - driver.SetData("FareKm", 0); - foreach (Player occupant in veh.Occupants) - { - if (occupant == driver) continue; - occupant.WarpOutOfVehicle(); - } - } - } - - [RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")] - public void TaxiJobAcceptCall(Player player, string name) - { - var taxiJob = JobManager.GetJob(); - - if (!taxiJob.TaxiContracts.Any(t => t.Name == name)) - { - ChatService.ErrorMessage(player, "Dieser Spieler hat kein Taxi gerufen oder der Auftrag ist nicht mehr aktuell"); - return; - } - - var job = taxiJob.TaxiContracts.Where(t => t.Name == name).First(); - - var target = PlayerService.GetPlayerByNameOrId(name); - if (target == null) - { - taxiJob.TaxiContracts.Remove(job); - ChatService.ErrorMessage(player, "Dieser Spieler ist nicht mehr online"); - return; - } - - job.Driver = player; - - player.TriggerEvent("SERVER:Util_setWaypoint", target.Position.X, target.Position.Y); - player.SetData("hasPassager", true); - - ChatService.SendMessage(target, $"!{{02FCFF}}Dein Auftrag wurde von {player.Name} angenommen. Warte an deiner aktuellen Position."); - ChatService.SendMessage(target, $"!{{02FCFF}}Für die Anfahrt fallen zusätzlich Kosten auf."); - ChatService.SendMessage(player, $"!{{02FCFF}}Du hast den Auftrag von {name} angenommen. Hole ihn nun ab."); + throw new InvalidOperationException($"Double Job ID found: {instance.Id} | {instance.Name}"); } + _jobs.Add(instance); + NAPI.Util.ConsoleOutput($"Loading job {instance.Name}"); + } + NAPI.Util.ConsoleOutput($"Loaded {_jobs.Count} jobs"); } + + public static JobBase GetJob(int id) => _jobs.Where(j => j.Id == id).FirstOrDefault(); + + public static T GetJob() where T : JobBase + { + return _jobs.Where(j => j.GetType() == typeof(T)).FirstOrDefault() as T; + } + + public static List GetJobs() => _jobs.OrderBy(j => j.Id).ToList(); + + [RemoteEvent("CLIENT:JobCenter_CancelJob")] + public void CancelJobEvent(Player player) + { + using (var dbContext = new DatabaseContext()) + { + User u = player.GetUser(dbContext); + + if (u == null) return; + + if (u.JobId == null) + { + ChatService.ErrorMessage(player, "Du hast momentan keinen Job, den du kündigen könntest."); + return; + } + + u.JobId = null; + + ChatService.SendMessage(player, "~y~[JOBCENTER]~s~ Du hast deinen Job erfolgreich gekündigt."); + + dbContext.SaveChanges(); + } + } + + [RemoteEvent("CLIENT:JobCenter_AcceptJob")] + public void AcceptJobEvent(Player player, int jobId) + { + using (var dbContext = new DatabaseContext()) + { + User u = player.GetUser(dbContext); + + if (u == null) return; + + if (u.JobId != null) + { + ChatService.ErrorMessage(player, "Du musst deinen alten Job kündigen, bevor du einen neuen ausüben kannst"); + return; + } + + JobBase job = JobManager.GetJob(jobId); + + if (job == null) + { + ChatService.ErrorMessage(player, "Bei der Job-Annahme ist ein Fehler aufgetretet: Dieser Job wurde nicht gefunden"); + return; + } + + ChatService.SendMessage(player, $"~y~[JOBCENTER]~s~ Du hast erfolgreich deinen neuen Job: ~o~{job.Name}~s~ angenommen."); + + u.JobId = jobId; + + dbContext.SaveChanges(); + } + } + + [RemoteEvent("CLIENT:JobManager_ShowJobMenu")] + public void ShowJobMenuEvent(Player player) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + dynamic data = null; + + if (job.Id == 1 && job.GetUsersInJob().Contains(player)) + { + var taxiCalls = JobManager.GetJob().TaxiContracts; + if (!taxiCalls.Any(t => t.Driver?.Handle == player.Handle)) // Spieler in keiner aktiven Fahrt + { + data = new + { + job.Id, + Status = 0, + JobData = new + { + TaxiCalls = taxiCalls + .Where(t => t.Driver == null) + .Select(t => new + { + t.Name, + Distance = Math.Round(t.Position.DistanceTo(player.Position), 0) + }) + .OrderBy(t => t.Distance) + } + }; + } + else // Spieler in aktiver Fahrt + { + data = new + { + job.Id, + Status = 1, + JobData = new + { + taxiCalls.Where(t => t.Driver.Handle == player.Handle).First().Name + } + }; + } + } + JobPoint nearJobPoint = PositionManager.jobPoints.Find(p => p.Position.DistanceTo(player.Position) <= 2); + if (nearJobPoint == null && u.JobId == 2) return; + + var json = JsonConvert.SerializeObject(data); + + player.TriggerEvent("SERVER:Job_ShowJobMenu", job.Name, json); + } + + [RemoteEvent("CLIENT:Job_StartJob")] + public void StartJobEvent(Player player) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + if (job.GetUsersInJob().Contains(player)) + { + ChatService.ErrorMessage(player, "Du bist schon in deinem Job aktiv"); + return; + } + + if (job.NeedVehicleToStart && !job.GetJobVehicles().Any(v => v.GetVehicle().Handle.Value == player.Vehicle?.Handle.Value)) + { + ChatService.ErrorMessage(player, "Zum Start dieses Jobs musst du in einem Jobfahrzeug sein"); + return; + } + + job.StartJob(player); + } + + [RemoteEvent("CLIENT:Job_StopJob")] + public void StopJob(Player player) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + if (!job.GetUsersInJob().Contains(player)) + { + ChatService.ErrorMessage(player, "Du führst deinen Job momentan nicht aus"); + return; + } + + if (job.NeedVehicleToStart && player.Vehicle != null) + { + VehicleStreaming.SetEngineState(player.Vehicle, false); + } + + job.StopJob(player); + } + + [ServerEvent(Event.PlayerExitVehicle)] + public void JobManagerPlayerExitVehicle(Player player, Vehicle veh) + { + User u = player.GetUser(); + + if (u.JobId == null) return; + + JobBase job = GetJob(u.JobId.Value); + + if (job.GetUsersInJob().Contains(player) && job.NeedVehicleToStart) + { + job.StopJob(player); + return; + } + } + + [ServerEvent(Event.PlayerEnterVehicle)] + public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh, sbyte seat) + { + if (seat == 0) return; + ServerVehicle sVeh = veh.GetServerVehicle(); + if (sVeh == null) return; + if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt in Taxi ein + { + var taxiJob = JobManager.GetJob(); + + Player driver = veh.GetDriver(); + if (!driver.HasData("DriverPrice")) return; + int taxiPrice = driver.GetData("DriverPrice"); + float km = 0; + if (!driver.HasData("FareKm")) { driver.SetData("FareKm", km); } + km = driver.GetData("FareKm"); + if (driver.HasData("Passager")) return; + driver.SetData("Passager", player.GetUser().Id); + driver.SetData("hasPassager", true); + using (var dbContext = new DatabaseContext()) + { + User contractUser = player.GetUser(dbContext); + contractUser.Handmoney -= (int)Math.Round(km * taxiPrice); + dbContext.SaveChanges(); + contractUser.Player.TriggerEvent("SERVER:SET_HANDMONEY", contractUser.Handmoney); + } + player.TriggerEvent("CLIENT:startCustomerFare", taxiPrice, km); + + var taxiContracts = taxiJob.TaxiContracts.Where(t => t.Name == player.Name); + if (taxiContracts.Count() == 0) return; + + var contract = taxiContracts.First(); + taxiJob.TaxiContracts.Remove(contract); + + if (driver != null && contract.Driver != null && contract.Driver.Handle != veh.GetDriver().Handle) + { + ChatService.SendMessage(contract.Driver, $"!{{02FCFF}}{player.Name} ist in ein Taxi eingestiegen, der Auftrag wurde beendet."); + ChatService.SendMessage(player, $"!{{02FCFF}}Du bist in ein Taxi eingestiegen, der Auftrag wurde beendet."); + } + } + } + + [ServerEvent(Event.PlayerEnterVehicleAttempt)] + private void JobManagerEnterVehicleAttempt(Player player, Vehicle vehicle, sbyte seat) + { + if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerEnterVehicle(player, vehicle, seat); } + } + + [ServerEvent(Event.PlayerDeath)] + private void JobManagerOnPlayerDeath(Player player, Player killer, uint reason) + { + if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDeath(player); } + } + + [ServerEvent(Event.PlayerDisconnected)] + private void JobManagerOnPlayerDisconnect(Player player, DisconnectionType type, string reason) + { + if (JobManager.GetJob().GetUsersInJob().Contains(player)) { JobManager.GetJob().MuellmannOnPlayerDc(player); } + } + + [ServerEvent(Event.PlayerExitVehicle)] + public void JobManagerPlayerEnterVehicle(Player player, Vehicle veh) + { + ServerVehicle sVeh = veh.GetServerVehicle(); + if (sVeh == null) return; + if (sVeh is JobVehicle jV && jV.JobId == 1) // Spieler steigt vom Taxi aus + { + var taxiJob = JobManager.GetJob(); + if (veh.Occupants.Count == 0) return; + Player driver = veh.GetDriver(); + if (driver == null) return; + if (player.GetUser().Id != driver.GetData("Passager")) { player.TriggerEvent("CLIENT:cancelFare"); return; } + player.TriggerEvent("CLIENT:cancelFareCustomer"); + driver.TriggerEvent("CLIENT:resetFareClock"); + driver.ResetData("Passager"); + driver.ResetData("hasPassager"); + driver.SetData("FareKm", 0); + foreach (Player occupant in veh.Occupants) + { + if (occupant == driver) continue; + occupant.WarpOutOfVehicle(); + } + } + } + + [RemoteEvent("CLIENT:JobManager_TaxiJob_AcceptCall")] + public void TaxiJobAcceptCall(Player player, string name) + { + var taxiJob = JobManager.GetJob(); + + if (!taxiJob.TaxiContracts.Any(t => t.Name == name)) + { + ChatService.ErrorMessage(player, "Dieser Spieler hat kein Taxi gerufen oder der Auftrag ist nicht mehr aktuell"); + return; + } + + var job = taxiJob.TaxiContracts.Where(t => t.Name == name).First(); + + var target = PlayerService.GetPlayerByNameOrId(name); + if (target == null) + { + taxiJob.TaxiContracts.Remove(job); + ChatService.ErrorMessage(player, "Dieser Spieler ist nicht mehr online"); + return; + } + + job.Driver = player; + + player.TriggerEvent("SERVER:Util_setWaypoint", target.Position.X, target.Position.Y); + player.SetData("hasPassager", true); + + ChatService.SendMessage(target, $"!{{02FCFF}}Dein Auftrag wurde von {player.Name} angenommen. Warte an deiner aktuellen Position."); + ChatService.SendMessage(target, $"!{{02FCFF}}Für die Anfahrt fallen zusätzlich Kosten auf."); + ChatService.SendMessage(player, $"!{{02FCFF}}Du hast den Auftrag von {name} angenommen. Hole ihn nun ab."); + } + } } diff --git a/ReallifeGamemode.Server/Managers/LoadManager.cs b/ReallifeGamemode.Server/Managers/LoadManager.cs index cc4aaddd..cd389753 100644 --- a/ReallifeGamemode.Server/Managers/LoadManager.cs +++ b/ReallifeGamemode.Server/Managers/LoadManager.cs @@ -13,29 +13,29 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class LoadManager : Script + { + [ServerEvent(Event.ResourceStart)] + public void OnResourceStart() { - [ServerEvent(Event.ResourceStart)] - public void OnResourceStart() + using (var dbContext = new DatabaseContext()) + { + foreach (SavedBlip b in dbContext.Blips) { - using (var dbContext = new DatabaseContext()) - { - foreach (SavedBlip b in dbContext.Blips) - { - if (b.Active == true) - { - NAPI.Blip.CreateBlip((uint)b.Sprite, new Vector3(b.PositionX, b.PositionY, b.PositionZ), b.Scale, - b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short)b.Rotation, b.Dimension); - } - } - - foreach (ServerVehicle veh in dbContext.ServerVehicles) - { - if (!veh.Active) continue; - - Vehicle current = veh.Spawn(); - TuningManager.ApplyTuningToServerVehicle(veh); - } - } + if (b.Active == true) + { + NAPI.Blip.CreateBlip((uint)b.Sprite, new Vector3(b.PositionX, b.PositionY, b.PositionZ), b.Scale, + b.Color, b.Name, b.Alpha, b.DrawDistance, b.ShortRange, (short)b.Rotation, b.Dimension); + } } + + foreach (ServerVehicle veh in dbContext.ServerVehicles) + { + if (!veh.Active) continue; + + Vehicle current = veh.Spawn(); + TuningManager.ApplyTuningToServerVehicle(veh); + } + } } + } } diff --git a/ReallifeGamemode.Server/Managers/PedManager.cs b/ReallifeGamemode.Server/Managers/PedManager.cs index d6ba37da..0a176366 100644 --- a/ReallifeGamemode.Server/Managers/PedManager.cs +++ b/ReallifeGamemode.Server/Managers/PedManager.cs @@ -10,7 +10,7 @@ namespace ReallifeGamemode.Server.Managers { public class PedManager : Script { - private List pedDatas = new List(); + private List pedDatas = new List(); public static List serverPeds = new List(); private static Dictionary> dataDict = new Dictionary>(); private void GetPedsFromDatabase() @@ -42,7 +42,7 @@ namespace ReallifeGamemode.Server.Managers if (!s.Active) continue; Vector3 vector3 = new Vector3(s.PositionX, s.PositionY, s.PositionZ); pedDatas.Add(new PedData(player, (DataType)s.Type, vector3, s.Heading, s.HashModel)); - + vector3s.Add(vector3); headings.Add(s.Heading); hashes.Add(s.HashModel); diff --git a/ReallifeGamemode.Server/Managers/SaveManager.cs b/ReallifeGamemode.Server/Managers/SaveManager.cs index 9fe32326..429e6a2f 100644 --- a/ReallifeGamemode.Server/Managers/SaveManager.cs +++ b/ReallifeGamemode.Server/Managers/SaveManager.cs @@ -10,195 +10,195 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Managers { public class SaveManager : Script + { + [RemoteEvent("OnSaveBlipData")] + public static void OnSaveBlipData(Player player, string blipSprite, string blipName, string blipScale, string blipColor, + string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension) { - [RemoteEvent("OnSaveBlipData")] - public static void OnSaveBlipData(Player player, string blipSprite, string blipName, string blipScale, string blipColor, - string blipAlpha, string blipDrawDistance, string blipShortRange, string blipRotation, string blipDimension) + float x = player.Position.X; + float y = player.Position.Y; + float z = player.Position.Z; + short sprite = short.Parse(blipSprite); + string name = blipName; + float scale = float.Parse(blipScale); + byte color = Convert.ToByte(blipColor); + byte alpha = Convert.ToByte(blipAlpha); + float drawDistance = float.Parse(blipDrawDistance); + bool shortRange = bool.Parse(blipShortRange); + float rotation = float.Parse(blipRotation); + byte dimension = Convert.ToByte(blipDimension); + + NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x, y, z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension); + + using (var saveData = new DatabaseContext()) + { + var dataSet = new SavedBlip { - float x = player.Position.X; - float y = player.Position.Y; - float z = player.Position.Z; - short sprite = short.Parse(blipSprite); - string name = blipName; - float scale = float.Parse(blipScale); - byte color = Convert.ToByte(blipColor); - byte alpha = Convert.ToByte(blipAlpha); - float drawDistance = float.Parse(blipDrawDistance); - bool shortRange = bool.Parse(blipShortRange); - float rotation = float.Parse(blipRotation); - byte dimension = Convert.ToByte(blipDimension); + Sprite = sprite, + PositionX = x, + PositionY = y, + PositionZ = z, + Name = blipName, + Scale = scale, + Color = color, + Alpha = alpha, + DrawDistance = drawDistance, + ShortRange = shortRange, + Rotation = rotation, + Dimension = dimension, + Active = true + }; + saveData.Blips.Add(dataSet); + saveData.SaveChanges(); + } + } - NAPI.Blip.CreateBlip(uint.Parse(blipSprite), new Vector3(x, y, z), scale, color, name, alpha, drawDistance, shortRange, short.Parse(blipRotation), dimension); - - using (var saveData = new DatabaseContext()) - { - var dataSet = new SavedBlip - { - Sprite = sprite, - PositionX = x, - PositionY = y, - PositionZ = z, - Name = blipName, - Scale = scale, - Color = color, - Alpha = alpha, - DrawDistance = drawDistance, - ShortRange = shortRange, - Rotation = rotation, - Dimension = dimension, - Active = true - }; - saveData.Blips.Add(dataSet); - saveData.SaveChanges(); - } - } - - public static Vehicle SaveVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked) + public static Vehicle SaveVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new SavedVehicle { - using (var saveData = new DatabaseContext()) - { - var dataSet = new SavedVehicle - { - Model = vehicleModel, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true - }; - saveData.Vehicles.Add(dataSet); - saveData.SaveChanges(); + Model = vehicleModel, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.Vehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveJobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int jobId) + public static Vehicle SaveJobVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int jobId) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new JobVehicle { - using (var saveData = new DatabaseContext()) - { - var dataSet = new JobVehicle - { - Model = vehicleModel, - JobId = jobId, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true - }; - saveData.JobVehicles.Add(dataSet); - saveData.SaveChanges(); + Model = vehicleModel, + JobId = jobId, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.JobVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveSchoolVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int schoolId) + public static Vehicle SaveSchoolVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int schoolId) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new SchoolVehicle { - using (var saveData = new DatabaseContext()) - { - var dataSet = new SchoolVehicle - { - Model = vehicleModel, - SchoolId = schoolId, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true - }; - saveData.SchoolVehicles.Add(dataSet); - saveData.SaveChanges(); + Model = vehicleModel, + SchoolId = schoolId, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true + }; + saveData.SchoolVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int[] factionId, int livery) + public static Vehicle SaveFactionVehicleData(Vehicle veh, VehicleHash vehicleModel, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, bool vehicleLocked, bool vehicleEngine, int[] factionId, int livery) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new FactionVehicle { - using (var saveData = new DatabaseContext()) - { - var dataSet = new FactionVehicle - { - Model = vehicleModel, - Owners = JsonConvert.SerializeObject(factionId), - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Locked = vehicleLocked, - Active = true, - Livery = livery - }; - saveData.FactionVehicles.Add(dataSet); - saveData.SaveChanges(); + Model = vehicleModel, + Owners = JsonConvert.SerializeObject(factionId), + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Locked = vehicleLocked, + Active = true, + Livery = livery + }; + saveData.FactionVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, - string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price) + public static Vehicle SaveShopVehicleData(Vehicle veh, VehicleHash vehicleModel, string vehicleModelName, Vector3 vehiclePosition, float vehicleHeading, + string vehicleNumberPlate, int vehiclePrimaryColor, int vehicleSecondaryColor, BusinessBase business, int price) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new ShopVehicle { - using (var saveData = new DatabaseContext()) - { - var dataSet = new ShopVehicle - { - Model = vehicleModel, - PositionX = vehiclePosition.X, - PositionY = vehiclePosition.Y, - PositionZ = vehiclePosition.Z, - Heading = vehicleHeading, - NumberPlate = vehicleNumberPlate, - PrimaryColor = vehiclePrimaryColor, - SecondaryColor = vehicleSecondaryColor, - Active = true, - BusinessId = business.Id, - Price = price - }; - saveData.ShopVehicles.Add(dataSet); - saveData.SaveChanges(); + Model = vehicleModel, + PositionX = vehiclePosition.X, + PositionY = vehiclePosition.Y, + PositionZ = vehiclePosition.Z, + Heading = vehicleHeading, + NumberPlate = vehicleNumberPlate, + PrimaryColor = vehiclePrimaryColor, + SecondaryColor = vehicleSecondaryColor, + Active = true, + BusinessId = business.Id, + Price = price + }; + saveData.ShopVehicles.Add(dataSet); + saveData.SaveChanges(); - return dataSet.Spawn(veh); - } - } + return dataSet.Spawn(veh); + } + } - public static void SaveGotoPoint(Player player, string description) + public static void SaveGotoPoint(Player player, string description) + { + using (var saveData = new DatabaseContext()) + { + var dataSet = new GotoPoint { - using (var saveData = new DatabaseContext()) - { - var dataSet = new GotoPoint - { - Description = description, - X = player.Position.X, - Y = player.Position.Y, - Z = player.Position.Z, - Active = true - }; - saveData.GotoPoints.Add(dataSet); - saveData.SaveChanges(); - } - } + Description = description, + X = player.Position.X, + Y = player.Position.Y, + Z = player.Position.Z, + Active = true + }; + saveData.GotoPoints.Add(dataSet); + saveData.SaveChanges(); + } + } public static void SaveAllOnSave() { @@ -219,8 +219,8 @@ namespace ReallifeGamemode.Server.Managers user.PositionZ = pos.Z; } - saveAll.SaveChanges(); - } - } + saveAll.SaveChanges(); + } } -} \ No newline at end of file + } +} diff --git a/ReallifeGamemode.Server/Managers/ShopManager.cs b/ReallifeGamemode.Server/Managers/ShopManager.cs index 89989a2a..2ff820c6 100644 --- a/ReallifeGamemode.Server/Managers/ShopManager.cs +++ b/ReallifeGamemode.Server/Managers/ShopManager.cs @@ -9,57 +9,57 @@ using ReallifeGamemode.Server.Shop.SevenEleven; namespace ReallifeGamemode.Server.Managers { public class ShopManager + { + public static List clotheStores = new List(); + public static List itemShops = new List(); + + public static void LoadClotheShops() { - public static List clotheStores = new List(); - public static List itemShops = new List(); + using (var dbContext = new DatabaseContext()) + { + List discount = dbContext.Blips.ToList().FindAll(s => s.Name == "Binco" || s.Name == "Discount Store"); + List midclass = dbContext.Blips.ToList().FindAll(s => s.Name == "Suburban"); + List luxury = dbContext.Blips.ToList().FindAll(s => s.Name == "Ponsonbys"); - public static void LoadClotheShops() + foreach (var store in discount) { - using (var dbContext = new DatabaseContext()) - { - List discount = dbContext.Blips.ToList().FindAll(s => s.Name == "Binco" || s.Name == "Discount Store"); - List midclass = dbContext.Blips.ToList().FindAll(s => s.Name == "Suburban"); - List luxury = dbContext.Blips.ToList().FindAll(s => s.Name == "Ponsonbys"); - - foreach (var store in discount) - { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ClotheShop newShop = new ClotheShop(1, pos); - clotheStores.Add(newShop); - NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); - } - foreach (var store in midclass) - { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ClotheShop newShop = new ClotheShop(2, pos); - clotheStores.Add(newShop); - NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); - } - foreach (var store in luxury) - { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ClotheShop newShop = new ClotheShop(3, pos); - clotheStores.Add(newShop); - NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); - } - } + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ClotheShop newShop = new ClotheShop(1, pos); + clotheStores.Add(newShop); + NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); } - - public static void LoadItemShops() + foreach (var store in midclass) { - using (var dbContext = new DatabaseContext()) - { - int id = 0; - List shops = dbContext.Blips.ToList().FindAll(s => s.Name == "24/7"); - foreach (var store in shops) - { - Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); - ItemShop newShop = new ItemShop(pos, id); - itemShops.Add(newShop); - id++; - } - NAPI.Util.ConsoleOutput($"Loaded {itemShops.Count}x 24/7"); - } + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ClotheShop newShop = new ClotheShop(2, pos); + clotheStores.Add(newShop); + NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); } + foreach (var store in luxury) + { + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ClotheShop newShop = new ClotheShop(3, pos); + clotheStores.Add(newShop); + NAPI.Util.ConsoleOutput($"Loading ClotheShop {store.Name}"); + } + } } + + public static void LoadItemShops() + { + using (var dbContext = new DatabaseContext()) + { + int id = 0; + List shops = dbContext.Blips.ToList().FindAll(s => s.Name == "24/7"); + foreach (var store in shops) + { + Vector3 pos = new Vector3(store.PositionX, store.PositionY, store.PositionZ); + ItemShop newShop = new ItemShop(pos, id); + itemShops.Add(newShop); + id++; + } + NAPI.Util.ConsoleOutput($"Loaded {itemShops.Count}x 24/7"); + } + } + } } diff --git a/ReallifeGamemode.Server/Managers/TimeManager.cs b/ReallifeGamemode.Server/Managers/TimeManager.cs index 05153cf5..97fc3d19 100644 --- a/ReallifeGamemode.Server/Managers/TimeManager.cs +++ b/ReallifeGamemode.Server/Managers/TimeManager.cs @@ -5,29 +5,29 @@ using GTANetworkAPI; namespace ReallifeGamemode.Server.Managers { public class TimeManager + { + private static Timer realTimeTimer; + + public static void StartTimeManager() { - private static Timer realTimeTimer; + if (realTimeTimer == null) + { + realTimeTimer = new Timer(1000); + realTimeTimer.Elapsed += SetTime; + } - public static void StartTimeManager() - { - if (realTimeTimer == null) - { - realTimeTimer = new Timer(1000); - realTimeTimer.Elapsed += SetTime; - } - - realTimeTimer.Start(); - } - - public static void PauseTimeManager() - { - realTimeTimer.Stop(); - } - - private static void SetTime(object sender, ElapsedEventArgs args) - { - DateTime now = DateTime.Now; - NAPI.World.SetTime(now.Hour, now.Minute, now.Second); - } + realTimeTimer.Start(); } + + public static void PauseTimeManager() + { + realTimeTimer.Stop(); + } + + private static void SetTime(object sender, ElapsedEventArgs args) + { + DateTime now = DateTime.Now; + NAPI.World.SetTime(now.Hour, now.Minute, now.Second); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs b/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs index bdd0b5cf..7d0c512d 100644 --- a/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs +++ b/ReallifeGamemode.Server/Migrations/20190226185806_Initial.cs @@ -5,877 +5,877 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class Initial : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "BankAccountTransactionLogs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Sender = table.Column(maxLength: 32, nullable: true), - SenderBalance = table.Column(nullable: false), - MoneySent = table.Column(nullable: false), - Receiver = table.Column(maxLength: 32, nullable: true), - ReceiverBalance = table.Column(nullable: false), - NewSenderBalance = table.Column(nullable: false), - NewReceiverBalance = table.Column(nullable: false), - Fee = table.Column(nullable: false), - Origin = table.Column(maxLength: 32, nullable: true), - Timestamp = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) - }, - constraints: table => - { - table.PrimaryKey("PK_BankAccountTransactionLogs", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Blips", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Sprite = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Name = table.Column(nullable: true), - Scale = table.Column(nullable: false), - Color = table.Column(nullable: false), - Alpha = table.Column(nullable: false), - DrawDistance = table.Column(nullable: false), - ShortRange = table.Column(nullable: false), - Rotation = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Blips", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "BusinessBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false), - BusinessId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BusinessBankAccounts", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "ClothCombinations", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Gender = table.Column(nullable: false), - Top = table.Column(nullable: false), - Torso = table.Column(nullable: false), - Undershirt = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ClothCombinations", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Factions", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(maxLength: 32, nullable: true), - StateOwned = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Factions", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "GotoPoints", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(maxLength: 32, nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GotoPoints", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Interiors", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true), - EnterPosition = table.Column(nullable: true), - ExitPosition = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Interiors", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Markers", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Scale = table.Column(nullable: false), - DirectionX = table.Column(nullable: false), - DirectionY = table.Column(nullable: false), - DirectionZ = table.Column(nullable: false), - RotationX = table.Column(nullable: false), - RotationY = table.Column(nullable: false), - RotationZ = table.Column(nullable: false), - ColorR = table.Column(nullable: false), - ColorG = table.Column(nullable: false), - ColorB = table.Column(nullable: false), - ColorA = table.Column(nullable: false), - Visible = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Markers", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Peds", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - HashModel = table.Column(nullable: true), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Heading = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Peds", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Pickups", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - PositionX = table.Column(maxLength: 128, nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - RotationX = table.Column(nullable: false), - RotationY = table.Column(nullable: false), - RotationZ = table.Column(nullable: false), - Vehicle = table.Column(nullable: false), - RespawnTime = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Pickups", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "TextLabels", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Text = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - LOS = table.Column(nullable: false), - Font = table.Column(nullable: false), - DrawDistance = table.Column(nullable: false), - ColorR = table.Column(nullable: false), - ColorG = table.Column(nullable: false), - ColorB = table.Column(nullable: false), - ColorA = table.Column(nullable: false), - Dimension = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TextLabels", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "WhitelistEntries", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - SocialClubName = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_WhitelistEntries", x => x.Id); - }); - - migrationBuilder.CreateTable( - name: "Doors", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Category = table.Column(nullable: true), - Name = table.Column(nullable: true), - Locked = table.Column(nullable: false), - Model = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Radius = table.Column(nullable: false), - FactionId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Doors", x => x.Id); - table.ForeignKey( - name: "FK_Doors_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "DutyClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - SlotType = table.Column(nullable: false), - SlotId = table.Column(nullable: false), - ClothId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_DutyClothes", x => x.Id); - table.ForeignKey( - name: "FK_DutyClothes_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "FactionBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - Bic = table.Column(maxLength: 12, nullable: true), - Iban = table.Column(maxLength: 32, nullable: true), - Balance = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_FactionBankAccounts_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "FactionRanks", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - RankName = table.Column(nullable: true), - Order = table.Column(nullable: false), - FactionId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionRanks", x => x.Id); - table.ForeignKey( - name: "FK_FactionRanks_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Users", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(maxLength: 32, nullable: true), - SocialClubName = table.Column(maxLength: 32, nullable: true), - Password = table.Column(maxLength: 64, nullable: true), - LogUserId = table.Column(nullable: false), - RegistrationDate = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Email = table.Column(maxLength: 64, nullable: true), - AdminLevel = table.Column(nullable: false), - Dead = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - CharacterId = table.Column(nullable: true), - BanId = table.Column(nullable: true), - FactionId = table.Column(nullable: true), - FactionLeader = table.Column(nullable: false), - FactionRankId = table.Column(nullable: true), - BusinessId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Users", x => x.Id); - table.ForeignKey( - name: "FK_Users_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_Users_FactionRanks_FactionRankId", - column: x => x.FactionRankId, - principalTable: "FactionRanks", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "Bans", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Reason = table.Column(nullable: true), - BannedBy = table.Column(nullable: true), - Applied = table.Column(nullable: false), - UntilDateTime = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Bans", x => x.Id); - table.ForeignKey( - name: "FK_Bans_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "CharacterClothes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Duty = table.Column(nullable: false), - SlotType = table.Column(nullable: false), - SlotId = table.Column(nullable: false), - ClothId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_CharacterClothes", x => x.Id); - table.ForeignKey( - name: "FK_CharacterClothes_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "Characters", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Gender = table.Column(nullable: false), - Father = table.Column(nullable: false), - Mother = table.Column(nullable: false), - Similarity = table.Column(nullable: false), - SkinSimilarity = table.Column(nullable: false), - NoseWidth = table.Column(nullable: false), - NoseBottomHeight = table.Column(nullable: false), - NoseTipLength = table.Column(nullable: false), - NoseBridgeDepth = table.Column(nullable: false), - NoseTipHeight = table.Column(nullable: false), - NoseBroken = table.Column(nullable: false), - BrowHeight = table.Column(nullable: false), - BrowDepth = table.Column(nullable: false), - CheekboneHeight = table.Column(nullable: false), - CheekboneWidth = table.Column(nullable: false), - CheekDepth = table.Column(nullable: false), - EyeSize = table.Column(nullable: false), - LipThickness = table.Column(nullable: false), - JawWidth = table.Column(nullable: false), - JawShape = table.Column(nullable: false), - ChinHeight = table.Column(nullable: false), - ChinDepth = table.Column(nullable: false), - ChinWidth = table.Column(nullable: false), - ChinIndent = table.Column(nullable: false), - NeckWidth = table.Column(nullable: false), - Blemishes = table.Column(nullable: false), - BlemishesOpacity = table.Column(nullable: false), - FacialHair = table.Column(nullable: false), - FacialHairOpacity = table.Column(nullable: false), - Eyebrows = table.Column(nullable: false), - EyebrowsOpacity = table.Column(nullable: false), - Ageing = table.Column(nullable: false), - AgeingOpacity = table.Column(nullable: false), - Makeup = table.Column(nullable: false), - MakeupOpacity = table.Column(nullable: false), - Blush = table.Column(nullable: false), - BlushOpacity = table.Column(nullable: false), - Complexion = table.Column(nullable: false), - ComplexionOpacity = table.Column(nullable: false), - SunDamage = table.Column(nullable: false), - SunDamageOpacity = table.Column(nullable: false), - Lipstick = table.Column(nullable: false), - LipstickOpacity = table.Column(nullable: false), - Freckles = table.Column(nullable: false), - FrecklesOpacity = table.Column(nullable: false), - ChestHair = table.Column(nullable: false), - ChestHairOpacity = table.Column(nullable: false), - Hair = table.Column(nullable: false), - HairColor = table.Column(nullable: false), - HairHighlightColor = table.Column(nullable: false), - EyebrowColor = table.Column(nullable: false), - BeardColor = table.Column(nullable: false), - EyeColor = table.Column(nullable: false), - BlushColor = table.Column(nullable: false), - LipstickColor = table.Column(nullable: false), - ChestHairColor = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_Characters", x => x.Id); - table.ForeignKey( - name: "FK_Characters_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "DeathLogs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - VictimId = table.Column(nullable: false), - KillerId = table.Column(nullable: true), - VictimPositionX = table.Column(nullable: false), - VictimPositionY = table.Column(nullable: false), - VictimPositionZ = table.Column(nullable: false), - VictimHeading = table.Column(nullable: false), - KillerPositionX = table.Column(nullable: false), - KillerPositionY = table.Column(nullable: false), - KillerPositionZ = table.Column(nullable: false), - KillerHeading = table.Column(nullable: false), - CauseOfDeath = table.Column(maxLength: 64, nullable: true), - Timestamp = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) - }, - constraints: table => - { - table.PrimaryKey("PK_DeathLogs", x => x.Id); - table.ForeignKey( - name: "FK_DeathLogs_Users_KillerId", - column: x => x.KillerId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_DeathLogs_Users_VictimId", - column: x => x.VictimId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "News", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: true), - Caption = table.Column(nullable: true), - Content = table.Column(nullable: true), - Active = table.Column(nullable: false), - Timestamp = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_News", x => x.Id); - table.ForeignKey( - name: "FK_News_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); - - migrationBuilder.CreateTable( - name: "ServerVehicles", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Model = table.Column(nullable: false), - PositionX = table.Column(nullable: false), - PositionY = table.Column(nullable: false), - PositionZ = table.Column(nullable: false), - Heading = table.Column(nullable: false), - NumberPlate = table.Column(maxLength: 8, nullable: true), - PrimaryColor = table.Column(nullable: false), - SecondaryColor = table.Column(nullable: false), - Locked = table.Column(nullable: false), - Active = table.Column(nullable: false, defaultValue: true), - Discriminator = table.Column(nullable: false), - FactionId = table.Column(nullable: true), - ShopId = table.Column(nullable: true), - BusinessId = table.Column(nullable: true), - Price = table.Column(nullable: true), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_ServerVehicles", x => x.Id); - table.ForeignKey( - name: "FK_ServerVehicles_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_ServerVehicles_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "UserBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - UserId = table.Column(nullable: false), - Bic = table.Column(maxLength: 12, nullable: true), - Iban = table.Column(maxLength: 32, nullable: true), - Balance = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_UserBankAccounts_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "UserItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ItemId = table.Column(nullable: false), - UserId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Slot = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_UserItems", x => x.Id); - table.ForeignKey( - name: "FK_UserItems_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateTable( - name: "VehicleMods", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ServerVehicleId = table.Column(nullable: false), - Slot = table.Column(nullable: false), - ModId = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_VehicleMods", x => x.Id); - table.ForeignKey( - name: "FK_VehicleMods_ServerVehicles_ServerVehicleId", - column: x => x.ServerVehicleId, - principalTable: "ServerVehicles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); - - migrationBuilder.CreateIndex( - name: "IX_Bans_UserId", - table: "Bans", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_BusinessBankAccounts_BusinessId", - table: "BusinessBankAccounts", - column: "BusinessId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_CharacterClothes_UserId", - table: "CharacterClothes", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_Characters_UserId", - table: "Characters", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_DeathLogs_KillerId", - table: "DeathLogs", - column: "KillerId"); - - migrationBuilder.CreateIndex( - name: "IX_DeathLogs_VictimId", - table: "DeathLogs", - column: "VictimId"); - - migrationBuilder.CreateIndex( - name: "IX_Doors_FactionId", - table: "Doors", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_DutyClothes_FactionId", - table: "DutyClothes", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_FactionBankAccounts_FactionId", - table: "FactionBankAccounts", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_FactionRanks_FactionId", - table: "FactionRanks", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_News_UserId", - table: "News", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_FactionId", - table: "ServerVehicles", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_UserId", - table: "ServerVehicles", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_UserBankAccounts_UserId", - table: "UserBankAccounts", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_UserItems_UserId", - table: "UserItems", - column: "UserId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_BanId", - table: "Users", - column: "BanId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_BusinessId", - table: "Users", - column: "BusinessId", - unique: true); - - migrationBuilder.CreateIndex( - name: "IX_Users_CharacterId", - table: "Users", - column: "CharacterId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_FactionId", - table: "Users", - column: "FactionId"); - - migrationBuilder.CreateIndex( - name: "IX_Users_FactionRankId", - table: "Users", - column: "FactionRankId"); - - migrationBuilder.CreateIndex( - name: "IX_VehicleMods_ServerVehicleId_Slot", - table: "VehicleMods", - columns: new[] { "ServerVehicleId", "Slot" }, - unique: true); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Bans_BanId", - table: "Users", - column: "BanId", - principalTable: "Bans", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Characters_CharacterId", - table: "Users", - column: "CharacterId", - principalTable: "Characters", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Bans_Users_UserId", - table: "Bans"); - - migrationBuilder.DropForeignKey( - name: "FK_Characters_Users_UserId", - table: "Characters"); - - migrationBuilder.DropTable( - name: "BankAccountTransactionLogs"); - - migrationBuilder.DropTable( - name: "Blips"); - - migrationBuilder.DropTable( - name: "BusinessBankAccounts"); - - migrationBuilder.DropTable( - name: "CharacterClothes"); - - migrationBuilder.DropTable( - name: "ClothCombinations"); - - migrationBuilder.DropTable( - name: "DeathLogs"); - - migrationBuilder.DropTable( - name: "Doors"); - - migrationBuilder.DropTable( - name: "DutyClothes"); - - migrationBuilder.DropTable( - name: "FactionBankAccounts"); - - migrationBuilder.DropTable( - name: "GotoPoints"); - - migrationBuilder.DropTable( - name: "Interiors"); - - migrationBuilder.DropTable( - name: "Markers"); - - migrationBuilder.DropTable( - name: "News"); - - migrationBuilder.DropTable( - name: "Peds"); - - migrationBuilder.DropTable( - name: "Pickups"); - - migrationBuilder.DropTable( - name: "TextLabels"); - - migrationBuilder.DropTable( - name: "UserBankAccounts"); - - migrationBuilder.DropTable( - name: "UserItems"); - - migrationBuilder.DropTable( - name: "VehicleMods"); - - migrationBuilder.DropTable( - name: "WhitelistEntries"); - - migrationBuilder.DropTable( - name: "ServerVehicles"); - - migrationBuilder.DropTable( - name: "Users"); - - migrationBuilder.DropTable( - name: "Bans"); - - migrationBuilder.DropTable( - name: "Characters"); - - migrationBuilder.DropTable( - name: "FactionRanks"); - - migrationBuilder.DropTable( - name: "Factions"); - } + migrationBuilder.CreateTable( + name: "BankAccountTransactionLogs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Sender = table.Column(maxLength: 32, nullable: true), + SenderBalance = table.Column(nullable: false), + MoneySent = table.Column(nullable: false), + Receiver = table.Column(maxLength: 32, nullable: true), + ReceiverBalance = table.Column(nullable: false), + NewSenderBalance = table.Column(nullable: false), + NewReceiverBalance = table.Column(nullable: false), + Fee = table.Column(nullable: false), + Origin = table.Column(maxLength: 32, nullable: true), + Timestamp = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + }, + constraints: table => + { + table.PrimaryKey("PK_BankAccountTransactionLogs", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Blips", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Sprite = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Name = table.Column(nullable: true), + Scale = table.Column(nullable: false), + Color = table.Column(nullable: false), + Alpha = table.Column(nullable: false), + DrawDistance = table.Column(nullable: false), + ShortRange = table.Column(nullable: false), + Rotation = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Blips", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "BusinessBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false), + BusinessId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BusinessBankAccounts", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "ClothCombinations", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Gender = table.Column(nullable: false), + Top = table.Column(nullable: false), + Torso = table.Column(nullable: false), + Undershirt = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ClothCombinations", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Factions", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(maxLength: 32, nullable: true), + StateOwned = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Factions", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "GotoPoints", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(maxLength: 32, nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GotoPoints", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Interiors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true), + EnterPosition = table.Column(nullable: true), + ExitPosition = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Interiors", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Markers", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Scale = table.Column(nullable: false), + DirectionX = table.Column(nullable: false), + DirectionY = table.Column(nullable: false), + DirectionZ = table.Column(nullable: false), + RotationX = table.Column(nullable: false), + RotationY = table.Column(nullable: false), + RotationZ = table.Column(nullable: false), + ColorR = table.Column(nullable: false), + ColorG = table.Column(nullable: false), + ColorB = table.Column(nullable: false), + ColorA = table.Column(nullable: false), + Visible = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Markers", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Peds", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + HashModel = table.Column(nullable: true), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Heading = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Peds", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Pickups", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + PositionX = table.Column(maxLength: 128, nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + RotationX = table.Column(nullable: false), + RotationY = table.Column(nullable: false), + RotationZ = table.Column(nullable: false), + Vehicle = table.Column(nullable: false), + RespawnTime = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Pickups", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "TextLabels", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Text = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + LOS = table.Column(nullable: false), + Font = table.Column(nullable: false), + DrawDistance = table.Column(nullable: false), + ColorR = table.Column(nullable: false), + ColorG = table.Column(nullable: false), + ColorB = table.Column(nullable: false), + ColorA = table.Column(nullable: false), + Dimension = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TextLabels", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "WhitelistEntries", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + SocialClubName = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_WhitelistEntries", x => x.Id); + }); + + migrationBuilder.CreateTable( + name: "Doors", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Category = table.Column(nullable: true), + Name = table.Column(nullable: true), + Locked = table.Column(nullable: false), + Model = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Radius = table.Column(nullable: false), + FactionId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Doors", x => x.Id); + table.ForeignKey( + name: "FK_Doors_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "DutyClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + SlotType = table.Column(nullable: false), + SlotId = table.Column(nullable: false), + ClothId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_DutyClothes", x => x.Id); + table.ForeignKey( + name: "FK_DutyClothes_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FactionBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + Bic = table.Column(maxLength: 12, nullable: true), + Iban = table.Column(maxLength: 32, nullable: true), + Balance = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_FactionBankAccounts_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "FactionRanks", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + RankName = table.Column(nullable: true), + Order = table.Column(nullable: false), + FactionId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionRanks", x => x.Id); + table.ForeignKey( + name: "FK_FactionRanks_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Users", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(maxLength: 32, nullable: true), + SocialClubName = table.Column(maxLength: 32, nullable: true), + Password = table.Column(maxLength: 64, nullable: true), + LogUserId = table.Column(nullable: false), + RegistrationDate = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Email = table.Column(maxLength: 64, nullable: true), + AdminLevel = table.Column(nullable: false), + Dead = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + CharacterId = table.Column(nullable: true), + BanId = table.Column(nullable: true), + FactionId = table.Column(nullable: true), + FactionLeader = table.Column(nullable: false), + FactionRankId = table.Column(nullable: true), + BusinessId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Users", x => x.Id); + table.ForeignKey( + name: "FK_Users_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_Users_FactionRanks_FactionRankId", + column: x => x.FactionRankId, + principalTable: "FactionRanks", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "Bans", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Reason = table.Column(nullable: true), + BannedBy = table.Column(nullable: true), + Applied = table.Column(nullable: false), + UntilDateTime = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Bans", x => x.Id); + table.ForeignKey( + name: "FK_Bans_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "CharacterClothes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Duty = table.Column(nullable: false), + SlotType = table.Column(nullable: false), + SlotId = table.Column(nullable: false), + ClothId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_CharacterClothes", x => x.Id); + table.ForeignKey( + name: "FK_CharacterClothes_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "Characters", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Gender = table.Column(nullable: false), + Father = table.Column(nullable: false), + Mother = table.Column(nullable: false), + Similarity = table.Column(nullable: false), + SkinSimilarity = table.Column(nullable: false), + NoseWidth = table.Column(nullable: false), + NoseBottomHeight = table.Column(nullable: false), + NoseTipLength = table.Column(nullable: false), + NoseBridgeDepth = table.Column(nullable: false), + NoseTipHeight = table.Column(nullable: false), + NoseBroken = table.Column(nullable: false), + BrowHeight = table.Column(nullable: false), + BrowDepth = table.Column(nullable: false), + CheekboneHeight = table.Column(nullable: false), + CheekboneWidth = table.Column(nullable: false), + CheekDepth = table.Column(nullable: false), + EyeSize = table.Column(nullable: false), + LipThickness = table.Column(nullable: false), + JawWidth = table.Column(nullable: false), + JawShape = table.Column(nullable: false), + ChinHeight = table.Column(nullable: false), + ChinDepth = table.Column(nullable: false), + ChinWidth = table.Column(nullable: false), + ChinIndent = table.Column(nullable: false), + NeckWidth = table.Column(nullable: false), + Blemishes = table.Column(nullable: false), + BlemishesOpacity = table.Column(nullable: false), + FacialHair = table.Column(nullable: false), + FacialHairOpacity = table.Column(nullable: false), + Eyebrows = table.Column(nullable: false), + EyebrowsOpacity = table.Column(nullable: false), + Ageing = table.Column(nullable: false), + AgeingOpacity = table.Column(nullable: false), + Makeup = table.Column(nullable: false), + MakeupOpacity = table.Column(nullable: false), + Blush = table.Column(nullable: false), + BlushOpacity = table.Column(nullable: false), + Complexion = table.Column(nullable: false), + ComplexionOpacity = table.Column(nullable: false), + SunDamage = table.Column(nullable: false), + SunDamageOpacity = table.Column(nullable: false), + Lipstick = table.Column(nullable: false), + LipstickOpacity = table.Column(nullable: false), + Freckles = table.Column(nullable: false), + FrecklesOpacity = table.Column(nullable: false), + ChestHair = table.Column(nullable: false), + ChestHairOpacity = table.Column(nullable: false), + Hair = table.Column(nullable: false), + HairColor = table.Column(nullable: false), + HairHighlightColor = table.Column(nullable: false), + EyebrowColor = table.Column(nullable: false), + BeardColor = table.Column(nullable: false), + EyeColor = table.Column(nullable: false), + BlushColor = table.Column(nullable: false), + LipstickColor = table.Column(nullable: false), + ChestHairColor = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_Characters", x => x.Id); + table.ForeignKey( + name: "FK_Characters_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "DeathLogs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + VictimId = table.Column(nullable: false), + KillerId = table.Column(nullable: true), + VictimPositionX = table.Column(nullable: false), + VictimPositionY = table.Column(nullable: false), + VictimPositionZ = table.Column(nullable: false), + VictimHeading = table.Column(nullable: false), + KillerPositionX = table.Column(nullable: false), + KillerPositionY = table.Column(nullable: false), + KillerPositionZ = table.Column(nullable: false), + KillerHeading = table.Column(nullable: false), + CauseOfDeath = table.Column(maxLength: 64, nullable: true), + Timestamp = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn) + }, + constraints: table => + { + table.PrimaryKey("PK_DeathLogs", x => x.Id); + table.ForeignKey( + name: "FK_DeathLogs_Users_KillerId", + column: x => x.KillerId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_DeathLogs_Users_VictimId", + column: x => x.VictimId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "News", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: true), + Caption = table.Column(nullable: true), + Content = table.Column(nullable: true), + Active = table.Column(nullable: false), + Timestamp = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_News", x => x.Id); + table.ForeignKey( + name: "FK_News_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); + + migrationBuilder.CreateTable( + name: "ServerVehicles", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Model = table.Column(nullable: false), + PositionX = table.Column(nullable: false), + PositionY = table.Column(nullable: false), + PositionZ = table.Column(nullable: false), + Heading = table.Column(nullable: false), + NumberPlate = table.Column(maxLength: 8, nullable: true), + PrimaryColor = table.Column(nullable: false), + SecondaryColor = table.Column(nullable: false), + Locked = table.Column(nullable: false), + Active = table.Column(nullable: false, defaultValue: true), + Discriminator = table.Column(nullable: false), + FactionId = table.Column(nullable: true), + ShopId = table.Column(nullable: true), + BusinessId = table.Column(nullable: true), + Price = table.Column(nullable: true), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_ServerVehicles", x => x.Id); + table.ForeignKey( + name: "FK_ServerVehicles_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_ServerVehicles_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "UserBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + UserId = table.Column(nullable: false), + Bic = table.Column(maxLength: 12, nullable: true), + Iban = table.Column(maxLength: 32, nullable: true), + Balance = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_UserBankAccounts_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "UserItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemId = table.Column(nullable: false), + UserId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Slot = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_UserItems", x => x.Id); + table.ForeignKey( + name: "FK_UserItems_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateTable( + name: "VehicleMods", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ServerVehicleId = table.Column(nullable: false), + Slot = table.Column(nullable: false), + ModId = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VehicleMods", x => x.Id); + table.ForeignKey( + name: "FK_VehicleMods_ServerVehicles_ServerVehicleId", + column: x => x.ServerVehicleId, + principalTable: "ServerVehicles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); + + migrationBuilder.CreateIndex( + name: "IX_Bans_UserId", + table: "Bans", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_BusinessBankAccounts_BusinessId", + table: "BusinessBankAccounts", + column: "BusinessId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_CharacterClothes_UserId", + table: "CharacterClothes", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_Characters_UserId", + table: "Characters", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_DeathLogs_KillerId", + table: "DeathLogs", + column: "KillerId"); + + migrationBuilder.CreateIndex( + name: "IX_DeathLogs_VictimId", + table: "DeathLogs", + column: "VictimId"); + + migrationBuilder.CreateIndex( + name: "IX_Doors_FactionId", + table: "Doors", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_DutyClothes_FactionId", + table: "DutyClothes", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_FactionBankAccounts_FactionId", + table: "FactionBankAccounts", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_FactionRanks_FactionId", + table: "FactionRanks", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_News_UserId", + table: "News", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_FactionId", + table: "ServerVehicles", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_UserId", + table: "ServerVehicles", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_UserBankAccounts_UserId", + table: "UserBankAccounts", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_UserItems_UserId", + table: "UserItems", + column: "UserId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_BanId", + table: "Users", + column: "BanId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_BusinessId", + table: "Users", + column: "BusinessId", + unique: true); + + migrationBuilder.CreateIndex( + name: "IX_Users_CharacterId", + table: "Users", + column: "CharacterId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_FactionId", + table: "Users", + column: "FactionId"); + + migrationBuilder.CreateIndex( + name: "IX_Users_FactionRankId", + table: "Users", + column: "FactionRankId"); + + migrationBuilder.CreateIndex( + name: "IX_VehicleMods_ServerVehicleId_Slot", + table: "VehicleMods", + columns: new[] { "ServerVehicleId", "Slot" }, + unique: true); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Bans_BanId", + table: "Users", + column: "BanId", + principalTable: "Bans", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Characters_CharacterId", + table: "Users", + column: "CharacterId", + principalTable: "Characters", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Bans_Users_UserId", + table: "Bans"); + + migrationBuilder.DropForeignKey( + name: "FK_Characters_Users_UserId", + table: "Characters"); + + migrationBuilder.DropTable( + name: "BankAccountTransactionLogs"); + + migrationBuilder.DropTable( + name: "Blips"); + + migrationBuilder.DropTable( + name: "BusinessBankAccounts"); + + migrationBuilder.DropTable( + name: "CharacterClothes"); + + migrationBuilder.DropTable( + name: "ClothCombinations"); + + migrationBuilder.DropTable( + name: "DeathLogs"); + + migrationBuilder.DropTable( + name: "Doors"); + + migrationBuilder.DropTable( + name: "DutyClothes"); + + migrationBuilder.DropTable( + name: "FactionBankAccounts"); + + migrationBuilder.DropTable( + name: "GotoPoints"); + + migrationBuilder.DropTable( + name: "Interiors"); + + migrationBuilder.DropTable( + name: "Markers"); + + migrationBuilder.DropTable( + name: "News"); + + migrationBuilder.DropTable( + name: "Peds"); + + migrationBuilder.DropTable( + name: "Pickups"); + + migrationBuilder.DropTable( + name: "TextLabels"); + + migrationBuilder.DropTable( + name: "UserBankAccounts"); + + migrationBuilder.DropTable( + name: "UserItems"); + + migrationBuilder.DropTable( + name: "VehicleMods"); + + migrationBuilder.DropTable( + name: "WhitelistEntries"); + + migrationBuilder.DropTable( + name: "ServerVehicles"); + + migrationBuilder.DropTable( + name: "Users"); + + migrationBuilder.DropTable( + name: "Bans"); + + migrationBuilder.DropTable( + name: "Characters"); + + migrationBuilder.DropTable( + name: "FactionRanks"); + + migrationBuilder.DropTable( + name: "Factions"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs b/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs index 5842ed79..56631e5f 100644 --- a/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs +++ b/ReallifeGamemode.Server/Migrations/20190306194826_VehicleDistanceDriven.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class VehicleDistanceDriven : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "DistanceDriven", - table: "ServerVehicles", - nullable: false, - defaultValue: 0f); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "DistanceDriven", - table: "ServerVehicles"); - } + migrationBuilder.AddColumn( + name: "DistanceDriven", + table: "ServerVehicles", + nullable: false, + defaultValue: 0f); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "DistanceDriven", + table: "ServerVehicles"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs b/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs index 0efa656e..ef03d08b 100644 --- a/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs +++ b/ReallifeGamemode.Server/Migrations/20190307163335_VehicleTank.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class VehicleTank : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "TankAmount", - table: "ServerVehicles", - nullable: false, - defaultValue: 0f); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "TankAmount", - table: "ServerVehicles"); - } + migrationBuilder.AddColumn( + name: "TankAmount", + table: "ServerVehicles", + nullable: false, + defaultValue: 0f); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "TankAmount", + table: "ServerVehicles"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs b/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs index f435c951..e2d35940 100644 --- a/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs +++ b/ReallifeGamemode.Server/Migrations/20190309184251_ATM.cs @@ -4,32 +4,32 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class ATM : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "ATMs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Balance = table.Column(nullable: false), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - Faulty = table.Column(nullable: false), - Active = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_ATMs", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "ATMs"); - } + migrationBuilder.CreateTable( + name: "ATMs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Balance = table.Column(nullable: false), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + Faulty = table.Column(nullable: false), + Active = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_ATMs", x => x.Id); + }); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "ATMs"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs b/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs index f9667ffc..753b627d 100644 --- a/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs +++ b/ReallifeGamemode.Server/Migrations/20190408143319_Handmoney.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class Handmoney : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Handmoney", - table: "Users", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Handmoney", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "Handmoney", + table: "Users", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Handmoney", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs b/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs index defe5236..d561d60b 100644 --- a/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs +++ b/ReallifeGamemode.Server/Migrations/20190411180607_TuningGarage.cs @@ -4,29 +4,29 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class TuningGarage : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "TuningGarages", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_TuningGarages", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "TuningGarages"); - } + migrationBuilder.CreateTable( + name: "TuningGarages", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_TuningGarages", x => x.Id); + }); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "TuningGarages"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs b/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs index b8795d1f..96ab7199 100644 --- a/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs +++ b/ReallifeGamemode.Server/Migrations/20190505154643_Groups.cs @@ -4,125 +4,125 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class Groups : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "GroupId", - table: "Users", - nullable: true); + migrationBuilder.AddColumn( + name: "GroupId", + table: "Users", + nullable: true); - migrationBuilder.AddColumn( - name: "GroupRank", - table: "Users", - nullable: false, - defaultValue: 0); + migrationBuilder.AddColumn( + name: "GroupRank", + table: "Users", + nullable: false, + defaultValue: 0); - migrationBuilder.AddColumn( - name: "GroupId", - table: "ServerVehicles", - nullable: true); + migrationBuilder.AddColumn( + name: "GroupId", + table: "ServerVehicles", + nullable: true); - migrationBuilder.CreateTable( - name: "Groups", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Groups", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Groups", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Groups", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "GroupBankAccounts", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - GroupId = table.Column(nullable: true), - Balance = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_GroupBankAccounts", x => x.Id); - table.ForeignKey( - name: "FK_GroupBankAccounts_Groups_GroupId", - column: x => x.GroupId, - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "GroupBankAccounts", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + GroupId = table.Column(nullable: true), + Balance = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_GroupBankAccounts", x => x.Id); + table.ForeignKey( + name: "FK_GroupBankAccounts_Groups_GroupId", + column: x => x.GroupId, + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_Users_GroupId", - table: "Users", - column: "GroupId"); + migrationBuilder.CreateIndex( + name: "IX_Users_GroupId", + table: "Users", + column: "GroupId"); - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_GroupId", - table: "ServerVehicles", - column: "GroupId"); + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_GroupId", + table: "ServerVehicles", + column: "GroupId"); - migrationBuilder.CreateIndex( - name: "IX_GroupBankAccounts_GroupId", - table: "GroupBankAccounts", - column: "GroupId"); + migrationBuilder.CreateIndex( + name: "IX_GroupBankAccounts_GroupId", + table: "GroupBankAccounts", + column: "GroupId"); - migrationBuilder.AddForeignKey( - name: "FK_ServerVehicles_Groups_GroupId", - table: "ServerVehicles", - column: "GroupId", - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_ServerVehicles_Groups_GroupId", + table: "ServerVehicles", + column: "GroupId", + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); - migrationBuilder.AddForeignKey( - name: "FK_Users_Groups_GroupId", - table: "Users", - column: "GroupId", - principalTable: "Groups", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_ServerVehicles_Groups_GroupId", - table: "ServerVehicles"); - - migrationBuilder.DropForeignKey( - name: "FK_Users_Groups_GroupId", - table: "Users"); - - migrationBuilder.DropTable( - name: "GroupBankAccounts"); - - migrationBuilder.DropTable( - name: "Groups"); - - migrationBuilder.DropIndex( - name: "IX_Users_GroupId", - table: "Users"); - - migrationBuilder.DropIndex( - name: "IX_ServerVehicles_GroupId", - table: "ServerVehicles"); - - migrationBuilder.DropColumn( - name: "GroupId", - table: "Users"); - - migrationBuilder.DropColumn( - name: "GroupRank", - table: "Users"); - - migrationBuilder.DropColumn( - name: "GroupId", - table: "ServerVehicles"); - } + migrationBuilder.AddForeignKey( + name: "FK_Users_Groups_GroupId", + table: "Users", + column: "GroupId", + principalTable: "Groups", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ServerVehicles_Groups_GroupId", + table: "ServerVehicles"); + + migrationBuilder.DropForeignKey( + name: "FK_Users_Groups_GroupId", + table: "Users"); + + migrationBuilder.DropTable( + name: "GroupBankAccounts"); + + migrationBuilder.DropTable( + name: "Groups"); + + migrationBuilder.DropIndex( + name: "IX_Users_GroupId", + table: "Users"); + + migrationBuilder.DropIndex( + name: "IX_ServerVehicles_GroupId", + table: "ServerVehicles"); + + migrationBuilder.DropColumn( + name: "GroupId", + table: "Users"); + + migrationBuilder.DropColumn( + name: "GroupRank", + table: "Users"); + + migrationBuilder.DropColumn( + name: "GroupId", + table: "ServerVehicles"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs b/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs index eddaa239..65486ab9 100644 --- a/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs +++ b/ReallifeGamemode.Server/Migrations/20190513111017_UnusedColumnRemove.cs @@ -3,20 +3,20 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UnusedColumnRemove : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "ShopId", - table: "ServerVehicles"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "ShopId", - table: "ServerVehicles", - nullable: true); - } + migrationBuilder.DropColumn( + name: "ShopId", + table: "ServerVehicles"); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "ShopId", + table: "ServerVehicles", + nullable: true); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs b/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs index be0e548d..5bd8c21a 100644 --- a/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs +++ b/ReallifeGamemode.Server/Migrations/20190513161249_Jobs.cs @@ -4,87 +4,87 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class Jobs : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "JobId", - table: "Users", - nullable: true); + migrationBuilder.AddColumn( + name: "JobId", + table: "Users", + nullable: true); - migrationBuilder.AddColumn( - name: "JobId", - table: "ServerVehicles", - nullable: true); + migrationBuilder.AddColumn( + name: "JobId", + table: "ServerVehicles", + nullable: true); - migrationBuilder.CreateTable( - name: "Jobs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Jobs", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "Jobs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Jobs", x => x.Id); + }); - migrationBuilder.CreateIndex( - name: "IX_Users_JobId", - table: "Users", - column: "JobId"); + migrationBuilder.CreateIndex( + name: "IX_Users_JobId", + table: "Users", + column: "JobId"); - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles", - column: "JobId"); + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles", + column: "JobId"); - migrationBuilder.AddForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); + migrationBuilder.AddForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); - migrationBuilder.AddForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles"); - - migrationBuilder.DropForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users"); - - migrationBuilder.DropTable( - name: "Jobs"); - - migrationBuilder.DropIndex( - name: "IX_Users_JobId", - table: "Users"); - - migrationBuilder.DropIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles"); - - migrationBuilder.DropColumn( - name: "JobId", - table: "Users"); - - migrationBuilder.DropColumn( - name: "JobId", - table: "ServerVehicles"); - } + migrationBuilder.AddForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles"); + + migrationBuilder.DropForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users"); + + migrationBuilder.DropTable( + name: "Jobs"); + + migrationBuilder.DropIndex( + name: "IX_Users_JobId", + table: "Users"); + + migrationBuilder.DropIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles"); + + migrationBuilder.DropColumn( + name: "JobId", + table: "Users"); + + migrationBuilder.DropColumn( + name: "JobId", + table: "ServerVehicles"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs b/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs index 4197f8b2..f8507827 100644 --- a/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs +++ b/ReallifeGamemode.Server/Migrations/20190516094446_JobFix.cs @@ -4,69 +4,69 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class JobFix : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles"); + migrationBuilder.DropForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles"); - migrationBuilder.DropForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users"); + migrationBuilder.DropForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users"); - migrationBuilder.DropTable( - name: "Jobs"); + migrationBuilder.DropTable( + name: "Jobs"); - migrationBuilder.DropIndex( - name: "IX_Users_JobId", - table: "Users"); + migrationBuilder.DropIndex( + name: "IX_Users_JobId", + table: "Users"); - migrationBuilder.DropIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "Jobs", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Name = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Jobs", x => x.Id); - }); - - migrationBuilder.CreateIndex( - name: "IX_Users_JobId", - table: "Users", - column: "JobId"); - - migrationBuilder.CreateIndex( - name: "IX_ServerVehicles_JobId", - table: "ServerVehicles", - column: "JobId"); - - migrationBuilder.AddForeignKey( - name: "FK_ServerVehicles_Jobs_JobId", - table: "ServerVehicles", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - - migrationBuilder.AddForeignKey( - name: "FK_Users_Jobs_JobId", - table: "Users", - column: "JobId", - principalTable: "Jobs", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } + migrationBuilder.DropIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles"); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateTable( + name: "Jobs", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Name = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Jobs", x => x.Id); + }); + + migrationBuilder.CreateIndex( + name: "IX_Users_JobId", + table: "Users", + column: "JobId"); + + migrationBuilder.CreateIndex( + name: "IX_ServerVehicles_JobId", + table: "ServerVehicles", + column: "JobId"); + + migrationBuilder.AddForeignKey( + name: "FK_ServerVehicles_Jobs_JobId", + table: "ServerVehicles", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + + migrationBuilder.AddForeignKey( + name: "FK_Users_Jobs_JobId", + table: "Users", + column: "JobId", + principalTable: "Jobs", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs b/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs index aff11e69..3dcaff40 100644 --- a/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs +++ b/ReallifeGamemode.Server/Migrations/20190624153156_ClothesTexture.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class ClothesTexture : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Texture", - table: "CharacterClothes", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Texture", - table: "CharacterClothes"); - } + migrationBuilder.AddColumn( + name: "Texture", + table: "CharacterClothes", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Texture", + table: "CharacterClothes"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs b/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs index 8f7d872c..41c8a46e 100644 --- a/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs +++ b/ReallifeGamemode.Server/Migrations/20190625202943_ClientWanteds.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class PlayerWanteds : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Wanteds", - table: "Users", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Wanteds", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "Wanteds", + table: "Users", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Wanteds", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190626193631_House.cs b/ReallifeGamemode.Server/Migrations/20190626193631_House.cs index 13989a4a..e65acfb1 100644 --- a/ReallifeGamemode.Server/Migrations/20190626193631_House.cs +++ b/ReallifeGamemode.Server/Migrations/20190626193631_House.cs @@ -4,50 +4,50 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class House : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "HouseId", - table: "Users", - nullable: true); + migrationBuilder.AddColumn( + name: "HouseId", + table: "Users", + nullable: true); - migrationBuilder.CreateTable( - name: "Houses", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Type = table.Column(nullable: true), - Price = table.Column(nullable: false), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_Houses", x => x.Id); - table.ForeignKey( - name: "FK_Houses_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "Houses", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Type = table.Column(nullable: true), + Price = table.Column(nullable: false), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_Houses", x => x.Id); + table.ForeignKey( + name: "FK_Houses_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_Houses_UserId", - table: "Houses", - column: "UserId", - unique: true); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "Houses"); - - migrationBuilder.DropColumn( - name: "HouseId", - table: "Users"); - } + migrationBuilder.CreateIndex( + name: "IX_Houses_UserId", + table: "Houses", + column: "UserId", + unique: true); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "Houses"); + + migrationBuilder.DropColumn( + name: "HouseId", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs b/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs index 39c6799c..9a820adc 100644 --- a/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs +++ b/ReallifeGamemode.Server/Migrations/20190626202159_HousePosition.cs @@ -3,41 +3,41 @@ namespace ReallifeGamemode.Database.Migrations { public partial class HousePosition : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "X", - table: "Houses", - nullable: false, - defaultValue: 0f); + migrationBuilder.AddColumn( + name: "X", + table: "Houses", + nullable: false, + defaultValue: 0f); - migrationBuilder.AddColumn( - name: "Y", - table: "Houses", - nullable: false, - defaultValue: 0f); + migrationBuilder.AddColumn( + name: "Y", + table: "Houses", + nullable: false, + defaultValue: 0f); - migrationBuilder.AddColumn( - name: "Z", - table: "Houses", - nullable: false, - defaultValue: 0f); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "X", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "Y", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "Z", - table: "Houses"); - } + migrationBuilder.AddColumn( + name: "Z", + table: "Houses", + nullable: false, + defaultValue: 0f); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "X", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "Y", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "Z", + table: "Houses"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs b/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs index 8446b65b..4c01230a 100644 --- a/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs +++ b/ReallifeGamemode.Server/Migrations/20190627162731_UserHouseReference.cs @@ -3,25 +3,25 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UserHouseReference : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddForeignKey( - name: "FK_Users_Houses_HouseId", - table: "Users", - column: "HouseId", - principalTable: "Houses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateIndex( - name: "IX_Houses_UserId", - table: "Houses", - column: "UserId", - unique: true); - } + migrationBuilder.AddForeignKey( + name: "FK_Users_Houses_HouseId", + table: "Users", + column: "HouseId", + principalTable: "Houses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.CreateIndex( + name: "IX_Houses_UserId", + table: "Houses", + column: "UserId", + unique: true); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs b/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs index 11a3a362..a0b5b1c2 100644 --- a/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs +++ b/ReallifeGamemode.Server/Migrations/20190706132925_UserWage.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UserWage : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Wage", - table: "Users", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Wage", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "Wage", + table: "Users", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Wage", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs b/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs index 018c6d2d..b529a027 100644 --- a/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs +++ b/ReallifeGamemode.Server/Migrations/20190707184050_BusRoutes.cs @@ -4,58 +4,58 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class BusRoutes : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "BusRoutes", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_BusRoutes", x => x.Id); - }); + migrationBuilder.CreateTable( + name: "BusRoutes", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BusRoutes", x => x.Id); + }); - migrationBuilder.CreateTable( - name: "BusRoutesPoints", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - Description = table.Column(nullable: true), - X = table.Column(nullable: false), - Y = table.Column(nullable: false), - Z = table.Column(nullable: false), - BusRouteId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_BusRoutesPoints", x => x.Id); - table.ForeignKey( - name: "FK_BusRoutesPoints_BusRoutes_BusRouteId", - column: x => x.BusRouteId, - principalTable: "BusRoutes", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "BusRoutesPoints", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + Description = table.Column(nullable: true), + X = table.Column(nullable: false), + Y = table.Column(nullable: false), + Z = table.Column(nullable: false), + BusRouteId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_BusRoutesPoints", x => x.Id); + table.ForeignKey( + name: "FK_BusRoutesPoints_BusRoutes_BusRouteId", + column: x => x.BusRouteId, + principalTable: "BusRoutes", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_BusRoutesPoints_BusRouteId", - table: "BusRoutesPoints", - column: "BusRouteId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "BusRoutesPoints"); - - migrationBuilder.DropTable( - name: "BusRoutes"); - } + migrationBuilder.CreateIndex( + name: "IX_BusRoutesPoints_BusRouteId", + table: "BusRoutesPoints", + column: "BusRouteId"); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BusRoutesPoints"); + + migrationBuilder.DropTable( + name: "BusRoutes"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs b/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs index fed69a47..52252cfb 100644 --- a/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs +++ b/ReallifeGamemode.Server/Migrations/20190708161922_UserHouseReferenceFix.cs @@ -3,41 +3,41 @@ namespace ReallifeGamemode.Database.Migrations { public partial class UserHouseReferenceFix : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "OwnerId", - table: "Houses", - nullable: true); + migrationBuilder.AddColumn( + name: "OwnerId", + table: "Houses", + nullable: true); - migrationBuilder.CreateIndex( - name: "IX_Houses_OwnerId", - table: "Houses", - column: "OwnerId"); + migrationBuilder.CreateIndex( + name: "IX_Houses_OwnerId", + table: "Houses", + column: "OwnerId"); - migrationBuilder.AddForeignKey( - name: "FK_Houses_Users_OwnerId", - table: "Houses", - column: "OwnerId", - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropForeignKey( - name: "FK_Houses_Users_OwnerId", - table: "Houses"); - - migrationBuilder.DropIndex( - name: "IX_Houses_OwnerId", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "OwnerId", - table: "Houses"); - } + migrationBuilder.AddForeignKey( + name: "FK_Houses_Users_OwnerId", + table: "Houses", + column: "OwnerId", + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropForeignKey( + name: "FK_Houses_Users_OwnerId", + table: "Houses"); + + migrationBuilder.DropIndex( + name: "IX_Houses_OwnerId", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "OwnerId", + table: "Houses"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs b/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs index 129f19ce..3dd816f0 100644 --- a/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs +++ b/ReallifeGamemode.Server/Migrations/20190715192123_JailTime.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class JailTime : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "JailTime", - table: "Users", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "JailTime", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "JailTime", + table: "Users", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "JailTime", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs b/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs index 2769c249..9204a832 100644 --- a/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs +++ b/ReallifeGamemode.Server/Migrations/20190719210722_PaydayTimer.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class PaydayTimer : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "PaydayTimer", - table: "Users", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "PaydayTimer", - table: "Users"); - } + migrationBuilder.AddColumn( + name: "PaydayTimer", + table: "Users", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "PaydayTimer", + table: "Users"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs b/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs index 94ea6dad..38884914 100644 --- a/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs +++ b/ReallifeGamemode.Server/Migrations/20190721144830_FactionWeapons.cs @@ -4,41 +4,41 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class FactionWeapons : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "FactionWeapons", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - FactionId = table.Column(nullable: false), - WeaponModel = table.Column(nullable: true), - SlotID = table.Column(nullable: false), - Rank = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_FactionWeapons", x => x.Id); - table.ForeignKey( - name: "FK_FactionWeapons_Factions_FactionId", - column: x => x.FactionId, - principalTable: "Factions", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "FactionWeapons", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + FactionId = table.Column(nullable: false), + WeaponModel = table.Column(nullable: true), + SlotID = table.Column(nullable: false), + Rank = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_FactionWeapons", x => x.Id); + table.ForeignKey( + name: "FK_FactionWeapons_Factions_FactionId", + column: x => x.FactionId, + principalTable: "Factions", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateIndex( - name: "IX_FactionWeapons_FactionId", - table: "FactionWeapons", - column: "FactionId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "FactionWeapons"); - } + migrationBuilder.CreateIndex( + name: "IX_FactionWeapons_FactionId", + table: "FactionWeapons", + column: "FactionId"); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "FactionWeapons"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs b/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs index 904f1556..c5e781bb 100644 --- a/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs +++ b/ReallifeGamemode.Server/Migrations/20190722201850_VehicleLivery.cs @@ -3,21 +3,21 @@ namespace ReallifeGamemode.Database.Migrations { public partial class VehicleLivery : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "Livery", - table: "ServerVehicles", - nullable: false, - defaultValue: 0); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "Livery", - table: "ServerVehicles"); - } + migrationBuilder.AddColumn( + name: "Livery", + table: "ServerVehicles", + nullable: false, + defaultValue: 0); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Livery", + table: "ServerVehicles"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs b/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs index e3003c88..4ec553bf 100644 --- a/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs +++ b/ReallifeGamemode.Server/Migrations/20190728142431_HouseEnhancments.cs @@ -4,70 +4,70 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class HouseEnhancments : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.AddColumn( - name: "CanRentIn", - table: "Houses", - nullable: false, - defaultValue: false); + migrationBuilder.AddColumn( + name: "CanRentIn", + table: "Houses", + nullable: false, + defaultValue: false); - migrationBuilder.AddColumn( - name: "RentalFee", - table: "Houses", - nullable: false, - defaultValue: 0); + migrationBuilder.AddColumn( + name: "RentalFee", + table: "Houses", + nullable: false, + defaultValue: 0); - migrationBuilder.CreateTable( - name: "HouseRentals", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - HouseId = table.Column(nullable: true), - UserId = table.Column(nullable: true) - }, - constraints: table => - { - table.PrimaryKey("PK_HouseRentals", x => x.Id); - table.ForeignKey( - name: "FK_HouseRentals_Houses_HouseId", - column: x => x.HouseId, - principalTable: "Houses", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - table.ForeignKey( - name: "FK_HouseRentals_Users_UserId", - column: x => x.UserId, - principalTable: "Users", - principalColumn: "Id", - onDelete: ReferentialAction.Restrict); - }); + migrationBuilder.CreateTable( + name: "HouseRentals", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + HouseId = table.Column(nullable: true), + UserId = table.Column(nullable: true) + }, + constraints: table => + { + table.PrimaryKey("PK_HouseRentals", x => x.Id); + table.ForeignKey( + name: "FK_HouseRentals_Houses_HouseId", + column: x => x.HouseId, + principalTable: "Houses", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + table.ForeignKey( + name: "FK_HouseRentals_Users_UserId", + column: x => x.UserId, + principalTable: "Users", + principalColumn: "Id", + onDelete: ReferentialAction.Restrict); + }); - migrationBuilder.CreateIndex( - name: "IX_HouseRentals_HouseId", - table: "HouseRentals", - column: "HouseId"); + migrationBuilder.CreateIndex( + name: "IX_HouseRentals_HouseId", + table: "HouseRentals", + column: "HouseId"); - migrationBuilder.CreateIndex( - name: "IX_HouseRentals_UserId", - table: "HouseRentals", - column: "UserId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "HouseRentals"); - - migrationBuilder.DropColumn( - name: "CanRentIn", - table: "Houses"); - - migrationBuilder.DropColumn( - name: "RentalFee", - table: "Houses"); - } + migrationBuilder.CreateIndex( + name: "IX_HouseRentals_UserId", + table: "HouseRentals", + column: "UserId"); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "HouseRentals"); + + migrationBuilder.DropColumn( + name: "CanRentIn", + table: "Houses"); + + migrationBuilder.DropColumn( + name: "RentalFee", + table: "Houses"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs b/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs index 3e410929..f253bca3 100644 --- a/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs +++ b/ReallifeGamemode.Server/Migrations/20190805184145_VehicleItems.cs @@ -4,41 +4,41 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class VehicleItems : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "VehicleItems", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - ItemId = table.Column(nullable: false), - VehicleId = table.Column(nullable: false), - Amount = table.Column(nullable: false), - Slot = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_VehicleItems", x => x.Id); - table.ForeignKey( - name: "FK_VehicleItems_ServerVehicles_VehicleId", - column: x => x.VehicleId, - principalTable: "ServerVehicles", - principalColumn: "Id", - onDelete: ReferentialAction.Cascade); - }); + migrationBuilder.CreateTable( + name: "VehicleItems", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + ItemId = table.Column(nullable: false), + VehicleId = table.Column(nullable: false), + Amount = table.Column(nullable: false), + Slot = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_VehicleItems", x => x.Id); + table.ForeignKey( + name: "FK_VehicleItems_ServerVehicles_VehicleId", + column: x => x.VehicleId, + principalTable: "ServerVehicles", + principalColumn: "Id", + onDelete: ReferentialAction.Cascade); + }); - migrationBuilder.CreateIndex( - name: "IX_VehicleItems_VehicleId", - table: "VehicleItems", - column: "VehicleId"); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "VehicleItems"); - } + migrationBuilder.CreateIndex( + name: "IX_VehicleItems_VehicleId", + table: "VehicleItems", + column: "VehicleId"); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "VehicleItems"); + } + } } diff --git a/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs b/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs index 88402a1a..528fa7c9 100644 --- a/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs +++ b/ReallifeGamemode.Server/Migrations/20190911192912_BusinessData.cs @@ -4,28 +4,28 @@ using Microsoft.EntityFrameworkCore.Migrations; namespace ReallifeGamemode.Database.Migrations { public partial class BusinessData : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) { - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.CreateTable( - name: "BusinessData", - columns: table => new - { - Id = table.Column(nullable: false) - .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), - BusinessId = table.Column(nullable: false), - Price = table.Column(nullable: false) - }, - constraints: table => - { - table.PrimaryKey("PK_BusinessData", x => x.Id); - }); - } - - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropTable( - name: "BusinessData"); - } + migrationBuilder.CreateTable( + name: "BusinessData", + columns: table => new + { + Id = table.Column(nullable: false) + .Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn), + BusinessId = table.Column(nullable: false), + Price = table.Column(nullable: false) + }, + constraints: table => + { + table.PrimaryKey("PK_BusinessData", x => x.Id); + }); } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropTable( + name: "BusinessData"); + } + } } diff --git a/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs b/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs index 04e8103b..09b7ace0 100644 --- a/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs +++ b/ReallifeGamemode.Server/Shop/Clothing/ClotheShop.cs @@ -10,35 +10,35 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Shop.Clothing { public class ClotheShop + { + public int category { get; set; } + public Vector3 vector { get; set; } + public List clotheList = new List(); + + public ClotheShop(int category, Vector3 vector) { - public int category { get; set; } - public Vector3 vector { get; set; } - public List clotheList = new List(); + this.category = category; + this.vector = vector; + LoadClothes(); + } - public ClotheShop(int category, Vector3 vector) - { - this.category = category; - this.vector = vector; - LoadClothes(); - } + public void LoadClothes() + { + using (var dbContext = new DatabaseContext()) + { + clotheList = dbContext.ShopClothes.ToList().FindAll(c => c.Category == category); + } + } - public void LoadClothes() - { - using (var dbContext = new DatabaseContext()) - { - clotheList = dbContext.ShopClothes.ToList().FindAll(c => c.Category == category); - } - } + public void LoadShopNUI(Player client) + { + bool gender = client.GetUser().GetCharacter().Gender; + List tops = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 11); + List legs = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 4); + List shoes = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 6); + List accessoires = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 7); - public void LoadShopNUI(Player client) - { - bool gender = client.GetUser().GetCharacter().Gender; - List tops = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 11); - List legs = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 4); - List shoes = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 6); - List accessoires = clotheList.ToList().FindAll(c => c.Gender == gender && c.ComponentId == 7); - - List clothes = new List + List clothes = new List { tops.ToArray(), legs.ToArray(), @@ -46,7 +46,7 @@ namespace ReallifeGamemode.Server.Shop.Clothing accessoires.ToArray() }; - client.TriggerEvent("clothesMenu:updateData", JsonConvert.SerializeObject(category), JsonConvert.SerializeObject(clothes.ToArray()), gender); - } + client.TriggerEvent("clothesMenu:updateData", JsonConvert.SerializeObject(category), JsonConvert.SerializeObject(clothes.ToArray()), gender); } + } } diff --git a/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs b/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs index 65d9535a..1357c925 100644 --- a/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs +++ b/ReallifeGamemode.Server/Shop/SevenEleven/ItemShop.cs @@ -10,34 +10,34 @@ using ReallifeGamemode.Server.Managers; namespace ReallifeGamemode.Server.Shop.SevenEleven { public class ItemShop + { + public Vector3 vector3; + public int id; + public List shopItems = new List(); + + public ItemShop(Vector3 vector3, int id) { - public Vector3 vector3; - public int id; - public List shopItems = new List(); - - public ItemShop(Vector3 vector3, int id) - { - this.vector3 = vector3; - this.id = id; - } - - public void LoadItems() - { - using (var dbContext = new DatabaseContext()) - { - shopItems = dbContext.ShopItems.ToList().FindAll(i => i.ShopId == id); - } - } - - public void LoadShopNUI(Player client) - { - List itemList = shopItems.ToList().FindAll(s => s.Amount > 0); - List items = new List(); - foreach (var item in itemList) - { - items.Add(InventoryManager.GetItemById(item.ItemId)); - } - client.TriggerEvent("itemMenu:updateData", JsonConvert.SerializeObject(items.ToArray())); - } + this.vector3 = vector3; + this.id = id; } + + public void LoadItems() + { + using (var dbContext = new DatabaseContext()) + { + shopItems = dbContext.ShopItems.ToList().FindAll(i => i.ShopId == id); + } + } + + public void LoadShopNUI(Player client) + { + List itemList = shopItems.ToList().FindAll(s => s.Amount > 0); + List items = new List(); + foreach (var item in itemList) + { + items.Add(InventoryManager.GetItemById(item.ItemId)); + } + client.TriggerEvent("itemMenu:updateData", JsonConvert.SerializeObject(items.ToArray())); + } + } } diff --git a/ReallifeGamemode.Server/Util/CheckPointHandle.cs b/ReallifeGamemode.Server/Util/CheckPointHandle.cs index 98d5f2ff..cdcbd5dd 100644 --- a/ReallifeGamemode.Server/Util/CheckPointHandle.cs +++ b/ReallifeGamemode.Server/Util/CheckPointHandle.cs @@ -5,104 +5,104 @@ using GTANetworkAPI; namespace ReallifeGamemode.Server.Util { public class CheckPointHandle : Script + { + public static List listHandle = new List(); + + public static void DeleteCheckpoints(Player player) { - public static List listHandle = new List(); - - public static void DeleteCheckpoints(Player player) - { - RemovePlayerHandlerFromList(player); - player.TriggerEvent("destroyCP"); - } - - public static void StartCheckPointRoute(Player player, IEnumerable nListCps, int delay, int markerID, int markerSize, string nEvent) - { - RemovePlayerHandlerFromList(player); - CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, nEvent); - playerHandle.DeleteCheckpoints(); - - listHandle.Add(playerHandle); - - playerHandle.StartRoute(); - } - - public static void RemovePlayerHandlerFromList(Player player) - { - CheckPointListForPlayer temp = null; - for (int a = 0; a < listHandle.Count; a++) - { - temp = listHandle[a]; - if (temp.player == player) - { - listHandle.Remove(temp); - } - } - } - - [RemoteEvent("playerInCheckpoint")] - public void PlayerInCheckpoint(Player user) - { - CheckPointListForPlayer temp = null; - for (int a = 0; a < listHandle.Count; a++) - { - temp = listHandle[a]; - if (temp.player == user) - { - break; - } - } - temp.NextCheckpoint(); - } + RemovePlayerHandlerFromList(player); + player.TriggerEvent("destroyCP"); } - public class CheckPointListForPlayer + public static void StartCheckPointRoute(Player player, IEnumerable nListCps, int delay, int markerID, int markerSize, string nEvent) { - public IEnumerable list = new List(); - public Player player; - public int delay = 0; - public int markerID; - public int markerSize; - public string eventInCheckpoint = ""; + RemovePlayerHandlerFromList(player); + CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, nEvent); + playerHandle.DeleteCheckpoints(); + + listHandle.Add(playerHandle); + + playerHandle.StartRoute(); + } + + public static void RemovePlayerHandlerFromList(Player player) + { + CheckPointListForPlayer temp = null; + for (int a = 0; a < listHandle.Count; a++) + { + temp = listHandle[a]; + if (temp.player == player) + { + listHandle.Remove(temp); + } + } + } + + [RemoteEvent("playerInCheckpoint")] + public void PlayerInCheckpoint(Player user) + { + CheckPointListForPlayer temp = null; + for (int a = 0; a < listHandle.Count; a++) + { + temp = listHandle[a]; + if (temp.player == user) + { + break; + } + } + temp.NextCheckpoint(); + } + } + + public class CheckPointListForPlayer + { + public IEnumerable list = new List(); + public Player player; + public int delay = 0; + public int markerID; + public int markerSize; + public string eventInCheckpoint = ""; private int checkPointsDone = 0; public CheckPointListForPlayer(Player nPlayer, IEnumerable nList, int nDelay, int nMarkerID, int nMarkerSize, string nEvent) - { - this.player = nPlayer; - this.list = nList; - this.delay = nDelay; - this.markerID = nMarkerID; - this.markerSize = nMarkerSize; - this.eventInCheckpoint = nEvent; - this.checkPointsDone = 0; - } - - public void StartRoute() - { - player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.eventInCheckpoint); - } - - public void NextCheckpoint() - { - this.checkPointsDone++; - if (this.list.Count() > checkPointsDone) - { - Vector3 nextCp = list.ElementAt(checkPointsDone); - this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.eventInCheckpoint); - } - if (this.list.Count() == checkPointsDone) - { - CheckPointHandle.RemovePlayerHandlerFromList(this.player); - - if (this.eventInCheckpoint == "busDriverJob") - { - Job.BusDriverJob.payWage(this.player, 1000); - } - } - } - - public void DeleteCheckpoints() - { - this.player.TriggerEvent("destroyCP"); - } + { + this.player = nPlayer; + this.list = nList; + this.delay = nDelay; + this.markerID = nMarkerID; + this.markerSize = nMarkerSize; + this.eventInCheckpoint = nEvent; + this.checkPointsDone = 0; } + + public void StartRoute() + { + player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.eventInCheckpoint); + } + + public void NextCheckpoint() + { + this.checkPointsDone++; + if (this.list.Count() > checkPointsDone) + { + Vector3 nextCp = list.ElementAt(checkPointsDone); + this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.eventInCheckpoint); + } + if (this.list.Count() == checkPointsDone) + { + CheckPointHandle.RemovePlayerHandlerFromList(this.player); + + if (this.eventInCheckpoint == "busDriverJob") + { + Job.BusDriverJob.payWage(this.player, 1000); + } + } + } + + public void DeleteCheckpoints() + { + this.player.TriggerEvent("destroyCP"); + } + } } diff --git a/ReallifeGamemode.Server/Util/Converter.cs b/ReallifeGamemode.Server/Util/Converter.cs index 5eccaac1..709ad2e1 100644 --- a/ReallifeGamemode.Server/Util/Converter.cs +++ b/ReallifeGamemode.Server/Util/Converter.cs @@ -4,34 +4,34 @@ using GTANetworkAPI; namespace ReallifeGamemode.Server.Util { public class Converter + { + public static Color HexToColor(string hexColor) { - public static Color HexToColor(string hexColor) - { - //Remove # if present - if (hexColor.IndexOf('#') != -1) - hexColor = hexColor.Replace("#", ""); + //Remove # if present + if (hexColor.IndexOf('#') != -1) + hexColor = hexColor.Replace("#", ""); - int red = 0; - int green = 0; - int blue = 0; + int red = 0; + int green = 0; + int blue = 0; - if (hexColor.Length == 6) - { - //#RRGGBB - red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier); - green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier); - blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier); - } - else if (hexColor.Length == 3) - { - //#RGB - red = int.Parse(hexColor[0].ToString() + hexColor[0].ToString(), NumberStyles.AllowHexSpecifier); - green = int.Parse(hexColor[1].ToString() + hexColor[1].ToString(), NumberStyles.AllowHexSpecifier); - blue = int.Parse(hexColor[2].ToString() + hexColor[2].ToString(), NumberStyles.AllowHexSpecifier); - } + if (hexColor.Length == 6) + { + //#RRGGBB + red = int.Parse(hexColor.Substring(0, 2), NumberStyles.AllowHexSpecifier); + green = int.Parse(hexColor.Substring(2, 2), NumberStyles.AllowHexSpecifier); + blue = int.Parse(hexColor.Substring(4, 2), NumberStyles.AllowHexSpecifier); + } + else if (hexColor.Length == 3) + { + //#RGB + red = int.Parse(hexColor[0].ToString() + hexColor[0].ToString(), NumberStyles.AllowHexSpecifier); + green = int.Parse(hexColor[1].ToString() + hexColor[1].ToString(), NumberStyles.AllowHexSpecifier); + blue = int.Parse(hexColor[2].ToString() + hexColor[2].ToString(), NumberStyles.AllowHexSpecifier); + } - Color returnColor = new Color(red, green, blue); - return returnColor; - } + Color returnColor = new Color(red, green, blue); + return returnColor; } + } } diff --git a/ReallifeGamemode.Server/Util/GlobalHelper.cs b/ReallifeGamemode.Server/Util/GlobalHelper.cs index 9dde7e76..65ff4169 100644 --- a/ReallifeGamemode.Server/Util/GlobalHelper.cs +++ b/ReallifeGamemode.Server/Util/GlobalHelper.cs @@ -4,16 +4,16 @@ using GTANetworkAPI; namespace ReallifeGamemode.Server.Util { public static class GlobalHelper - { - public static List DutyAdmins = new List(); - public static List tsupAdmins = new List(); + { + public static List DutyAdmins = new List(); + public static List tsupAdmins = new List(); - public static Dictionary CustomJoinMessages = new Dictionary + public static Dictionary CustomJoinMessages = new Dictionary { { ".MichaPlays.", "Der Echte Ballas Leader ist online (MichaPlays)" }, { "balboistderbeste", "Hurra! Hurra! Der Balbo ist jetzt da! (balbo)" }, { "Roachkook", "Niemand, nicht einmal deine Mutter möchte so etwas sehen. (Siga)" }, { "Paaqo1337", "Picasso is back! (Paaqo)" } }; - } + } } diff --git a/ReallifeGamemode.Server/Util/IndicatorData.cs b/ReallifeGamemode.Server/Util/IndicatorData.cs index a9dc68ef..7260cd11 100644 --- a/ReallifeGamemode.Server/Util/IndicatorData.cs +++ b/ReallifeGamemode.Server/Util/IndicatorData.cs @@ -1,8 +1,8 @@ namespace ReallifeGamemode.Server.Util { public class IndicatorData - { - public bool Left { get; set; } = false; - public bool Right { get; set; } = false; - } + { + public bool Left { get; set; } = false; + public bool Right { get; set; } = false; + } } diff --git a/ReallifeGamemode.Server/Util/SmoothThrottle.cs b/ReallifeGamemode.Server/Util/SmoothThrottle.cs index 65ec3d65..7b3fcbf0 100644 --- a/ReallifeGamemode.Server/Util/SmoothThrottle.cs +++ b/ReallifeGamemode.Server/Util/SmoothThrottle.cs @@ -3,38 +3,38 @@ namespace ReallifeGamemode.Server.Util { public class SmoothThrottleAntiReverse : Script + { + [ServerEvent(Event.PlayerExitVehicle)] + public void SmoothThrottleExitEvent(Player player, Vehicle veh) { - [ServerEvent(Event.PlayerExitVehicle)] - public void SmoothThrottleExitEvent(Player player, Vehicle veh) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerExitVehicle", veh); - } - - [ServerEvent(Event.PlayerEnterVehicle)] - public void SmoothThrottleEnterEvent(Player player, Vehicle veh, sbyte seat) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerEnterVehicle", veh, seat); - } - - //You can call these to change settings on player if you want. - //Note that these are toggles, you only need to call them once. - - //This disables/enables the smooth throttle - public static void SetSmoothThrottle(Player player, bool turnedOn) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetSmoothThrottle", turnedOn); - } - - //This disables/enables anti reverse - public static void SetAntiReverse(Player player, bool turnedOn) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetAntiReverse", turnedOn); - } - - //This disables/enables both - public static void SetSmoothThrottleAntiReverse(Player player, bool turnedOn) - { - NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetGlobal", turnedOn); - } + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerExitVehicle", veh); } + + [ServerEvent(Event.PlayerEnterVehicle)] + public void SmoothThrottleEnterEvent(Player player, Vehicle veh, sbyte seat) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_PlayerEnterVehicle", veh, seat); + } + + //You can call these to change settings on player if you want. + //Note that these are toggles, you only need to call them once. + + //This disables/enables the smooth throttle + public static void SetSmoothThrottle(Player player, bool turnedOn) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetSmoothThrottle", turnedOn); + } + + //This disables/enables anti reverse + public static void SetAntiReverse(Player player, bool turnedOn) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetAntiReverse", turnedOn); + } + + //This disables/enables both + public static void SetSmoothThrottleAntiReverse(Player player, bool turnedOn) + { + NAPI.ClientEvent.TriggerClientEvent(player, "SmoothThrottle_SetGlobal", turnedOn); + } + } } diff --git a/ReallifeGamemode.Server/Util/TaxiContract.cs b/ReallifeGamemode.Server/Util/TaxiContract.cs index b4c1449b..91943f6c 100644 --- a/ReallifeGamemode.Server/Util/TaxiContract.cs +++ b/ReallifeGamemode.Server/Util/TaxiContract.cs @@ -3,11 +3,11 @@ namespace ReallifeGamemode.Server.Util { public class TaxiContract - { - public string Name { get; set; } + { + public string Name { get; set; } - public Vector3 Position { get; set; } + public Vector3 Position { get; set; } - public Player Driver { get; set; } - } + public Player Driver { get; set; } + } } diff --git a/ReallifeGamemode.Server/Util/ThreadTimers.cs b/ReallifeGamemode.Server/Util/ThreadTimers.cs index 09880058..608fca2d 100644 --- a/ReallifeGamemode.Server/Util/ThreadTimers.cs +++ b/ReallifeGamemode.Server/Util/ThreadTimers.cs @@ -8,50 +8,50 @@ using ReallifeGamemode.Server.WeaponDeal; namespace ReallifeGamemode.Server.Util { public class ThreadTimers + { + private static Timer timer500 = new Timer(500); //0.5 seconds timer + private static Timer timer2500 = new Timer(2500); //2.5 seconds timer + private static Timer timer10000 = new Timer(10000); // 10 second timer + private static Timer timer60000 = new Timer(60000); //60 seconds timer + + public static void StartAllTimers() { - private static Timer timer500 = new Timer(500); //0.5 seconds timer - private static Timer timer2500 = new Timer(2500); //2.5 seconds timer - private static Timer timer10000 = new Timer(10000); // 10 second timer - private static Timer timer60000 = new Timer(60000); //60 seconds timer + timer500.Start(); + timer500.Elapsed += Timer500_Elapsed; - public static void StartAllTimers() - { - timer500.Start(); - timer500.Elapsed += Timer500_Elapsed; + timer2500.Start(); + timer2500.Elapsed += Timer2500_Elapsed; - timer2500.Start(); - timer2500.Elapsed += Timer2500_Elapsed; + timer10000.Start(); + timer10000.Elapsed += Timer10000_Elapsed; - timer10000.Start(); - timer10000.Elapsed += Timer10000_Elapsed; - - timer60000.Start(); - timer60000.Elapsed += Timer60000_Elapsed; - } - - private static void Timer500_Elapsed(object sender, ElapsedEventArgs e) - { - TaxiDriverJob.UpdateFare(); - VehicleManager.VehicleTimerTick(); - } - - private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e) - { - Jail.JailOut_Elapsed(); - Economy.Timer_Elapsed(); - WeaponDealManager.Timer_Elapsed(); - } - - private static void Timer10000_Elapsed(object sender, ElapsedEventArgs e) - { - Jail.BrakeOut_Elapsed(); - } - - private static void Timer2500_Elapsed(object sender, ElapsedEventArgs e) - { - WantedEscapeTimer.Timer_Elapsed(); - Jail.JailIn_Elapsed(); - Gangwar.Gangwar.Value_TimerElapsed(); - } + timer60000.Start(); + timer60000.Elapsed += Timer60000_Elapsed; } + + private static void Timer500_Elapsed(object sender, ElapsedEventArgs e) + { + TaxiDriverJob.UpdateFare(); + VehicleManager.VehicleTimerTick(); + } + + private static void Timer60000_Elapsed(object sender, ElapsedEventArgs e) + { + Jail.JailOut_Elapsed(); + Economy.Timer_Elapsed(); + WeaponDealManager.Timer_Elapsed(); + } + + private static void Timer10000_Elapsed(object sender, ElapsedEventArgs e) + { + Jail.BrakeOut_Elapsed(); + } + + private static void Timer2500_Elapsed(object sender, ElapsedEventArgs e) + { + WantedEscapeTimer.Timer_Elapsed(); + Jail.JailIn_Elapsed(); + Gangwar.Gangwar.Value_TimerElapsed(); + } + } } diff --git a/ReallifeGamemode.Server/Util/TransactionResult.cs b/ReallifeGamemode.Server/Util/TransactionResult.cs index c9453987..ed0bc493 100644 --- a/ReallifeGamemode.Server/Util/TransactionResult.cs +++ b/ReallifeGamemode.Server/Util/TransactionResult.cs @@ -1,11 +1,11 @@ namespace ReallifeGamemode.Server.Util { public enum TransactionResult - { - SUCCESS, - SENDER_NO_BANKACCOUNT, - RECEIVER_NO_BANKACCOUNT, - SENDER_NOT_ENOUGH_MONEY, - NEGATIVE_MONEY_SENT - } + { + SUCCESS, + SENDER_NO_BANKACCOUNT, + RECEIVER_NO_BANKACCOUNT, + SENDER_NOT_ENOUGH_MONEY, + NEGATIVE_MONEY_SENT + } } diff --git a/ReallifeGamemode.Server/Util/VehicleSync.cs b/ReallifeGamemode.Server/Util/VehicleSync.cs index b876bcc3..fd8676ff 100644 --- a/ReallifeGamemode.Server/Util/VehicleSync.cs +++ b/ReallifeGamemode.Server/Util/VehicleSync.cs @@ -6,523 +6,523 @@ namespace ReallifeGamemode.Server.Util { //Enums for ease of use public enum WindowID + { + WindowFrontRight, + WindowFrontLeft, + WindowRearRight, + WindowRearLeft + } + + public enum WindowState + { + WindowFixed, + WindowDown, + WindowBroken + } + + public enum DoorID + { + DoorFrontLeft, + DoorFrontRight, + DoorRearLeft, + DoorRearRight, + DoorHood, + DoorTrunk + } + + public enum DoorState + { + DoorClosed, + DoorOpen, + DoorBroken, + } + + public enum WheelID + { + Wheel0, + Wheel1, + Wheel2, + Wheel3, + Wheel4, + Wheel5, + Wheel6, + Wheel7, + Wheel8, + Wheel9 + } + + public enum WheelState + { + WheelFixed, + WheelBurst, + WheelOnRim, + } + + public class VehicleStreaming : Script + { + //This is the data object which will be synced to vehicles + public class VehicleSyncData { - WindowFrontRight, - WindowFrontLeft, - WindowRearRight, - WindowRearLeft + //Used to bypass some streaming bugs + public Vector3 Position { get; set; } = new Vector3(); + + public Vector3 Rotation { get; set; } = new Vector3(); + + //Basics + public float Dirt { get; set; } = 0.0f; + + public bool Locked { get; set; } = true; + public bool Engine { get; set; } = false; + + //(Not synced) + //public float BodyHealth { get; set; } = 1000.0f; + //public float EngineHealth { get; set; } = 1000.0f; + + //Doors 0-7 (0 = closed, 1 = open, 2 = broken) (This uses enums so don't worry about it) + public int[] Door { get; set; } = new int[8] { 0, 0, 0, 0, 0, 0, 0, 0 }; + + //Windows (0 = up, 1 = down, 2 = smashed) (This uses enums so don't worry about it) + public int[] Window { get; set; } = new int[4] { 0, 0, 0, 0 }; + + //Wheels 0-7, 45/47 (0 = fixed, 1 = flat, 2 = missing) (This uses enums so don't worry about it) + public int[] Wheel { get; set; } = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; } - public enum WindowState + //API functions for people to use + public static void SetVehicleWindowState(Vehicle veh, WindowID window, WindowState state) { - WindowFixed, - WindowDown, - WindowBroken + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) //If data doesn't exist create a new one. This is the process for all API functions + data = new VehicleSyncData(); + + data.Window[(int)window] = (int)state; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus_Single", veh.Handle, (int)window, (int)state); } - public enum DoorID + public static WindowState GetVehicleWindowState(Vehicle veh, WindowID window) { - DoorFrontLeft, - DoorFrontRight, - DoorRearLeft, - DoorRearRight, - DoorHood, - DoorTrunk + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return (WindowState)data.Window[(int)window]; } - public enum DoorState + public static void SetVehicleWheelState(Vehicle veh, WheelID wheel, WheelState state) { - DoorClosed, - DoorOpen, - DoorBroken, + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Wheel[(int)wheel] = (int)state; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus_Single", veh.Handle, (int)wheel, (int)state); } - public enum WheelID + public static WheelState GetVehicleWheelState(Vehicle veh, WheelID wheel) { - Wheel0, - Wheel1, - Wheel2, - Wheel3, - Wheel4, - Wheel5, - Wheel6, - Wheel7, - Wheel8, - Wheel9 + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return (WheelState)data.Wheel[(int)wheel]; } - public enum WheelState + public static void SetVehicleDirt(Vehicle veh, float dirt) { - WheelFixed, - WheelBurst, - WheelOnRim, + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Dirt = dirt; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); } - public class VehicleStreaming : Script + public static float GetVehicleDirt(Vehicle veh) { - //This is the data object which will be synced to vehicles - public class VehicleSyncData + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return data.Dirt; + } + + public static void SetDoorState(Vehicle veh, DoorID door, DoorState state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Door[(int)door] = (int)state; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus_Single", veh, (int)door, (int)state); + } + + public static DoorState GetDoorState(Vehicle veh, DoorID door) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return (DoorState)data.Door[(int)door]; + } + + public static void SetEngineState(Vehicle veh, bool status) + { + veh.EngineStatus = status; + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Engine = status; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetEngineStatus", veh, status); + } + + public static bool GetEngineState(Vehicle veh) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return veh.EngineStatus; + } + + public static void SetLockStatus(Vehicle veh, bool status) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Locked = status; + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetLockStatus", veh, status); + NAPI.Pools.GetAllPlayers().ForEach(p => + { + if (p.IsInVehicle && p.Vehicle.Handle == veh.Handle) { - //Used to bypass some streaming bugs - public Vector3 Position { get; set; } = new Vector3(); - - public Vector3 Rotation { get; set; } = new Vector3(); - - //Basics - public float Dirt { get; set; } = 0.0f; - - public bool Locked { get; set; } = true; - public bool Engine { get; set; } = false; - - //(Not synced) - //public float BodyHealth { get; set; } = 1000.0f; - //public float EngineHealth { get; set; } = 1000.0f; - - //Doors 0-7 (0 = closed, 1 = open, 2 = broken) (This uses enums so don't worry about it) - public int[] Door { get; set; } = new int[8] { 0, 0, 0, 0, 0, 0, 0, 0 }; - - //Windows (0 = up, 1 = down, 2 = smashed) (This uses enums so don't worry about it) - public int[] Window { get; set; } = new int[4] { 0, 0, 0, 0 }; - - //Wheels 0-7, 45/47 (0 = fixed, 1 = flat, 2 = missing) (This uses enums so don't worry about it) - public int[] Wheel { get; set; } = new int[10] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + p.TriggerEvent("Vehicle_setLockStatus", status); } + }); + } - //API functions for people to use - public static void SetVehicleWindowState(Vehicle veh, WindowID window, WindowState state) + public static bool GetLockState(Vehicle veh) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + { + data = new VehicleSyncData(); + UpdateVehicleSyncData(veh, data); + } + return data.Locked; + } + + //Used internally only but publicly available in case any of you need it + public static VehicleSyncData GetVehicleSyncData(Vehicle veh) + { + if (veh != null) + { + if (NAPI.Entity.DoesEntityExist(veh)) { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) //If data doesn't exist create a new one. This is the process for all API functions - data = new VehicleSyncData(); - - data.Window[(int)window] = (int)state; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus_Single", veh.Handle, (int)window, (int)state); - } - - public static WindowState GetVehicleWindowState(Vehicle veh, WindowID window) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) + if (NAPI.Data.HasEntitySharedData(veh, "VehicleSyncData")) + { + try { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); + //API converts class objects to JObject so we have to change it back + JObject obj = (JObject)NAPI.Data.GetEntitySharedData(veh, "VehicleSyncData"); + return obj.ToObject(); } - return (WindowState)data.Window[(int)window]; + catch (Exception) { return null; } + } } + } - public static void SetVehicleWheelState(Vehicle veh, WheelID wheel, WheelState state) + return default; //null + } + + //Used internally only but publicly available in case any of you need it + public static bool UpdateVehicleSyncData(Vehicle veh, VehicleSyncData data) + { + if (veh != null) + { + if (NAPI.Entity.DoesEntityExist(veh)) { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Wheel[(int)wheel] = (int)state; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus_Single", veh.Handle, (int)wheel, (int)state); - } - - public static WheelState GetVehicleWheelState(Vehicle veh, WheelID wheel) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return (WheelState)data.Wheel[(int)wheel]; - } - - public static void SetVehicleDirt(Vehicle veh, float dirt) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Dirt = dirt; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); - } - - public static float GetVehicleDirt(Vehicle veh) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return data.Dirt; - } - - public static void SetDoorState(Vehicle veh, DoorID door, DoorState state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Door[(int)door] = (int)state; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus_Single", veh, (int)door, (int)state); - } - - public static DoorState GetDoorState(Vehicle veh, DoorID door) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return (DoorState)data.Door[(int)door]; - } - - public static void SetEngineState(Vehicle veh, bool status) - { - veh.EngineStatus = status; - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Engine = status; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetEngineStatus", veh, status); - } - - public static bool GetEngineState(Vehicle veh) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return veh.EngineStatus; - } - - public static void SetLockStatus(Vehicle veh, bool status) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Locked = status; - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetLockStatus", veh, status); - NAPI.Pools.GetAllPlayers().ForEach(p => - { - if (p.IsInVehicle && p.Vehicle.Handle == veh.Handle) - { - p.TriggerEvent("Vehicle_setLockStatus", status); - } - }); - } - - public static bool GetLockState(Vehicle veh) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - { - data = new VehicleSyncData(); - UpdateVehicleSyncData(veh, data); - } - return data.Locked; - } - - //Used internally only but publicly available in case any of you need it - public static VehicleSyncData GetVehicleSyncData(Vehicle veh) - { - if (veh != null) - { - if (NAPI.Entity.DoesEntityExist(veh)) - { - if (NAPI.Data.HasEntitySharedData(veh, "VehicleSyncData")) - { - try - { - //API converts class objects to JObject so we have to change it back - JObject obj = (JObject)NAPI.Data.GetEntitySharedData(veh, "VehicleSyncData"); - return obj.ToObject(); - } - catch (Exception) { return null; } - } - } - } - - return default; //null - } - - //Used internally only but publicly available in case any of you need it - public static bool UpdateVehicleSyncData(Vehicle veh, VehicleSyncData data) - { - if (veh != null) - { - if (NAPI.Entity.DoesEntityExist(veh)) - { - if (data != null) - { - data.Position = veh.Position; - data.Rotation = veh.Rotation; - NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); - return true; - } - } - } - return false; - } - - public static void SetVehicleRotation(Vehicle veh, VehicleSyncData data, Vector3 rot) - { - if (veh != null) - { - if (NAPI.Entity.DoesEntityExist(veh)) - { - if (data != null) - { - data.Rotation = rot; - NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); - } - } - } - } - - //Called from the client to sync dirt level - [RemoteEvent("VehStream_SetDirtLevel")] - public void VehStreamSetDirtLevel(Player player, Vehicle veh, float dirt) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Dirt = dirt; - - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); - } - - //Called from the client to sync door data - [RemoteEvent("VehStream_SetDoorData")] - public void VehStreamSetDoorData(Player player, Vehicle veh, int door1state, int door2state, int door3state, int door4state, int door5state, int door6state, int door7state, int door8state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Door[0] = door1state; - data.Door[1] = door2state; - data.Door[2] = door3state; - data.Door[3] = door4state; - data.Door[4] = door5state; - data.Door[5] = door6state; - data.Door[6] = door7state; - data.Door[7] = door8state; - - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, door1state, door2state, door3state, door4state, door5state, door6state, door7state, door8state); - } - - //Called from the client to sync window data - [RemoteEvent("VehStream_SetWindowData")] - public void VehStreamSetWindowData(Player player, Vehicle veh, int window1state, int window2state, int window3state, int window4state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Window[0] = window1state; - data.Window[1] = window2state; - data.Window[2] = window3state; - data.Window[3] = window4state; - - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus", veh.Handle, window1state, window2state, window3state, window4state); - } - - //Called from the client to sync wheel data - [RemoteEvent("VehStream_SetWheelData")] - public void VehStreamSetWheelData(Player player, Vehicle veh, int wheel1state, int wheel2state, int wheel3state, int wheel4state, int wheel5state, int wheel6state, int wheel7state, int wheel8state, int wheel9state, int wheel10state) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Wheel[0] = wheel1state; - data.Wheel[1] = wheel2state; - data.Wheel[2] = wheel3state; - data.Wheel[3] = wheel4state; - data.Wheel[4] = wheel5state; - data.Wheel[5] = wheel6state; - data.Wheel[6] = wheel7state; - data.Wheel[7] = wheel8state; - data.Wheel[8] = wheel9state; - data.Wheel[9] = wheel10state; - UpdateVehicleSyncData(veh, data); - - //Re-distribute the goods - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus", veh.Handle, wheel1state, wheel2state, wheel3state, wheel4state, wheel5state, wheel6state, wheel7state, wheel8state, wheel9state, wheel10state); - } - - //Other events - [ServerEvent(Event.PlayerEnterVehicleAttempt)] - public void VehStreamEnterAttempt(Player player, Vehicle veh, sbyte seat) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicleAttempt", veh.Handle.Value, seat); - } - - [ServerEvent(Event.PlayerExitVehicleAttempt)] - public void VehStreamExitAttempt(Player player, Vehicle veh) - { - if (player.HasData("isDead") && player.GetData("isDead")) - return; - - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - + if (data != null) + { data.Position = veh.Position; data.Rotation = veh.Rotation; - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicleAttempt", veh); - } - - [ServerEvent(Event.PlayerExitVehicle)] - public void VehStreamExit(Player player, Vehicle veh) - { - if (player.HasData("isDead") && player.GetData("isDead")) - return; - - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Position = veh.Position; - data.Rotation = veh.Rotation; - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicle", veh.Handle.Value); - } - - [ServerEvent(Event.PlayerEnterVehicle)] - public void VehStreamEnter(Player player, Vehicle veh, sbyte seat) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - UpdateVehicleSyncData(veh, data); - NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicle", veh, seat); - player.TriggerEvent("Vehicle_setLockStatus", data.Locked); - } - - //[ServerEvent(Event.VehicleDamage)] - //public void VehDamage(Vehicle veh, float bodyHealthLoss, float engineHealthLoss) - //{ - // VehicleSyncData data = GetVehicleSyncData(veh); - // if (data == default(VehicleSyncData)) - // data = new VehicleSyncData(); - - // data.BodyHealth -= bodyHealthLoss; - // data.EngineHealth -= engineHealthLoss; - - // UpdateVehicleSyncData(veh, data); - - // if (NAPI.Vehicle.GetVehicleDriver(veh) != default(Player)) //Doesn't work? - // NAPI.ClientEvent.TriggerClientEvent(NAPI.Vehicle.GetVehicleDriver(veh), "VehStream_PlayerExitVehicleAttempt", veh); - //} - - [ServerEvent(Event.VehicleDoorBreak)] - public void VehDoorBreak(Vehicle veh, int index) - { - VehicleSyncData data = GetVehicleSyncData(veh); - if (data == default(VehicleSyncData)) - data = new VehicleSyncData(); - - data.Door[index] = 2; - - UpdateVehicleSyncData(veh, data); - - NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, data.Door[0], data.Door[1], data.Door[2], data.Door[3], data.Door[4], data.Door[5], data.Door[6], data.Door[7]); - } - - // INDICATORS - - [RemoteEvent("CLIENT:toggleLeftIndicator")] - public void ToggleLeftIndicator(Player player) - { - if (!player.IsInVehicle || player.VehicleSeat != 0) return; - Vehicle veh = player.Vehicle; - - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - - if (data.Left && data.Right) - { - data.Right = false; - } - else - { - data.Left = !data.Left; - data.Right = false; - } - - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); - } - - [RemoteEvent("CLIENT:toggleRightIndicator")] - public void ToggleRightIndicator(Player player) - { - if (!player.IsInVehicle || player.VehicleSeat != 0) return; - Vehicle veh = player.Vehicle; - - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - - if (data.Left && data.Right) - { - data.Left = false; - } - else - { - data.Right = !data.Right; - data.Left = false; - } - - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); - } - - [RemoteEvent("CLIENT:toggleWarningIndicator")] - public void ToggleWarningIndicator(Player player) - { - if (!player.IsInVehicle || player.VehicleSeat != 0) return; - Vehicle veh = player.Vehicle; - - if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); - - if (data.Right && data.Left) - { - data.Right = false; - data.Left = false; - } - else - { - data.Right = true; - data.Left = true; - } - - veh.SetData("indicatorData", data); - NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); + return true; + } } + } + return false; } + + public static void SetVehicleRotation(Vehicle veh, VehicleSyncData data, Vector3 rot) + { + if (veh != null) + { + if (NAPI.Entity.DoesEntityExist(veh)) + { + if (data != null) + { + data.Rotation = rot; + NAPI.Data.SetEntitySharedData(veh, "VehicleSyncData", data); + } + } + } + } + + //Called from the client to sync dirt level + [RemoteEvent("VehStream_SetDirtLevel")] + public void VehStreamSetDirtLevel(Player player, Vehicle veh, float dirt) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Dirt = dirt; + + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDirtLevel", veh.Handle, dirt); + } + + //Called from the client to sync door data + [RemoteEvent("VehStream_SetDoorData")] + public void VehStreamSetDoorData(Player player, Vehicle veh, int door1state, int door2state, int door3state, int door4state, int door5state, int door6state, int door7state, int door8state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Door[0] = door1state; + data.Door[1] = door2state; + data.Door[2] = door3state; + data.Door[3] = door4state; + data.Door[4] = door5state; + data.Door[5] = door6state; + data.Door[6] = door7state; + data.Door[7] = door8state; + + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, door1state, door2state, door3state, door4state, door5state, door6state, door7state, door8state); + } + + //Called from the client to sync window data + [RemoteEvent("VehStream_SetWindowData")] + public void VehStreamSetWindowData(Player player, Vehicle veh, int window1state, int window2state, int window3state, int window4state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Window[0] = window1state; + data.Window[1] = window2state; + data.Window[2] = window3state; + data.Window[3] = window4state; + + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWindowStatus", veh.Handle, window1state, window2state, window3state, window4state); + } + + //Called from the client to sync wheel data + [RemoteEvent("VehStream_SetWheelData")] + public void VehStreamSetWheelData(Player player, Vehicle veh, int wheel1state, int wheel2state, int wheel3state, int wheel4state, int wheel5state, int wheel6state, int wheel7state, int wheel8state, int wheel9state, int wheel10state) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Wheel[0] = wheel1state; + data.Wheel[1] = wheel2state; + data.Wheel[2] = wheel3state; + data.Wheel[3] = wheel4state; + data.Wheel[4] = wheel5state; + data.Wheel[5] = wheel6state; + data.Wheel[6] = wheel7state; + data.Wheel[7] = wheel8state; + data.Wheel[8] = wheel9state; + data.Wheel[9] = wheel10state; + UpdateVehicleSyncData(veh, data); + + //Re-distribute the goods + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleWheelStatus", veh.Handle, wheel1state, wheel2state, wheel3state, wheel4state, wheel5state, wheel6state, wheel7state, wheel8state, wheel9state, wheel10state); + } + + //Other events + [ServerEvent(Event.PlayerEnterVehicleAttempt)] + public void VehStreamEnterAttempt(Player player, Vehicle veh, sbyte seat) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicleAttempt", veh.Handle.Value, seat); + } + + [ServerEvent(Event.PlayerExitVehicleAttempt)] + public void VehStreamExitAttempt(Player player, Vehicle veh) + { + if (player.HasData("isDead") && player.GetData("isDead")) + return; + + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Position = veh.Position; + data.Rotation = veh.Rotation; + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicleAttempt", veh); + } + + [ServerEvent(Event.PlayerExitVehicle)] + public void VehStreamExit(Player player, Vehicle veh) + { + if (player.HasData("isDead") && player.GetData("isDead")) + return; + + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Position = veh.Position; + data.Rotation = veh.Rotation; + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerExitVehicle", veh.Handle.Value); + } + + [ServerEvent(Event.PlayerEnterVehicle)] + public void VehStreamEnter(Player player, Vehicle veh, sbyte seat) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + UpdateVehicleSyncData(veh, data); + NAPI.ClientEvent.TriggerClientEvent(player, "VehStream_PlayerEnterVehicle", veh, seat); + player.TriggerEvent("Vehicle_setLockStatus", data.Locked); + } + + //[ServerEvent(Event.VehicleDamage)] + //public void VehDamage(Vehicle veh, float bodyHealthLoss, float engineHealthLoss) + //{ + // VehicleSyncData data = GetVehicleSyncData(veh); + // if (data == default(VehicleSyncData)) + // data = new VehicleSyncData(); + + // data.BodyHealth -= bodyHealthLoss; + // data.EngineHealth -= engineHealthLoss; + + // UpdateVehicleSyncData(veh, data); + + // if (NAPI.Vehicle.GetVehicleDriver(veh) != default(Player)) //Doesn't work? + // NAPI.ClientEvent.TriggerClientEvent(NAPI.Vehicle.GetVehicleDriver(veh), "VehStream_PlayerExitVehicleAttempt", veh); + //} + + [ServerEvent(Event.VehicleDoorBreak)] + public void VehDoorBreak(Vehicle veh, int index) + { + VehicleSyncData data = GetVehicleSyncData(veh); + if (data == default(VehicleSyncData)) + data = new VehicleSyncData(); + + data.Door[index] = 2; + + UpdateVehicleSyncData(veh, data); + + NAPI.ClientEvent.TriggerClientEventInDimension(veh.Dimension, "VehStream_SetVehicleDoorStatus", veh.Handle, data.Door[0], data.Door[1], data.Door[2], data.Door[3], data.Door[4], data.Door[5], data.Door[6], data.Door[7]); + } + + // INDICATORS + + [RemoteEvent("CLIENT:toggleLeftIndicator")] + public void ToggleLeftIndicator(Player player) + { + if (!player.IsInVehicle || player.VehicleSeat != 0) return; + Vehicle veh = player.Vehicle; + + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + + if (data.Left && data.Right) + { + data.Right = false; + } + else + { + data.Left = !data.Left; + data.Right = false; + } + + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + } + + [RemoteEvent("CLIENT:toggleRightIndicator")] + public void ToggleRightIndicator(Player player) + { + if (!player.IsInVehicle || player.VehicleSeat != 0) return; + Vehicle veh = player.Vehicle; + + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + + if (data.Left && data.Right) + { + data.Left = false; + } + else + { + data.Right = !data.Right; + data.Left = false; + } + + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + } + + [RemoteEvent("CLIENT:toggleWarningIndicator")] + public void ToggleWarningIndicator(Player player) + { + if (!player.IsInVehicle || player.VehicleSeat != 0) return; + Vehicle veh = player.Vehicle; + + if (!(veh.GetData("indicatorData") is IndicatorData data)) data = new IndicatorData(); + + if (data.Right && data.Left) + { + data.Right = false; + data.Left = false; + } + else + { + data.Right = true; + data.Left = true; + } + + veh.SetData("indicatorData", data); + NAPI.ClientEvent.TriggerClientEventForAll("SERVER:setIndicatorStatus", veh.Handle.Value, data.Left, data.Right); + } + } } diff --git a/ReallifeGamemode.Server/Wanted/Autowanted.cs b/ReallifeGamemode.Server/Wanted/Autowanted.cs index 9f9df9d5..bb708f31 100644 --- a/ReallifeGamemode.Server/Wanted/Autowanted.cs +++ b/ReallifeGamemode.Server/Wanted/Autowanted.cs @@ -6,24 +6,24 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Wanted { public class Autowanted + { + public static void Check_AutoWanted(Player killerPlayer, Player copPlayer) { - public static void Check_AutoWanted(Player killerPlayer, Player copPlayer) - { - User killer = killerPlayer.GetUser(); - if (killer.FactionId == 1 || killer.FactionId == 3) - return; + User killer = killerPlayer.GetUser(); + if (killer.FactionId == 1 || killer.FactionId == 3) + return; - User cop = copPlayer.GetUser(); - if (!cop.GetData("duty")) return; - if (cop.FactionId == 1 || cop.FactionId == 3) - { - using (var dbContext = new DatabaseContext()) - { - killer = killerPlayer.GetUser(dbContext); - killer.GiveWanteds(copPlayer, 10, "Beamten-Mord"); - dbContext.SaveChanges(); - } - } + User cop = copPlayer.GetUser(); + if (!cop.GetData("duty")) return; + if (cop.FactionId == 1 || cop.FactionId == 3) + { + using (var dbContext = new DatabaseContext()) + { + killer = killerPlayer.GetUser(dbContext); + killer.GiveWanteds(copPlayer, 10, "Beamten-Mord"); + dbContext.SaveChanges(); } + } } + } } diff --git a/ReallifeGamemode.Server/Wanted/Jail.cs b/ReallifeGamemode.Server/Wanted/Jail.cs index 65d9905e..28e175be 100644 --- a/ReallifeGamemode.Server/Wanted/Jail.cs +++ b/ReallifeGamemode.Server/Wanted/Jail.cs @@ -14,81 +14,81 @@ using Newtonsoft.Json; namespace ReallifeGamemode.Server.Wanted { public class Jail : Script + { + private static Dictionary Jailtime { get; set; } = new Dictionary(); //time in seconds + + public static void Check_PutBehindBars(Player client) { - private static Dictionary Jailtime { get; set; } = new Dictionary(); //time in seconds + User user = client.GetUser(); + if (user.JailTime > 0) + { + client.RemoveAllWeapons(); + client.Health = 100; + client.Armor = 0; + Random rnd = new Random(); + int rndInt = rnd.Next(1, 3); + if (rndInt == 1) + NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail + if (rndInt == 2) + NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail + if (rndInt == 3) + NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail + Jailtime[user.Id] = user.JailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds + int timeMinutes = 0; - public static void Check_PutBehindBars(Player client) + if (((int)(user.JailTime / 60)) <= 1 && user.JailTime != 0) { - User user = client.GetUser(); - if (user.JailTime > 0) + timeMinutes = 1; + } + else + { + timeMinutes = (int)(user.JailTime / 60); + } + client.TriggerEvent("jailTime", timeMinutes); + return; + } + if (user.Wanteds <= 0) + return; + foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) + { + if (!copPlayer.IsLoggedIn()) continue; + User cop = copPlayer.GetUser(); + if (cop?.FactionId == 1 || cop?.FactionId == 3) + { + int jailTime = user.Wanteds * 54; + if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(client.Position) <= 200 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) + { + using (var dbContext = new DatabaseContext()) { - client.RemoveAllWeapons(); - client.Health = 100; - client.Armor = 0; - Random rnd = new Random(); - int rndInt = rnd.Next(1, 3); - if (rndInt == 1) - NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail - if (rndInt == 2) - NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail - if (rndInt == 3) - NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail - Jailtime[user.Id] = user.JailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds - int timeMinutes = 0; + if (!client.HasData("isDead") || client.GetData("isDead") == false) + { + jailTime /= 2; + } - if (((int)(user.JailTime / 60)) <= 1 && user.JailTime != 0) - { - timeMinutes = 1; - } - else - { - timeMinutes = (int)(user.JailTime / 60); - } - client.TriggerEvent("jailTime", timeMinutes); - return; + client.GetUser(dbContext).JailTime = jailTime; + Jailtime[user.Id] = jailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds + + client.GetUser(dbContext).Wanteds = 0; + dbContext.SaveChanges(); } - if (user.Wanteds <= 0) - return; - foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) - { - if (!copPlayer.IsLoggedIn()) continue; - User cop = copPlayer.GetUser(); - if (cop?.FactionId == 1 || cop?.FactionId == 3) - { - int jailTime = user.Wanteds * 54; - if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(client.Position) <= 200 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) - { - using (var dbContext = new DatabaseContext()) - { - if (!client.HasData("isDead") || client.GetData("isDead") == false) - { - jailTime /= 2; - } + client.SetData("isDead", false); + client.RemoveAllWeapons(); + client.SetSharedData("blipColor", 0); + Random rnd = new Random(); + int rndInt = rnd.Next(1, 3); + if (rndInt == 1) + NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail + if (rndInt == 2) + NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail + if (rndInt == 3) + NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail - client.GetUser(dbContext).JailTime = jailTime; - Jailtime[user.Id] = jailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds + client.TriggerEvent("onPlayerRevived"); + MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == client.Name); + Medic.RemoveTaskFromList(task); + client.Health = 100; - client.GetUser(dbContext).Wanteds = 0; - dbContext.SaveChanges(); - } - client.SetData("isDead", false); - client.RemoveAllWeapons(); - client.SetSharedData("blipColor", 0); - Random rnd = new Random(); - int rndInt = rnd.Next(1, 3); - if (rndInt == 1) - NAPI.Player.SpawnPlayer(client, new Vector3(458.9842, -997.2126, 24.91485)); //send client to jail - if (rndInt == 2) - NAPI.Player.SpawnPlayer(client, new Vector3(459.696, -994.3766, 24.91486)); //send client to jail - if (rndInt == 3) - NAPI.Player.SpawnPlayer(client, new Vector3(458.3372, -1001.258, 24.91485)); //send client to jail - - client.TriggerEvent("onPlayerRevived"); - MedicTask task = Medic.ReviveTasks.FirstOrDefault(t => t.Victim == client.Name); - Medic.RemoveTaskFromList(task); - client.Health = 100; - - int timeMinutes = 0; + int timeMinutes = 0; if (((int)(client.GetUser().JailTime / 60)) <= 1 && client.GetUser().JailTime != 0) { @@ -129,152 +129,152 @@ namespace ReallifeGamemode.Server.Wanted } } - /* - public static void JailTimer() - { - System.Timers.Timer timer = new System.Timers.Timer(60000); - System.Timers.Timer brakeOut = new System.Timers.Timer(10000); - System.Timers.Timer jailIn = new System.Timers.Timer(2500); - timer.Start(); - brakeOut.Start(); - jailIn.Start(); - //timer.Elapsed += Timer_Elapsed; - //brakeOut.Elapsed += BrakeOut_Elapsed; - //jailIn.Elapsed += JailIn_Elapsed; - } - */ - - public static void JailIn_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - if (user != null && !Jailtime.ContainsKey(user.Id)) - { - foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) - { - if (!copPlayer.IsLoggedIn()) return; - User cop = copPlayer.GetUser(); - if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(player.Position) <= 500 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) - { - if (player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) <= 7) - { - if (player.Position.DistanceTo2D(copPlayer.Position) < 5) - { - Check_PutBehindBars(player); - } - } - } - } - } - } - } - - public static void BrakeOut_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - - if (user != null && player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) > 7 && Jailtime.ContainsKey(user.Id)) - { - using (var dbContext = new DatabaseContext()) - { - user = player.GetUser(dbContext); - user.JailTime = 0; - user.GiveWanteds(null, 50, "Knast-Ausbruch"); - player.TriggerEvent("jailTime", 0); - dbContext.SaveChanges(); - Jailtime.Remove(user.Id); - } - } - } - } - - public static void JailOut_Elapsed() - { - foreach (var player in NAPI.Pools.GetAllPlayers()) - { - User user = player.GetUser(); - if (user != null && Jailtime.ContainsKey(user.Id)) - { - if (user.JailTime <= 0) - { - Jailtime.Remove(user.Id); - player.Position = new Vector3(461.7256, -988.6035, 24.91487); - player.TriggerEvent("jailTime", 0); - return; - } - if (user.JailTime > 0) - { - using (var dbContext = new DatabaseContext()) - { - player.GetUser(dbContext).JailTime -= 60; - dbContext.SaveChanges(); - } - - int timeMinutes = 0; - - if (((int)(user.JailTime / 60)) == 0 && user.JailTime != 0) - { - timeMinutes = 1; - } - else - { - timeMinutes = (int)(user.JailTime / 60); - } - - player.TriggerEvent("jailTime", timeMinutes); - player.Health = 100; - } - } - } - } - - [RemoteEvent("setPrisonerFree")] - public void Release_Jail(Player cop, string client) - { - Player player = PlayerService.GetPlayerByNameOrId(client); - if (player == null) - return; - - User user = player.GetUser(); - if (Jailtime.ContainsKey(user.Id)) - { - Jailtime.Remove(user.Id); - using (var dbContext = new DatabaseContext()) - { - player.GetUser(dbContext).JailTime = 0; - dbContext.SaveChanges(); - } - player.Health = 100; - player.Position = new Vector3(461.7256, -988.6035, 24.91487); - - ChatService.HQMessage("!{#8181E9}HQ: Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen."); - ChatService.SendMessage(player, "!{#8181E9}Der Beamte " + cop.Name + " hat dich aus dem Knast entlassen"); - player.TriggerEvent("jailTime", 0); - } - } - - public static void Release_Jail_Admin(Player admin, Player target) - { - User user = target.GetUser(); - if (Jailtime.ContainsKey(user.Id)) - { - Jailtime.Remove(user.Id); - using (var dbContext = new DatabaseContext()) - { - target.GetUser(dbContext).JailTime = 0; - dbContext.SaveChanges(); - } - target.Health = 100; - target.Position = new Vector3(461.7256, -988.6035, 24.91487); - - ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen."); - ChatService.SendMessage(target, "!{#8181E9}Admin " + admin.Name + " hat dich aus dem Knast entlassen"); - ChatService.SendMessage(admin, "!{#8181E9}Du hast " + user.Name + " administrativ aus dem Knast entlassen"); - target.TriggerEvent("jailTime", 0); - } - } + /* + public static void JailTimer() + { + System.Timers.Timer timer = new System.Timers.Timer(60000); + System.Timers.Timer brakeOut = new System.Timers.Timer(10000); + System.Timers.Timer jailIn = new System.Timers.Timer(2500); + timer.Start(); + brakeOut.Start(); + jailIn.Start(); + //timer.Elapsed += Timer_Elapsed; + //brakeOut.Elapsed += BrakeOut_Elapsed; + //jailIn.Elapsed += JailIn_Elapsed; } -} \ No newline at end of file + */ + + public static void JailIn_Elapsed() + { + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(); + if (user != null && !Jailtime.ContainsKey(user.Id)) + { + foreach (var copPlayer in NAPI.Pools.GetAllPlayers()) + { + if (!copPlayer.IsLoggedIn()) return; + User cop = copPlayer.GetUser(); + if (cop.GetData("duty") && copPlayer.Position.DistanceTo2D(player.Position) <= 500 && (!copPlayer.HasData("isDead") || copPlayer.GetData("isDead") != true)) + { + if (player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) <= 7) + { + if (player.Position.DistanceTo2D(copPlayer.Position) < 5) + { + Check_PutBehindBars(player); + } + } + } + } + } + } + } + + public static void BrakeOut_Elapsed() + { + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(); + + if (user != null && player.Position.DistanceTo2D(new Vector3(458.9842, -997.2126, 24.91485)) > 7 && Jailtime.ContainsKey(user.Id)) + { + using (var dbContext = new DatabaseContext()) + { + user = player.GetUser(dbContext); + user.JailTime = 0; + user.GiveWanteds(null, 50, "Knast-Ausbruch"); + player.TriggerEvent("jailTime", 0); + dbContext.SaveChanges(); + Jailtime.Remove(user.Id); + } + } + } + } + + public static void JailOut_Elapsed() + { + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(); + if (user != null && Jailtime.ContainsKey(user.Id)) + { + if (user.JailTime <= 0) + { + Jailtime.Remove(user.Id); + player.Position = new Vector3(461.7256, -988.6035, 24.91487); + player.TriggerEvent("jailTime", 0); + return; + } + if (user.JailTime > 0) + { + using (var dbContext = new DatabaseContext()) + { + player.GetUser(dbContext).JailTime -= 60; + dbContext.SaveChanges(); + } + + int timeMinutes = 0; + + if (((int)(user.JailTime / 60)) == 0 && user.JailTime != 0) + { + timeMinutes = 1; + } + else + { + timeMinutes = (int)(user.JailTime / 60); + } + + player.TriggerEvent("jailTime", timeMinutes); + player.Health = 100; + } + } + } + } + + [RemoteEvent("setPrisonerFree")] + public void Release_Jail(Player cop, string client) + { + Player player = PlayerService.GetPlayerByNameOrId(client); + if (player == null) + return; + + User user = player.GetUser(); + if (Jailtime.ContainsKey(user.Id)) + { + Jailtime.Remove(user.Id); + using (var dbContext = new DatabaseContext()) + { + player.GetUser(dbContext).JailTime = 0; + dbContext.SaveChanges(); + } + player.Health = 100; + player.Position = new Vector3(461.7256, -988.6035, 24.91487); + + ChatService.HQMessage("!{#8181E9}HQ: Beamter " + cop.Name + " hat " + user.Name + " aus dem Knast entlassen."); + ChatService.SendMessage(player, "!{#8181E9}Der Beamte " + cop.Name + " hat dich aus dem Knast entlassen"); + player.TriggerEvent("jailTime", 0); + } + } + + public static void Release_Jail_Admin(Player admin, Player target) + { + User user = target.GetUser(); + if (Jailtime.ContainsKey(user.Id)) + { + Jailtime.Remove(user.Id); + using (var dbContext = new DatabaseContext()) + { + target.GetUser(dbContext).JailTime = 0; + dbContext.SaveChanges(); + } + target.Health = 100; + target.Position = new Vector3(461.7256, -988.6035, 24.91487); + + ChatService.HQMessage(" Admin " + admin.Name + " hat " + user.Name + " aus dem Knast entlassen."); + ChatService.SendMessage(target, "!{#8181E9}Admin " + admin.Name + " hat dich aus dem Knast entlassen"); + ChatService.SendMessage(admin, "!{#8181E9}Du hast " + user.Name + " administrativ aus dem Knast entlassen"); + target.TriggerEvent("jailTime", 0); + } + } + } +} diff --git a/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs b/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs index 5c5dcea4..0585ed28 100644 --- a/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs +++ b/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs @@ -13,53 +13,53 @@ using ReallifeGamemode.Server.Extensions; namespace ReallifeGamemode.Server.Wanted { public class WantedEscapeTimer + { + public static Dictionary waTimer { get; set; } = new Dictionary(); //zeit in ms + /* + public static void WantedTimer() { - public static Dictionary waTimer { get; set; } = new Dictionary(); //zeit in ms - /* - public static void WantedTimer() - { - //System.Timers.Timer timer = new System.Timers.Timer(2500); - //timer.Start(); - //timer.Elapsed += Timer_Elapsed; - } - */ + //System.Timers.Timer timer = new System.Timers.Timer(2500); + //timer.Start(); + //timer.Elapsed += Timer_Elapsed; + } + */ - public static void ResetWantedTimeToElapse(Player client) - { - User user = client.GetUser(); - if (user.FactionId == 1 || user.FactionId == 3) - return; + public static void ResetWantedTimeToElapse(Player client) + { + User user = client.GetUser(); + if (user.FactionId == 1 || user.FactionId == 3) + return; - waTimer[user.Id] = 300000; - } + waTimer[user.Id] = 300000; + } - public static void Timer_Elapsed() + public static void Timer_Elapsed() + { + foreach (var player in NAPI.Pools.GetAllPlayers()) + { + User user = player.GetUser(); + if (user != null && user.Wanteds > 0) { - foreach (var player in NAPI.Pools.GetAllPlayers()) + if (!waTimer.ContainsKey(user.Id)) + ResetWantedTimeToElapse(player); + + bool isNearCop = false; + foreach (var playerCop in NAPI.Pools.GetAllPlayers()) + { + if (!playerCop.IsLoggedIn()) continue; + + User cop = playerCop.GetUser(); + if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3)) { - User user = player.GetUser(); - if (user != null && user.Wanteds > 0) - { - if (!waTimer.ContainsKey(user.Id)) - ResetWantedTimeToElapse(player); - - bool isNearCop = false; - foreach (var playerCop in NAPI.Pools.GetAllPlayers()) - { - if (!playerCop.IsLoggedIn()) continue; - - User cop = playerCop.GetUser(); - if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3)) - { - if (cop.GetData("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500) - { - //Schriftzug 'abgetaucht' zerstören :( - isNearCop = true; - break; - } - //Hier abgetaucht schriftzug einfügen :) - } - } + if (cop.GetData("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500) + { + //Schriftzug 'abgetaucht' zerstören :( + isNearCop = true; + break; + } + //Hier abgetaucht schriftzug einfügen :) + } + } if (!waTimer.ContainsKey(user.Id)) waTimer[user.Id] = 300000; @@ -95,10 +95,10 @@ namespace ReallifeGamemode.Server.Wanted } } - if (!isNearCop) - waTimer[user.Id] -= 2500; - } - } + if (!isNearCop) + waTimer[user.Id] -= 2500; } + } } -} \ No newline at end of file + } +}