diff --git a/ReallifeGamemode.Client/Jobs/RefuseCollector.ts b/ReallifeGamemode.Client/Jobs/RefuseCollector.ts index 88f7a283..007bf710 100644 --- a/ReallifeGamemode.Client/Jobs/RefuseCollector.ts +++ b/ReallifeGamemode.Client/Jobs/RefuseCollector.ts @@ -1,20 +1,19 @@ export default function RefuseCollector() { var State = false; - var Traegt = false; - var HintenVoll = false; + var hasBinBag = false; + var dumptruckIsFull = false; - var BlipTonneHinten = null; - var CheckpointTonneHinten = null; - var ShapeTonneHinten = null; - var BlipTonneBase = null; - var CheckpointTonneBase = null; - var ShapeTonneBase = null; - var vehicle = null; + var blipDumptruck = null; + var dumptruckMarker = null; + var colshapeDumptruck = null; + var blipBase = null; + var markerBase = null; + var colshapeBase = null; + var vehRemoteID = null; var interval = null; - var BlipTonne = []; - var ShapeTonne = []; + var garbageToCollect = new Map(); mp.events.add('SERVER:MuellmannStatusTrue', () => { State = true; @@ -24,112 +23,130 @@ State = false; }); - mp.events.add('SERVER:MuellmannBCSErstellen', (jsonPosArr, veh) => { + mp.events.add('SERVER:MuellmannBCSErstellen', (jsonPosArr, veh: VehicleMp) => { let posArr = JSON.parse(jsonPosArr); - vehicle = veh; + vehRemoteID = veh.remoteId; 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, new mp.Vector3(pos.x, pos.y, 1000), { name: 'Mülltonne', color: 45, shortRange: false })); - BlipTonne[i].setFlashTimer(2000); - ShapeTonne.push(mp.colshapes.newSphere(posArr[i].x, posArr[i].y, posArr[i].z + 0.5, 1.75)); + + let newBlip = mp.blips.new(1, new mp.Vector3(pos.x, pos.y, 1000), { name: 'Mülltonne', color: 45, shortRange: false }); + let newColShape = mp.colshapes.newSphere(posArr[i].x, posArr[i].y, posArr[i].z + 0.5, 1.75); + + newBlip.setFlashTimer(2000); + + garbageToCollect.set(newBlip, newColShape); } - BlipTonneBase = mp.blips.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), { name: 'Recylinganlage', color: 5, shortRange: false }); - CheckpointTonneBase = mp.markers.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), 10, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [255, 255, 0, 150], visible: true, dimension: 0 }); - ShapeTonneBase = mp.colshapes.newSphere(-442.3999, -1701.5234, 18.933002 - 1, 10); + blipBase = mp.blips.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), { name: 'Recylinganlage', color: 5, shortRange: false }); + markerBase = mp.markers.new(1, new mp.Vector3(-442.3999, -1701.5234, 18.933002 - 1), 10, { direction: new mp.Vector3(-235.5747, -1685.475, 32.7207), color: [255, 255, 0, 150], visible: true, dimension: 0 }); + colshapeBase = mp.colshapes.newSphere(-442.3999, -1701.5234, 18.933002 - 1, 10); }); mp.events.add('SERVER:MuellmannBCSEntfernen', () => { - for (var i = 0; i < BlipTonne.length; i++) { - if (BlipTonne[i] == null) continue; - if (ShapeTonne[i] == null) continue; - BlipTonne[i].destroy(); - ShapeTonne[i].destroy(); - } - BlipTonne = []; - ShapeTonne = []; + garbageToCollect.forEach((colshape, blip) => { + if (colshape && mp.colshapes.exists(colshape)) + colshape.destroy(); + if (blip && mp.blips.exists(blip)) + blip.destroy(); + }); - if (BlipTonneHinten) BlipTonneHinten.destroy(); - BlipTonneHinten = null; - if (CheckpointTonneHinten) CheckpointTonneHinten.destroy(); - CheckpointTonneHinten = null; - if (ShapeTonneHinten) ShapeTonneHinten.destroy(); - ShapeTonneHinten = null; - if (BlipTonneBase) BlipTonneBase.destroy(); - BlipTonneBase = null; - if (CheckpointTonneBase) CheckpointTonneBase.destroy(); - CheckpointTonneBase = null; - if (ShapeTonneBase) ShapeTonneBase.destroy(); - ShapeTonneBase = null; - Traegt = false; + garbageToCollect.clear(); + + if (blipDumptruck) blipDumptruck.destroy(); + blipDumptruck = null; + if (dumptruckMarker) dumptruckMarker.destroy(); + dumptruckMarker = null; + if (colshapeDumptruck) colshapeDumptruck.destroy(); + colshapeDumptruck = null; + if (blipBase) blipBase.destroy(); + blipBase = null; + if (markerBase) markerBase.destroy(); + markerBase = null; + if (colshapeBase) colshapeBase.destroy(); + colshapeBase = null; + hasBinBag = false; }); - mp.events.add("playerEnterColshape", (Shape, player) => { + mp.events.add("playerEnterColshape", (currentShape, player) => { //mp.events.callRemote('CLIENT:ImShape', JSON.stringify(Shape)); - for (var i = 0; i < ShapeTonne.length; i++) { - if (Shape != ShapeTonne[i]) continue; - if (!mp.players.local.vehicle) { - if (!Traegt) { - if (!HintenVoll) { - mp.events.callRemote('CLIENT:MuellmannImShape', i); - Traegt = true; - BlipTonne[i].destroy(); - BlipTonne[i] = null; - ShapeTonne[i].destroy(); - ShapeTonne[i] = null; - interval = setInterval(function () { createMarker(); }, 2); - } - else { - mp.gui.chat.push("Der Müllwagen ist bereits voll! Fahre zur Base und lade ab!"); - return; - } - } - else { - mp.gui.chat.push(`Du trägst bereits einen Müllsack!`); - return; - } + garbageToCollect.forEach((colshape, blip) => { + if (!colshape || colshape != currentShape) { return; } + + if (mp.players.local.vehicle) { mp.events.call("renderTextOnScreen", "Steige aus dem Müllwagen aus um den Müllsack zu entnehmen."); return; } + if (hasBinBag) { mp.gui.chat.push("Du trägst bereits einen Müllsack!"); return; } + + if (!dumptruckIsFull) { + mp.events.callRemote('CLIENT:MuellmannImShape', blip.getCoords()); + hasBinBag = true; + + if (colshape) + colshape.destroy(); + if (blip) + blip.destroy(); + + interval = setInterval(function () { createMarker(); }, 2); } else { - mp.events.call("renderTextOnScreen", "Steige aus dem Müllwagen aus um den Müllsack zu entnehmen."); + mp.gui.chat.push("Der Müllwagen ist bereits voll! Fahre zur Base und lade ab!"); + return; } - } - if (Shape == ShapeTonneHinten) { - if (Traegt) { - Traegt = false; + }); + + if (currentShape == colshapeDumptruck) { + if (hasBinBag) { + hasBinBag = false; mp.events.callRemote('CLIENT:MuellmannAddSack'); clearInterval(interval); - if (BlipTonneHinten) BlipTonneHinten.destroy(); - BlipTonneHinten = null; - if (CheckpointTonneHinten) CheckpointTonneHinten.destroy(); - CheckpointTonneHinten = null; - if (ShapeTonneHinten) ShapeTonneHinten.destroy(); - ShapeTonneHinten = null; + if (blipDumptruck) blipDumptruck.destroy(); + blipDumptruck = null; + if (dumptruckMarker) dumptruckMarker.destroy(); + dumptruckMarker = null; + if (colshapeDumptruck) colshapeDumptruck.destroy(); + colshapeDumptruck = null; } } - else if (Shape == ShapeTonneBase) { - BlipTonneBase.setRoute(false); + else if (currentShape == colshapeBase) { + blipBase.setRoute(false); mp.events.callRemote('CLIENT:MuellmannBaseSack'); - HintenVoll = false; + dumptruckIsFull = false; } }); - mp.events.add("MuellmannUpdateColshape", (index) => { - if (BlipTonne[index] != null) - BlipTonne[index].destroy(); - BlipTonne[index] = null; - if (ShapeTonne[index] != null) - ShapeTonne[index].destroy(); - ShapeTonne[index] = null; + mp.events.add("MuellmannUpdateColshape", (vector3) => { + let currBlip; + garbageToCollect.forEach((colShape, blip) => { + if (blip.getCoords() == vector3) currBlip = blip; + }); + + if (!garbageToCollect.has(currBlip)) return; + mp.gui.chat.push("Has Blip."); + + var colShape = garbageToCollect.get(currBlip); + + if (currBlip && mp.blips.exists(currBlip)) { + mp.gui.chat.push("Delete Blip."); + currBlip.destroy(); + } + + if (colShape && mp.colshapes.exists(colShape)) { + mp.gui.chat.push("Delete Colshape."); + colShape.destroy(); + } + + garbageToCollect.delete(currBlip); }); mp.events.add("SERVER:MuellmannZuBase", () => { - BlipTonneBase.setRoute(true); - BlipTonneBase.setRouteColour(5); - HintenVoll = true; + blipBase.setRoute(true); + blipBase.setRouteColour(5); + dumptruckIsFull = true; }); function createMarker() { + let vehicle; + if (vehRemoteID) + vehicle = mp.vehicles.atRemoteId(vehRemoteID); if (vehicle != null) { var boneIndex2 = vehicle.getBoneIndexByName("platelight"); var boneIndex1 = vehicle.getBoneIndexByName("chassis_dummy"); @@ -154,15 +171,15 @@ let pos = plateVec.add(temp); - if (BlipTonneHinten) BlipTonneHinten.destroy(); - BlipTonneHinten = null; - if (CheckpointTonneHinten) CheckpointTonneHinten.destroy(); - CheckpointTonneHinten = null; - if (ShapeTonneHinten) ShapeTonneHinten.destroy(); - 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, 2); + if (blipDumptruck) blipDumptruck.destroy(); + blipDumptruck = null; + if (dumptruckMarker) dumptruckMarker.destroy(); + dumptruckMarker = null; + if (colshapeDumptruck) colshapeDumptruck.destroy(); + colshapeDumptruck = null; + blipDumptruck = mp.blips.new(318, pos, { name: 'Müllmann', color: 24, shortRange: false }); + dumptruckMarker = 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 }); + colshapeDumptruck = mp.colshapes.newSphere(pos.x, pos.y, pos.z, 2); } }; } \ 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 df59090c..537c765e 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -203,26 +203,50 @@ class RageVehicle extends RageEntity implements IVehicle { } isSeatFree(seat: VehicleSeat): boolean { + if (!mp.vehicles.exists(this.vehicle)) { + return false; + } + return this.vehicle.isSeatFree(seat - 1); } setEngineStatus(status: boolean, instantly: boolean, otherwise: boolean) { + if (!mp.vehicles.exists(this.vehicle)) { + return false; + } + this.vehicle.setEngineOn(status, instantly, otherwise); } setUndriveable(status: boolean) { + if (!mp.vehicles.exists(this.vehicle)) { + return false; + } + this.vehicle.setUndriveable(status); } setDoorsLocked(state: boolean) { + if (!mp.vehicles.exists(this.vehicle)) { + return false; + } + this.vehicle.setDoorsLocked(state ? 2 : 1); } setDoorOpen(door: number, loose: boolean, instantly: boolean) { + if (!mp.vehicles.exists(this.vehicle)) { + return false; + } + this.vehicle.setDoorOpen(door, loose, instantly); } setDoorShut(door: number, instantly: boolean) { + if (!mp.vehicles.exists(this.vehicle)) { + return false; + } + this.vehicle.setDoorShut(door, instantly); } } diff --git a/ReallifeGamemode.Server/Commands/AdminCommands.cs b/ReallifeGamemode.Server/Commands/AdminCommands.cs index 21ab38af..551d092d 100644 --- a/ReallifeGamemode.Server/Commands/AdminCommands.cs +++ b/ReallifeGamemode.Server/Commands/AdminCommands.cs @@ -276,7 +276,8 @@ namespace ReallifeGamemode.Server.Commands [Command("tsupport", "~m~Benutzung: ~s~/tsupport", Alias = "ts")] public void CmdAdminTSupport(Player player) { - if (!player.GetUser()?.IsAdmin(AdminLevel.SUPPORTER) ?? true) + User user = player.GetUser(); + if (!user.IsAdmin(AdminLevel.SUPPORTER)) { ChatService.NotAuthorized(player); return; @@ -289,51 +290,14 @@ namespace ReallifeGamemode.Server.Commands if (player.GetData("SAdminduty") == false) { player.SetData("SAdminduty", true); - player.SetSharedData("blipColor", 30); - player.SetSharedData("nameTagColor", -2); ChatService.SendMessage(player, "~g~ ** " + "Du befindest dich im T-Support"); } else { player.SetData("SAdminduty", false); ChatService.SendMessage(player, "!{#ee4d2e}** " + "Du befindest dich nicht mehr im T-Support"); - - using (var dbContext = new DatabaseContext()) - { - User targetUser = player.GetUser(dbContext); - switch (targetUser.FactionId) - { - case null: - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); - break; - case 0: - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); - break; - case 8: - player.SetSharedData("blipColor", 83); - player.SetSharedData("nameTagColor", 8); - break; - - case 7: - player.SetSharedData("blipColor", 52); - player.SetSharedData("nameTagColor", 7); - break; - - case 4: - player.SetSharedData("blipColor", 5); - player.SetSharedData("nameTagColor", 4); - break; - case 9: - player.SetSharedData("blipColor", 25); - player.SetSharedData("nameTagColor", 9); - break; - } - player.SetSharedData("nameTagColor", targetUser.FactionId); - } - } + user.SetBlipAndNametagColor(); } [Command("aduty", "~m~Benutzung: ~s~/aduty")] public void CmdAdminAduty(Player player) @@ -1498,37 +1462,12 @@ namespace ReallifeGamemode.Server.Commands } ChatService.SendMessage(target, "!{#8181E9}Deine Akte wurde vom Admin " + player.Name + " gelöscht. Grund: " + reason); ChatService.BroadcastFaction("!{#8181E9}HQ: Die Akte von " + target.Name + " wurde vom Admin " + player.Name + " gelöscht. Grund: " + reason + ".", new List() { 1, 3 }); - switch (targetUser.FactionId) - { - case null: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - case 0: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - case 8: - target.SetSharedData("blipColor", 83); - target.SetSharedData("nameTagColor", 8); - break; - - case 7: - target.SetSharedData("blipColor", 52); - target.SetSharedData("nameTagColor", 7); - break; - - case 4: - target.SetSharedData("blipColor", 5); - target.SetSharedData("nameTagColor", 4); - break; - case 9: - target.SetSharedData("blipColor", 25); - target.SetSharedData("nameTagColor", 9); - break; - } + target.TriggerEvent("jailTime", 0); targetUser.Wanteds = 0; + + targetUser.SetBlipAndNametagColor(); + dbContext.SaveChanges(); } } @@ -2494,37 +2433,7 @@ namespace ReallifeGamemode.Server.Commands } u.FactionLeader = false; - switch (u.FactionId) - { - case null: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - - case 0: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - - case 8: - target.SetSharedData("blipColor", 83); - target.SetSharedData("nameTagColor", 8); - break; - - case 7: - target.SetSharedData("blipColor", 52); - target.SetSharedData("nameTagColor", 7); - break; - - case 4: - target.SetSharedData("blipColor", 5); - target.SetSharedData("nameTagColor", 4); - break; - case 9: - target.SetSharedData("blipColor", 25); - target.SetSharedData("nameTagColor", 9); - break; - } + u.SetBlipAndNametagColor(); dbContext.SaveChanges(); } } @@ -2567,36 +2476,7 @@ namespace ReallifeGamemode.Server.Commands ChatService.SendMessage(player, "~b~[ADMIN]~s~ Du hast hast den Spieler ~y~" + target.Name + "~s~ zum Leader der Fraktion ~o~" + f.Name + "~s~ ernannt."); ChatService.SendMessage(target, "~b~[ADMIN]~s~ Du wurdest von ~y~" + player.Name + "~s~ zum Leader der Fraktion ~o~" + f.Name + "~s~ ernannt."); - switch (u.FactionId) - { - case null: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - case 0: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - - case 8: - target.SetSharedData("blipColor", 83); - target.SetSharedData("nameTagColor", 8); - break; - - case 7: - target.SetSharedData("blipColor", 52); - target.SetSharedData("nameTagColor", 7); - break; - - case 4: - target.SetSharedData("blipColor", 5); - target.SetSharedData("nameTagColor", 4); - break; - case 9: - target.SetSharedData("blipColor", 25); - target.SetSharedData("nameTagColor", 9); - break; - } + u.SetBlipAndNametagColor(); dbContext.SaveChanges(); } } diff --git a/ReallifeGamemode.Server/Commands/FactionCommands.cs b/ReallifeGamemode.Server/Commands/FactionCommands.cs index 4cec07ea..763424a5 100644 --- a/ReallifeGamemode.Server/Commands/FactionCommands.cs +++ b/ReallifeGamemode.Server/Commands/FactionCommands.cs @@ -472,40 +472,12 @@ namespace ReallifeGamemode.Server.Commands } ChatService.SendMessage(target, "!{#8181E9}Deine Akte wurde von " + player.Name + " gelöscht. Grund: " + reason); ChatService.BroadcastFaction("!{#8181E9}HQ: Die Akte von " + target.Name + " wurde von " + player.Name + " gelöscht. Grund: " + reason + ".", new List() { 1, 3 }); - target.SetSharedData("blipColor", 0); - switch (targetUser.FactionId) - { - case null: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - - case 0: - target.SetSharedData("blipColor", 0); - target.SetSharedData("nameTagColor", 0); - break; - - case 8: - target.SetSharedData("blipColor", 83); - target.SetSharedData("nameTagColor", 8); - break; - - case 7: - target.SetSharedData("blipColor", 52); - target.SetSharedData("nameTagColor", 7); - break; - - case 4: - target.SetSharedData("blipColor", 5); - target.SetSharedData("nameTagColor", 4); - break; - case 9: - target.SetSharedData("blipColor", 25); - target.SetSharedData("nameTagColor", 9); - break; - } + target.TriggerEvent("jailTime", 0); targetUser.Wanteds = 0; + + targetUser.SetBlipAndNametagColor(); + dbContext.SaveChanges(); } } diff --git a/ReallifeGamemode.Server/Events/Key.cs b/ReallifeGamemode.Server/Events/Key.cs index 184dbb60..007804c1 100644 --- a/ReallifeGamemode.Server/Events/Key.cs +++ b/ReallifeGamemode.Server/Events/Key.cs @@ -295,27 +295,8 @@ namespace ReallifeGamemode.Server.Events } switch (factionId) { - //LSPD - case 1: - //nameTagColor = new Color(28, 134, 238); - //player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 28, 134, 238 })); - player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 38); - break; - - //Medic - case 2: - //nameTagColor = new Color(255, 0, 0); - //player.TriggerEvent("setNameTag", JsonConvert.SerializeObject(new int[] { 255, 0, 0 })); - player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 6); - break; - //FBI case 3: - //nameTagColor = new Color(173, 0, 118); - player.SetSharedData("nameTagColor", factionId); - player.SetSharedData("blipColor", 63); player.SetAccessories(2, 2, 0); break; } @@ -349,10 +330,9 @@ namespace ReallifeGamemode.Server.Events player.SendNotification("Du bist nun ~r~außer Dienst."); player.TriggerEvent("toggleDutyMode", false); Medic.UpdateDutyMedics(-1); - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); UpdateCharacterCloth.LoadCharacterDefaults(player); } + user.SetBlipAndNametagColor(); } if (nearestWeapon != null) // Weapon Point @@ -515,6 +495,11 @@ namespace ReallifeGamemode.Server.Events foreach (Player target in NAPI.Pools.GetAllPlayers()) { User c = target.GetUser(); + if(c == null) + { + continue; + } + if (c.JailTime > 0) { criminals.Add(c.Name); diff --git a/ReallifeGamemode.Server/Events/Login.cs b/ReallifeGamemode.Server/Events/Login.cs index b89e2269..ccdd6628 100644 --- a/ReallifeGamemode.Server/Events/Login.cs +++ b/ReallifeGamemode.Server/Events/Login.cs @@ -100,42 +100,7 @@ namespace ReallifeGamemode.Server.Events var userItems = dbContext.UserItems.Where(u => u.UserId == user.Id).ToList(); player.SetData("items", userItems); - switch (user.FactionId) - { - case null: - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); - break; - - case 0: - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); - break; - - case 8: - player.SetSharedData("blipColor", 83); - player.SetSharedData("nameTagColor", 8); - break; - - case 7: - player.SetSharedData("blipColor", 52); - player.SetSharedData("nameTagColor", 7); - break; - - case 4: - player.SetSharedData("blipColor", 5); - player.SetSharedData("nameTagColor", 4); - break; - case 9: - player.SetSharedData("blipColor", 25); - player.SetSharedData("nameTagColor", 9); - break; - default: - player.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); - break; - } - + user.SetBlipAndNametagColor(); if (user.CharacterId == null) { diff --git a/ReallifeGamemode.Server/Extensions/ClientExtension.cs b/ReallifeGamemode.Server/Extensions/ClientExtension.cs index 765d3f05..c77d1f35 100644 --- a/ReallifeGamemode.Server/Extensions/ClientExtension.cs +++ b/ReallifeGamemode.Server/Extensions/ClientExtension.cs @@ -131,8 +131,7 @@ namespace ReallifeGamemode.Server.Extensions dbUser.Wanteds = newWanteds; dbContext.SaveChanges(); } - user.Player.SetSharedData("nameTagColor", -1); - user.Player.SetSharedData("blipColor", 64); + user.SetBlipAndNametagColor(); 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); @@ -237,11 +236,81 @@ namespace ReallifeGamemode.Server.Extensions public static bool IsAdmin(this User user, AdminLevel adminLevel) { - if(user == null) + if (user == null) { return false; } return user.AdminLevel >= adminLevel; } + + public static void SetBlipAndNametagColor(this User user) + { + if (user == null) + { + return; + } + + int blipColor = 0; + int nameTagColor = 0; + + Player player = user.Player; + bool duty = user.GetData("duty"); + + if (player.GetData("SAdminduty")) + { + blipColor = 30; + nameTagColor = -2; + } + else if (user.Wanteds > 0) + { + nameTagColor = -1; + blipColor = 64; + } + else if (user.Faction != null) + { + nameTagColor = user.FactionId.Value; + switch (user.FactionId) + { + case 1 when duty: + blipColor = 38; + break; + + case 2 when duty: + blipColor = 6; + break; + + case 3 when duty: + blipColor = 63; + break; + + case 4: + blipColor = 5; + break; + + case 5: + break; + + case 6: + break; + + case 7: + blipColor = 52; + break; + + case 8: + blipColor = 83; + break; + + case 9: + blipColor = 25; + break; + } + } + + NAPI.Util.ConsoleOutput($"{player.Name} - Setting blip and nametag color: nametag = {nameTagColor}, blip = {blipColor}"); + + user.Player.SetSharedData("nameTagColor", nameTagColor); + user.Player.SetSharedData("blipColor", blipColor); + } } } diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index cdd1c14e..204b6010 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -19,7 +19,7 @@ namespace ReallifeGamemode.Server.Job public override bool NeedVehicleToStart => false; - const int MAX_BAG = 40; + private const int MAX_BAG = 40; public RefuseCollectorJob() { @@ -157,7 +157,6 @@ namespace ReallifeGamemode.Server.Job new Vector3(-921.0493774414062, -1095.1513671875, 2.1503124237060547), new Vector3(-942.0684204101562, -1077.1378173828125, 2.1503121852874756), new Vector3(-951.5316772460938, -1078.955078125, 2.1503100395202637), - }.AsReadOnly(); [RemoteEvent("CLIENT:MuellmannJobStarten")] @@ -165,7 +164,6 @@ namespace ReallifeGamemode.Server.Job { if (vehicle.Model == (uint)Types.VehicleModel.Trash || vehicle.Model == (uint)Types.VehicleModel.Trash2) { - Vehicle veh; foreach (var data in muellmanData) { @@ -192,7 +190,7 @@ namespace ReallifeGamemode.Server.Job if (data.hasFreePlace()) { - if(data.vehicle != null) + if (data.vehicle != null) data.vehicle.GetServerVehicle().Spawn(data.vehicle); muellmanData.Remove(data); return; @@ -211,13 +209,13 @@ namespace ReallifeGamemode.Server.Job } [RemoteEvent("CLIENT:MuellmannImShape")] - public void MuellmannImShape(Player player, int colshapeIndex) + public void MuellmannImShape(Player player, Vector3 blipCoords) { foreach (var data in muellmanData) { if (data.getDataFromClient(player) == null) continue; Player target = data.getPartnerClient(player); - if (target != null) target.TriggerEvent("MuellmannUpdateColshape", colshapeIndex); + if (target != null) target.TriggerEvent("MuellmannUpdateColshape", blipCoords); player.TriggerEvent("renderTextOnScreen", "Wirf den Müllsack in den Müllwagen."); player.AddAttachment("binbag", false); return; @@ -260,19 +258,17 @@ namespace ReallifeGamemode.Server.Job } player.TriggerEvent("SERVER:MuellmannZuBase"); } - else if(data.getTrashCount() > MAX_BAG) + else if (data.getTrashCount() > MAX_BAG) { data.setTrashCount(MAX_BAG); ChatService.ErrorMessage((Player)player, "Der Müllwagen ist schon voll."); } else { - if (target != null) { user1.Wage += 25; user2.Wage += 25; - } else { @@ -307,13 +303,13 @@ namespace ReallifeGamemode.Server.Job if (target != null) { user1.Wage += (int)(bonus / 2); - user2.Wage += (int)(bonus / 2); + user2.Wage += (int)(bonus / 2); } else { user1.Wage += bonus; } - + data.setTrashCount(0); dbContext.SaveChanges(); diff --git a/ReallifeGamemode.Server/Managers/InteractionManager.cs b/ReallifeGamemode.Server/Managers/InteractionManager.cs index cc556b6f..0ad66ab3 100644 --- a/ReallifeGamemode.Server/Managers/InteractionManager.cs +++ b/ReallifeGamemode.Server/Managers/InteractionManager.cs @@ -69,32 +69,7 @@ namespace ReallifeGamemode.Server.Managers 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); - player.SetSharedData("nameTagColor", 0); - break; - - case 8: - player.SetSharedData("blipColor", 83); - player.SetSharedData("nameTagColor", 8); - break; - - case 7: - player.SetSharedData("blipColor", 52); - player.SetSharedData("nameTagColor", 7); - break; - - case 4: - player.SetSharedData("blipColor", 5); - player.SetSharedData("nameTagColor", 4); - break; - case 9: - player.SetSharedData("blipColor", 25); - player.SetSharedData("nameTagColor", 9); - break; - } + own.SetBlipAndNametagColor(); dbContext.SaveChanges(); } } @@ -247,8 +222,10 @@ namespace ReallifeGamemode.Server.Managers return; } - User targetUser = target.GetUser(); - User playerUser = player.GetUser(); + using var dbContext = new DatabaseContext(); + + User targetUser = target.GetUser(dbContext); + User playerUser = player.GetUser(dbContext); if (type == "Fraktion") { @@ -276,21 +253,16 @@ namespace ReallifeGamemode.Server.Managers return; } - using (var dbContext = new DatabaseContext()) - { - target.SetData("duty", false); - target.TriggerEvent("toggleDutyMode", false); - Medic.UpdateDutyMedics(-1); - target.SetSharedData("blipColor", 0); - UpdateCharacterCloth.LoadCharacterDefaults(target); - target.GetUser(dbContext).FactionRankId = null; - target.GetUser(dbContext).FactionId = null; - ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen."); - ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); - target.SetSharedData("blipColor", 0); - player.SetSharedData("nameTagColor", 0); - dbContext.SaveChanges(); - } + target.SetData("duty", false); + target.TriggerEvent("toggleDutyMode", false); + Medic.UpdateDutyMedics(-1); + UpdateCharacterCloth.LoadCharacterDefaults(target); + target.GetUser(dbContext).FactionRankId = null; + target.GetUser(dbContext).FactionId = null; + ChatService.SendMessage(player, "!{02FCFF}Du hast " + target.Name + " aus der Fraktion geworfen."); + ChatService.SendMessage(target, "!{02FCFF}Du wurdest von " + player.Name + " aus der Fraktion geworfen."); + targetUser.SetBlipAndNametagColor(); + dbContext.SaveChanges(); } else if (type == "Gruppe") { @@ -318,16 +290,13 @@ namespace ReallifeGamemode.Server.Managers return; } - using (var dbContext = new DatabaseContext()) - { - target.GetUser(dbContext).Group = null; - target.GetUser(dbContext).GroupRank = GroupRank.NONE; + targetUser.Group = null; + targetUser.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."); + 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(); - } + dbContext.SaveChanges(); } } @@ -377,7 +346,7 @@ namespace ReallifeGamemode.Server.Managers [RemoteEvent("CLIENT:InteractionMenu_LeaveGroup")] public void InteractionMenuGroupLeageGroup(Player player, string type) { - + if (type == "Gruppe") { using (var dbContext = new DatabaseContext()) @@ -390,15 +359,15 @@ namespace ReallifeGamemode.Server.Managers return; } - if(dbContext.Users.Count(c => c.Group == playerUser.Group) == 1) + if (dbContext.Users.Count(c => c.Group == playerUser.Group) == 1) { - InteractionMenuGroupDeleteGroup(player,"Gruppe"); + InteractionMenuGroupDeleteGroup(player, "Gruppe"); return; } var group = player.GetUser().Group; - if(playerUser.GroupRank == GroupRank.OWNER) + if (playerUser.GroupRank == GroupRank.OWNER) { var memberList = dbContext.Users.Where(u => u.Group == playerUser.Group && u.GroupRank < GroupRank.OWNER).ToList(); var newOwner = memberList.OrderByDescending(c => c.GroupRank).First(); @@ -406,7 +375,7 @@ namespace ReallifeGamemode.Server.Managers newOwner.GroupRank = GroupRank.OWNER; ChatService.BroadcastGroup("~y~" + newOwner.Name + "~s~ wurde zum neuen Besitzer ernannt", playerUser.Group); } - + playerUser.GroupRank = GroupRank.NONE; playerUser.Group = null; ChatService.BroadcastGroup("~y~" + player.Name + "~s~ hat die Gruppe verlassen", group); @@ -422,13 +391,13 @@ namespace ReallifeGamemode.Server.Managers if (type == "Gruppe") { using (var dbContext = new DatabaseContext()) - { + { if (playerUser?.Group == null || playerUser.GroupRank < GroupRank.OWNER) { ChatService.NotAuthorized(player); return; } - + var deletedGroup = dbContext.Groups.FirstOrDefault(g => g.Id == playerUser.Group.Id); foreach (var user in dbContext.Users.Where(u => u.Group == playerUser.Group).ToList()) @@ -443,12 +412,12 @@ namespace ReallifeGamemode.Server.Managers } } - [RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")] + [RemoteEvent("CLIENT:InteractionMenu_CallService_Taxi")] public void CallServiceTaxi(Player player, string street, string zone) { var taxiJob = JobManager.GetJob(); - if(taxiJob == null) + if (taxiJob == null) { player.SendChatMessage("Aktuell kann kein Taxi gerufen werden."); return; @@ -802,20 +771,20 @@ namespace ReallifeGamemode.Server.Managers { if (!player.IsLoggedIn()) return; List players = NAPI.Pools.GetAllPlayers(); - - var listPlayers = players.Where(p => p.GetUser().Wanteds > 0) - .Select(p => new - { - Id = p.Handle.Value, - p.Name, - wanted = p.GetUser().Wanteds, - }); - if (listPlayers.Count() > 0) - player.TriggerEvent("showWantedlist", JsonConvert.SerializeObject(listPlayers)); - else - player.SendNotification("~r~[Fehler] ~w~Es gibt derzeitig keine Verbrecher!"); - + var listPlayers = players.Where(p => p.GetUser().Wanteds > 0) + .Select(p => new + { + Id = p.Handle.Value, + p.Name, + wanted = p.GetUser().Wanteds, + }); + + if (listPlayers.Count() > 0) + player.TriggerEvent("showWantedlist", JsonConvert.SerializeObject(listPlayers)); + else + player.SendNotification("~r~[Fehler] ~w~Es gibt derzeitig keine Verbrecher!"); + } @@ -854,11 +823,12 @@ namespace ReallifeGamemode.Server.Managers if (player.GetData("healauftrag") == true) { player.SendNotification("~r~[Fehler] ~w~Du hast bereits ein Sanitäter gerufen."); - }else - { - Medic.AddTaskToList(healTask); + } + else + { + Medic.AddTaskToList(healTask); player.SetData("healauftrag", true); - ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat soeben einen Serviceauftrag beantragt.", new List() { 2 }); + ChatService.BroadcastFaction("~y~[MEDIC] ~w~" + player.Name + " hat soeben einen Serviceauftrag beantragt.", new List() { 2 }); } } diff --git a/ReallifeGamemode.Server/Wanted/Jail.cs b/ReallifeGamemode.Server/Wanted/Jail.cs index 806337b1..c9cfe660 100644 --- a/ReallifeGamemode.Server/Wanted/Jail.cs +++ b/ReallifeGamemode.Server/Wanted/Jail.cs @@ -66,10 +66,12 @@ namespace ReallifeGamemode.Server.Wanted jailTime /= 2; } - client.GetUser(dbContext).JailTime = jailTime; + User clientUser = client.GetUser(dbContext); + + clientUser.JailTime = jailTime; Jailtime[user.Id] = jailTime; // 54 sec for each wanted star -> in total 45min for 50 Wanteds - client.GetUser(dbContext).Wanteds = 0; + clientUser.Wanteds = 0; client.SetData("isDead", false); client.RemoveAllWeapons(); client.SetSharedData("blipColor", 0); @@ -100,29 +102,7 @@ namespace ReallifeGamemode.Server.Wanted client.TriggerEvent("jailTime", JsonConvert.SerializeObject(timeMinutes)); - switch (user.FactionId) - { - case null: - client.SetSharedData("blipColor", 0); - client.SetSharedData("nameTagColor", 0); - break; - case 8: - client.SetSharedData("blipColor", 83); - client.SetSharedData("nameTagColor", 8); - break; - case 7: - client.SetSharedData("blipColor", 52); - client.SetSharedData("nameTagColor", 7); - break; - case 4: - client.SetSharedData("blipColor", 5); - client.SetSharedData("nameTagColor", 4); - break; - case 9: - client.SetSharedData("blipColor", 25); - client.SetSharedData("nameTagColor", 9); - break; - } + clientUser.SetBlipAndNametagColor(); if (announceHq) {