k1lly0u
In-game map and minimap GUI

Supported Games
GameServerKingsGameServerKings

LustyMap is a plugin that adds an in-game Map and Minimap.

The plugin has two modes, the simple mode (default) uses a single image for the map and minimap, the complex mode uses a sliced up version of the map to allow for a zoomed in minimap.

IMPORTANT INFORMATION: This plugin requires the icon images to be added to the oxide data folder on the server (details below)

Below you will find information on:

  • -Map Images
  • -Icon Images
  • -Using the complex map
  • -Forcing the complex map
  • -Map automation and beancan.io registration
  • -Using custom map images
  • -Tips for maintaining your server listing on beancan.io
  • -How to find your API key on beancan.io
  • -Accessing the map
  • -Admin commands
  • -Adding custom map markers
  • -Using the anti spam functions
  • -Chat/Console commands
  • -Config options and what they do
  • -API for developers

Friends integration

This plugin supports friend lists from all Friends and Clans pluginsAny developer can add/manage a custom friends list via their own plugin using the API supplied below

Map Images

The map itself can now be downloaded automatically and the plugin will slice it up accordingly. However to do this you must register your server onbeancan.io (More information below)

Icon Images - REQUIRED!

Download the following zip file and extract it to your "/server/oxide/data/" folder. This contains all the map icons you will need. You may replace these icons with you own custom versions if you wish -> Icons download

Your folder structure should look like the following and the icons folder should contain by default 194 icon images

Complex Mode

The complex mode (zoomed in minimap) uses a series of chopped up map images to provide a adjustable zoomed in view.This process is completely automated by the plugin. To take advantage of this simply set the config option UseComplexMap to true.

Forcing Complex ModeYou can also lock the map in a specified zoom level in complex mode by setting the config option ForceMapZoom to true.When forcing map zoom you must set ForcedZoomLevel between 1 and 3.This will disable the use of the regular minimap and only the set zoomed level will be accessible to all users

Map automation and Beancan.IO

Credit to Calytic and Nogrod for providing a awesome map generator and a free to use API!Map generation and automation is now possible using API from beancan.io.

Simply register your server on the website and retrieve your API key. Your API key can be found by editing your server details, under the various options you will see a section titled API and your key is the entry labelled "Key"

Once you have your API key enter in into your config and reload the plugin.

The plugin will then contact beancan.io to generate and download your map.

Once the map has been downloaded, if you have complex mode enabled it will chop up and store all the pieces. This process may take a few moments. When that is done the plugin will become active and all players should be able to use the map.

Upon wipes LustyMap will detect a new map and will automatically download the updated map image, making the process entirely automated.

Users utilizing this feature will also have access to a map view that can be embedded on your website. When the map is generated via LustyMap it will be automatically updated so you will never need to update your website to match new maps. Browse to your server's map via beancan.io and click the "embed" button to obtain a URL to use

NOTE If the map generated does not match your map you can re-download the map by using the console command "resetmap" If the map does not match directly after a game update note that the map generator also requires updates so please wait for 5-10 minutes before trying to reset the map. If after using the command you map is still incorrect please leave a comment in the support thread stating your mapsize and mapseed along with a screen cap

Tips to keep your server listed on beancan.ioDirect from beancan staff:

Low quality, testing server, and private server entries are rejected. We get 100 submissions per day, and we aren't going to list servers that degrade the quality of our server list.

Tips To Get Listed
Do not enter the country in your server name like "[EU]" or "[US]"
Enter atleast 3 tags, look at other popular servers and see which tags are common
Enter a detailed description. "Hello, welcome" is totally unacceptable and will be revoked.
Upload a banner, put in 10 minutes in GIMP and create a basic banner. It doesn't need to be fancy, but anything is better than nothing
Have atleast a basic website

Tips To Get Revoked And Banned
Post the same server multiple times
Repeatedly posting gibberish entries
Posting malware
No tags
No banner
Rust.IO Maps
Note: a website is not required but it helps considerably.

Finding your API key

  1. Navigate to the top right, open the drop down, and click my posts.
  2. You will see all your posts there.
  3. Click your server, then edit, then scroll down until you get to this.

Custom Map Images

If you do not want to use maps provided by beancan.io you can still use a custom map image.To do this simply download your image and save it in your "/server/oxide/data/LustyMap/" folder.Then in your config change CustomMap_Filename to use the image filename and set CustomMap_Use to true. The process after this is the same as before, it just doesn't download the map from the web

Accessing the Map

Players can press M to open the in game map (pressing M again will close it) (this can be changed in the config using the MapKeybind setting).

Players can hide the minimap using the <<< button located at the top right of the minimap (then >>> to open it back up)

Alternatively if you do not want to force a keybind on players they can use the chat command /map to open the map or /map mini to open the mini map

Admin Commands

All previous admin commands have been removed due to the way the new version generates the UI. All these options are still available to change in the config and will require a reload of the plugin after making any changes to generate the new UI

Adding Custom Markers - via chat commands (See Below)By using the command /marker you can add and remove custom map markers.When adding a marker you will have the option to specify a custom icon (file). This icon MUST be located in your "/oxide/data/LustyMap/custom/" folder and the file must be a .png.When typing the command you must type the filename without the extension. For example:We have a custom icon file name icon.png, the command will be "/marker add name icon"Alternatively you can leave it blank and the default icon will be supplied

Map Spam Monitoring

It has been brought to my attention that some deviants may spam the map open/closed in order to lag a server and potentially crash it.To combat this I have implemented a spam monitoring system. This system will monitor when a user changes map mode rapidly, whether it being opening and closing the map, or zooming in and out etc.If the user changes type more then once in the set amount of time (default 3 seconds) it will be registered as potential spam. By default after 5 rapid changes the user will receive a warning, and after 10 rapid changes the users map will be disabled for 2 minutes.There are a few options in the config regarding this system including a option to enable/disable the system entirely

Linux Users

The map splitter requires LibGDIPlus to be installed on your system.

sudo apt install libgdiplus

Afterwards restart your system for the changes to take effect

Chat Commands

  • /map admin - Toggles Admin View On/Off (allows you to see all player on the map) - Requires auth level or permission lustymap.admin
  • /marker add <name> <opt:icon> - Add a new map marker on your position with a optional custom icon
  • /marker remove <name> - Remove a custom map marker by name

Console Commands

resetmap[/COLOR] - Force the plugin to erase existing image data and re-download all images (used to reset generated maps)

Configuration

{
  "Friend Options": {
    "Allow custom friend lists from other plugins": true,
    "Enable clans support": true,
    "Enable friends support": true
  },
  "Map - Complex Options": {
    "Enable the complex map": true,
    "Force complex zoom mode": false,
    "Forced zoom number (1, 2 or 3)": 1
  },
  "Map - Main Options": {
    "Enable AFK tracking": true,
    "Hide event players": true,
    "Map image options": {
      "Beancan.io API key (if applicable)": "",
      "Custom map filename": "",
      "Use custom map": false
    },
    "Map update time (seconds)": 1.0,
    "Open map on for player's when they connect": true,
    "Show map compass": true
  },
  "Map - Mini Options": {
    "Enable the minimap": true,
    "Minimap docked on the left side of the screen": true,
    "Minimap horizontal scale": 1.0,
    "Minimap offset from side of the screen": 0.0,
    "Minimap offset from top of the screen": 0.0,
    "Minimap vertical scale": 1.0
  },
  "Marker Options": {
    "Show all players": false,
    "Show caves": false,
    "Show debris": false,
    "Show friends and clanmates": true,
    "Show helicopters": true,
    "Show marker names": true,
    "Show monuments": true,
    "Show planes": true,
    "Show self": true,
    "Show supply drops": true,
    "Show vending machines (public broadcast only)": true
  },
  "Spam Options": {
    "Allowed time between map changes": 3,
    "Amount of time a users map will be disabled": 120,
    "Attempts before disabling the users map": 10,
    "Attempts before warning the user they are spamming": 5,
    "Enable spam monitoring": true
  }
}

For Developers

Custom Markers

// x - Objects X position
// z - Objects Z position
// r - Objects rotation
// name - Name of the object (must be unique to that object)
// icon - The icon file name
bool AddMarker(float x, float z, string name, string icon = "special", float r = 0) // Add a new map marker
void UpdateMarker(float x, float z, string name, string icon = "special", float r = 0) // Update a existing map marker
bool RemoveMarker(string name) // Remove a map marker by name

Map Management - For use with fullscreen UI to disable LustyMap from overlapping

void EnableMaps(BasePlayer player) // Activates a users map
void DisableMaps(BasePlayer player) // Disables a users map

Custom Friend Lists

// All lists are (string) userID's
// Name should be set to your plugin's title
// These lists are NOT saved through restart
bool AddFriendList(string playerId, string name, List<string> list) // Add a entire list of friend IDs
bool RemoveFriendList(string playerId, string name) // Remove a entire friend list
bool UpdateFriendList(string playerId, string name, List<string> list) // Replace a entire list
bool AddFriend(string playerId, string name, string friendId) // Add a individual friend
bool RemoveFriend(string playerId, string name, string friendId) // Remove a individual friend

MIT License


Copyright (c) 2020 k1lly0u


Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:


The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.


THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.