A property to tell if Studio is in Solo mode, or a way for plugins to easily perform HTTP requests

Hey guysΓÇöGigs here,

I recently ran into a dilemma while adding some HttpService-requiring features to Building Tools by F3X, and its Studio plugin version. Namely, the plugin automatically creates a NetworkServer so that all a user has to do is enable HttpService for all the features to work.

However, when in Solo test mode (in Studio), creating a NetworkServer causes Solo to mess up and behave awkwardly (the camera doesn’t stick to the player, the character doesn’t load, etc). There’s no reliable way of knowing whether Studio is in solo test modeΓÇöthe closest I was able to get was by checking Game.Visit, which loads after an arbitrary amount of time, but also appears when the place is opened via an Edit button.
(more on the issue here: [url]https://github.com/F3XTeam/ROBLOX-Building-Tools/issues/21[/url])

Can you guys add a way to tell if Studio is in solo test mode? Or allow HttpService to be used without having to create a server (for plugins)? Or unlock Game:HttpGet and Game:HttpPost for plugins? Also: could HttpService be enabled by default?

Thanks

Can’t you check if LocalPlayer~=nil and FindService’NetworkServer’~=nil?

Nope. The plugins reload whenever solo mode starts, and that’s before the player joins, so it doesn’t know if it’s even going to be solo mode or what. As for knowing if there’s a NetworkServer already, it’s not necessary since if one already exists, it uses that oneΓÇöif it doesn’t exist, it makes it. The problem is knowing when it’s in solo mode so that it doesn’t make it (because then it messes things up).

I ran a couple of tests and apparently ChangeHistoryService:GetCanUndo() will return true in edit and false in visit. Can plugins access that?

the problem with allowing plugins to perform HTTP requests and posts is that you can have a useful and benign plugin but underneath it uploads source code and/or parts to a server.

don’t believe it’s not possible and that it won’t be done, because if HTTP is enabled some froob will make a super useful plugin that steals places secretly

[quote] the problem with allowing plugins to perform HTTP requests and posts is that you can have a useful and benign plugin but underneath it uploads source code and/or parts to a server.

don’t believe it’s not possible and that it won’t be done, because if HTTP is enabled some froob will make a super useful plugin that steals places secretly [/quote]

Not just that, it will also be authenticated to the current user. If somebody is smart enough they could do some pretty nasty things.

Found this working in Server scripts :stuck_out_tongue:

game:WaitForChild("NetworkServer")

ROBLOX Battle has some hack involving MeshContentProvider? which can tell the difference between local and remote game servers…

If anyone needs a copy of an older version when it was Open Sourced, let me know and I can save it to Dropbox.

“ROBLOX Battle has some hack involving MeshContentProvider?”

FYI: That hack no longer works, don’t use it.

This could work if it returned false exclusively in solo, rather than when in either edit or solo :frowning:

GetClientMode() returns Enum of:

StudioClient
StudioServer
StudioPlay
StudioSolo
OnlineServer
OnlineClient

How about that?

[quote] GetClientMode() returns Enum of:

StudioClient
StudioServer
StudioPlay
StudioSolo
OnlineServer
OnlineClient

How about that? [/quote]

That’d be great!

Strangely when places are opened with Edit buttons it seems like any calls made to ChangeHistoryService:SetWaypoint don’t register until Studio sets a waypoint natively, so this would also require user intervention :frowning:

Not sure if it’s acceptable to bump this, but it seems to affect other plugins as well.

We should expose this because we have it already on the C++ side, and it is useful in tools programming.

Is there any chance this could be implemented anytime soon? :o