100% agree, I’m really glad that I actually have a Datastore purchase manager for that. But ROBLOX should allow us to see in our transaction logs (that they provide on the website) and actually use that against such claims.
Although I fully agree they should add this, I could create a chrome extension which adds this.
That would be handy, please do it as I don’t think one exists right now.
Wouldn’t trust a roblox chrome extension if it was made by God himself.
That’s why you check it, and re upload it your self, and make sure it’s set to private, so only you can use it.
how about a tampermonkey plugin? then its literally just a javascript file you can read yourself lol
or i can just post the .zip and you can enable developer mode and use the raw extension - for something like this i dont care if the source is public
It is considered proper practice to record these purchases yourself (although I don’t anymore lol).
My policy is no refunds anyways, I use to investigate refund claims but eventually the claims became too frequent and a lot are just fraudulent.
I support but I mean I’d put it pretty far down the list of things that need doing.
The problem being nearly all legitimate “I bought this but didn’t get it” claims are due to bugs with how the developer interacts with DataStores, so purchase logs would be lost as well. May not be so much of an issue if DataStores were less convoluted, but for now we’re stuck with their current state.
Doesn’t even have to be a bug of yours, the player might been disconnected mid-proccess.
There are legitimate reasons why making a fool proof method for logging this stuff doesn’t work.
“But you can just -Insert Incredibly complex method using 15 datastore calls, httpservice and external databases here-!”
No. Please leave.
dfdfjkdfkds you posted this rubbish about it being hard to record before. Total nonsense.
Make a recording of a player being charged for something, so before you return Enum.PurchaseSuccess.True or what ever (forgot what it is lol) using your regular datastore set up, then make a recording of the playing getting that thing using your regular datastore set up. Then when they rejoin if the two don’t match up, compensate for that.
Not tricky!!
That’s what I was doing, but it doesn’t work in any bigger games, especially if you sell low priced items.
Somebody buys 15 skinscrates, takes up 15 datastore calls. He only gets 7 skincrates cause datastore is flooded after that.
We need a search bar.
My game isn’t particularly big, 2.8M plays, but we max out servers plenty of servers, has 300 people on it right now with plenty of small microtransactions. Per player you get 10 datastore requests a minute + 60. You’d need to have the entire server spam buying, and people spam leaving and rejoining to make this an issue. And then I guess you’d just have to throttle.
If purchases is the only thing you use datastores, yes.
Oh flip, lol you actually mislead me from what I said.
Just add it to the cache of data you have for your player, and save it when they leave, at the expense of 0 data calls.
That’s what I do, still doesn’t work if the server crash.
And my servers crash quite regularly, and it’s not due to a bad written while loop, its memory issues that I can’t track down because we have no such tools.
Oh aw, memory leaks suck :c
When I had those it was because of miss copying over code and then creating excess parts. You do have tools to stop it though.
Go to Esc → settings → server stats or something like that. It’ll show you memory usage on the server. Use that and commenting out bits of code to diagnose
Or use the microprofiler (just google it) to find client lag issues
Said it before and I say it again.
We need a search bar to know wether or not a player has purchased an item or not.
“But you can just…” - No.
Take your half-baked super-complex datastore-draining solution and post it somewhere else.
Nobody here is interested in seeing that you can write complex code.
We need a search bar because loading 45 pages of purchases just to findout if a player has bought an item 2 days ago is not very user friendly.
B-b-b-but it’s like 1 line!!