Server Error while trying to pick up an Item.

Neirene

Member
In the Development Server if your inventory is at 29/30 and you try to pick an item, the game disconnects you and shows you a message window saying the inventory is full.

34sl7p5.jpg


This happens all the time as i'm testing with a relative at the moment.

PD: I was unsure where to post this thread since I couln't find a "Bug Report" forum, if i posted in the wrong section please move the thread to the correct one.

Cheers!!
 

Sodaboy

Administrator
Staff member
For some reason the server thinks you already have 30 items and you're trying to pick up a 31st.

We'll look into it. Thanks for the report.
 

Sodaboy

Administrator
Staff member
OK, I found the problem. I made a mistake and I will be abruptly restarting the server soon to correct it. Sorry, I had Trap Visions marked as not-stackable for some reason. MY BAD, YA'LL
 

Sodaboy

Administrator
Staff member
OK, it's fixed now. But, I think if your character was affected, you may have to recreate it. Sorry about that. But you might not... Shouldn't be an issue on a new character and this was a new bug I created last night... Sorry again. I WILL CHANGE EXP RATE TO 3x FOR A BIT.
 

Sodaboy

Administrator
Staff member
This isn't Eden and that function isn't here... But probably should code a procedure to clean up stacks.

Actually, I just realized, they probably don't need to recreate their character. They can just deposit their entire inventory into the bank, change blocks, and then join a game again. (Probably will have items in their inventory still, even if they put everything in the bank.) Just repeat until their inventory is empty, then take the stuff out the bank again.

Will be creating a bug report function soon, probably after we release the latest version of the software.
 

Chuk

Member
Sodaboy said:
This isn't Eden and that function isn't here... But probably should code a procedure to clean up stacks.

Actually, I just realized, they probably don't need to recreate their character. They can just deposit their entire inventory into the bank, change blocks, and then join a game again. (Probably will have items in their inventory still, even if they put everything in the bank.) Just repeat until their inventory is empty, then take the stuff out the bank again.

Will be creating a bug report function soon, probably after we release the latest version of the software.

I know you don't like to hear this but this is another simple example of why the character_data should not be stored in one big blob. If the inventory and even the items are records linked together with IDs, any admin can easily wipe or modify an inventory without the use of a special command or parsing tool. You'd just need to execute small, easy queries.
 

Sodaboy

Administrator
Staff member
I guess I still don't see the benefit. Having the character data in a blob isn't a big deal, you just read it into already defined structure, modify the data structure, write it back. You make it sound so incredibly difficult to manage when it's not. *shrug*

I mean, I can see your point, you could do a select and search for a particular item in a user's inventory with a MySQL query, but it's VERY situational that you'd even NEED to do this, unless you have a habit of wanting to edit your player's inventory data or any other data. Or, I guess, if you wanted to have an e-peen contest on your website and sort users by particular stat points. Other than those things, I don't see the point.
 

Chuk

Member
Sodaboy said:
I guess I still don't see the benefit. Having the character data in a blob isn't a big deal, you just read it into already defined structure, modify the data structure, write it back. You make it sound so incredibly difficult to manage when it's not. *shrug*

I mean, I can see your point, you could do a select and search for a particular item in a user's inventory with a MySQL query, but it's VERY situational that you'd even NEED to do this, unless you have a habit of wanting to edit your player's inventory data or any other data. Or, I guess, if you wanted to have an e-peen contest on your website and sort users by particular stat points. Other than those things, I don't see the point.

Well nothing is NEEDED but it has a big bunch of advantages that I presonally feel outweigh the disadvantages. And looking into player inventories is a lot more common than you might think. Daily we get requests for item restorations or donation delivery. Or just looking up someone supsicious.

  1. You can look up potentially hacked items easily. (things with high stats or that are just too good to get legally)
  2. You can easily remove corrupted items or wipe the inventory
  3. Easier to spot corrupted items right from the database
  4. Adding an item for donation / mini event / bug restore can be done without being in the game
  5. You can easily make a front-end (website or standalone program)

Don't get me wrong, this can be (and is) acheived with the current blob but it always needs this parsing of the blob before you have the actual data. One wrong offset and your whole inventory/bank can be ruined. I just come into contact with quite some SQL databases and datablobs are pretty much only for data that does not need to be queried (binary files with a header like Images, music or movie clips).

I just feel that now the server is being rewritten, there is an opportunity to also dig into a better db structure that is easier to maintain and works better with modern langauges.
 

Sodaboy

Administrator
Staff member
Chuk said:
One wrong offset and your whole inventory/bank can be ruined.
I don't think this is because it's a blob. The structure is already defined in the ship. If you're programming an editor, just use the structure. You don't need to calculate offsets.

Also, in the new server the "????" bug is fixed. Though, I suppose someone could find a way to create a broken item some how some way and that would be nice to spot. Though the server tries to discard things like that when they disconnect.

I can see your point about donation events and the like, though.
 

Chuk

Member
I forgot to add, imagine someday you want to increase the inventory or bank size (will still need a couple of client edits I presume), it would be easier outside of the blob as you don't need to adjust the offsets of other data inside the blob.
 

Mylandra

Member
There are many uses for this, you could for instance attribute an hidden id to items which would allow you to track every transfer between characters and also if the item has been duped it would have the same id which would be blocked by the server/database primary key constraint.

Making the server dupe-proof altogether if done correctly and also allowing you to trace the items if they came through some fishy/banned accounts at the cost of database overhead.
 
Top