|
Post by Fixuki on Feb 10, 2015 11:45:03 GMT
Heyo,
Here once again with the same suggestion I gave you in season one about the server clean.
It's a simple one: DON'T MAKE BODIES CLEAN WHEN THE CLEAN HAPPENS, ONLY CLEAN ITEMS.
Bodies will rot, they won't trash the server at all. The only thing that'll happen is that people lose their loot, like I just did for this first time this season yet the 4th time overall if you count the previous season.
Since I lost all my supplies and cash this time, I don't feel like playing anymore because of a stupid weakness in a system you guys implemented.
If there's any way I can get back what I lost I'd love to hear it, guess you'll have to trust me on my word, if not this'll be the last you guys hear from me on this server for now, wasted too much time just to lose it all like this.
Enjoy ur day and for the love of god, think about this proposal, it will cause more people to quit.
Regards,
|
|
|
Post by Migi Barksdale on Feb 10, 2015 11:46:10 GMT
Agreed!!!
|
|
maas
Gozzler
Posts: 31
|
Post by maas on Feb 10, 2015 12:44:40 GMT
Agreed, this should be fixed. Off topic, forgot to buy blessings?
|
|
|
Post by Fixuki on Feb 10, 2015 12:50:55 GMT
Nah, I don't buy blessings for the simple reason that they are not worth it for me, I die way too often with my current playstyle for them to be profitabe.
If I would lose all my stuff in ANY other way than this (i.e. someone getting to my body first, me not being able to reach it or whatever) I wouldn't mind, but this is just a weakness I have poined out several times already.
Would be nice if I could get my items back, if not it would suck but I'll get over it. I do want to see the clean changed before I start playing seriously again though.
|
|
|
Post by GM Kelin on Feb 10, 2015 13:04:20 GMT
Heyo, Here once again with the same suggestion I gave you in season one about the server clean. It's a simple one: DON'T MAKE BODIES CLEAN WHEN THE CLEAN HAPPENS, ONLY CLEAN ITEMS. Bodies will rot, they won't trash the server at all. The only thing that'll happen is that people lose their loot, like I just did for this first time this season yet the 4th time overall if you count the previous season. Since I lost all my supplies and cash this time, I don't feel like playing anymore because of a stupid weakness in a system you guys implemented. If there's any way I can get back what I lost I'd love to hear it, guess you'll have to trust me on my word, if not this'll be the last you guys hear from me on this server for now, wasted too much time just to lose it all like this. Enjoy ur day and for the love of god, think about this proposal, it will cause more people to quit. Regards, We are aware of this, however we don't have any way of changing how cleans work without editing the C++ sources, and thereby loosing the support we get from our dedicated host, which we would prefer to keep. All we can do by now is reduce the interval at which clean's happen (it is set to 8 hours, to make it the least likely for situations like this to happen) We are really sorry for your loss We will try to think of another way of working around this restriction (if you have any ideas, please let us know!).
|
|
|
Post by Fixuki on Feb 10, 2015 13:19:33 GMT
Honestly, besides getting rid of the clean all together, the only thing I can think of is keep logs and refund people that lose stuff due to the clean.
Losing 150k as a low level mage kind of sets you back to level 20, without the possibility of redoing the quests. Losing shards due to this is even worse haha.
|
|
Mist
Ginyu Force
Posts: 113
|
Post by Mist on Feb 10, 2015 14:04:28 GMT
Primarily I suggest you put a static time with a time zone instead of this 8 hour interval, e.g. 04:00 UTC the cleaning takes place, then we could take a look at the functionality of non-cleansed corpses.
This is the function in the source called upon when cleaning:
uint32_t Map::clean() const { uint64_t start = OTSYS_TIME(); size_t count = 0, tiles = 0;
if (g_game.getGameState() == GAME_STATE_NORMAL) { g_game.setGameState(GAME_STATE_MAINTAIN); }
std::vector<const QTreeNode*> nodes { &root }; std::vector<Item*> toRemove; do { const QTreeNode* node = nodes.back(); nodes.pop_back(); if (node->isLeaf()) { const QTreeLeafNode* leafNode = reinterpret_cast<const QTreeLeafNode*>(node); for (uint16_t z = 0; z < MAP_MAX_LAYERS; ++z) { Floor* floor = leafNode->getFloor(z); if (!floor) { continue; }
for (size_t x = 0; x < FLOOR_SIZE; ++x) { for (size_t y = 0; y < FLOOR_SIZE; ++y) { Tile* tile = floor->tiles[x][y]; if (!tile || tile->hasFlag(TILESTATE_PROTECTIONZONE)) { continue; }
TileItemVector* itemList = tile->getItemList(); if (!itemList) { continue; }
++tiles; for (Item* item : *itemList) { if (item->isCleanable()) { toRemove.push_back(item); } }
for (Item* item : toRemove) { g_game.internalRemoveItem(item, -1); } count += toRemove.size(); toRemove.clear(); } } } } else { for (size_t i = 0; i < 4; ++i) { QTreeNode* childNode = node->m_child[i]; if (childNode) { nodes.push_back(childNode); } } } } while (!nodes.empty());
if (g_game.getGameState() == GAME_STATE_MAINTAIN) { g_game.setGameState(GAME_STATE_NORMAL); }
std::cout << "> CLEAN: Removed " << count << " item" << (count != 1 ? "s" : "") << " from " << tiles << " tile" << (tiles != 1 ? "s" : "") << " in " << (OTSYS_TIME() - start) / (1000.) << " seconds." << std::endl; return count; }
This is the isCleanable function
bool isCleanable() const { return !loadedFromMap && canRemove() && isPickupable() && !hasAttribute(ITEM_ATTRIBUTE_UNIQUEID) && !hasAttribute(ITEM_ATTRIBUTE_ACTIONID); }
Analyzing these functions may let one create one identical function in sole LUA, however it could resolve impossible. It's very restricting to work without source editing.
I'll take a look when I get home though
|
|
|
Post by bruno on Feb 10, 2015 14:17:09 GMT
They're not using latest TFS, if you take a look into the code you posted as you can see it doesn't remove bodies. Funny to see you try to help em though.
|
|
Mist
Ginyu Force
Posts: 113
|
Post by Mist on Feb 10, 2015 14:53:47 GMT
Why are you so envious of me? There is no other reason for these insults, why do you hate me for resolving things you could not resolve?
If you read and comprehended my point it was not to edit the source, or whatever your thought of my intention was. I was merely posting a reference to the latest function that actually cleans the map, if one goes through this function one could think how to convert this idea to LUA, I haven't even looked over the function as it was not the point. And if it does not remove bodies, then it's just a bonus right?
|
|
|
Post by Fixuki on Feb 10, 2015 16:13:59 GMT
They're not using latest TFS, if you take a look into the code you posted as you can see it doesn't remove bodies. Funny to see you try to help em though. This is the whole point of this thread, the clean NOT removing bodies.
|
|