From efbff34c21bc53018c24d5d0c06decadf3bf84cd Mon Sep 17 00:00:00 2001 From: Siga Date: Sun, 10 May 2020 19:19:53 +0200 Subject: [PATCH] =?UTF-8?q?Miese=20Corona=20Zeiten=20push=20f=C3=BCr=20Len?= =?UTF-8?q?hardt?= 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