





















Monuments Watcher
FREE
Sold by: IIIaKaA plugin that allows other plugins to interact with players and entities in monuments via API.
- Description
- Reviews (0)
- Version History
- Discussions (0)
- Setup
- Product Enquiry
Description
Description
A plugin that allows other plugins to interact with players and entities in monuments via API.
The list of all monuments can be viewed in the:
- Default(Source of monument boundaries when changing the map or recreating boundaries) – *SERVER*oxidedataMonumentsWatcherDefaultBounds.json
- Vanilla – *SERVER*oxidedataMonumentsWatcherMonumentsBounds.json
- Custom – *SERVER*oxidedataMonumentsWatcherCustomMonumentsBounds.json
Note: MonumentsWatcher is utilized as an API for other plugins. You won’t obtain any functionality beyond displaying monument boundaries without an additional plugin.
- The ability to automatically generate boundaries for vanilla and custom monuments;
- The ability to automatically regenerate boundaries for monuments on wipe;
- The ability to automatically adding languages for custom monuments;
- The ability to manually configure boundaries for monuments;
- The ability to track the entrance and exit of players, npcs and entities in a Monument and CargoShip;
- The ability to display boundaries.
- monumentswatcher.admin – Provides the capability to recreate or display monument boundaries.
{
"Chat command": "monument",
"Is it worth enabling GameTips for messages?": true,
"Is it worth recreating boundaries(excluding custom monuments) upon detecting a wipe?": true,
"List of tracked categories of monuments. Leave blank to track all": [],
"Wipe ID": null,
"Version": {
"Major": 0,
"Minor": 1,
"Patch": 7
}
}
Note: The list of available categories for monuments can be found in the Developer API section.
ENG: https://pastebin.com/nsjBCqZe
RUS: https://pastebin.com/ut2icv9T
Note: After the plugin initialization, keys for custom monuments will be automatically added.
- show *monumentID*(optional) *floatValue*(optional) – Display the boundary of the monument you are in or specified. The display will last for the specified time or 30 seconds;
- list – List of available monuments;
- rotate *monumentID*(optional) *floatValue*(optional) – Rotate the monument you are in or specified, either in the direction you are looking or in the specified direction;
- recreate custom/all(optional) – Recreate the boundaries of vanilla/custom/all monuments.
Note: Instead of a monumentID, you can leave it empty, but you must be inside a monument. You can also use the word ‘closest‘ to select the nearest monument to you.
Example:
- /monument show closest
- /monument show gas_station_1
- /monument show gas_station_1_4
- /monument rotation
- /monument rotation closest
- /monument rotation gas_station_1_0 256.5
- /monument recreate
- void OnMonumentsWatcherLoaded()
- Called after the MonumentsWatcher plugin is fully loaded and ready.
- void OnCargoWatcherCreated(string monumentID, string type, CargoShip cargoShip)
- Called when a watcher is created for a CargoShip.
- void OnCargoWatcherDeleted(string monumentID)
- Called when a watcher is removed for a CargoShip.
void OnMonumentsWatcherLoaded() { Puts("MonumentsWatcher plugin is ready!"); } void OnCargoWatcherCreated(string monumentID, string type, CargoShip cargoShip) { Puts($"Watcher for monument {monumentID}({type}) has been created!"); } void OnCargoWatcherDeleted(string monumentID) { Puts($"Watcher for monument {monumentID} has been deleted!"); }
- Entered hooks:
- void OnPlayerEnteredMonument(string monumentID, BasePlayer player, string type, string oldMonumentID)
- Called when a player enters any monument.
- void OnNpcEnteredMonument(string monumentID, BasePlayer npcPlayer, string type, string oldMonumentID)
- Called when an NPC player enters any monument.
- void OnEntityEnteredMonument(string monumentID, BaseEntity entity, string type, string oldMonumentID)
- Called when any other BaseEntity enters any monument.
- void OnPlayerEnteredMonument(string monumentID, BasePlayer player, string type, string oldMonumentID)
void OnPlayerEnteredMonument(string monumentID, BasePlayer player, string type, string oldMonumentID) { Puts($"{player.displayName} entered to {monumentID}({type}). His previous monument was {oldMonumentID}"); } void OnNpcEnteredMonument(string monumentID, BasePlayer npcPlayer, string type, string oldMonumentID) { Puts($"Npc({npcPlayer.displayName}) entered to {monumentID}({type}). Previous monument was {oldMonumentID}"); } void OnEntityEnteredMonument(string monumentID, BaseEntity entity, string type, string oldMonumentID) { Puts($"Entity({entity.net.ID}) entered to {monumentID}({type}). Previous monument was {oldMonumentID}"); }
- Exited hooks:
- void OnPlayerExitedMonument(string monumentID, BasePlayer player, string type, string reason, string newMonumentID)
- Called when a player exits any monument.
- void OnNpcExitedMonument(string monumentID, BasePlayer npcPlayer, string type, string reason, string newMonumentID)
- Called when an NPC player exits any monument.
- void OnEntityExitedMonument(string monumentID, BaseEntity entity, string type, string reason, string newMonumentID)
- Called when any other BaseEntity exits any monument.
- void OnPlayerExitedMonument(string monumentID, BasePlayer player, string type, string reason, string newMonumentID)
void OnPlayerExitedMonument(string monumentID, BasePlayer player, string type, string reason, string newMonumentID) { Puts($"{player.displayName} left from {monumentID}({type}). Reason: {reason}. They are now at '{newMonumentID}'."); } void OnNpcExitedMonument(string monumentID, BasePlayer npcPlayer, string type, string reason, string newMonumentID) { Puts($"Npc({npcPlayer.displayName}) left from {monumentID}({type}). Reason: {reason}. They are now in {newMonumentID}"); } void OnEntityExitedMonument(string monumentID, BaseEntity entity, string type, string reason, string newMonumentID) { Puts($"Entity({entity.net.ID}) left from {monumentID}({type}). Reason: {reason}. They are now in {newMonumentID}"); }
[PluginReference] private Plugin MonumentsWatcher;
There are 13 types of monuments:
- SafeZone(0):
- Bandit Camp, Outpost, Fishing Village, Ranch and Large Barn.
- RadTown(1):
- Airfield, Arctic Research Base, Abandoned Military Base, Giant Excavator Pit, Ferry Terminal, Harbor, Junkyard, Launch Site;
- Military Tunnel, Missile Silo, Power Plant, Sewer Branch, Satellite Dish, The Dome, Toxic Village(Legacy Radtown), Train Yard and Water Treatment Plant.
- RadTownWater(2):
- Oil Rigs, Underwater Labs and CargoShip.
- RadTownSmall(3):
- Lighthouse, Oxum’s Gas Station, Abandoned Supermarket and Mining Outpost.
- TunnelStation(4)
- MiningQuarry(5):
- Sulfur Quarry, Stone Quarry and HQM Quarry.
- BunkerEntrance(6)
- Cave(7)
- Swamp(8)
- IceLake(9)
- PowerSubstation(10)
- WaterWell(11)
- Custom(12)
There are 25 api methods:
GetAllMonuments:
Used to retrieve an array of IDs for all available monuments.
(string[])(MonumentsWatcher?.Call("GetAllMonuments") ?? Array.Empty<string>());
GetAllMonumentsCategories:
Used to retrieve a dictionary of IDs and categories for all available monuments.
(Dictionary<string, string>)(MonumentsWatcher?.Call("GetAllMonumentsCategories") ?? new Dictionary<string, string>());
GetMonumentsByCategory:
Used to retrieve all available monuments by category.
To call the GetMonumentsByCategory method, you need to pass 1 parameter:
- monument category as a string.
(string[])(MonumentsWatcher?.Call("GetMonumentsByCategory", "SafeZone") ?? Array.Empty<string>());
GetMonumentCategory:
Used to retrieve the category of the specified monument. Returns an empty string on failure.
To call the GetMonumentCategory method, you need to pass 1 parameter:
- monumentID as a string.
(string)(MonumentsWatcher?.Call("GetMonumentCategory", monumentID) ?? string.Empty);
GetMonumentDisplayName:
Used to retrieve the nicename of a monument in the player’s language. Returns an empty string on failure.
To call the GetMonumentDisplayName method, you need to pass 3 parameters:
- monumentID as a string;
- Available options:
- userID as a ulong or a string;
- player as a BasePlayer or an IPlayer.
- displaySuffix as a bool. Should the suffix be displayed in the name if there are multiple such monuments? This parameter is optional.
(string)(MonumentsWatcher?.Call("GetMonumentDisplayName", monumentID, player.userID, true) ?? string.Empty);//(ulong)userID (string)(MonumentsWatcher?.Call("GetMonumentDisplayName", monumentID, player, true) ?? string.Empty);//(BasePlayer/IPlayer)player (string)(MonumentsWatcher?.Call("GetMonumentDisplayName", monumentID, player.UserIDString, true) ?? string.Empty);//(string)userID ***recommended option***
GetMonumentDisplayNameByLang:
Used to retrieve the nicename of a monument in the specified language. Returns an empty string on failure.
To call the GetMonumentDisplayNameByLang method, you need to pass 3 parameters:
- monumentID as a string;
- two-char language as a string;
- displaySuffix as a bool. Should the suffix be displayed in the name if there are multiple such monuments? This parameter is optional.
(string)(MonumentsWatcher?.Call("GetMonumentDisplayNameByLang", monumentID, "en", true) ?? string.Empty);
GetMonumentPosition:
Used to retrieve the Vector3 position of the specified monument. Returns Vector3.zero on failure.
To call the GetMonumentPosition method, you need to pass 1 parameter:
- monumentID as a string.
(Vector3)(MonumentsWatcher?.Call("GetMonumentPosition", monumentID) ?? Vector3.zero);
GetMonumentByPos:
Used to retrieve the monument at the specified position. Returns an empty string on failure.
To call the GetMonumentByPos method, you need to pass 1 parameter:
- position as a Vector3.
(string)(MonumentsWatcher?.Call("GetMonumentByPos", pos) ?? string.Empty);
Note: This method returns the first encountered monument. Occasionally, there may be multiple monuments at a single point. Therefore, it is recommended to use the GetMonumentsByPos method.
GetMonumentsByPos:
Used to retrieve all monuments at the specified position. Returns null on failure.
To call the GetMonumentsByPos method, you need to pass 1 parameter:
- position as a Vector3.
(string[])(MonumentsWatcher?.Call("GetMonumentsByPos", pos) ?? Array.Empty<string>());
GetClosestMonument:
Used to retrieve the nearest monument to the specified position. Returns an empty string on failure.
To call the GetClosestMonument method, you need to pass 1 parameter:
- position as a Vector3.
(string)(MonumentsWatcher?.Call("GetClosestMonument", pos) ?? string.Empty);
IsPosInMonument:
Used to check whether the specified position is within the specified monument. Returns a false on failure.
To call the IsPosInMonument method, you need to pass 2 parameters:
- monumentID as a string;
- position as a Vector3.
(bool)(MonumentsWatcher?.Call("IsPosInMonument", monumentID, pos) ?? false);
ShowBounds:
Used to display the boundaries of the specified monument to the specified player.
To call the ShowBounds method, you need to pass 3 parameters:
- monumentID as a string;
- player as a BasePlayer;
- displayDuration as a float. Duration of displaying the monument boundaries in seconds. This parameter is optional.
MonumentsWatcher?.Call("ShowBounds", monumentID, player, 20f);
Note: Since an Admin flag is required for rendering, players without it will be temporarily granted an Admin flag and promptly revoked.
PLAYERS API
GetMonumentPlayers:
Used to retrieve an array of all players located in the specified monument. Returns null on failure.
To call the GetMonumentPlayers method, you need to pass 1 parameter:
- monumentID as a string.
(BasePlayer[])(MonumentsWatcher?.Call("GetMonumentPlayers", monumentID) ?? Array.Empty<BasePlayer>());
GetPlayerMonument:
Used to retrieve the monument in which the specified player is located. Returns an empty string on failure.
To call the GetPlayerMonument method, you need to pass 1 parameter:
- Available options:
- player as a BasePlayer;
- userID as a ulong or a string.
(string)(MonumentsWatcher?.Call("GetPlayerMonument", player.UserIDString) ?? string.Empty);//(string)userID (string)(MonumentsWatcher?.Call("GetPlayerMonument", player) ?? string.Empty);//(BasePlayer)player (string)(MonumentsWatcher?.Call("GetPlayerMonument", player.userID) ?? string.Empty);//(ulong)userID ***recommended option***
GetPlayerMonuments:
Used to retrieve all monuments in which the specified player is located. Returns null on failure.
To call the GetPlayerMonuments method, you need to pass 1 parameter:
- Available options:
- player as a BasePlayer;
- userID as a ulong or a string.
(string[])(MonumentsWatcher?.Call("GetPlayerMonuments", player.UserIDString) ?? Array.Empty<string>());//(string)userID (string[])(MonumentsWatcher?.Call("GetPlayerMonuments", player) ?? Array.Empty<string>());//(BasePlayer)player (string[])(MonumentsWatcher?.Call("GetPlayerMonuments", player.userID) ?? Array.Empty<string>());//(ulong)userID ***recommended option***
GetPlayerClosestMonument:
Used to retrieve the nearest monument to the specified player. Returns an empty string on failure.
To call the GetPlayerClosestMonument method, you need to pass 1 parameter:
- Available options:
- player as a BasePlayer;
- userID as a ulong or a string.
(string)(MonumentsWatcher?.Call("GetPlayerClosestMonument", player.UserIDString) ?? string.Empty);//(string)userID (string)(MonumentsWatcher?.Call("GetPlayerClosestMonument", player.userID) ?? string.Empty);//(ulong)userID (string)(MonumentsWatcher?.Call("GetPlayerClosestMonument", player) ?? string.Empty);//(BasePlayer)player ***recommended option***
IsPlayerInMonument:
Used to check whether the specified player is in the specified monument. Returns a false on failure.
To call the IsPlayerInMonument method, you need to pass 2 parameters:
- monumentID as a string;
- Available options:
- player as a BasePlayer;
- userID as a ulong or a string.
(bool)(MonumentsWatcher?.Call("IsPlayerInMonument", monumentID, player.UserIDString) ?? false);//(string)userID (bool)(MonumentsWatcher?.Call("IsPlayerInMonument", monumentID, player) ?? false);//(BasePlayer)player (bool)(MonumentsWatcher?.Call("IsPlayerInMonument", monumentID, player.userID) ?? false);//(ulong)userID ***recommended option***
NPCS API
GetMonumentNpcs:
Used to retrieve an array of all npcs located in the specified monument. Returns null on failure.
To call the GetMonumentNpcs method, you need to pass 1 parameter:
- monumentID as a string.
(BasePlayer[])(MonumentsWatcher?.Call("GetMonumentNpcs", monumentID) ?? Array.Empty<BasePlayer>());
GetNpcMonument:
Used to retrieve the monument in which the specified npc is located. Returns an empty string on failure.
To call the GetNpcMonument method, you need to pass 1 parameter:
- Available options:
- npcPlayer as a BasePlayer;
- netID as a NetworkableId.
(string)(MonumentsWatcher?.Call("GetNpcMonument", npcPlayer) ?? string.Empty);//(BasePlayer)npcPlayer (string)(MonumentsWatcher?.Call("GetNpcMonument", npcPlayer.net.ID) ?? string.Empty);//(NetworkableId)netID ***recommended option***
GetNpcMonuments:
Used to retrieve all monuments in which the specified npc is located. Returns null on failure.
To call the GetNpcMonuments method, you need to pass 1 parameter:
- Available options:
- npcPlayer as a BasePlayer;
- netID as a NetworkableId.
(string[])(MonumentsWatcher?.Call("GetNpcMonuments", npcPlayer) ?? Array.Empty<string>());//(BasePlayer)npcPlayer (string[])(MonumentsWatcher?.Call("GetNpcMonuments", npcPlayer.net.ID) ?? Array.Empty<string>());//(NetworkableId)netID ***recommended option***
IsNpcInMonument:
Used to check whether the specified npc is in the specified monument. Returns a false on failure.
To call the IsNpcInMonument method, you need to pass 2 parameters:
- monumentID as a string;
- Available options:
- npcPlayer as a BasePlayer;
- netID as a NetworkableId.
(bool)(MonumentsWatcher?.Call("IsNpcInMonument", monumentID, npcPlayer.net.ID) ?? false);//(NetworkableId)netID (bool)(MonumentsWatcher?.Call("IsNpcInMonument", monumentID, npcPlayer) ?? false);//(BasePlayer)npcPlayer ***recommended option***
ENTITIES API
GetMonumentEntities:
Used to retrieve an array of all entities located in the specified monument. Returns null on failure.
To call the GetMonumentEntities method, you need to pass 1 parameter:
- monumentID as a string.
(BaseEntity[])(MonumentsWatcher?.Call("GetMonumentEntities", monumentID) ?? Array.Empty<BaseEntity>());
GetEntityMonument:
Used to retrieve the monument in which the specified entity is located. Returns an empty string on failure.
To call the GetEntityMonument method, you need to pass 1 parameter:
- Available options:
- entity as a BaseEntity;
- netID as a NetworkableId.
(string)(MonumentsWatcher?.Call("GetEntityMonument", entity) ?? string.Empty);//(BaseEntity)entity (string)(MonumentsWatcher?.Call("GetEntityMonument", entity.net.ID) ?? string.Empty);//(NetworkableId)netID ***recommended option***
GetEntityMonuments:
Used to retrieve all monuments in which the specified entity is located. Returns null on failure.
To call the GetEntityMonuments method, you need to pass 1 parameter:
- Available options:
- entity as a BaseEntity;
- netID as a NetworkableId.
(string[])(MonumentsWatcher?.Call("GetEntityMonuments", entity) ?? Array.Empty<string>());//(BaseEntity)entity (string[])(MonumentsWatcher?.Call("GetEntityMonuments", entity.net.ID) ?? Array.Empty<string>());//(NetworkableId)netID ***recommended option***
IsEntityInMonument:
Used to check whether the specified entity is in the specified monument. Returns a false on failure.
To call the IsEntityInMonument method, you need to pass 2 parameters:
- monumentID as a string;
- Available options:
- entity as a BaseEntity;
- netID as a NetworkableId.
(bool)(MonumentsWatcher?.Call("IsEntityInMonument", monumentID, entity.net.ID) ?? false);//(NetworkableId)netID (bool)(MonumentsWatcher?.Call("IsEntityInMonument", monumentID, entity) ?? false);//(BaseEntity)entity ***recommended option***
Reviews (0)
Only logged in customers who have purchased this product may leave a review.
Version History
- Added Initial release
Discussions (0)
Setup
Plugin FAQ – How do I use this .zip/.7z file I just purchased on my server?
• First, you want to unzip the file. You can do so by just double-clicking it to open, then drag the contents to the desired location (you may need to install an external unzipping software if you don’t already have one such as 7zip or winrar)
• Next you will find either a structure of folders or just the .cs file itself (it’s the actual plugin file itself).
• After that just install the .cs (plugin file) into your …/oxide/plugins/ folder where you will install plugins you ever need to.
Additionally, here’s a great video that easily covers adding a plugin to your server if you need! https://youtu.be/yWC_p97FhQA
• Installation is not included with any products on the site, however, if needed we may assist if you reach out to our support.
Currently all products on Lone.Design will be contained within a zipped file which is the .7z or .zip that you see. I believe windows 10 and up can unzip on its own without 3rd party tools, but in that case, if you’re unfamiliar with zipped files here are 2 programs I recommend to easily unzip zipped files.
Video On How to Zip and Unzip: https://youtu.be/Ep-L3PjBPCk (TechInsider Youtube Channel)
Zipping/Unzipping Tools
Winrar https://www.rarlab.com (I used to use for years, but works great!)
7zip https://www.7-zip.org/a/7z2107-x64.exe (the one I use currently)
Reviews
There are no reviews yet.