/OpenNexus

Project to make a open nexus server

Primary LanguageC#

Open Nexus: (WIP)

Requires:
MySQL 5.7.37 (since version 8 will throw password error)

What Transferes:
BasePlayer - Stats, Inventory, Modifiers, Blueprints, Skins, Keys, Photos, Cassettes
BaseVehicle - Stats, Inventory, Seats, Bags, Modules
Parented - Entities, skins, items
Plugins - Backpacks, Inventory, Economics Balance, ServerRewards Points, ZLevels
Server - DateTime, Weather, Lock player to 1 server at time

Database setup:
Create a database, Create a username/password to use with it.
Enter these settings into the config file and restart plugin. It will create the tables on its own. And the error messages should stop.
You have to use standard type password since thats all the Oxide.Mysql supports.

Plugin setup:
Default settings should work best but theres other adjustments provided within the config file.

Chat Commands:
OpenNexus.reloadconfig - Reloads the config file.
OpenNexus.resetconfig - Resets config back to default.
OpenNexus.debug - Toggles config debug settings to see console output.

Permissions:
Giving users permission "OpenNexus.bypass" will allow them to join other servers on the open nexus when they already have a body on one. Other wise by default no matter which one they join they will spawn on last server they were on.

Map Setup:
DONT PLACE THE "Islandmarker"

You need to place down a "OpenNexusDock.prefab" in a map editor such as RustEdit.
Line it up in 90 degree increments only (N,E,S,W)
Place down a Nexusferry Entity and prefab group it with the layout below

SERVER=ipaddress,PORT=portnumber,name

Replace ipaddress with the IP address of the server you want to be redirected to.
Replace portnumber with the port number of that server.
Enter what ever you want in the name as long as its different from any other Docks placed on the nexus servers.
Make sure you tick "Convert Selection To Group"

Make sure you have the ferry height (y) as 0. And then line up the OpenNexusDock with the ferry to get the height right.
Video of setting up in rustedit: https://youtu.be/87J-te6S6cg

If you want to add a Nexus Island in the distance you can.
For this to work you need to have it with in the radius of the map.
Such as if you use 4000 size map. Then you can only go to a max of 2000 or -2000 on X or Z axis.
If it goes outside of this it will just be invisable. Its image is offset from the actual position you can can rotate it to have it show a bit further away.
You should also drop its height down a bit with the Y axis so it doesnt look like its floating in the disatance -18f is a starting good value.
IslandScreenShot

Hooks:
OnOpenNexusRead(string packet) - return a string to replace packet, Return a bool to cancel function.
OnOpenNexusWrite(string packet) - return a string to replace packet, Return a bool to cancel function.

More:
Heres a longish video from testing stages of it showing everything transferring over.

Video link

https://youtu.be/PM8-ObRGV1E