
Mods / The Basics - Roleplay (RP) Proximity Chat and more!
Author: BASIC
Side: Both
Created: Apr 9th 2022 at 12:08 AM
Last modified: May 12th at 4:14 AM
Downloads: 17513
Follow Unfollow 114
For testers (for Vintage Story v1.20.10):
thebasics_5.1.0_rc.1.zip
1-click install
As seen on Saltpoint RP, Fair Travels, The Expansion, and various other servers!
The Basics
Mod Systems:
- Roleplaying (RP) local proximity chat system, with configurable talking ranges, nicknames, automatic message formatting, and more!
- Server save notification (sends a message when save starts, which can help lower frustration about lag for large worlds)
- Player sleep notification (encourages players to go to sleep when at least 50% of players are in bed)
- Player Stats system (Keeps track of stats about players that can be viewed by anybody. Currently tracks deaths, player kills, and NPC kills)
- TPA System (Allow players to teleport to each other by consuming a temporal gear)
- Repair system (Adds an admin command /setdurability to set the durability of an item held in your hand)
Join my discord for support! https://discord.gg/PYKTaJ5Ett
Roleplay Proximity Chat System
Adds a Proximity chat tab with local chat designed for roleplaying
Yell or whisper!
Speak in configurable languages, so that only others that speak it can understand you!
Use emotes and environment messages for additional flavor!
Use Bold and Italics to spice things up!
Commands:
Note: [value] denotes a required argument, while (value) denotes an optional one Pipes (|) denote a range of allowable values. Aliases are listed after the first string, but with argument lists omitted.
- Nicknames
- "/nick (nick)", "/setnick", "/nickname" - Get or set your nickname
- "/clearnick" - Clear your nickname
- "/nickcolor (color)" - Get or set your nickname color
- "/clearnickcolor" - Clear your nickname color
- "/adminsetnickname \[player\] (nickname)"
- Chat modes/Chat messages
- "/yell (text)", "/y" - Set your chat mode to Yelling, or yell a single message
- "/whisper (text)", "/w" - Set your chat mode to Whispering, or whisper a single message
- "/say (text)", "/normal", "/s" - Set your chat mode back to normal, or say a single message
- "/hands (text)", "/h" - Set your chat mode to Sign Language, or sign a single message
- "/ooc (on|off)" - Toggle Out-Of-Character chat mode. When enabled, messages wrapped in (( )) will be treated as OOC chat
- Chat Messages
- "/me \[text\]", "/m" - ("\*" prefix) - Send a proximity emote message
- "/it \[text\]" - ("!" prefix) - Send a proximity environment message
- Configurable Options
- "/emotemode \[on|off\]" - Turn Emote-only mode on or off
- "/rptext \[on|off\]" - Turn the whole RP system on or off for your messages
- Languages
- Player Commands
- "/addlang \[langCode\]" - Add a known language
- "/remlang \[langCode\]" - Remove a known language
- "/listlang \[langCode\]" - List your known languages, and all available languages
- Admin Commands
- "/adminaddlang \[player\] \[langCode\]" - Add a language to another player
- "/adminremlang \[player\] \[langCode\]" - Remove a language from another player
- "/adminlistlang \[player\]" - List a player's known languages
- Player Commands
- Player Stats
- "/playerstats (player)" - Get your player stats, or another players
- "/clearstats [player] (confirm)" - Clear all of the stats of a player
- "/clearstat [player] [statName] (confirm)" - Clear a specific stat a player
- TPA (Teleport) System
- "/tpa [player]" - Request to teleport to another player
- "/tpaccept" - Accept a pending teleport request
- "/tpdeny" - Deny a pending teleport request
Note: TPA requires a temporal gear to use by default, and can be configured with cooldowns and permissions.
- Repair System
- "/setdurability [value]" - (Admin only) Set the durability of the item you're holding
Configuration:
The mod is highly configurable through the config file. Here are the main configuration sections:
Proximity Chat Settings
The proximity chat system can be configured in several ways:
- Chat Distances: Configure how far different chat modes can be heard
- Feature Toggles:
DisableNicknames
: When set to true, completely disables the nickname systemDisableRPChat
: When set to true, disables all RP-specific features, making it function as a standard proximity chat
- Nickname Control:
ProximityChatAllowPlayersToChangeNicknames
: Controls whether players can set their own nicknamesProximityChatAllowPlayersToChangeNicknameColors
: Controls whether players can change their nickname colorsChangeNicknameColorPermission
: The privilege required for players to change their nickname colors (if allowed)
- Message Formatting: Customize how messages appear in chat
{ // ----- Proximity Chat ----- // "ProximityChatModeDistances": { "Yell": 90, // Maximum distance for yelling "Normal": 35, // Normal talking distance "Whisper": 5, // Whisper range "Sign": 15 // Sign language visibility range }, "ProximityChatAllowPlayersToChangeNicknames": true, "ProximityChatAllowPlayersToChangeNicknameColors": true, // Whether players can change their nickname colors "ChangeNicknameColorPermission": "chat", // The privilege required to change nickname colors (if allowed) "EnableDistanceObfuscationSystem": true, "ProximityChatModeObfuscationRanges": { "Yell": 45, "Normal": 15, "Whisper": 2, "Sign": 15 }, "EnableDistanceFontSizeSystem": true, "ProximityChatDefaultFontSize": { "Yell": 30, "Normal": 16, "Whisper": 12, "Sign": 16 }, "ProximityChatClampFontSizes": [30, 16, 12, 6], "BoldNicknames": false, // Message formatting "ProximityChatModeVerbs": { "Yell": ["yells", "shouts", "exclaims"], "Normal": ["says", "states", "mentions"], "Whisper": ["whispers", "mumbles", "mutters"], "Sign": ["signs", "gestures", "motions"] }, "ProximityChatModeBabbleVerb": "babbles", "ProximityChatModePunctuation": { "Yell": "!", "Normal": ".", "Whisper": ".", "Sign": "." }, "ProximityChatModeQuotationStart": { "Yell": "\"", "Normal": "\"", "Whisper": "\"", "Sign": "'" }, "ProximityChatModeQuotationEnd": { "Yell": "\"", "Normal": "\"", "Whisper": "\"", "Sign": "'" }, // ----- Server Save Announcement ----- // "SendServerSaveAnnouncement": true, "SendServerSaveFinishedAnnouncement": false, "TEXT_ServerSaveAnnouncement": "Server save has started - expect lag for a few seconds.", "TEXT_ServerSaveFinished": "Server save has finished.", // ----- Player Stats ----- // "PlayerStatSystem": true, "PlayerStatToggles": { "Deaths": true, "NpcKills": true, "PlayerKills": true, "BlockBreaks": true, "DistanceTravelled": true }, "PlayerStatClearPermission": "commandplayer", "PlayerStatDistanceTravelledTimer": 2000, // ----- TPA Requests ----- // "AllowPlayerTpa": true, "AllowTpaPrivilegeByDefault": false, "TpaRequireTemporalGear": true, "TpaUseCooldown": false, "TpaCooldownInGameHours": 0.5, // ----- Sleep Notifications ----- // "EnableSleepNotifications": true, "SleepNotificationThreshold": 0.5, "TEXT_SleepNotification": "You start to feel tired...", // ----- Language System ----- // "EnableLanguageSystem": true, "ChangeOwnLanguagePermission": "chat", "ChangeOtherLanguagePermission": "commandplayer", "MaxLanguagesPerPlayer": 3, // Maximum number of languages a player can know at once, -1 for unlimited "Languages": [ { "Name": "Common", "Description": "The universal language", "Prefix": "c", "Syllables": ["al", "er", "at", "th", "it", "ha", "er", "es", "s", "le", "ed", "ve"], "Color": "#92C4E1", "Default": true, "Hidden": false }, { "Name": "Tradeband", "Description": "A common language for ease of trade across regions", "Prefix": "tr", "Syllables": ["feng", "tar", "kin", "ga", "shin", "ji"], "Color": "#D4A96A", "Default": false, "Hidden": false }, { "Name": "Ancient", "Description": "A mysterious ancient language", "Prefix": "anc", "Syllables": ["xar", "eth", "oth", "ith", "uth", "yth"], "Color": "#8B0000", "Default": false, "Hidden": true } ], // ----- Nametags ----- // "PreventProximityChannelSwitching": true, "ShowNicknameInNametag": true, "HideNametagUnlessTargeting": false, "ShowPlayerNameInNametag": true, "NametagRenderRange": 30, // ----- OOC Chat ----- // "AllowOOCToggle": true, "OOCTogglePermission": "chat" }
The language system allows players to learn and use different languages for roleplay. Key features:
- Players can learn languages using
/addlang [language]
and remove them with/remlang [language]
- Players are limited to knowing a maximum number of languages at once (configurable, default 3)
- Players must remove a language before learning a new one if they're at the limit
- Languages can be hidden from players to prevent unauthorized access
- Hidden languages can only be added by admins using
/adminaddlang
- Admins can see all languages (including hidden ones) with
/adminlistlang
- Players who don't know any languages or try to speak in an unknown language will "babble" incoherently
System Details
TPA (Teleport) System
The TPA system allows players to request teleportation to other players. Key features:
- Requires a temporal gear by default (configurable)
- Optional cooldown system
- Permission-based access
- Request/accept/deny workflow for safety
Player Stats System
Tracks various player statistics including:
- Deaths
- Player kills
- NPC/Mob kills
- Blocks broken
- Distance travelled
Server Save Notification
Automatically notifies players when the server is saving, helping reduce confusion about temporary lag spikes. The notification messages and timing are fully configurable.
Sleep Notification System
Encourages coordinated sleeping by notifying players when enough others are in bed. This helps servers manage the day/night cycle more effectively.
Potential Future Improvements
- Use actual line of sight for sign language
Feel free to leave suggestions!
Version | For Game version | Downloads | Release date | Changelog | Download | 1-click mod install* |
---|---|---|---|---|---|---|
v5.1.0-rc.1 | 360 | May 12th at 4:14 AM | Show | thebasics_5.1.0_rc.1.zip | 1-click install | |
v5.0.2-rc.1 | 5534 | Mar 12th at 5:45 AM | Show | thebasics-5.0.2-rc.1.zip | 1-click install | |
v5.0.1 | 7277 | Jan 11th at 9:53 PM | Show | thebasics_V5.0.1.zip | 1-click install | |
v5.0.0 | 1025 | Dec 23rd 2024 at 2:03 AM | Show | thebasics_V5.0.0.zip | 1-click install | |
v4.0.1 | 915 | Jun 15th 2023 at 12:59 AM | Show | thebasics_4.0.1.zip | 1-click install | |
v4.0.0 | 202 | Jun 15th 2023 at 12:57 AM | Show | thebasics_4.0.0.zip | 1-click install | |
v4.0.0-pre.3 | 228 | May 22nd 2023 at 1:41 AM | Show | thebasics_4.0.0-pre.3.zip | 1-click install | |
v4.0.0-pre.2 | 195 | May 20th 2023 at 4:21 AM | Show | thebasics_4.0.0-pre.2.zip | 1-click install | |
v4.0.0-pre.1 | 242 | Apr 27th 2023 at 3:43 AM | Show | thebasics_4.0.0-pre.1.zip | 1-click install | |
v3.0.0 | 205 | Apr 27th 2023 at 3:37 AM | Show | thebasics_3.0.0.zip | 1-click install | |
v3.0.0-rc.4 | 292 | Mar 10th 2023 at 5:50 AM | Show | thebasics_3.0.0-rc.4.zip | 1-click install | |
v3.0.0-rc.2 | 365 | May 2nd 2022 at 4:35 AM | Show | thebasics_3.0.0-rc.2.zip | 1-click install | |
v3.0.0-rc.1 | 333 | Apr 10th 2022 at 10:29 AM | Show | thebasics_3.0.0-rc.1.zip | 1-click install | |
v2.7.0 | 336 | Apr 9th 2022 at 1:17 AM | Show | thebasics_v2.7.0.zip | 1-click install |
For some reason, it's not consuming the gear when we use the teleport feature. There aren't any errors or anything and it still requires us to hold the gear to teleport. Any ideas?
any chance you could add some form of functionality like Nexrem's mod, NameTag tweaks? I wanna make it so myself and my admins have different username colors in game
Any chance for a way to disable server save notifications client-side? They're a bit distracting, if you don't have the general chat tab active.
Hey! is the "Hide name tag unless targeting" not working properly? Because the feature works sometimes and sometimes it won't.
Thanks for such a great mod!
PookieBunny
The channel order is a bit finnicky, but I can take a look! There was another recent feature request to persist the selected channel across rejoins, and also to prevent chat switching on new messages in different channel. I've started to implement those, maybe that will help with your issue.
BASIC
I'm sorry if this has been asked before, but is there any way to like... swap the general and prox channels? We like having the proximity as the default channel on our server, but having to do the global OOC to speak to everyone can be a bit tedious, so if instead the two channel pages were swapped (Prox in the general chat's place, and General in the prox chat's place) it would make things so much easier.
Ragolution
Gotcha, that should be an easy fix! Sorry for the delay, I have a long-running refactor branch with all of the requested features implemented (save for the newest one, which I'll add!) I hope to get that out within a week.
So, after some testing it seems that, when using other languages, the text of player's messages is still in their native language in the bubble floating over their head, so if I typed in tradeband, it would be over my head in English.
We ended up disabling the "ShowNicknameInNametag" variable to remove the appended names so players stopped showing up as Ragolution (Ragolution). This ended up fixing the problem.
CAN Markets uses the player's names to assign ownership to stalls, so it was making it record the wrong name for the owner player. It would recognize them (on placement) as "Ragolution (Ragolution)" but on further interactions, they would be just "Ragolution". In any event, it seems to be fixed, so there's no need to do anything.
I posted a couple things to your github. Mostly feature requests, honestly. :')
Thank you for all your hard work on this mod, our players couldn't function without it.
Ragolution
I can look into it! I'm curious though, which mod are you using? Nicknames themselves don't really affect much. There is a mod config option to disable nameplates, `ShowNicknameInNametag` (regenerate your mod config if you don't see it). Otherwise though, Nicknames don't drive much other than chat messages.
Could there be a way to disable the nickname system? It's currently interfering with another mod we're using that records account names to determine a block's owner.
CHR3S
Whoops, I tore out that functionality at one point! I've removed it from the documentation, and filed a feature request.
Royal_X5
Thanks for the report, I've filed an issue to track this and will take a look sometime next week, thanks for your patience.
Nicknames seem buggy, can't set the range correctly and sometimes they always show regardless.
/pmessage doesn't seem to work
/pmessage doesn't seem to work
BASIC
I assume it has to do with one of the mods I installed. Since I can't use any basic commands. e.g.: /say or /yell
CHR3S
I can do some debugging tomorrow, but my initial guess is that you need to regenerate the mod config! I added a new config option `UseGeneralChannelAsProximityChat` that's being used on that line.
22.1.2025 20:46:52 [Server Error] Mod exception: OnPlayerChat
BASIC don't ever worry about being slow, go at your own pace and enjoy modding =D
I'm literally surprised this is not a built in module already, it's amazing!! A must have for multi!!
@Kara
It's difficult to remove general chat entirely as it's pretty much baked into the game's code, but I've released an update V5.0.1 with a config flag `UseGeneralChannelAsProximityChat` that will instead use General chat as the proximity chat. I also added `EnableGlobalOOC` to go along with this, which enables using two parens in a message (ie. "((This is a Global OOC message))") for global OOC in the Prox chat channel.
I hope this meets your needs! Please let me know of any issues you find.
I've made a couple of other small fixes as part of this update, but there's still plenty of small bugs left to tackle. Sorry I'm being so slow on this everybody, I appreciate you all very much 💜
Is there a way to disable General chat with this? =O
Update for V1.20 has been released! This is very much a WIP build, but I wanted to get it out ASAP for anybody who's waiting on it. I'll be revisiting it soon with another update to polish it up!
When update??? 😳
Aw man, I was betting the highly esteemed BASIC would be the first one to update to 1.20.
Multiplayer just isn't the same without being able to passively agressively suggest everyone sleep.
BASIC
hallo o/ Any chance to implement AFK notification ( when player not moving or doing anything) ?
Nameplates would be a blessing! Bless you for still working on this mod.
Just here to respond to this poll. Yeah, nameplate changes would be awesome! I personally don't see any problem with switching the mod's Side either.
Thanks for working on this mod -- it's a must-have for me. :D
Hey Maamessu it's good to see you again too ~ I can't tell you how happy it makes me to see this mod continue to have life!
I'll dedicate some time to these feaures here soon and see what I can make happen!
Nice to see you again, BASIC. I've still been using the mod all these years and glad it was written so well as to keep functioning regardless of the game updates!
I think making the mod universal is fine. With autodownloading from the moddb, it's not much of a concern. Changing nameplates to show nicknames would be amazing IMO, as would the ability to tweak the range at which nameplates are shown (or maybe "a show when targetting" option like traders?) that's synced to the server.
Anyways, hope your doing well! XD
Hello all - Sorry that I've been gone for so long! I've been off working on other projects.
Quick responses to all the questions in my absense:
@McTaco You can access stats via the `/playerstats` command. It takes an optional argument of another player's name to see their stats, but currently only works if that player is online. I really should update the mod's description with the missing commands...
@Kaofan You *might* be able do it with the current build by setting the config to: `"<font color="#[hex code]">Server save has started - expect lag for a few seconds.</font>"` I've created an issue on the github here to track this feature request.
@Guayo Yup, it still functions as expected! I am bad about keeping up with the supported game version tagging as new VS versions are released.
@Mohandar Although it would be neat, proximity voice is not on my radar right now. It'd be really neat to implement something similar to TFAR in Arma 3 over Teamspeak...
Now, a general poll for the community~ I've gotten a lot of requests recently around changing nameplates to show nicknames, as well as fixing the issue with chat focus switching to General chat. These changes would (probably) require switching this mod from server-side only to Universal (which means it'd now be listed as a mod clients have to download). Does anybody have any concerns about such a change? Thanks!
Lastly, I wanted to mention that I welcome any collaboration if anybody wants to contribute to the mod. Feel free to reach out on discord (basic_bit), leave a comment here, or just submit a PR on Github!
<3
How to use the stats?
BASIC
Is it possible to somehow change the color of the text displayed on the Server?
Example:
"TEXT_ServerSaveAnnouncement": "Server save has started - expect lag for a few seconds.",
"Color": "Cyan",
Is th is mod still functioning?
What about a voice proximity chat as well? <3
BASIC thanks for the reply and update. I am testing the mod on my server and for now so everything is okay! My community and I appreciates an active mod author like you that handles the issues.
Amarillo This was a known issue in v4.0.0-pre.2, and fixed in v4.0.0-pre.3, see issue here. Sorry that you've experienced this though, it was a pretty eggregous issue! The root cause was due to an API behavior change in the v1.18 VS lore update.
I've been busy with other things but I'll put the official v4 release out today (clone of pre.3), along with a subsequent v4.0.1 to fix a small issue relating to chat accents.
Discovered that when using this mod in 1.18.5 version creates a bug that makes creatures keep walking when killed and turning into bones when killed from range, It super weird but I tested removing this mod and revealed that was causing the issue
@BASIC Was hoping to speak with you regarding this mod! My Discord ID is Davis#3285 and I've sent you a message on there already. Awesome mod!
RogueRaiden Hello, I am BASIC's secretary! He has been notified of the problem. Thank you!
posted an issue
https://github.com/BASIC-BIT/Vintage-Story-Mods/issues/2
Hi! there is any way to disable the /nick command, I dont want the players to impersonate other players
Falco
Thanks for diagnosing this, and for submitting the issue! For now I'll just package the mod up into a dll- I've pushed a new version out that should do the trick.
cc: Catochondria WickedSchnitzel
Catochondria & WickedSchnitzel
It seems to be an issue with live compiling with the windows dedicated server. Try compiling the mod yourself and replace the src directory in the mod with the DLL file. This only needs to be done on the server side. Clients can keep using the mod with the src/ directory as long as the mod version is the same.
I created an issue for this bug here: https://github.com/anegostudios/VintageStory-Issues/issues/2378.
I hope we'll see an update or something like this. Unfortunately, and obviously, doesn't work with the current version. Same issue as below on 1.17.3
Server crash with
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog]. BASIC
I can take a look at both of those things! Group order is based upon when you joined it, as far as I can tell. There might be a way to change the ordering; a simple (yet crude) way would be to remove and re-add all of a player's groups when they join, to control the ordering. I'll mess around with it and see what I can do.
As for "focus" mode, that's probably something that can only be fixed client-side. I've been trying to keep this mod server-side-only so far, but I'll still do some investigating.
PS: thanks Keek :D
Fun mod. Love it. <3
Any way the proximity chat group could be placed directly next to the general chat group? For players with several chat groups, it would be easier to swap. Edit: I noticed with one of my players, their proximity group is before their chat groups while mine is not. lol Not sure if that means it depends on when the groups are created.
Could there be a command to prevent a chat window from "popping up" on new messages when ran within that chat window? So a player could ignore chat groups to only focus on proximity or a particular chat group.