ID:2378634
 
(See the best response by Nadrew.)
https://i.imgur.com/drZWZjq.jpg

So I had a player just report this to me. They don't know what caused it, but somehow they managed to get limited access to every verb in the game but only on the drop-down menus for right-clicking something.

They're also able to right-click on turfs and obj that are all set to mouse_opacity 0.

None of the verbs actually work unless they're suppose to, he just gets errors like if he tried to type an invalid command in to the command box but it's still a little concerning and I have no idea how this could possibly happen.

This appears to be a save file related issue as it is only affecting 1 player but it is happening to them on multiple servers.

For reference though, this is what those menus should look like for someone with staff commands.

https://i.imgur.com/395Udtk.png
Best response
It's an issue with the second-to-latest BYOND beta, updating to the latest will resolve it.
An issue on the client side, host side, or an issue with compiling?

If it's client side, is there a way to prevent players from using that version?
It's client-side, and yes, you'd need to check the byond_version and byond_build variables against it.
Forced my playerbase to update to Beta 512.1429 or higher, and the issue is fixed.
In response to IceFire2050
IceFire2050 wrote:
An issue on the client side, host side, or an issue with compiling?

If it's client side, is there a way to prevent players from using that version?

This makes me wonder myself if there is a way to single out only certain versions of BYOND. Is there an actual way to identify, and now allow only the version that causes the problem?
As my answer stated, it's entirely possible.
In response to LawnMower
LawnMower wrote:
IceFire2050 wrote:
An issue on the client side, host side, or an issue with compiling?

If it's client side, is there a way to prevent players from using that version?

This makes me wonder myself if there is a way to single out only certain versions of BYOND. Is there an actual way to identify, and now allow only the version that causes the problem?

I have as part of my client/New()

client/New()

//. = ..()

var/tmp/list/pagerbans = world.GetConfig("keyban")

winset(src, "rpane.pane", "left=info_;right=chat")
winset(src, "_main", "statusbar=true;menu=")
winset(src, "_main.m", "left=_load;right=")

winset(src, "_load.hi", {"text="})
winset(src, "_load.password", "is-visible=false")
winset(src, "_load.code", "is-visible=false")
winset(src, "_load.progress", "value=0")
src << output(null, "_load.info")

world.log << "[src] - BYOND: [byond_version] (Build: [byond_build])"

if(byond_version<compiled)
world.log << "[src] - BYOND Version is older than required"

src << output("For compatibility you must have BYOND v[compiled].[compiled_minor] or higher. Please update and then try again.\n<i>Disconnected.</i>", "_load.info")
// src << output("For compatibility you must have BYOND v[compiled] or higher. Please update and then try again.\n<i>Disconnected.</i>", "_load.info")
log_gm(time2text(world.timeofday,"DD MMM, hh:mm:ss"),"[computer_id]",key,"Invalid Version",{"v[byond_version]"},"B34040")
return null
else if(byond_version == compiled)
if(byond_build<compiled_minor)
world.log << "[src] - BYOND Version Matches but build is too old."
src << output("For compatibility you must have BYOND v[compiled].[compiled_minor] or higher. Please update and then try again.\n<i>Disconnected.</i>", "_load.info")
log_gm(time2text(world.timeofday,"DD MMM, hh:mm:ss"),"[computer_id]",key,"Invalid Version",{"v[byond_version]"},"B34040")
return null


The compiled and compiled_minor are 2 vars set elsewhere that can be altered easily in the future but in this instance, compiled = 512 and compiled minor = 1429.

if your byond version is 512.1429, then the var "byond_version" will always return 512 and "byond_build" will always return 1429.

This code checks to see if the byond_version of the player is lower than the number set when the game was compiled. If the player's is lower, it alerts the player of this and fails their login.

If the player's byond_version is equal to the set value, then it checks to see if the byond_build is lower. If it is, then it fails the login.

This means the only way to log in is if your byond matches the required version or is newer. You could change the code a bit and make it require a specific version instead though.