Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 01/17/21 in all areas

  1. M2 Download Center Download Here ( Internal ) Hello everyone. Yesterday @Doonqa asked me if I could reverse this function of the game from the official binary. Known fact these functions are necessary and obligatory for the multilanguage systems and I have them since years ago, here they are. Download Edit: I have found something related to the arabic codepage, so I just post it here: <! It has not been tested. !> Any problem appears, comment box is down below ⬇ Cheers!
    15 points
  2. I've updated the tutorial by adding a new branch called vsimpl: [Hidden Content] This will be very helpful for the following reasons: Automatic cythonization when you compile (via pre-compilation event) Only edited cythonized files will be compiled, and not everything every time i.e. I've previously fixed a bug in the main branch, so now only edited python files will be re-cythonized and not everything every time
    5 points
  3. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Renewal Version:
    3 points
  4. Don't bother other people. First of all, we know that the system is working properly. I've seen many people are using it. You guys are using martysama source. I don't have that src so I can't help you for that kind of things. Probably problem is with packets.
    3 points
  5. M2 Download Center Download Here ( Internal ) Download Here ( GitHub )
    2 points
  6. M2 Download Center Download Here ( Internal ) Download Here Useful to create in-game renders
    2 points
  7. M2 Download Center Download Here ( Internal ) InstanceBase.h find NAMECOLOR_WAYPOINT, add NAMECOLOR_METIN, PythonCharacterManagerModule.cpp find PyModule_AddIntConstant(poModule, "NAMECOLOR_MOB", CInstanceBase::NAMECOLOR_NORMAL_MOB); add PyModule_AddIntConstant(poModule, "NAMECOLOR_METIN", CInstanceBase::NAMECOLOR_METIN); InstanceBaseEffect.cpp find else if (IsPoly()) { return NAMECOLOR_MOB; } add else if (IsStone()) { return NAMECOLOR_METIN; } PythonMiniMap.cpp find m_NPCPositionVector.clear(); add m_MetinPositionVector.clear(); find else if (pkInstEach->IsNPC()) { aMarkPosition.m_fX = ( m_fWidth - (float)m_WhiteMark.GetWidth() ) / 2.0f + fDistanceFromCenterX + m_fScreenX; aMarkPosition.m_fY = ( m_fHeight - (float)m_WhiteMark.GetHeight() ) / 2.0f + fDistanceFromCenterY + m_fScreenY; m_NPCPositionVector.push_back(aMarkPosition); } add else if (pkInstEach->IsStone()) { aMarkPosition.m_fX = ( m_fWidth - (float)m_WhiteMark.GetWidth() ) / 2.0f + fDistanceFromCenterX + m_fScreenX; aMarkPosition.m_fY = ( m_fHeight - (float)m_WhiteMark.GetHeight() ) / 2.0f + fDistanceFromCenterY + m_fScreenY; m_MetinPositionVector.push_back(aMarkPosition); } find // NPC STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_NPC)); aIterator = m_NPCPositionVector.begin(); while (aIterator != m_NPCPositionVector.end()) { TMarkPosition & rPosition = *aIterator; m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY); m_WhiteMark.Render(); ++aIterator; } add // Metin STATEMANAGER.SetRenderState(D3DRS_TEXTUREFACTOR, CInstanceBase::GetIndexedNameColor(CInstanceBase::NAMECOLOR_METIN)); aIterator = m_MetinPositionVector.begin(); while (aIterator != m_MetinPositionVector.end()) { TMarkPosition & rPosition = *aIterator; m_WhiteMark.SetPosition(rPosition.m_fX, rPosition.m_fY); m_WhiteMark.Render(); ++aIterator; } PythonMiniMap.h find TInstanceMarkPositionVector m_NPCPositionVector; add TInstanceMarkPositionVector m_MetinPositionVector; root/colorinfo.py find CHR_NAME_RGB_WARP = (136, 218, 241) add CHR_NAME_RGB_METIN = (240, 255, 255) You can select another color from here root/introloading.py find chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT, add chrmgr.NAMECOLOR_METIN : colorInfo.CHR_NAME_RGB_METIN,
    1 point
  8. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Prepared src packages: *Granny 2.11.8 *libjpeg-9a *Python-2.7 *Crypto++ 8.4.0 *DevIL-1.6.5 *lzo-2.10 Archive password: black
    1 point
  9. M2 Download Center Download Here ( Internal 2.9 ) Download Here ( Last Release ) This is an archiver I've created, and it looks quite stable so far. The PackMakerLite (PML) supports type 0-1-2-3-4-5-6. As a summarize, the metin2 types are handled like this: Type 0 - only storage (no encryption/compression; it can be read fully from the .epk) Type 1 - compressed - lzo(file) Type 2 - compressed and encrypted - xtea(lzo(file)) Type 3 - encrypted with Panama - you must save an .iv key server-side in the panama/ folder. (content readable only after auth phase) The official used it only for patch2. Type 4 - encrypted with a mix of ciphers (cshybridcrypt) - you must save a .dat key server-side in the package/ folder. (content readable only after auth phase) Practically all the metin2_patch files. Type 5 - like type 4, but a server-side map/<map_name> is also provided. (content readable only after accessing the <map_name> map as a player) The official used it only for the catacomb data. Type 6 - compressed and encrypted - xtea(snappy(file)) Usage: Its settings (xtea keys, extensions, pack types to use) can be changed inside PackMakerLite.json: You can actually integrate the tool in the menu context (running the .reg files) for packing folders and unpacking .eix files: Remove "--nolog" from the .bat files if you want to see the logs again. Command-line options get overwritten by JSON config options. Last but not least: since the client handles all the filenames in lowercase, this tools automatically converts them as well. Thanks also to: blackdragonx61 / Mali - type4-5 extract code / type 6 compress code metin2team - type6 extract code By martysama0134
    1 point
  10. When you reset your skill group more then once in a row, you will get this weird bug when you cant see the real skill level + cant use the skills until you relog. With this fix you dont need to relog anymore. Video explaining the bug: [Hidden Content] To fix that, we need to change just 1 line - in file ClientSRC/UserInterface/PythonNetworkStreamPhaseGame.cpp in the function bool CPythonNetworkStream::RecvChangeSkillGroupPacket() change the line CPythonPlayer::Instance().NEW_ClearSkillData(); to CPythonPlayer::Instance().NEW_ClearSkillData(true); This bug happened because old skill data were not removed from m_skillSlotDict. With passing parameter "true" to function NEW_ClearSkillData, everything (including old bugged skill data) will be removed from m_skillSlotDict. Then function RefreshCharacter from uiCharacter.py will automatically insert correct data to the m_skillSlotDict.
    1 point
  11. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) [Hidden Content]
    1 point
  12. M2 Download Center Download Here ( Internal ) With this easy change laptop players can now play the game with their dedicated video card instead of the integrated one. In userinterface.cpp add: extern "C" { __declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001; __declspec(dllexport) int AmdPowerXpressRequestHighPerformance = 1; } In your client add the files from the Download Center from above. This is a pseudo-driver module that intends to improve compatibility and stability in games using Direct3D 8 for rendering by converting all API calls and low-level shaders to equivalent Direct3D 9 ones. By that it also opens those games to new possibilities from proven modding tools written for Direct3D 9, including ReShade. The source is: [Hidden Content] It's been used for years by many servers, no issues have been reported.
    1 point
  13. Hello, int CInputMain::Analyze(LPDESC d, BYTE bHeader, const char * c_pData) if (ch && ch->IsPC()) { if (get_global_time() < ch->analyze_protect) { ch->analyze_protect_count = ch->analyze_protect_count + 1; ch->ChatPacket(CHAT_TYPE_INFO, "<test server> analyze_protect_count. Count %d", ch->analyze_protect_count); if (ch->analyze_protect_count >= 300) { ch->analyze_protect_count = 0; d->SetPhase(PHASE_CLOSE); return (0); } } else ch->analyze_protect_count = 0; ch->analyze_protect = get_global_time() + 1; } In char.h int analyze_protect; int analyze_protect_count; In void CHARACTER::Initialize() and Destroy analyze_protect = 0; analize_protect_count = 0;
    1 point
  14. Dear users, First of all, thank you for taking a look into our topic. Nirvana is our new server and it international we work since 1 month for translations now just DE,TR,EN,RO,ES,PL,IT support our game next days can add new langs. Our server before Nirvana is Dirilis this server just for turks and this server with turkey's most player server if you wonder dirilis look this word event video. The grand opening will take place on: 29.01.2021 - 19:00 CET You may visit us on the official links: Homepage Discord Presentation
    1 point
  15. 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!
    1 point
  16. Hi guys, There's a guy that is blackmailing all servers that are using my offlineshop. Not just my clients, but also those who downloaded it from some idiot's leak. I'm sharing the fix here as 60/70% of the servers currently open use my shop. Fix: Random User : Why are u sharing it using metin2dev? Answer: I m bored to see this guy make money by blackmailing. Random User part2: Is it right to share this fix even with those who are not your customer? Answer: I honestly think that anyone who uses the shop without permission, taking it from sources different from me, is not worthy of help from me, however I can't even allow so many people to be fooled by this idiot boy. Random User part3: Do you know who is blackmailing the p.server founders? Answer: Yes, i know his discord account : Mădălin#2332 I recommend to don't pay him at all. I would like to know other accounts of this guy, if anyone know some please report to me. I also have the proofs about what i m talking. BIG DISCLAIMER: Test the code on a test-sever before to move it on a live-server. Thanks to @VegaS™ for the tip about cooldown
    1 point
  17. Those have not got leaked until now. You can use some informations from the dump I used to add to the official packs and some exercise to make it done how it is working.
    1 point
  18. Metin2Dev Metin2Download Good Morning, Bonjour, صباح الخير, Hallo, Witaj, Salut, Merhaba, Здравствуйте, Buongiorno, Buenos dias, 여보세요, 你好, Olá... Important update of Metin2 Dev! The End... Dead Download Links & Dead Screenshots! I am announcing the end of several weeks of work which began in 2020. You may have noticed that recently I have re-published many topics on the forum, many releases. I saved the releases archives and I have divided topics for better ordering. Over the past few weeks, I have done a systematic check of all the tutorials and releases in Metin2 Dev. Metin2 Dev is made up of more than 1800 tutorials and releases dispersed in several categories, more than half of which are downloadable resources... These resources are necessary for the proper functioning of the forum and our favorite game! All the screenshots where are-uploaded when they were not hosted on our image host! All the archives have been saved on Metin2 Dev's servers, all our download links will now start with: https://metin2.download/, we always keep the original links! Your browser may get an alert when a file is not uploaded regularly, don't worry, it's safe to download! What does that mean? This means that every release, every download link will be functional in releases category! I will save the new download links myself, Funky Emulation or Metin2 Dev, every link works and I will save every new share! Statistics: +1800 Verified Topics +1500 Confirmed Topics +300 Topics need to be Fixed +1091 Files Saved +1200 Screenshots Saved What actions did I take? If the topic had a dead download link: We Need You I saved the file If the topic had game improvement scripts in code tags, I created archives for Metin2 Download Center while keeping the original topic, it was a mini system All Githubs All Archives Quests in .lua format I uploaded it to Metin2 Download Center I named the file, assigned a developer and a category on Metin2 Download Center I assigned the topic ID of Metin2 Dev / Funky Emulation for each file I edited the topic to add the Metin2 Download Center banner and the new download link I also saved the screenshots, I downloaded the image to my computer I uploaded the image to our image host and replaced the old images with the new ones I have reformatted some topics Made With A spring cleaning and a summer sweetness... This allowed us to clean up the forum topics, we moved many topics that were either obsolete or incomplete or the presence of a damaged download link did not allow us to restore it. I took the opportunity to try to restore the screenshots of the releases, it is always nice to have a preview before downloading, no? I also deleted the passwords from the archives that are downloaded from our servers! That's not all... We continue to rewrite the topics! Our concern today is quality. Unfortunately, this will not happen in a week. You can however participate and propose rewritings! I can't name you all individually, a huge thank you, a thank you to the community, which also participated in the restoration of some topics where the download link was dead. A thank you to @Veltor88 for saving topics, they will not be forgotten in the abyss of Metin2! As a thank you, he gets a rank similar to Honorable Member. He is now a Distinguished Member! Thanks also to @Tatsumaru for the Christmas logo! #DeadDownloadLink #NeverAgain Spoiler #WeNeedYou Without you, we are nothing! PS: I had to buy several computer mouse by dint of clicking... Sincerly, ASIKOO
    1 point
  19. M2 Download Center Download Here ( Internal ) Download
    1 point
  20. M2 Download Center Download Here ( Internal ) Download Virustotal
    1 point
  21. You don't need server source for this, you can do it directly via source client. For being in real time you'll need to do a boolean variable inside of CInstanceBase class which is updated from RecvAffectAddPacket, RecvAffectRemovePacket for each instance. So with that you could do a function like chrmgr.IsPoisoned(self.GetTargetVID()) which will result the status of poison for specific vid and check it in OnUpdate. Btw, the implementation is very bad, if i would want to do this, i don't touch the hpGauge, just add a new gauge bar over the hpGauge and hide/show it, that's all, could be done just with few lines, without the python. [Hidden Content]
    1 point
  22. Something I wrote in a hurry. introLogin.py (add it to the end of the lines) [Hidden Content]
    1 point
  23. M2 Download Center Download Here ( Internal ) Someone wondered if I could do this script for him, i don't know the reason (maybe 4 find and extract some things), enjoy. Full repository: [Hidden Content]
    1 point
  24. M2 Download Center Download Here ( Internal ) It's really long time i released some mobs, so today i will share with you my naga pack. It including 4 mobs with effects + 1 boss. I didn't make sound files, i have no time for it, maybe i make it during christmas. I will have a little free time then. You can use it how u want. You need granny 2.8+! I don't support old granny anymore. Download here
    1 point
  25. Wrong²²²² You can speed up compilation. But it's not that easy. Do you even know what -j20 means? It's an optimization for you if you have more threads from your cpu. You can let gcc compile more cpp-files simultaneously. You'd never just make -j20 because you feel like doing it. Normally you'd calculate the value for yourself. -jx, where x = number of cpu threads * 1.5 at physical hdd's but you can play with it a little bit. It's just for you to use different values and check how much time passes. -j20 makes no sense. Neither do you have that many threads nor would a normal hdd (ssd could possibly do it) handle it. Additionally, the compiler caches it's tasks into your memory. The more memory you can serve, the faster it can compile your project. Play with compiler flags. Use ccache, that'll also speed it up. Always benchmark how fast your compiler does the job. Optimizing it isn't just copy-pasta everything from everywhere, it's more like playing with it and testing how everything affects your compiling time. Also newer versions of gcc/clang are much faster. Feel free to try it out.
    1 point
  26. M2 Download Center Download Here ( Internal )
    1 point
  27. No, I'm using sql proto
    0 points
  28. Then buy that offlineshop from Ikarus and don't cry.
    0 points
  29. Add -w to your CFLAGS in the gamecore MAKEFILE to surpass warnings and use gmake -j#server_core_count +1 Example: If my server has a dual-core processor ill use the command: gmake -j3 So its gmake -jcores +1
    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.