I don’t think you would be able to stop bots. And if you do, it might get too hard or anyoing for legit players.
Good luck tho
I don’t think you would be able to stop bots. And if you do, it might get too hard or anyoing for legit players.
Good luck tho
I’m not sure what you mean by the exploiter can read it? If the exploiter is reading the text anyway who cares if they’re exploiting. If you’re talking about literally reading the contents of the TextLabel, we’re getting into advanced exploits which would need to be unique for that game; something that rarely happens unless your game is front page for more than a few months and there is a real financial incentive to make that exploit.
Either way, if you’re getting into worrying about things like that it’s not worth doing anything as changes would likely impact the innocent player more negatively than the exploiters.
why not just move the cheque gui to a random position on the screen each time?
I doubt reading text labels is unique or advanced. Aren’t there popular exploits that let you run code on the client? It would be fairly easy to read a TextLabel using that.
If you look at any ‘hacker forum’ that does Roblox exploits, pretty much no one understands code or knows how to exploit themselves, the limit of their knowledge is using a premade program. Only a few people on those forums actually know how to code, and they have to make the scripts for everyone else to use. Yes, you could write a script in lua which reads the TextLabel, clicks the button then cashes the cheque, but this would still require an exploit unique to this game, most people don’t do that unless it’s super popular.
Perhaps an imagelabel isnt too bad of an idea, but they can just as easily create a table with each image and it’s text, then index this to get it’s contents, it’s not much of a jump for someone who’s already written a script to read the TextLabel then click the button.
I was thinking that, but it would look a bit ‘off’ (as it would no longer be centred), and for mobile the frame already takes up most the screen
it’s unlikely you’ll get someone using an auto clicker on mobile, but if you’re really worried about about cheaters and don’t want to use verification codes, I don’t see any other option, unless you implemented some sort of game or task where players will actually have to interact with your game to earn their money (like in club penguin where you had to play minigames to earn coins).
I still plan to have verification codes, but only pop up for people who the game thinks are trying to cheat
Nice suggestion. I think eventually I’ll try to shift the focus of income away from cheques to minigames and quests they can take part in.
I feel like this is the kind of thing people were suggesting N replies ago.
Edit: well, I guess he’d be the first among those people to give a constructive solution, though.
Yes, you could have it so they have to take their check to a specific place to cash it and have to interact with something in game that moves to complete the transaction. 3D interactions that change are much more difficult for auto-clickers to simulate.
The only real place to track then are spoofed network messages, but you can do some basic verification to ensure that the player is where they say they are and have done the right things.
That’s an interested approach I hadn’t thought of before, thank you.
My game is quite a large multi-place game, so I’d have to think about the best places to put these, but I think this could definitely work.
This has no basis. Any script executor that works in any game can simply run textLabelHere.Text
.
Okay when I said advanced exploits I meant in the context of Roblox exploits, and those talked about in the OP, most of the time they’re really basic.
There is a difference between autoclickers and roblox script executors. At that point they’re just going to find a way around it, no matter what you do.
From everyone’s inputs, I’ve gathered these key points:
Nothing will ever be ‘fully’ cheat-proof - obviously you can take measures to limit cheaters, but you have to ask yourself “is it worth my time and effort, or could I be doing something more useful/important with my time?”. After all, this is Roblox, not a top EA game.
To limit the impact cheques have, simply move your focus away from cheques, and introduce 3D methods of obtaining cash/exp; for example, minigames and quests. This does take a lot more time to do, but in the long run benefits both your game and its players.
Now on to the fun bit, solutions! (Note, these are not 100% ‘full proof’, but work most effectively in preventing your standard ‘cheater’):
Make players hand in their cheques at a 3D location, for example a Bank. This does require you to think about the technicalities of doing this, especially if you have a universal game, but does make it significantly harder for cheaters.
Use a code system, as mentioned above, but check a range of inputs, which if seem inactive/suspicious, add on one ‘cheat point’. If this cheat count reaches a certain number: the next time the player receives a cheque ask them to enter the code (which only takes them out of the way by 5 seconds). Some of the behaviours you could check against are:
So once again, nothing’s perfect, but these are the most robust ways I’ve discovered of preventing cheaters whilst keeping other players happy.
Hold on, hold on. Just to clarify, by this do you mean that you’re punishing players who spend time on you game by accusing them as cheaters? Wouldn’t that, you know, not make them want to play for hours on end even if they like your game? It seems like a lose-lose.
The way I phrased it may have sounded harsh, but it’s far from. For example, after 1 hour of playing, every 20 minutes they will receive a ‘cheat point’. Once this value reaches a limit (which I made 5), the player will be prompted to enter a 4-digit code the next time they receive a check. This means if the player does not collect any other cheat points, it will take at least 2 hours to prompt the code. On top of that, the whole process only takes between 5-10 seconds, so gameplay isn’t affected, and the cheat points reset to 0 again.
Tying into LuckyTux’s reply,
Quite frequently I will play a game on Roblox for an extended period of time without ever chatting with anyone, but I don’t cheat. Unless your game requires players to cooperate with one another, this might seem at times like you’re punishing people for being quiet.
And also, what about the players that don’t have the ability to chat?
Typically a user wouldn’t just be walking around or jumping (as most anti-afk programs do) you could also detect if a user has done a certain thing within a timeframe. For example if someone is just walking around for 20 minutes doing nothing you can assume they’re either lost or they aren’t actually at the keyboard. This method is by no means the safest but it is something you could look in to. Why would a user walk around for 20-40 minutes without clicking a certain event, etc…
I think you are looking into this way too much. As stated before, just remove those cheques completely and make it so that you’d have to actually interact with the environment to earn the points. Similarly to what Dued1 did with his game, Work at a Pizza Place, you can add a daily bonus cheque. If you want to keep the cheque system you have, then just have the player type a certain button into a box to cash out, and the character shown will be a random ImageLabel, rather than a TextLabel, as said previously.