diff --git a/ReallifeGamemode.Client/Player/nodm.ts b/ReallifeGamemode.Client/Player/nodm.ts index 89946fac..838bb6a8 100644 --- a/ReallifeGamemode.Client/Player/nodm.ts +++ b/ReallifeGamemode.Client/Player/nodm.ts @@ -1,23 +1,38 @@ - -export function isPlayerInNoDMZone(pos) { - if (pos.x >= -540 && pos.x <= -531 - && pos.y >= -2151 && pos.y <= -2139) { - return true; - } +import polygons from "../polygons"; + +let vec1 = new mp.Vector3(-515.60626, -2165.5671, 7.5437155); +let vec2 = new mp.Vector3(-527.26056, -2179.1477, 6.2923); +let vec3 = new mp.Vector3(-519.55426, -2186.5708, 6.4070964); +let vec4 = new mp.Vector3(-506.00034, -2186.9153, 6.705781); +let vec5 = new mp.Vector3(-500.05966, -2178.3372, 3.6730707); + +const polygon = polygons.add([vec1, vec2, vec3, vec4, vec5], 6, true, [255, 255, 255, 255], 0); + +export function isTargetInPolygon(pos) { + polygons.pool.forEach(zone => { + if (polygons.isPositionWithinPolygon(pos, zone, zone.dimension)) { + return true; + } + }); return false; } +export let isInAnyPolygon; + export default function nodmHandler() { + polygon.visible = true; + polygon.height = 100; + polygon.lineColorRGBA = [255, 155, 0, 255]; + + mp.events.add('playerEnterPolygon', (polygon) => { - mp.gui.chat.push("entered"); + mp.events.call('toggleNoDmZone', true); + isInAnyPolygon = true; }); mp.events.add('playerLeavePolygon', (polygon) => { - mp.gui.chat.push("leaved"); + mp.events.call('toggleNoDmZone', false); + isInAnyPolygon = false; }); - - setInterval(() => { - mp.events.call('toggleNoDmZone', isPlayerInNoDMZone(mp.players.local.position)); - }, 200); } diff --git a/ReallifeGamemode.Client/util/weapondamage.ts b/ReallifeGamemode.Client/util/weapondamage.ts index 4c16d9f8..6dde5bb3 100644 --- a/ReallifeGamemode.Client/util/weapondamage.ts +++ b/ReallifeGamemode.Client/util/weapondamage.ts @@ -1,4 +1,5 @@ -import { isPlayerInNoDMZone } from "../Player/nodm"; +import { isInAnyPolygon, isTargetInPolygon } from "../Player/nodm"; +import polygons from "../polygons"; export default function weapondamageUtil() { let blockInput = false; @@ -10,7 +11,8 @@ export default function weapondamageUtil() { }); mp.events.add('outgoingDamage', (sourceEntity, targetEntity, sourcePlayer, weapon, boneIndex, damage) => { - if (isPlayerInNoDMZone(targetEntity.position) || isPlayerInNoDMZone(sourceEntity.position)) { + if (isInAnyPolygon || isTargetInPolygon(targetEntity.position)) { + mp.gui.chat.push("Kein DM in NODM"); return true; } });