Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 12/18/20 in all areas

  1. I spent over 2 weeks now on it and even 50% is not done, but progress is good, this is just demo from one part of the dungeon.
    4 points
  2. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) I would not recommend using this as it's missing many features, head over to Mali's release for an updated version. [Hidden Content]
    3 points
  3. Our mapper made a map with really-really a lot of effects on it. Some of our testers mentioned that the game started to lag for them on that map so much. I checked it in debug mode and actually the FPS dropped to actually 0. I started to profile the game what could be the bottleneck and so that I found the effects. When the game is dealing with effects for maps most of the time went in CMapOutdoor::RenderEffect. In this function it calls RenderEffects for each Area around you (that is 9 normally if you're not on some edge area). In the Area's render effect somewhy they did the effect update (but why?) and that took the most of time. We didn't wanna make the map less beautiful so I fixed it in the code. Now the game only updates and renders effects that are around your character and are not in the fog zone. With this we brought back our FPS to normal and we can have maps with a lot of effects too. First, open EffectLib/EffectInstance.h and add this to CEffectInstance class: const D3DXMATRIX& GetGlobalMatrix() const { return m_matGlobal; }; Now go to GameLib/Area.cpp and add these to the includes #include "../UserInterface/StdAfx.h" #include "../UserInterface/PythonCharacterManager.h" #include "../UserInterface/PythonBackground.h" Now modify CArea::__UpdateEffectList function to look like this void CArea::__UpdateEffectList() { int peNum; float pfStart, pfEnd, pfFarClip; D3DXVECTOR3 chrPos; CPythonBackground::instance().GetDistanceSetInfo(&peNum, &pfStart, &pfEnd, &pfFarClip); CInstanceBase* pInst = CPythonCharacterManager::instance().GetMainInstancePtr(); if (!pInst) return; chrPos = pInst->GetGraphicThingInstanceRef().GetPosition(); CEffectManager& rkEftMgr=CEffectManager::Instance(); TEffectInstanceIterator i; for (i = m_EffectInstanceMap.begin(); i != m_EffectInstanceMap.end();) { CEffectInstance * pEffectInstance = i->second; const D3DMATRIX& gMatrix = pEffectInstance->GetGlobalMatrix(); if (pfStart < GetPixelPositionDistance(chrPos, TPixelPosition(gMatrix._41, gMatrix._42, gMatrix._43))) { pEffectInstance->Hide(); ++i; continue; } pEffectInstance->Show(); pEffectInstance->Update(); if (!pEffectInstance->isAlive()) { i = m_EffectInstanceMap.erase(i); rkEftMgr.DestroyUnsafeEffectInstance(pEffectInstance); } else { ++i; } } } Hope you guys like it and will be useful!
    3 points
  4. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) [Hidden Content]
    2 points
  5. M2 Download Center Download Here ( Internal ) Password: metin2.dev It's a regen creator, link and image updated. Download: [Hidden Content] Image (old): Image (new):
    2 points
  6. UPDATE: you can now delete by right click radius is shown around your mouse pointer Download updated, but here's the link again: [Hidden Content] @ASIKOO can you please update it in the Download Center too?
    2 points
  7. M2 Download Center Download Here ( Internal ) Hey. i wanted to give you something, so i simply wrote the code for it: Target Sys:
    1 point
  8. M2 Download Center Download Here ( Internal ) GitHub repository: [Hidden Content]
    1 point
  9. hello guys i want so ask something , i want to install new mobs in metin but the wont work the game crash evry time when i try so i wana make sure iam doing right - when you add monster you have to 1 add his file in game / monster2 2 add his info in mobs_proto/ in local and root 3 add his id in /NPCLIST inside the root 4 add his mob_names/proto inside server side / in conf thats all right?? and pleas if some one know a video how or something .. make a commint thank you -
    1 point
  10. In the item_proto value0: 400/600 depends on the random number calculation ratings.
    1 point
  11. try pkg install devil otherwise check your path to DevIL in "Makefile" and make sure it exists in your "Extern" folder
    1 point
  12. Well it gaves me really a lot of inspiration!!
    1 point
  13. I would warn you however not to do ANY change into the platform related includes, it can backslash at any moment, even though the change is minimal, you don't know what it can break. For me it only happened when I misplaced the includes.
    1 point
  14. M2 Download Center Download Here ( Internal ) Release Free Map Little City, without exp zone and without pvp zone. You can use it for trade or little capital map. Dowload: [Hidden Content] ScreenShoot:
    1 point
  15. Here're the references to understand how it's working step-by-step: char.cpp [Hidden Content] constants.cpp #define MAX_EXP_DELTA_OF_LEV 31 #define PERCENT_LVDELTA(me, victim) aiPercentByDeltaLev[MINMAX(0, (victim + 15) - me, MAX_EXP_DELTA_OF_LEV - 1)] #define PERCENT_LVDELTA_BOSS(me, victim) aiPercentByDeltaLevForBoss[MINMAX(0, (victim + 15) - me, MAX_EXP_DELTA_OF_LEV - 1)] constants.cpp const int aiPercentByDeltaLevForBoss_euckr[MAX_EXP_DELTA_OF_LEV] = { 1, // -15 0 [...] 180 // 15 30 }; const int aiPercentByDeltaLev_euckr[MAX_EXP_DELTA_OF_LEV] = { 1, // -15 0 [...] 180 // 15 30 }; locale_service.cpp if (!aiPercentByDeltaLevForBoss) aiPercentByDeltaLevForBoss = aiPercentByDeltaLevForBoss_euckr; if (!aiPercentByDeltaLev) aiPercentByDeltaLev = aiPercentByDeltaLev_euckr;
    1 point
  16. M2 Download Center Download Here ( Internal ) Download: [Hidden Content]
    1 point
  17. Go to your binary source > EterPythonLib > PythonGridSlotWindow.cpp Search this : DWORD dwSlotNumber = UI::CWindowManager::Instance().GetAttachingSlotNumber(); Add under : if (dwSlotNumber > 44) { if (dwSlotNumber < 90) { dwSlotNumber -= 45; } else if(dwSlotNumber < 135) { dwSlotNumber -= 90; } else if (dwSlotNumber < 180) { dwSlotNumber -= 135; } } Search this : BOOL CGridSlotWindow::GetPickedSlotPointer(TSlot ** ppSlot) And replace the entire function with this : BOOL CGridSlotWindow::GetPickedSlotPointer(TSlot ** ppSlot) { if (!UI::CWindowManager::Instance().IsAttaching()) return CSlotWindow::GetPickedSlotPointer(ppSlot); BYTE byWidth, byHeight; UI::CWindowManager::Instance().GetAttachingIconSize(&byWidth, &byHeight); std::list<TSlot*> SlotList; if (!GetPickedSlotList(byWidth, byHeight, &SlotList)) return FALSE; TSlot * pMinSlot = NULL; //DWORD dwSlotNumber = UI::CWindowManager::Instance().GetAttachingSlotNumber(); //DWORD dwAttachingItemIndex = UI::CWindowManager::Instance().GetAttachingIndex(); for (std::list<TSlot*>::iterator itor = SlotList.begin(); itor != SlotList.end(); ++itor) { TSlot * pSlot = *itor; if (!pMinSlot) { pMinSlot = pSlot; } else { if (pSlot->dwSlotNumber < pMinSlot->dwSlotNumber && pSlot->dwItemIndex != pMinSlot->dwItemIndex) { pMinSlot = pSlot; } else { if (!pMinSlot->isItem && pSlot->isItem && pSlot->dwItemIndex == pMinSlot->dwItemIndex) { pMinSlot = pSlot; } } } } if (!pMinSlot) { return FALSE; } else { TSlot * pCenterSlot; if (!GetSlotPointer(pMinSlot->dwCenterSlotNumber, &pCenterSlot)) return FALSE; *ppSlot = pCenterSlot; // ?? ???? ?? ?? ???.. if (UI::CWindowManager::Instance().IsAttaching()) { DWORD dwSlotNumber = UI::CWindowManager::Instance().GetAttachingSlotNumber(); if (dwSlotNumber > 44) { if (dwSlotNumber < 90) { dwSlotNumber -= 45; } else if (dwSlotNumber < 135) { dwSlotNumber -= 90; } else if (dwSlotNumber < 180) { dwSlotNumber -= 135; } } if (dwSlotNumber == pCenterSlot->dwSlotNumber) { *ppSlot = pMinSlot; } } } return TRUE; } Hope i helped.
    1 point
  18. I would do it like this, in a simple way, without useless code, as i said in another forum too. [Hidden Content]
    1 point
  19. [C++ Binary] #include "../UserInterface/PythonBackground.h" std::string stringMapName = CPythonBackground::Instance().GetWarpMapName(); if (stringMapName == "season1/metin2_map_oxevent") // do something [C++ Server] if (ch->GetMapIndex() == 113) // do something [Python] import background if background.GetCurrentMapName() == "season1/metin2_map_oxevent": # do something [Lua] if pc.get_map_index() == 113 then -- do something
    1 point
  20. Welcome, mate ! You'll like it here xD
    0 points
×
×
  • 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.