|
| 09 May 2015 11:00 AM |
Ok, so I'm dual creating two games, and I need to know the best and safest way to create and store player data to keep it from being tampered with. Where should I put it when it's made?
Also, does FE stop all exploiters, or at least 95% of them? That may be an option, even though I really don't want to have to deal with it. |
|
|
| Report Abuse |
|
|
Locard
|
  |
| Joined: 13 Apr 2014 |
| Total Posts: 3516 |
|
|
| 09 May 2015 11:09 AM |
| FE prevents anything being done on the client from replicating to other clients. It won't completely stop exploitation, but it's genuinely a good start. As for protecting players' data, I suggest using server scripts. Use remote functions and events to trigger things or change data if you want. |
|
|
| Report Abuse |
|
|
|
| 09 May 2015 11:12 AM |
| Well, you can only save from the server. Just make sure that the player can't modify the data that is saved. For example, if you have leaderstat inside the player, they can change that stat and if you have a script that saves whatever that leaderstat's value is, they can have their save value set to whatever they want. One way to avoid this is to keep two values for each leaderstat: one value that can only be modified by the server and one that is used for the actually leaderstats. Then, save the value that is accessiable only by the server, not the one that the client can modify. Also make sure that if you have a Money leaderstat and then you have some kind of shop, that the shop uses the safe value(the one on the server) not the dirty value(the one accessible to the client, i.e. the leaderstat.) |
|
|
| Report Abuse |
|
|
|
| 09 May 2015 11:15 AM |
| As for FE, FE stops all changes made by the client from replicating to(affecting) the server. So if a hacker joins your game and changes the color of all the parts in your game and you DON'T have FE on, then that change will be seen by every player. If you DO have FE on, then only the hacker will see that change and it will not affect the server and thus will not affect any other player on your game. The downside of FE is many older localscripts attempt to modify the game directly, and if you have FE on, the changes that the localscripts make will not be replicated. |
|
|
| Report Abuse |
|
|
|
| 09 May 2015 11:28 AM |
Thank you both so much.
But @nQq, how would I make a server value that can't be changed locally? I've been gone for a little over a year, and there are a lot of new things I'm not caught up on. |
|
|
| Report Abuse |
|
|
|
| 09 May 2015 11:31 AM |
Well, there is more than one way to do it.
First of all, you could use the _G table. The _G table can be used by all scripts but it doesn't replicate. So you could do something like this:
_G.PlayerStats = {}
Then put all the PlayerStats in that table.
Secondly, you could put the stats into the ServerStorage which doesn't replicate to the client.
So local safeValue = Instance.new("IntValue", game.ServerStorage)
Third, you could create a script that stores all of the data in a table, then use BindableFunctions to retrieve/set the data. |
|
|
| Report Abuse |
|
|
|
| 09 May 2015 11:34 AM |
| Thank you so much. This will help more than you can imagine |
|
|
| Report Abuse |
|
|