• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[General] Save Load Inventory Abuse

Status
Not open for further replies.

sentrywiz

S

sentrywiz

Hello everyone.

Been a while since I posted a thread, to whom remember me. Anyway onto my question:

I'm making an online RPG based on game mechanics from another game.
One of the things I want to include is a save/load system.
For it I've made my items with codes so that it can function.

One thing different from other online RPG's that I want to implement is a trade
system between players. That's the basis of the map, I had in mind players
selling gear they find among themselves. But when I thought about it, I see
that for example:

player A makes trade with player B, giving him item C.
then player A makes another save, gets a code.

but if player A loads with the same code as he did now, he'd still have item C for trade.
and before, he could still trade it for more money, thus infinite items and abuse.


Any ideas how to prevent this sort of thing?
I realize the unique part of the map is that items have value and I see now
that it might be difficult to circumvent that.

What do you think? Let me know.
 

sentrywiz

S

sentrywiz

Make gold total part of the save code.

Let me use that for a new example:

player A trades player B, giving him item C.
player B pays player A any number of gold.
player A saves the game.

player A then trades player C giving him the gold.
player A loads from the old code, where he still has the item, but now player C gained gold.

And that's abuse, since the item can be infinitely traded.
 

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,198
Any ideas how to prevent this sort of thing?
Do not even bother trying to. Warcraft III is not designed for that sort of use case.
What do you think?
You will need to think of something else to base your map around. Either that or move away from Warcraft III to something like Unity where you can have a secure server manage and verify progress. This is basically how Diablo and World of Warcraft works and why duping in them is so hard (not necessarily impossible, as was proved in the past).
 

sentrywiz

S

sentrywiz

Do not even bother trying to. Warcraft III is not designed for that sort of use case.

You will need to think of something else to base your map around. Either that or move away from Warcraft III to something like Unity where you can have a secure server manage and verify progress. This is basically how Diablo and World of Warcraft works and why duping in them is so hard (not necessarily impossible, as was proved in the past).

Well, since its you, the super good doctor, I have to say yes.

However I really want to make an ORPG, since that is one type of map
that you really need to sink some time into and make a system of sorts
to fit the idea. Since I've finished my item database and have worked
out a way how to save a lot of item data in save/load codes,
i can't change the map now, i'm in too deep.

I will just not code a trade system and players will have to grind
their own gear, without any help from trade. And later on code a solution


Or just leave it to good faith of the players? Because tbh, that seems like the solution.
 
Last edited by a moderator:

Dr Super Good

Spell Reviewer
Level 64
Joined
Jan 18, 2005
Messages
27,198
I will just not code a trade system and players will have to grind
their own gear, without any help from trade.
Yeh this is the recommended approach. Most RPGs have gone this route of account bound gear, eg Diablo III.

To reduce the grind one can increase chances. Using some probability theory one can compute a reasonable time for most people to get the desired piece of gear. Being a Warcraft III map 10 hours max for end game gear pieces is probably a good upper limit.
 

sentrywiz

S

sentrywiz

Actually the grind is pretty long in my map, intentionally.
Quests and events only extend upon the grind too.

But trade is so integral to it, I'm not sure anymore.
 
Level 11
Joined
May 29, 2008
Messages
132
Really, there's not good solution to this problem that can be done within the limitation of WC3. The only technical solution that I can imagine is you could randomly generate an id for every item you drop and save it when players save the item. If two players ever enter the game and each have the same weapon with the same ID, they're most likely item duping (this is based on the fact that it's very unlikely to generate the same random number twice). This will at least prevent people who plan to play with each other again from duping items, though duping can still technically happen (and this comes with a whole slew of other weird issue, like if someone malicious trades you a duplicate that you don't know is a duplicate, and you try to play with someone else who has it).

I think you've got the best solution with leaving it to good faith. Players get to choose whether they have the integrity to play without duping or decide to use it. It's their game experience that if they alter (maybe even ruin?) with item duping, that's their choice.
 
Level 4
Joined
Jul 2, 2014
Messages
46
Really, there's not good solution to this problem that can be done within the limitation of WC3. The only technical solution that I can imagine is you could randomly generate an id for every item you drop and save it when players save the item. If two players ever enter the game and each have the same weapon with the same ID, they're most likely item duping (this is based on the fact that it's very unlikely to generate the same random number twice). This will at least prevent people who plan to play with each other again from duping items, though duping can still technically happen (and this comes with a whole slew of other weird issue, like if someone malicious trades you a duplicate that you don't know is a duplicate, and you try to play with someone else who has it).

I think you've got the best solution with leaving it to good faith. Players get to choose whether they have the integrity to play without duping or decide to use it. It's their game experience that if they alter (maybe even ruin?) with item duping, that's their choice.

This is the closest to a working solution you could get, generating hashes whenever you drop/create an item for a player, assuming you can generate unique ids that won't collide with another game generated ids and block any load that contains a duplicated id from a previous load.

Tricky part would be handling the id generation and avoiding collisions; as well as denying loading from duplicators; perhaps tell upfront the players to avoid confusion "Your load is denied because you're trying to load a duplicated item from Player_X's load."
 
Status
Not open for further replies.
Top