Jump to content

Mafuyu

Member
  • Posts

    90
  • Joined

  • Last visited

  • Feedback

    0%

About Mafuyu

Informations

  • Gender
    Male

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Mafuyu's Achievements

Collaborator

Collaborator (7/16)

  • Reacting Well
  • Dedicated
  • First Post
  • Collaborator
  • Week One Done

Recent Badges

49

Reputation

  1. shorter text would be better, like DEV instead of developer, SA instead of Server Admin, it kinda ruins the look of it when theres nearly a written book above your name thanks anyway
  2. found it few years ago, sometimes real_time items could disappear in nemeres watchtower. never found any solution or even a topic about it. maybe a year later i found something in the patchnotes from another big server like "fixed a bug causing items disappear in nemeres tower", couldnt really ask anyone about it and i just removed the dungeon. Now 2 weeks ago i found something in the informations from the lungsam server source: "- fix real_time in Nemere's Watchtower" now i know, its a common problem and not only for me. Did someone else found this somehow? or did someone have a fix for this?
  3. dunno why, for me neither detachment nor tuning will work after splitting it up. And yeah, its not that much of changing code but it literally doesnt work anymore. Even with debug outputs, none of the 2 functions gets triggered after splitting it up. Any idea? case USE_TUNING: { LPITEM item2 = nullptr; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsExchanging() || item2->IsEquipped()); return false; #ifdef __STONE_REFINE_FIX__ if (item->GetVnum() >= 28330 && item->GetVnum() <= 28643) // fix { ch->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Du kannst Steine nur bei Seon-Pyeong verbessern.")); return false; } #endif #ifdef __RITUAL_STONE__ if (item->GetValue(0) == RITUALS_SCROLL) { if (item2->GetLevelLimit() < item->GetValue(1)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Du kannst nur Items über Lv. 80 verbessern.")); return false; } else RefineItem(item, item2); } #endif else { RefineItem(item, item2); } } break; // DETACH_METIN_REFACTORING //trennung von USE_DETACHMENT und USE_TUNING in 2 funktionen case USE_DETACHMENT: { LPITEM item2 = nullptr; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsExchanging() || item2->IsEquipped()); return false; ChatPacket(CHAT_TYPE_INFO, "test 3"); #ifdef ENABLE_SOULBIND_SYSTEM if (item2->IsBind() || item2->IsUntilBind()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Du kannst keine Steine aus seelengebundenen Items entfernen.")); return false; } #endif #ifdef __SASH_SYSTEM__ if (item->GetValue(0) == SASH_CLEAN_ATTR_VALUE0) { if (!CleanSashAttr(item, item2)) return false; return true; } #endif DetachMetin(item, item2); } break; // END_OF_DETACH_METIN_REFACTORING ------------------------------ bool CHARACTER::RefineItem(LPITEM pkItem, LPITEM pkTarget) { if (!CanHandleItem()) return false; #ifdef ENABLE_AURA_SYSTEM if (pkTarget->GetType() == ITEM_COSTUME && pkTarget->GetSubType() == COSTUME_AURA) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("AURA_ITEM_CANNOT_BE_REFINED_THIS_WAY")); return false; } #endif ChatPacket(CHAT_TYPE_INFO, "test 5"); #ifdef ENABLE_REFINE_FAILSTACK int failstacks = DBManager::Instance().GetFailStacks(this); #endif // MUSIN_SCROLL if (pkItem->GetValue(0) == MUSIN_SCROLL) #ifdef ENABLE_REFINE_FAILSTACK RefineInformation(pkTarget->GetCell(), REFINE_TYPE_MUSIN, pkItem->GetCell(), failstacks, failstacks / 100); #else RefineInformation(pkTarget->GetCell(), REFINE_TYPE_MUSIN, pkItem->GetCell()); #endif // END_OF_MUSIN_SCROLL #ifdef ENABLE_CAN_USE_SCROLL_FOR_501_REFINESET else if (pkItem->GetValue(0) == CHUKBOK_SCROLL) #ifdef ENABLE_REFINE_FAILSTACK RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell(), failstacks, failstacks / 100); #else RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); #endif #endif else if (pkItem->GetValue(0) == HYUNIRON_CHN) #ifdef ENABLE_REFINE_FAILSTACK RefineInformation(pkTarget->GetCell(), REFINE_TYPE_HYUNIRON, pkItem->GetCell(), failstacks, failstacks / 100); #else RefineInformation(pkTarget->GetCell(), REFINE_TYPE_HYUNIRON, pkItem->GetCell()); #endif else if (pkItem->GetValue(0) == BDRAGON_SCROLL) { if (pkTarget->GetRefineSet() != 702) return false; #ifdef ENABLE_REFINE_FAILSTACK RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell(), failstacks, failstacks / 100); #else RefineInformation(pkTarget->GetCell(), REFINE_TYPE_BDRAGON, pkItem->GetCell()); #endif } #ifdef __RITUAL_STONE__ else if (pkItem->GetValue(0) == RITUALS_SCROLL) { if(pkTarget->GetLevelLimit() <= pkItem->GetValue(1)) return false; #ifdef ENABLE_REFINE_FAILSTACK RefineInformation(pkTarget->GetCell(), REFINE_TYPE_RITUALS_SCROLL, pkItem->GetCell(), failstacks, failstacks / 100); #else RefineInformation(pkTarget->GetCell(), REFINE_TYPE_RITUALS_SCROLL, pkItem->GetCell()); #endif } #endif else { if (pkTarget->GetRefineSet() == 501) return false; #ifdef ENABLE_REFINE_FAILSTACK RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell(), failstacks, failstacks / 100); #else RefineInformation(pkTarget->GetCell(), REFINE_TYPE_SCROLL, pkItem->GetCell()); #endif } return false; } bool CHARACTER::DetachMetin(LPITEM pkItem, LPITEM pkTarget) { //if (!(pkItem || pkTarget)) // return false; //deactivated just for testing ChatPacket(CHAT_TYPE_INFO, "test 123"); LogManager::instance().ItemLog(this, pkTarget, "USE_DETACHMENT", pkTarget->GetName()); bool bHasMetinStone = false; #ifdef ENABLE_EXTENDED_SOCKETS for (int i = 0; i < ITEM_STONES_MAX_NUM; i++) #else for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++) #endif { long socket = pkTarget->GetSocket(i); if (socket > 2 && (DWORD)socket != ITEM_BROKEN_METIN_VNUM) { bHasMetinStone = true; break; } } if (bHasMetinStone) { #ifdef ENABLE_EXTENDED_SOCKETS for (int i = 0; i < ITEM_STONES_MAX_NUM; i++) #else for (int i = 0; i < ITEM_SOCKET_MAX_NUM; i++) #endif { long socket = pkTarget->GetSocket(i); if (socket > 2 && (DWORD)socket != ITEM_BROKEN_METIN_VNUM) { ChatPacket(CHAT_TYPE_INFO, "test 2"); AutoGiveItem(socket); #ifdef ENABLE_BROKEN_METIN_ITEM pkTarget->SetSocket(i, ITEM_BROKEN_METIN_VNUM); #endif pkTarget->SetSocket(i, 1); } } pkItem->SetCount(pkItem->GetCount() - 1); ChatPacket(CHAT_TYPE_INFO, "successfull 1"); return true; } else { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Es gibt keinen Stein zum Herausnehmen. ")); return false; } } refine window wont open up again, stone detachment opens the yes/no dialog window but doesnt do anything after pressing yes. No crash, no syserr dunno why i cant just fkn edit my comment and need to double post (thanks metin2dev) but you fked up your tut with wrong ;'s case USE_TUNING: { LPITEM item2 = nullptr; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsExchanging() || item2->IsEquipped()); <--- ??? return false; RefineItem(item, item2); } break; // DETACH_METIN_REFACTORING case USE_DETACHMENT: { LPITEM item2 = nullptr; if (!IsValidItemPosition(DestCell) || !(item2 = GetItem(DestCell))) return false; if (item2->IsExchanging() || item2->IsEquipped()); <---- ??? return false; DetachMetin(item, item2); } break; // END_OF_DETACH_METIN_REFACTORING wont work this way
  4. shouldnt it be enough if you have clientversion implemented, to use this in input_main: case HEADER_CG_MOVE: Move(ch, c_pData); if (g_bCheckClientVersion) { if (0 != g_stClientVersion.compare(d->GetClientVersion())) // @fixme103 (version > date) { ch->ChatPacket(CHAT_TYPE_NOTICE, LC_TEXT("clientversion wrong!")); d->DelayedDisconnect(1); // @fixme103 (10); } } break; ? let them login with a different client, as soon as they tried to move ingame, they get kicked
  5. my "fix" is more like a workaround which is not the best solution for the 5% on every server which uses a old toshiba notebook from 2006. But there are no better solutions out (yet!). Would be interesting if someone with more knowledge will get into the problem and may find a better solution without breaking the rest of the game and without more complicated workarounds but as far as i can say, on my last 3 projects, i had never any issues with my fix and no users complaining about heavy gpu/cpu usages in background or heavy lags after minimizing the client. i would say my "fix" can be used without any worries.
  6. even with 9.0f we get false positives^^ way less but still few i get ranges over 13 with 2hand weapons sometimes^^ dunno, somehow only on few maps. guess have to crank it even higher
  7. its already public. Dont know where it was but i have something like that already implemented month ago. i guess it was here on metin2dev
  8. dunno how i should post a gif for it, we are simply using bravery cape at the end of red forest and we get hundreds of spam messages in chat from the fix. The thing is, i didnt removed the return in the function so the outranged mobs should still gets "ignored" but for us, every mob dies fine. Its not like we are hitting 20 times on specific mobs and they wont die because of desync so they should be all in range but i dont know why we then get all those false positives. Can you give me your red forst mob folders so i can check their accumulation and compare with mine. Also we have this issue with the red forest boss as you mentioned.
  9. Bugged bro. Pulling mobs on maps with many mobs gets always detected. For us, red forest every pull with bravery cape triggers the "fix".
  10. on the git page theres a "fixxed" files for "more safebox pages", check it out. This fix is the new way he handle the grids in his fixxed safebox.cpp. Adapt it to your file and u good2go
  11. yeah because its absolutly not necessary to extend it to dword or int because im only using 225 length, not even close to 255 so this could not be the problem edit: i now implemented your tut for 6 pages and DWORD but still have the absolute same problem: edit: the problem was safebox.cpp the grids. Fixxed
  12. the whole storage data type is byte, i didnt extended my safebox size over 255 so i didnt had to change byte to dword or int.
  13. any ideas? someone has the same problem? giving 2 size items in last slot will made it look like this. Same with 3 size items with only 2 slots left on one side. @ Maliany idea?
  14. ---- solved if anyone has problem with size 2 and 3 items in shopex with 80 slot npcs, change CGrid grid(5, 9); in shop_manager.cpp to: CGrid grid(10, 9);
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.