Sirolu
|
  |
| Joined: 31 Oct 2008 |
| Total Posts: 152 |
|
|
| 01 Nov 2015 01:50 PM |
Recently, I have been working on a ROBLOX game which has a turn-based system, allowing for player movement only when it is the player's turn. It is absolutely crucial to the game balance that it is physically impossible to move said character (this includes "hacking"; hacking is bad for any game, but it would be catastrophical in this).
There is a catch, however: I still need for the physics engine to be ran. Therefore, I cannot do something as simple as anchoring the player's character. Instead, I would prefer for the server to "filter" (similar to how FilteringEnabled usually works) all player input whenever it is not the player's turn.
So that brings me to my question: is there a way to filter out all input from a player within a particular amount of time?
(If this is not currently possible, I have another, less important, question: is there a way to create "local parts" whose physics actually run in the modern day and age? There is a solution I have employed for my problem, but it results in massive latency in player movement.) |
|
|
| Report Abuse |
|
|
Xsitsu
|
  |
| Joined: 28 Jul 2009 |
| Total Posts: 2921 |
|
|
| 01 Nov 2015 01:52 PM |
| Just go into the player's default ControlScript and change things around to block input, or write your own custom control script. |
|
|
| Report Abuse |
|
|
Dogejia
|
  |
| Joined: 08 Feb 2012 |
| Total Posts: 1873 |
|
|
| 01 Nov 2015 01:52 PM |
I would have an StringValue and change it when its a player(s) turn (Value would be name), and when Input happens, check if that value is true or not.
There's always better versions tho
Online Dogeing since 1337 |
|
|
| Report Abuse |
|
|
Sirolu
|
  |
| Joined: 31 Oct 2008 |
| Total Posts: 152 |
|
|
| 01 Nov 2015 01:59 PM |
@Dogejia:
Indeed, that could allow for filtering out input on the client. However, there is no strict requirement that a client has to follow that. A malicious client can still bypass it and send input. That is, assuming my logic is correct.
@XSitsu (for some reason, ROBLOX does not allow me to reply to you directly):
I have thought of changing the ControlScript, and I believe, if my reasoning is correct, that that would not fit what I desire. A ControlScript allows you to filter out input on the client, but there is nothing preventing a person from bypassing it and forcibly sending input signals to the server.
I realize that my requirements are strict, but I would prefer to solve this problem on the server, not the client. |
|
|
| Report Abuse |
|
|
Dogejia
|
  |
| Joined: 08 Feb 2012 |
| Total Posts: 1873 |
|
|
| 01 Nov 2015 02:03 PM |
I don't know how it'll bypass, unless if you mean like rarely it'll get the wrong player,
Online Dogeing since 1337 |
|
|
| Report Abuse |
|
|
Xsitsu
|
  |
| Joined: 28 Jul 2009 |
| Total Posts: 2921 |
|
|
| 01 Nov 2015 02:04 PM |
| Input and movement is usually handled entirely on the client. If you want to make sure the player isn't moving on the server, you could try setting their walkspeed to 0, setting jump power to 0, and repositioning them if they somehow manage to move. Also, there may be the one auto camera rotate follow property or whatever of Humanoid that you may want to turn off in case they zoom all the way in and try to rotate themselves. |
|
|
| Report Abuse |
|
|
Dogejia
|
  |
| Joined: 08 Feb 2012 |
| Total Posts: 1873 |
|
|
| 01 Nov 2015 02:04 PM |
Unless you're using FE, (if you are), use the ReplicatedStorage, its the client version of serverstorage. Other wise add a "double-checker" script.
Online Dogeing since 1337 |
|
|
| Report Abuse |
|
|
Dogejia
|
  |
| Joined: 08 Feb 2012 |
| Total Posts: 1873 |
|
|
| 01 Nov 2015 02:05 PM |
I don't know what I just said, I just saw 2 horror movies so its jacking my mind
Online Dogeing since 1337 |
|
|
| Report Abuse |
|
|
Sirolu
|
  |
| Joined: 31 Oct 2008 |
| Total Posts: 152 |
|
|
| 01 Nov 2015 02:12 PM |
@Xsitsu: So, in other words, there is no way to outright filter all input? Well, if that is the case, it cannot be helped. I will just have to do something similar to what you asked. Truly, thank you for your time.
@Dogeija: That is fine. I do not believe any harm has been done. Nevertheless, thank you for your time.
In other words, if there really is no way to outright filter input, then this may as well be considered solved. |
|
|
| Report Abuse |
|
|
|
| 01 Nov 2015 02:12 PM |
You could use this method to set the physics owner of the character to the server so that the client no longer has control over their character: http://wiki.roblox.com/index.php?title=SetNetworkOwner
This wouldn't disable their control over the animations of their character, however, and you will have to use some other means to disable animations.
Example:
character.PrimaryPart:SetNetworkOwner(nil)
then to set it back:
character.PrimaryPart:SetNetworkOwner(game.Players:GetPlayerFromCharacter(character)) |
|
|
| Report Abuse |
|
|
chimmihc
|
  |
| Joined: 01 Sep 2014 |
| Total Posts: 17143 |
|
|
| 01 Nov 2015 02:22 PM |
| You just make a custom character system. Or edit the core control script to work with this. Both would work 100% fine. There is no way to prevent someone from editing things handled client side, there is no point in trying, just kick them if they are exploiting. |
|
|
| Report Abuse |
|
|
Sirolu
|
  |
| Joined: 31 Oct 2008 |
| Total Posts: 152 |
|
|
| 01 Nov 2015 02:28 PM |
I see.
Before I read this, I was under the impression that, at the very least, the character was simulated somewhat by both the client and server, ensuring that there is no way to "hack the character", while also minimizing latency. I assume this is incorrect.
What I have gathered from your information is that the client actually controls the physics of the character. This means that even if input could be filtered, they could still technically move the character as long as they own the physics. Would this be correct?
This brings forth another problem: latency. If so, I cannot think of a way to "eliminate it" without emulating the physics on the client as well (i.e. local parts with physics). If the latter is impossible, then there is clearly no solution to my second question, and the topic may as well end. |
|
|
| Report Abuse |
|
|