From 5992318989750dfe0757bcea18abac9e0e660d34 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 21 Apr 2021 18:34:06 +0200 Subject: [PATCH 1/6] =?UTF-8?q?Busfahrer:=20Bei=20Routenmen=C3=BC=20Schlie?= =?UTF-8?q?=C3=9Fen=20Job=20beenden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReallifeGamemode.Client/Jobs/BusRouteSelect.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/ReallifeGamemode.Client/Jobs/BusRouteSelect.ts b/ReallifeGamemode.Client/Jobs/BusRouteSelect.ts index f9ca378f..adf56848 100644 --- a/ReallifeGamemode.Client/Jobs/BusRouteSelect.ts +++ b/ReallifeGamemode.Client/Jobs/BusRouteSelect.ts @@ -73,6 +73,7 @@ export default function busRouteList(globalData: IGlobalData) { }); routeMenu.MenuClose.on(() => { + mp.events.callRemote("CLIENT:Job_StopJob"); globalData.InMenu = false; }); } From d413c5c8cb22cadb1f8bedaa819d04bc5143dbed Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 21 Apr 2021 18:34:36 +0200 Subject: [PATCH 2/6] Job: Alle Prefix zu "[JOB]" vereinheitlicht --- ReallifeGamemode.Server/Job/BusDriverJob.cs | 12 ++++++------ ReallifeGamemode.Server/Job/JobBase.cs | 4 ++-- ReallifeGamemode.Server/Job/PilotJob.cs | 4 ++-- .../Job/RefuseCollectorJob.cs | 18 +++++++++--------- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/ReallifeGamemode.Server/Job/BusDriverJob.cs b/ReallifeGamemode.Server/Job/BusDriverJob.cs index 181b2436..75720b67 100644 --- a/ReallifeGamemode.Server/Job/BusDriverJob.cs +++ b/ReallifeGamemode.Server/Job/BusDriverJob.cs @@ -424,13 +424,13 @@ namespace ReallifeGamemode.Server.Job player.TriggerEvent("CLIENT:PlaySound", "jobs/busfahrer/FahrplanAbfahrt", "wav", 15); player.StartCheckPointRoute(selectedRoute, MARKER_DELAY, MARKER_ID, MARKER_SIZE, MARKER_DIST, true, MARKER_EVENT); if (index != -1) - player.SendChatMessage($"~y~[JOB]: ~w~Dir wurde ~g~ Route {index + 1}~w~ zugeteilt."); + player.SendChatMessage($"~y~[JOB] ~w~Dir wurde ~g~ Route {index + 1}~w~ zugeteilt."); } public override void LastCheckpoint(Player player) { Vehicle v = player.Vehicle; - player.SendChatMessage("~y~[JOB]: ~w~Die neue Route lädt. Bitte warten..."); + player.SendChatMessage("~y~[JOB] ~w~Die neue Route lädt. Bitte warten..."); string type = getPlayerRouteType(player); if (type == BEGINNER) @@ -634,13 +634,13 @@ namespace ReallifeGamemode.Server.Job user.BusSkill++; if (user.BusSkill == BusDriverJob.SKILL_INTERMEDIATE) { - player.SendChatMessage($"~y~[JOB]: ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!"); - player.SendChatMessage($"~y~[JOB]: ~w~Du kannst jetzt auch mit dem Coach fahren!"); + player.SendChatMessage($"~y~[JOB] ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!"); + player.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt auch mit dem Coach fahren!"); } if (user.BusSkill == BusDriverJob.SKILL_PROFESSIONAL) { - player.SendChatMessage($"~y~[JOB]: ~w~Du hast nun die Route ~g~{BusDriverJob.PROFESSIONAL} ~w~freigeschaltet!"); - player.SendChatMessage($"~y~[JOB]: ~w~Du kannst jetzt auch mit dem Tourbus fahren!"); + player.SendChatMessage($"~y~[JOB] ~w~Du hast nun die Route ~g~{BusDriverJob.PROFESSIONAL} ~w~freigeschaltet!"); + player.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt auch mit dem Tourbus fahren!"); } dbContext.SaveChanges(); diff --git a/ReallifeGamemode.Server/Job/JobBase.cs b/ReallifeGamemode.Server/Job/JobBase.cs index 8a0baa0b..9c760574 100644 --- a/ReallifeGamemode.Server/Job/JobBase.cs +++ b/ReallifeGamemode.Server/Job/JobBase.cs @@ -45,7 +45,7 @@ namespace ReallifeGamemode.Server.Job _inJob.Add(player); jobPlayer.Add(player); - ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); + ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ gestartet."); JobStart?.Invoke(player); } @@ -58,7 +58,7 @@ namespace ReallifeGamemode.Server.Job if (quit) { - ChatService.SendMessage(player, $"~y~[Job]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); + ChatService.SendMessage(player, $"~y~[JOB]~s~ Du hast deinen Job ~o~{this.Name}~s~ beendet."); player.SafeTeleport(JobManager.playerJobStartPosition[player]); } diff --git a/ReallifeGamemode.Server/Job/PilotJob.cs b/ReallifeGamemode.Server/Job/PilotJob.cs index 66751a43..f58fa5c4 100644 --- a/ReallifeGamemode.Server/Job/PilotJob.cs +++ b/ReallifeGamemode.Server/Job/PilotJob.cs @@ -356,8 +356,8 @@ namespace ReallifeGamemode.Server.Job user.PilotSkill++; if (user.PilotSkill == BusDriverJob.SKILL_INTERMEDIATE) { - player.SendChatMessage($"~y~[JOB]: ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!"); - player.SendChatMessage($"~y~[JOB]: ~w~Du kannst jetzt auch mit dem Velum fliegen!"); + player.SendChatMessage($"~y~[JOB] ~w~Du hast nun die Route ~g~{BusDriverJob.INTERMEDIATE} ~w~freigeschaltet!"); + player.SendChatMessage($"~y~[JOB] ~w~Du kannst jetzt auch mit dem Velum fliegen!"); } dbContext.SaveChanges(); diff --git a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs index 7edf83be..e70a3720 100644 --- a/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs +++ b/ReallifeGamemode.Server/Job/RefuseCollectorJob.cs @@ -205,7 +205,7 @@ namespace ReallifeGamemode.Server.Job player.AddAttachment("binbag", true); } - ChatService.SendMessage(data.getPartnerClient(player), $"~y~[Job] ~s~Dein Partner hat den Job beendet."); + ChatService.SendMessage(data.getPartnerClient(player), $"~y~[JOB] ~s~Dein Partner hat den Job beendet."); data.removeClientFromData(player); return; @@ -254,10 +254,10 @@ namespace ReallifeGamemode.Server.Job if (data.getTrashCount() == MAX_BAG) { - ChatService.SendMessage((Player)player, "~y~[Job] ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); + ChatService.SendMessage((Player)player, "~y~[JOB] ~s~Der Müllwagen ist voll. Fahre nun zurück zur Recyclinganlage!"); if (target != null) { - ChatService.SendMessage((Player)target, "~y~[Job] ~s~Der Müllwagen ist voll! Er muss entleert werden."); + ChatService.SendMessage((Player)target, "~y~[JOB] ~s~Der Müllwagen ist voll! Er muss entleert werden."); target.TriggerEvent("SERVER:MuellmannZuBase"); } player.TriggerEvent("SERVER:MuellmannZuBase"); @@ -294,8 +294,8 @@ namespace ReallifeGamemode.Server.Job if (data.getDataFromClient(player) == null) continue; Player target = data.getPartnerClient(player); - if (target != null) ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); - ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + if (target != null) ChatService.SendMessage((Player)target, $"~y~[JOB] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); + ChatService.SendMessage((Player)player, $"~y~[JOB] ~s~Fahrzeug wurde entleert. Säcke: {data.getTrashCount()}"); //bonus pro sack using (var dbContext = new DatabaseContext()) { @@ -384,8 +384,8 @@ namespace ReallifeGamemode.Server.Job if (target == null) return; - ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Dein Partner ist {target.Name}!"); - ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Dein Partner ist {player.Name}!"); + ChatService.SendMessage((Player)player, $"~y~[JOB] ~s~Dein Partner ist {target.Name}!"); + ChatService.SendMessage((Player)target, $"~y~[JOB] ~s~Dein Partner ist {player.Name}!"); return; } } @@ -401,8 +401,8 @@ namespace ReallifeGamemode.Server.Job if (target == null) return; - ChatService.SendMessage((Player)player, $"~y~[Job] ~s~Dein Partner ist {target.Name}!"); - ChatService.SendMessage((Player)target, $"~y~[Job] ~s~Dein Partner ist {player.Name}!"); + ChatService.SendMessage((Player)player, $"~y~[JOB] ~s~Dein Partner ist {target.Name}!"); + ChatService.SendMessage((Player)target, $"~y~[JOB] ~s~Dein Partner ist {player.Name}!"); } } From 4c35539b239847ad8112bc758ca2b25586270469 Mon Sep 17 00:00:00 2001 From: hydrant Date: Wed, 21 Apr 2021 19:37:01 +0200 Subject: [PATCH 3/6] =?UTF-8?q?Evtl.=20fix=20unerkl=C3=A4rliche=20async=20?= =?UTF-8?q?client=20fehler?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ReallifeGamemode.Client/core/rage-mp/entities.ts | 12 ++++++++++-- ReallifeGamemode.Client/core/rage-mp/game.ts | 4 ++-- ReallifeGamemode.Client/game.ts | 3 ++- ReallifeGamemode.Client/util/attachmentMngr.ts | 2 +- ReallifeGamemode.Client/vehiclesync/vehiclesync.ts | 10 +++++----- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/ReallifeGamemode.Client/core/rage-mp/entities.ts b/ReallifeGamemode.Client/core/rage-mp/entities.ts index 9073acc4..2a855054 100644 --- a/ReallifeGamemode.Client/core/rage-mp/entities.ts +++ b/ReallifeGamemode.Client/core/rage-mp/entities.ts @@ -147,7 +147,7 @@ class RageEntityAttachmentPool implements IEntityAttachmentPool { let e = new RageAttachments(entity, attachments, attachmentObjects); this.attachmentPool.push(e); - return e; + return e; } at(remoteId: any): IEntityAttachments { @@ -188,6 +188,10 @@ class RagePlayerPool implements IPlayerPool { fn(new RagePlayer(e)); }); } + + exists(entity: IPlayer): boolean { + return mp.players.exists(entity.id); + } } @@ -280,6 +284,10 @@ class RageVehiclePool implements IVehiclePool { fn(new RageVehicle(e)); }) } + + exists(entity: IVehicle): boolean { + return mp.vehicles.exists(entity.id); + } } export { @@ -290,5 +298,5 @@ export { 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 dc4e1514..5094ba9f 100644 --- a/ReallifeGamemode.Client/core/rage-mp/game.ts +++ b/ReallifeGamemode.Client/core/rage-mp/game.ts @@ -10,8 +10,8 @@ export default class RageGame implements IGame { events: IEvents = new RageEvents; ui: IUi = new RageUi; - async wait(ms: number): Promise { - await mp.game.waitAsync(ms); + wait(ms: number): void { + mp.game.wait(ms); } disableDefaultEngineBehaviour(): void { diff --git a/ReallifeGamemode.Client/game.ts b/ReallifeGamemode.Client/game.ts index db02729b..c201e07d 100644 --- a/ReallifeGamemode.Client/game.ts +++ b/ReallifeGamemode.Client/game.ts @@ -1,5 +1,5 @@ interface IGame { - wait(ms: number): Promise; + wait(ms: number): void; events: IEvents; ui: IUi; @@ -75,6 +75,7 @@ interface IVehicle extends IEntity { interface IEntityPool { at(id: number): TEntity; forEach(fn: (entity: TEntity) => void): void; + exists(entity: TEntity): boolean; } diff --git a/ReallifeGamemode.Client/util/attachmentMngr.ts b/ReallifeGamemode.Client/util/attachmentMngr.ts index bb62ee5d..d46da114 100644 --- a/ReallifeGamemode.Client/util/attachmentMngr.ts +++ b/ReallifeGamemode.Client/util/attachmentMngr.ts @@ -15,7 +15,7 @@ export default function attachmentManager(game: IGame) { { attachments: {}, - addFor: async function (entity, id) { + addFor: function (entity, id) { if (this.attachments.hasOwnProperty(id)) { if (!entity.__attachmentObjects) { entity.__attachmentObjects = {}; diff --git a/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts b/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts index f7989e42..d30322da 100644 --- a/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts +++ b/ReallifeGamemode.Client/vehiclesync/vehiclesync.ts @@ -10,9 +10,9 @@ game.events.add('SERVER:Vehicle:UpdateData', (vehId, dataStr) => { setVehicleData(vehicle, data); }); -game.events.onPlayerEnterVehicle(async (vehicle, seat) => { +game.events.onPlayerEnterVehicle((vehicle, seat) => { while (!game.players.local.inVehicle) { - await game.wait(0); + game.wait(0); } if (vehicle) { @@ -22,11 +22,11 @@ game.events.onPlayerEnterVehicle(async (vehicle, seat) => { } }); -game.events.onPlayerExitVehicle(async () => { +game.events.onPlayerExitVehicle(() => { var veh = game.players.local.vehicle; while (game.players.local.inVehicle) { - await game.wait(0); + game.wait(0); } if (veh) { @@ -51,7 +51,7 @@ game.events.onEntityStreamIn((entity: IEntity) => { }); function setVehicleData(veh: IVehicle, data: VehicleData): void { - if (!veh) { + if (!veh || !game.vehicles.exists(veh)) { return; } From 3edd6b5560e87700c258f33ff205f347e09fd758 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 21 Apr 2021 22:35:58 +0200 Subject: [PATCH 4/6] nodmzone, COMMIT NUR ZUM TESTEN --- ReallifeGamemode.Client/Gui/infobox.ts | 16 ++++++++++++++ ReallifeGamemode.Client/Player/position.ts | 22 +++++++++++++++++++ ReallifeGamemode.Client/Player/reportmenu.ts | 1 - ReallifeGamemode.Client/index.ts | 3 +++ ReallifeGamemode.Client/util/weapondamage.ts | 6 +++++ .../Commands/UserCommands.cs | 7 ++++++ ReallifeGamemode.Server/Events/PlayerEvent.cs | 5 +++++ 7 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 ReallifeGamemode.Client/Player/position.ts diff --git a/ReallifeGamemode.Client/Gui/infobox.ts b/ReallifeGamemode.Client/Gui/infobox.ts index 5e53bb15..87bbf472 100644 --- a/ReallifeGamemode.Client/Gui/infobox.ts +++ b/ReallifeGamemode.Client/Gui/infobox.ts @@ -16,6 +16,7 @@ export default function (globalData: IGlobalData): void { var adutyMode = false; var adminUnshow = false; var adminTSupport = false; + var noDmZone = false; var dutyMode = false; let jailTime = 0; let att_score = 0; @@ -84,6 +85,10 @@ export default function (globalData: IGlobalData): void { blackScreenMode = toggle; }); + mp.events.add("toggleNoDmZone", (toggle) => { + noDmZone = toggle; + }); + mp.events.add("jailTime", (time) => { jailTime = JSON.parse(time); }); @@ -345,6 +350,17 @@ export default function (globalData: IGlobalData): void { }) } + if (noDmZone) { + mp.game.graphics.drawText("~r~NoDM Zone", [0.907, 0.741], + { + font: 4, + color: [255, 255, 255, 255], + scale: [0.8, 0.8], + outline: true, + centre: false + }) + } + if (countdown > 0) { var now = Date.now(); var diff = Math.trunc((now - cdTimestamp) / 1000); diff --git a/ReallifeGamemode.Client/Player/position.ts b/ReallifeGamemode.Client/Player/position.ts new file mode 100644 index 00000000..f6830796 --- /dev/null +++ b/ReallifeGamemode.Client/Player/position.ts @@ -0,0 +1,22 @@ + +export function isPlayerInNoDMZone(pos) { + if (pos.x >= -540 && pos.x <= -531 + && pos.y >= -2151 && pos.y <= -2139) { + return true; + } + return false; +} + +export default function positionHandler() { + + mp.events.add("checkPosition", (targetEntity) => { + + if (isPlayerInNoDMZone(mp.players.local.position) || isPlayerInNoDMZone(targetEntity.position)) { + mp.gui.chat.push("Kein DM in NODM!"); + } + }); + + setInterval(() => { + mp.events.call('toggleNoDmZone', isPlayerInNoDMZone(mp.players.local.position)); + }, 200); +} \ No newline at end of file diff --git a/ReallifeGamemode.Client/Player/reportmenu.ts b/ReallifeGamemode.Client/Player/reportmenu.ts index bee77944..8e47ac8d 100644 --- a/ReallifeGamemode.Client/Player/reportmenu.ts +++ b/ReallifeGamemode.Client/Player/reportmenu.ts @@ -39,7 +39,6 @@ export default function reportList(globalData: IGlobalData) { //Weapon Menu - mp.events.add('showReportMenu', (userTickets, TicketsArr) => { if (!globalData.InMenu) { diff --git a/ReallifeGamemode.Client/index.ts b/ReallifeGamemode.Client/index.ts index abcbd11e..71a5b13b 100644 --- a/ReallifeGamemode.Client/index.ts +++ b/ReallifeGamemode.Client/index.ts @@ -186,6 +186,9 @@ ped(); import reportList from './Player/reportmenu'; reportList(globalData); +import positionHandler from './Player/position'; +positionHandler(); + import checkpointHandle from './util/checkpoint'; checkpointHandle(globalData); diff --git a/ReallifeGamemode.Client/util/weapondamage.ts b/ReallifeGamemode.Client/util/weapondamage.ts index 1907a03a..830722ad 100644 --- a/ReallifeGamemode.Client/util/weapondamage.ts +++ b/ReallifeGamemode.Client/util/weapondamage.ts @@ -7,6 +7,12 @@ player.setSuffersCriticalHits(false); }); + mp.events.add('outgoingDamage', (sourceEntity, targetEntity, sourcePlayer, weapon, boneIndex, damage) => { + + + mp.events.call('checkPosition', targetEntity); + }); + mp.events.add("render", () => { if (blockInput) { mp.game.controls.disableControlAction(32, 142, true); diff --git a/ReallifeGamemode.Server/Commands/UserCommands.cs b/ReallifeGamemode.Server/Commands/UserCommands.cs index 15d159a7..479b939a 100644 --- a/ReallifeGamemode.Server/Commands/UserCommands.cs +++ b/ReallifeGamemode.Server/Commands/UserCommands.cs @@ -17,6 +17,13 @@ namespace ReallifeGamemode.Server.Commands { internal class UserCommands : Script { + [Command("nodm", "~m~nodm")] + public void CmdUserNoDm(Player player) + { + ChatService.Broadcast("ss"); + player.TriggerEvent("toggleNoDmZone", true); + } + [Command("look", "~m~look")] public void CmdUserLook(Player player) { diff --git a/ReallifeGamemode.Server/Events/PlayerEvent.cs b/ReallifeGamemode.Server/Events/PlayerEvent.cs index 2aba02d8..c504344d 100644 --- a/ReallifeGamemode.Server/Events/PlayerEvent.cs +++ b/ReallifeGamemode.Server/Events/PlayerEvent.cs @@ -9,6 +9,11 @@ namespace ReallifeGamemode.Server.Events { internal class PlayerEvent : Script { + [ServerEvent(Event.PlayerDamage)] + public void OnPlayerDamage(Player player, float healthLoss, float armorLoss) { + ChatService.Broadcast("dmg"); + } + [RemoteEvent("CLIENT:SET_InFrontOfPos")] public void SetFrontOfPos(Player player, Vector3 pos) { From 6e1aed192662c64c54cf51caed8861b34792d330 Mon Sep 17 00:00:00 2001 From: Fabian Date: Wed, 21 Apr 2021 22:41:42 +0200 Subject: [PATCH 5/6] nodmzone, COMMIT NUR ZUM TESTEN --- ReallifeGamemode.Client/Player/position.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Player/position.ts b/ReallifeGamemode.Client/Player/position.ts index f6830796..850b4d99 100644 --- a/ReallifeGamemode.Client/Player/position.ts +++ b/ReallifeGamemode.Client/Player/position.ts @@ -1,7 +1,8 @@  export function isPlayerInNoDMZone(pos) { if (pos.x >= -540 && pos.x <= -531 - && pos.y >= -2151 && pos.y <= -2139) { + && pos.y >= -2151 && pos.y <= -2139 + && pos.z >= 0 && pos.z <= 30) { return true; } return false; @@ -10,7 +11,6 @@ export function isPlayerInNoDMZone(pos) { export default function positionHandler() { mp.events.add("checkPosition", (targetEntity) => { - if (isPlayerInNoDMZone(mp.players.local.position) || isPlayerInNoDMZone(targetEntity.position)) { mp.gui.chat.push("Kein DM in NODM!"); } From 6c5a73c3f7224e0c93661674f25f70ea3a28ef24 Mon Sep 17 00:00:00 2001 From: balbo <34-nahkampfaffe@users.noreply.development.life-of-german.org> Date: Wed, 21 Apr 2021 22:49:26 +0200 Subject: [PATCH 6/6] Revert "nodmzone, COMMIT NUR ZUM TESTEN" This reverts commit 6e1aed192662c64c54cf51caed8861b34792d330 --- ReallifeGamemode.Client/Player/position.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ReallifeGamemode.Client/Player/position.ts b/ReallifeGamemode.Client/Player/position.ts index 850b4d99..f6830796 100644 --- a/ReallifeGamemode.Client/Player/position.ts +++ b/ReallifeGamemode.Client/Player/position.ts @@ -1,8 +1,7 @@  export function isPlayerInNoDMZone(pos) { if (pos.x >= -540 && pos.x <= -531 - && pos.y >= -2151 && pos.y <= -2139 - && pos.z >= 0 && pos.z <= 30) { + && pos.y >= -2151 && pos.y <= -2139) { return true; } return false; @@ -11,6 +10,7 @@ export function isPlayerInNoDMZone(pos) { export default function positionHandler() { mp.events.add("checkPosition", (targetEntity) => { + if (isPlayerInNoDMZone(mp.players.local.position) || isPlayerInNoDMZone(targetEntity.position)) { mp.gui.chat.push("Kein DM in NODM!"); }