Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
-1

Structure Of Remote Event Scripts?

Asked by
Vezious 310 Moderation Voter
8 years ago

I'm not sure. I just found out about Remove Event Today, And I Think You can transfer data over Server To Client With it, but I'm having problems. Can you tell be the structure of Sending Data From Local Scripts To Server Scripts and Vice Versa?

0
https://goo.gl/Oi0lgK or http://goo.gl/uWoA5e Redbullusa 1580 — 8y
0
The first link's a simplified version of the latter. Also, I do not condone the use of the .KeyDown event; it's just there to help a larger demographic (or, at least, those who don't know how to use other input services) to understand it. Redbullusa 1580 — 8y

1 answer

Log in to vote
1
Answered by 8 years ago

Well, let's see.

RemoteEvents are in fact a way to securely transport data from the server to the client, or vice versa.

So, let's look at an example. Say you have an event, we'll call it "PlayerStatsUpdated". Now, before you created this event, your game was struck by exploiters who used Cheat Engine to change the stats of players. Before you created this event, there was nothing to prevent people from going into your game and giving themselves 99999999999999999999 kills and infinity coins or whatever. Soon, the people who played your game started complaining, and then nobody played anymore.

So, when you find out about that, you think "Oh no! Now I have to prevent this from happening? HOW?!?!" Well, RemoteEvents are the answer.

But how do they work?!

Well, let's say that you have the PlayerStatsUpdated event. What you can do to prevent the above scenario is firing the event from the client, and passing in the parameters (kills, coins, etc). Then, you can listen for it from a server script, which then handles updating the statistics.

Now, this isn't entirely foolproof. Someone COULD find the name of the event and exploit the game again (Well, only if they knew how the event system worked and what parameters to use), unless you have FilteringEnabled!

So. How do we fire the events?

FROM A LOCAL SCRIPT:

repeat wait() until _G.PlayerStats ~= nil

local PlayerStatsUpdated = game.ReplicatedStorage.PlayerStatsUpdated
local player = game.Players.LocalPlayer

_G.PlayerStats[player.Name] = {
    kills = 0,
    coins = 0
};

PlayerStatsUpdated:FireServer({kills = 10, coins = 5})

That last line ("PlayerStatsUpdated:FireServer({kills = 10, coins = 5})") is what sends the event to the server.

Now, from a server script:

_G.PlayerStats = {};

local PlayerStatsUpdated = game.ReplicatedStorage.PlayerStatsUpdated

PlayerStatsUpdated.OnServerEvent:connect(function(player, stats)
    _G.PlayerStats[player.Name] = stats

    print("stats updated for " .. player.Name)
    print("kills = " .. _G.PlayerStats[player.Name]["kills"])
    print("coins = " .. _G.PlayerStats[player.Name]["coins"])
end)

I hope this helped! :)

0
Also, just as a little tip, doing the reverse of this should work also (stats changing on server and printing stats on client) CoderLeo 50 — 8y
Ad

Answer this question