[Open Assets] Empiral Multiplayer v1.1.4 Mod

This content may be freely modified and/or maintained by anyone.
Empiral Multiplayer is a wad file that improves SRB2 multiplayer by adding some common features that were derived from other multiplayer games by using Lua scripting. It adds chat rooms, parties, and clusters to Sonic Robo Blast 2, which are very useful for many purposes. You can even teleport to your home if you have it set, and if you don't want your home anymore then you can remove it also. Any suggestions for this multiplayer mod would be great. Also, please read the user or modder documentation to help you, and if that doesn't fix the problem you're having then you can either private message me, or post in the comments. The user documentation is used by everyone, while the modder documentation is used by modders only.

User Documentation:
* Empiral Multiplayer v1.1.4 for SRB2 2.1.20 User Documentation *

Important Things to Note:
EmpiralMP only works in netgames.
Homes, and warps are disabled in ringslinger gametypes, and nights mode.
Pressing Custom 1 spawns an edible cake, and pressing Custom 2 eats a cake if you are looking at it and gives you 50 points.

CVars:
CVar: empiralMP_mode
Values: On/Off
Default value: On
Information: If enabled, empiralMP is loaded, and you can use empiralMP features; otherwise, the empiralMP features are disabled. To access this
cvar in Lua, you must use empiralMP.cvars.empiralMP_mode.value. Only the server or admin can modify this variable.

Commands:
Command: showmodversion
Information: Prints the mod title, which you must modify if you want to make a mod based off of EmpiralMP.

Command: changechatroom <alias>
Information: Changes the player's active chat room, which is by default the Global Chat Room.

Command: createparty <name> <alias> <category>
Information: Creates a party that you can switch to by using the changeparty command ingame. name determines what is the display
name of the party, alias determines what is the name of the party that you use as the 2nd argument in the changeparty command, and category
is the privacy setting of the party and must be either public or private. Private parties can only be joined if the host of that party invites you to that
party. You can alternatively use the empiralMP.client.CreateParty function to accomplish the same thing if you want to have a party that lasts for eternity.

Command: changeparty <alias/none>
Information: Changes the player's active party, which is by default none, which means you are not in a party. Any string other than none will
make the player join the party that matches the alias that you used in the changeparty command, unless you are already in that party or it does not exist.
If it is a private party that you are trying to join, then you must have an invite from the party host; otherwise it won't be able to join that private party.

Command: invitetoparty <playername/node>
Information: Invites a player to your party if you are the party host; otherwise, this will do nothing.

Command: muteplayer <playername/node>
Information: Mutes a player that is currently ingame, which makes that player unable to chat. Only the server or admin can use this command.

Command: unmuteplayer <playername/node>
Information: Unmutes a player that is currently ingame, which makes that player able to chat again. Only the server or admin can use this command.

Command: sethome <name>
Information: Sets a home to your current position so that you can teleport to it later on.

Command: removehome <name>
Information: Deletes a home so you can no longer teleport to it.

Command: teleporttohome <name>
Information: Teleports you to a home if you have a home set with that name.

Command: setwarp <name>
Information: Sets a warp to your current position so that anyone can teleport to it later on. Only the server or admin can use this command.

Command: removewarp <name>
Information: Deletes a warp so that noone can teleport to it. Only the server or admin can use this command.

Command: teleporttowarp <name>
Information: Teleports anybody who uses this command to a warp if a warp with that name does exist.

Command: empiralMP_help [<name>]
Information: Prints the EmpiralMP main page if the argument name is not used; otherwise, the page that matches the argument name is displayed.

Command: listpartymembers
Information: Prints a list of the party members in your party.

Chat Rooms:
Global Chat Room - alias: global
Local Chat Room - alias: local
Vanilla Chat Room - alias: vanilla
Solo Chat Room - alias: solo
Party Chat Room - alias: party
Staff Chat Room - alias: staff

Chat Colors:
Use /color=colorname while chatting to use colored text.
White: /color=white
Purple: /color=purple
Yellow: /color=yellow
Green: /color=green
Blue: /color=blue
Red: /color=red
Grey: /color=grey
Orange: /color=orange

Help Pages:
User documentation page - userdoc
Modder documentation page - modderdoc
Changelog page - changelog
Links page - links

Modder Documentation:
* Empiral Multiplayer v1.1.4 for SRB2 2.1.20 Modder Documentation *
Lua Functions:
Function: empiralMP.client.IsPlayerActive(player_t player)
Returns: nil, boolean
Information: Checks if the player is moving around. This function will return true if the player is moving around; otherwise this function will turn false.
Also, if the player is not ingame, then this function will return nil.

Function: empiralMP.client.CreateChatRoom(player_t player, string name, string alias, string functionname)
Returns: nil
Information: Creates a chat room that you can switch to by using the changechatroom command ingame. name determines what is the display
name of the chat room, alias determines what is the name of the chat room that you use as the 2nd argument in the changechatroom command, and functionname
is the name of the function for this chat room that is inside the empiralMP.client.chatroomfunctions table.

Function: empiralMP.client.CreateParty(player_t player, string name, string alias, string category)
Returns: nil
Information: Creates a party that you can switch to by using the changeparty command ingame. name determines what is the display
name of the party, alias determines what is the name of the party that you use as the 2nd argument in the changeparty command, and category
is the privacy setting of the party and must be either public or private. Private parties can only be joined if the host of that party invites you to that
party. You can also use the createparty command ingame to accomplish the same thing as using the empiralMP.client.CreateParty function in Lua.

Function: empiralMP.client.IsServerDedicated()
Returns: nil, boolean
Information: Checks if the server is dedicated. This can be useful if you want to allow better dedicated server support for your Lua scripts.

Cluster System:
To assign a map to a cluster, you must take the level header for that map, and put Lua.Cluster = clusternumber (any number inbetween 1 and 65535) inside of it, then
after you assign your map to a cluster, then you must create a function called empiralMP.client.clusterfunctions[clusterNum + clusternumber (any number inbetween 1 and 65535)]
with the player_t argument. After you create the function for your cluster, you can do whatever you like in it as long as you follow the rules of SRB2 Lua.
A cluster number of 0 equals no cluster, which is the cluster number that is used by default.

Changelog:
EmpiralMP v1.1.4:
* Removed build types, which has no use for future updates
* Updated link to repo, since my public EmpiralMP repo has been moved to the SRB2 GitLab website

EmpiralMP v1.1.3:
+ Added cakes, which can be spawned by pressing Custom 1, and eaten by pressing Custom 2 (awards you 50 points)
+ Added MobjThinker hook that checks how long you are holding each custom button
* The distance between players is now calculated more efficiently when using the Local Chat Room
* The distance between players calculated when using the Local Chat Room are now stored in local variables instead of global player.empiralMP variables
* EmpiralMP is now a mod instead of a Lua script (converted from .lua to .wad)

EmpiralMP v1.1.2:
+ Added listpartymembers command to show all the players in the party that you are in
* Party category is now displayed in the Party Chat Room
* /me is now supported in chat rooms other than the Vanilla Chat Room
* Removed some unneccessary code in the PlayerMsg hook that doesn't really do anything
* When the empiralMP_mode cvar value is updated, whether it is enabled or disabled is now printed instead of a message stating that it was updated
* Version is now shown in the empiralMP_help main page

EmpiralMP v1.1.1:
+ Added the main, user documentation, modder documentation, changelog, and links pages to be used with the empiralMP_help command
+ Added empiralMP_help command to help users with EmpiralMP
+ Added working backup and restore system that prevents loss of parties, and other data during the uninit process of EmpiralMP
* You can now only use homes and warps if you are in the same map that they were set in
* The main help page for EmpiralMP is now displayed when you spawn
* Removed messages that appeared during the preinit, init, postinit, and uninit processes by default
* Homes and warps can no longer be used in ringslinger gametypes, and nights mode
* Changed style used for comments to make reading comments easier

EmpiralMP v1.1.0:
+ Added a global static mode in empiralMP that is like the local static mode that is temp activated when variables that are normally modified by ThinkFrame has to be modified by another function
+ Added build types to seperate dev and release builds
+ Added warps, which are like homes except everyone can teleport to them
+ Added multiple home support
+ Added empiralMP.client.IsServerDedicated function
* Improved chat spacing by getting rid of spaces
* Only allow EmpiralMP functions to execute in netgames
* The mod title now includes the build type
* Improved dedicated server support by fixing up a lots of code

EmpiralMP v1.0.1:
* Fixed Lua error in empiralMP.client.IsPlayerActive function that occurs when a player is spectating

EmpiralMP v1.0.0:
Initial Release

Known Bugs:
There are no known bugs in EmpiralMP v1.1.4.

Screenshots:
lDeyEzK.png


O40HFOi.gif

EmpiralMP Public Stable GitLab Repo

SRB2EMP Public Dev GitLab Repo
 

Attachments

  • EmpiralMP_v1.1.4.zip
    26.2 MB · Views: 370
  • EmpiralMP_v1.2.0.0-PR1.zip
    26.2 MB · Views: 355
Last edited:
Sorry for asking, but... Why are you making us load a 10-and-a-half-minute GIF file as a chat tutorial "screenshot"? It seems like that it was supposed to be 5-and-a-quarter minutes long, but still, that's also far too long for an un-pauseable, un-move-through-time-able animated GIF file, and its presence on the opening post makes it be loaded whenever this page is loaded, which isn't very nice. (It would be better to upload it as a video on some other site and link to it instead of embedding it in the opening post.)
 
Sorry for asking, but... Why are you making us load a 10-and-a-half-minute GIF file as a chat tutorial "screenshot"? It seems like that it was supposed to be 5-and-a-quarter minutes long, but still, that's also far too long for an un-pauseable, un-move-through-time-able animated GIF file, and its presence on the opening post makes it be loaded whenever this page is loaded, which isn't very nice. (It would be better to upload it as a video on some other site and link to it instead of embedding it in the opening post.)
I should make multiple tutorial videos on EmpiralMP since just one video would last way too long, because EmpiralMP is pretty complicated.
 

Who is viewing this thread (Total: 1, Members: 0, Guests: 1)

Back
Top