Jump to content

2 Screenshots

About This File

I recently needed a polygons library like this for my gamemode to define some companies, houses, gangzones and other kind of establishments boundaries, so I decided to create this resource previously based on abmn's zone manager, but the code was terrible and I decided to rewrite my own from scratch and improving the functionality.

Basically you'll be able to create any kind of colshape you want, without worring about combining colshapes to fit your needs, you can just define the points and the height of the shape and it'll be created easily!

You can set boundaries for houses to move furnitures, for companies to accomplish the job, for mountains in hunting animals scripts and anything else your creativity takes you, just use it!


Demos

https://streamable.com/w7l4h6

https://youtu.be/OxSPcVQrWrY


Advantages


The main advantages of using this resource instead of abmn's are:

  1. These polygons are dynamic, you can modify, move, rotate, basically do anything to the polygon vertices array in real time and it'll work instantaneously, updating the collisions with players.
  2. This script is way more optimized and lightweight than the other version.
  3. You can choose the color for the lines of the polygon and set them visible or not by just modifying the polygon `visible` property.
  4. This script supports different kind of heights for detecting collision (eg.: slopes), it's accurate (may not work as you think it should depending on the slope degree and the polygon height), and supports even colshapes for mountains.
  5. You can add more vertex at any time you want to existing polygons, by just pushing a new vector3 position to `polygon.vertices` array.
     

API Functions

/* Creates a new polygon and return it's instance */
mp.polygons.add(vertices: Vector3Mp[], height: number, options = { visible: false, lineColorRGBA: [255,255,255,255], dimension: 0 }): Polygon

/* Removes a polygon */
mp.polygons.remove(polygon: Polygon): void

/* Check if a polygon exists */
mp.polygons.exists(polygon: Polygon): boolean

/* Check if a position is contained within a given polygon */
mp.polygons.isPositionWithinPolygon(position: Vector3Mp, polygon: Polygon): boolean

/* Examples */

// Creating a new polygon
const polygon = mp.polygons.add([new mp.Vector3(10, 10, 5), new mp.Vector3(15, 15, 5), new mp.vector3(5, 5, 5)], 10, { visible: false, lineColorRGBA: [255,255,255,255], dimension: 0 });

// Set the polygon lines visible 
polygon.visible = true;

// Modifying a polygon height
polygon.height = 100;

// Modifying a polygon color (RGBA)
polygon.lineColorRGBA = [255, 155, 0, 255];

// Modifying a polygon dimension
polygon.dimension = 30;

/* Events*/

// Event called when player enter a polygon (clientside)

mp.events.add('playerEnterPolygon', (polygon) => mp.gui.chat.push(`You entered the polygon ${polygon.id}!`));

// Event called when the local player leaves a polygon (clientside)

mp.events.add('playerLeavePolygon', (polygon) => mp.gui.chat.push(`You left the polygon ${polygon.id}.`));

How to install

  • Download the zip folder
  • Extract it on your clientside folder
  • Require the index file from the polygons folder.
  • Enjoy it!



See you on the next release!

- n0minal

Edited by n0minal

  • Like 12

User Feedback

Create an account or sign in to leave a review

You need to be a member in order to leave a review

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

attacking

   1 of 1 member found this review helpful 1 / 1 member

new nice thing 😃

  • Like 1
noBrain

· Edited by ambn

   1 of 1 member found this review helpful 1 / 1 member

cool, sorry for the terrible code xd

 

  • Like 1
Tom Harper

   3 of 6 members found this review helpful 3 / 6 members

Unexpected token error "export" in helper.js file it says. Any idea?

  • Like 1
  • Confused 1
Kopra

  

Very useful, thanks!

kaneGG

  

Very useful, great job!

  • Like 1
×
×
  • Create New...