Jump to content

CORKY

Premium
  • Posts

    104
  • Joined

  • Last visited

  • Days Won

    3
  • Feedback

    0%

CORKY last won the day on December 3 2025

CORKY had the most liked content!

About CORKY

Informations

  • Gender
    Male
  • Country
    South Korea
  • Nationality
    Nigerian

Recent Profile Visitors

4641 profile views

CORKY's Achievements

Experienced

Experienced (11/16)

  • Very Important Person Rare
  • Very Popular Rare
  • Reacting Well
  • Dedicated
  • First Post

Recent Badges

1.8k

Reputation

  1. Does anybody have this mount? It should be named ratedr203_shogun_mount in files. Thanks
  2. Patch 25.2.17.0 Alternative download links → Metin2.Download
  3. Patch 25.2.14.0 Alternative download links → MEGA
  4. If your CPU supports it, the boolean will be set to true, check the entire commit and you will see it // CPU check int cpuInfo[4] = { 0 }; __cpuid(cpuInfo, 1); CPU_HAS_SSE2 = cpuInfo[3] & (1 << 26);
  5. You'd have to remove those changes you did from that topic to see if it matters or not. Related to the actual fix, I've tested the actual problem when I saw the topic. After the changes I've done, I couldn't replicate the issue anymore.
  6. // ActorInstance.cpp -> void CActorInstance::Die() void CActorInstance::Die() { if (m_isRealDead) return; if (__IsMoveMotion() || __GetMotionType() == CRaceMotionData::TYPE_SKILL) // Clear the current motion if we are moving OR casting a skill Stop(); [...] } This should fix the issue on the client, the animation should play now on the victim's screen. Then, the character appearing and disappearing is probably because you have a check on server something like this: if (ch->IsPC() && ch->IsDead()) { SPDLOG_WARN("MOVE: {} trying to move as dead", ch->GetName()); ch->Show(ch->GetMapIndex(), ch->GetX(), ch->GetY(), ch->GetZ()); ch->Stop(); return; } So, based on whatever you want to achieve, either remove or modify how you handle the "ghostmode" to fix the appearing/disappearing of the character
  7. Patch 25.1.6.0 [Hidden Content]
  8. Drop the manual passing through the data to not get confused, use the same struct instead, both on client and server: // Server: input_main.cpp -> int CInputMain::Shop case SHOP_SUBHEADER_CG_SELL2: { const TPacketCGShopSell* p = reinterpret_cast<const TPacketCGShopSell*>(c_pData); sys_log(0, "INPUT: %s SHOP: SELL2", ch->GetName()); CShopManager::instance().Sell(ch, p->wPos, p->wCount, p->bType); return sizeof(TPacketCGShopSell); } // Server & Client: packet.h typedef struct command_shop_sell { WORD wPos; WORD wCount; BYTE bType; } TPacketCGShopSell; // Client: PythonNetworkStreamPhaseGameItem.cpp bool CPythonNetworkStream::SendShopSellPacketNew(WORD wSlot, WORD wCount, BYTE byType) { if (!__CanActMainInstance()) return true; TPacketCGShop PacketShop; PacketShop.header = HEADER_CG_SHOP; PacketShop.subheader = SHOP_SUBHEADER_CG_SELL2; if (!Send(sizeof(TPacketCGShop), &PacketShop)) { Tracef("PacketCGShop Error\n"); return false; } TPacketCGShopSell SellPacket; SellPacket.bType = byType; SellPacket.wCount = wCount; SellPacket.wPos = wSlot; if (!Send(sizeof(TPacketCGShopSell), &SellPacket)) { Tracef("PacketCGShopSell Error\n"); return false; } Tracef(" SendShopSellPacketNew(wSlot=%d, byCount=%d, byType=%d)\n", wSlot, wCount, byType); return SendSequence(); } // Client: PythonNetworkStreamModule.cpp PyObject* netSendShopSellPacketNew(PyObject* poSelf, PyObject* poArgs) { int iSlotNumber; if (!PyTuple_GetInteger(poArgs, 0, &iSlotNumber)) return Py_BuildException(); int iCount; if (!PyTuple_GetInteger(poArgs, 1, &iCount)) return Py_BuildException(); int iType; if (!PyTuple_GetInteger(poArgs, 2, &iType)) return Py_BuildException(); CPythonNetworkStream& rkNetStream = CPythonNetworkStream::Instance(); rkNetStream.SendShopSellPacketNew(iSlotNumber, iCount, iType); return Py_BuildNone(); } [...] void initnet() { static PyMethodDef s_methods[] = { [...] { "SendShopSellPacketNew", netSendShopSellPacketNew, METH_VARARGS }, [...] { NULL, NULL, NULL }, }; And double-check the way you're calling the function from python, make sure to pass the correct inventory type inside iType
  9. Patch 25.0.5.0 [Hidden Content]
  10. Patch 24.3.8.0 MEGA.NZ Metin2.Download (unavailable for now)
  11. The option should already be enabled, check the following setting from UserInterface -> Linker -> Manifest File:
  12. A bit off-topic, but would you mind sharing the story with us?
  13. Metin stones have attackspeed for regen spawning. Modify the checks to apply only for player characters: void CActorInstance::__OnMove() { //anticheat01 if (IsPC() && m_fMovSpd > 2.0f) { __asm{ mov eax, 0x444 jmp eax } } //anticheat01 IEventHandler& rkEventHandler=__GetEventHandlerRef(); IEventHandler::SState kState; kState.kPPosSelf=NEW_GetCurPixelPositionRef(); kState.fAdvRotSelf=GetAdvancingRotation(); rkEventHandler.OnMove(kState); } void CActorInstance::__OnAttack(WORD wMotionIndex) { //anticheat01 if (IsPC() && m_fAtkSpd > 1.7f) { __asm{ mov eax, 0x444 jmp eax } } //anticheat01 IEventHandler& rkEventHandler=__GetEventHandlerRef(); IEventHandler::SState kState; kState.kPPosSelf=NEW_GetCurPixelPositionRef(); kState.fAdvRotSelf=GetTargetRotation(); rkEventHandler.OnAttack(kState, wMotionIndex); } Also, I wouldn't recommend this approach. A quick pattern search for mov eax, 0x444 will reveal every function that you do this check, and people can just byte patch it and they'll never get a crash.
  14. Set penetration points to 500 and critical to 200, that should eliminate the "randomness" factor of damage. But some skills (like AMSEOP) have some mechanics that intentionally will deal damage differently. AMSEOP for example will deal more damage when you're hitting from behind. You can remove them easily by searching the skills from their name.
×
×
  • 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.