Jump to content

Search the Community

Showing results for tags 'c++'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Metin2 Dev
    • Announcements
  • Community
    • Member Representations
    • Off Topic
  • Miscellaneous
    • Metin2
    • Showcase
    • File Requests
    • Community Support - Questions & Answers
    • Paid Support / Searching / Recruiting
  • Metin2 Development
  • Metin2 Development
    • Basic Tutorials / Beginners
    • Guides & HowTo
    • Binaries
    • Programming & Development
    • Web Development & Scripts / Systems
    • Tools & Programs
    • Maps
    • Quests
    • 3D Models
    • 2D Graphics
    • Operating Systems
    • Miscellaneous
  • Private Servers
    • Private Servers
  • Uncategorized
    • Drafts
    • Trash
    • Archive
    • Temporary
    • Metin2 Download

Product Groups

  • Small Advertisement
  • Large Advertisement
  • Advertising

Categories

  • Third Party - Providers Directory

Categories

  • Overview
  • Pages
    • Overview
    • File Formats
    • Network
    • Extensions

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Pillory


Marketplace


Game Server


Country


Nationality


Github


Gitlab


Discord


Skype


Website

  1. Hello Metin2 Dev Community. I'm here to present a function to check and return the monster rank. I'm creating my biolog that's why i had to create this function, i know there are other ways to do this but i decided to do it this way. I'm sharing in case someone needs. With best regards, Doose.
  2. SERVER PART: input_main.cpp void CInputMain::PartyUseSkill(LPCHARACTER ch, const char* c_pData) { TPacketCGPartyUseSkill* p = (TPacketCGPartyUseSkill*) c_pData; if (!ch->GetParty()) return; if (ch->GetPlayerID() != ch->GetParty()->GetLeaderPID()) { ch->ChatPacket(CHAT_TYPE_INFO, "<Group> Only the leader can use this function."); return; } switch (p->bySkillIndex) { case PARTY_SKILL_HEAL: ch->GetParty()->HealParty(); break; case PARTY_SKILL_WARP: { if (ch->GetSkillLevel(SKILL_LEADERSHIP) >= 10) { //10 IS THE MIN LEVEL OF LEADERSHIP SKILL TO USE TELEPORT LPCHARACTER pch = CHARACTER_MANAGER::instance().Find(p->vid); if (pch) { ch->GetParty()->SummonToLeader(pch->GetPlayerID()); }else{ ch->ChatPacket(CHAT_TYPE_INFO, "<Teleport> The character is not online."); } }else{ ch->ChatPacket(CHAT_TYPE_INFO, "<Teleport> You need upgrade your leadership skill to use this function."); } } break; } } party.cpp void CParty::SummonToLeader(DWORD pid) { LPCHARACTER l = GetLeaderCharacter(); if (m_memberMap.find(pid) == m_memberMap.end()) { l->ChatPacket(CHAT_TYPE_INFO, "<Teleport> The character is too far."); return; } LPCHARACTER ch = m_memberMap[pid].pCharacter; if (!ch) { l->ChatPacket(CHAT_TYPE_INFO, "<Teleport> The character was not found in your map."); return; } if (ch->IsDead()) { l->ChatPacket(CHAT_TYPE_INFO, "<Teleport> I can't teleport the character if he is dead."); return; } ch->Show(l->GetMapIndex(), l->GetX(), l->GetY()); ch->Stop(); } CLIENT PART: root -> uiparty.py FIND THE __ShowStateButton and: ## Warp if self.stateButtonDict.has_key(self.MEMBER_BUTTON_WARP): button = self.stateButtonDict[self.MEMBER_BUTTON_WARP] button.SetPosition(xPos, y) button.Show() xPos += 23 Thanks to marty sama that sell this for 50€. NOW IT'S COMPLETELY FREE!
  3. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Hi everyone, in my free time I'm trying to upgrade the mainline to most recently webzen releases. This is the Mythic Class of DS, enjoy. [Hidden Content] In order to use it as Webzen does, you need to have implemented:
  4. Reversed From Official Binary A feature created so that each character has a separate config settings [Hidden Content] [Hidden Content]
  5. Hello metin2 Dev. I'm here to present a method on how to create a new passive skill. the design of my own passive won't be shared so i recommend you to create a new one. Here is a gif. So, let's go to the tutorial. And this is how you create a new support skill. Anything you need help with, don't hesitate to write here or to contact. With best regards, Doose.
  6. M2 Download Center Download Here ( Internal ) Nothing much, something quite simple but it gives it’s looks for those who are interested in details, so let’s start with it. Here is a visual appearance of the application window. [Hidden Content] Sorry for the low quality GIF. Here is a bigger view, [Hidden Content] UserInterface/Locale_inc.h UserInterface/PythonApplicationModule.cpp UserInterface/PythonNetworkStream.cpp Client/root/game.py
  7. M2 Download Center Download Here ( GitHub ) Download Here ( MEGA ) Download Here ( Internal ) Hey M2Dev, here is a little statistics overview of the Round Trip Time (RTT) Ping and Packet Loss. Usefully for some, useless for others, so I decided to share it. Preview The image is an example... The results where not captured accurately because they kept updating while I tried to take screenshots. You will not get any PING on localhost. If you find any problems let me know.
  8. M2 Download Center Download Here ( Internal ) Download Here ( Github ) Look at this post: [Hidden Content]
  9. [Hidden Content] Reversed From 22.5.7.0 [Hidden Content] Old New
  10. With these changes you will have the text outlined in chat, it can be read easier. I know it's not the best coding but it works, so if anyone wants to help improving the code it will be much appreciated Image: Download: [Hidden Content]
  11. Hello community ! I found an issue when i was checking ShopEx system. If your pack_tab size is bigger than default m2 / SHOP_HOST_ITEM_MAX_NUM is bigger than default this overflow occurs. This causes a core crash as seen in the screenshot below: [Hidden Content] Solution I use temp buffer for handle better but you can change 8096 too. To solve this problem, you can follow these steps: // In shopEx.cpp -------------------------------------------------------------- // Search char temp[8096]; char* buf = &temp[0]; size_t size = 0; // Change like this TEMP_BUFFER buf(16 * 1024); -------------------------------------------------------------- // Search memcpy(buf, &pack_tab, sizeof(pack_tab)); buf += sizeof(pack_tab); size += sizeof(pack_tab); // Change like this buf.write(&pack_tab, sizeof(pack_tab)); -------------------------------------------------------------- // Search pack.size = sizeof(pack) + sizeof(pack2) + size; // Change like this pack.size = sizeof(pack) + sizeof(pack2) + buf.size(); -------------------------------------------------------------- // Search ch->GetDesc()->Packet(temp, size); // Change like this ch->GetDesc()->Packet(buf.read_peek(), buf.size()); After following these steps, you should have overcome this problem in the ShopEx system. If you have any problems, please leave a comment. Kind regards, Luigina
  12. Download GitHub Repository Temporarily boosts the character's physical attack and / or skill damage. You can learn more about the system from the official wiki page. Thanks to @blackdragonx61 for the reversed effect position.
  13. cross-channel maintenance can be turned on or off. When you start the maintenance, the maintenance screen is instantly displayed to the players who are in the game. The maintenance screen appears for players who log into the game. When you cancel the maintenance, the maintenance screen is closed for all players. M2 Download Center Download Here ( Internal ) [Hidden Content] I coded the system open to development. You can add the reason for maintenance if you want.
  14. M2 Download Center Download Here ( Internal ) Auto refine option when you upgrade the item with SCROLL or on NPC. I did all checks like example : When you have just one scroll in inventory, refine window will be close. When the item is already maximum upgrade. (+8 to +9 just in case will be succes) and more .. Preview: [Hidden Content] Download : [Hidden Content]
  15. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) This is the Level System and Point's for Yohara 1. The maps are empty, in essence it's the system, (without mobs). 2. If you want to add the monsters on the maps you can contact me and, I add the monsters and put your credits, the truth was I was lazy :'(. 3. I can upload updates if you need it. 4. In essence if you are level 1 or higher, you become "Conqueror", otherwise you are a normal player, your job is simply to add that after Hydra, though, I'll add it later. 5. At the moment it calls the normal experience table, since I have not reviewed the officer's experience tables, but if you indicate the tables, I can modify the code and add that part. Images: In GitHub REAMDE. Link: [Hidden Content] You will need a some visual parts, you can with: [Hidden Content] I will continue making updates with information by Official Servers . The system is working properly.
  16. M2 Download Center Download Here ( Internal ) Since some piece of shit ''developer'' decided that it's ok to resell my system, here you go. [Hidden Content] have fun.
  17. Hi there devs, Its been a while since my last topic, and the reason for waking up from my eternal hyper dream is no less significant than a small possible item dupe exploit that is present in the original leaked source, and therefore very likely still present on most of the active servers including the official. I've seen topics from late 2021 where this bug was abused on prestigious international servers, so its for sure known by some people for a long time, moreover even a related partial fix for the exploit is already present on the board: How does it work? How to fix it? I think I filled my quota of talking in the how does it work section above, so without further ado:
  18. This will automatically add lamp effect(fire_ob-b1-013-lamp02.mse) to lamp objects(ob-b1-013-lamp02.gr2) [Hidden Content] [Hidden Content] If you use official packs, use these CRCS and skip register part
  19. M2 Download Center Download Here ( Internal ) Download Here ( GitHub )
  20. Download Hello everyone, Some time ago I created this memory leak finder for Land of Heroes, but we don't really use it anymore so I decided to release it. You can use it only on Windows (otherwise you have to modify it a bit), and you will need mhook for it to work. namespace MemoryLeakFinder { typedef void* (__cdecl* _malloc)(_In_ _CRT_GUARDOVERFLOW size_t _Size); typedef void (__cdecl* _free)(_Pre_maybenull_ _Post_invalid_ void* _Block); _malloc True_malloc = (_malloc) ::malloc; _free True_free = (_free) ::free; template <class T> class NoTraceAllocator { public: using value_type = T; NoTraceAllocator() noexcept {} template <class U> NoTraceAllocator(NoTraceAllocator<U> const&) noexcept {} value_type* allocate(std::size_t n) { return static_cast<value_type*>(True_malloc(n * sizeof(value_type))); } void deallocate(value_type* p, std::size_t) noexcept { True_free(p); } }; static bool GetStackWalk(char* outWalk) { ::SymSetOptions(SYMOPT_DEFERRED_LOADS | SYMOPT_INCLUDE_32BIT_MODULES | SYMOPT_UNDNAME); if (!::SymInitialize(::GetCurrentProcess(), "[Hidden Content]", TRUE)) return false; PVOID addrs[25] = { 0 }; USHORT frames = CaptureStackBackTrace(1, 25, addrs, NULL); char* ptr = outWalk; for (USHORT i = 0; i < frames; i++) { ULONG64 buffer[(sizeof(SYMBOL_INFO) + 1024 + sizeof(ULONG64) - 1) / sizeof(ULONG64)] = { 0 }; SYMBOL_INFO* info = (SYMBOL_INFO*)buffer; info->SizeOfStruct = sizeof(SYMBOL_INFO); info->MaxNameLen = 1024; DWORD64 displacement = 0; if (::SymFromAddr(::GetCurrentProcess(), (DWORD64)addrs[i], &displacement, info)) { ptr += sprintf_s(outWalk, 1024, "%s\n", info->Name); } } ::SymCleanup(::GetCurrentProcess()); return true; } std::unordered_map<void*, const char* , std::hash<void*> , std::equal_to<void*> , NoTraceAllocator<std::pair<const void*, const char*>>> memoryAllocations; void* My_malloc(_In_ _CRT_GUARDOVERFLOW size_t _Size) { void* ptr = True_malloc(_Size); char* stackTrace = (char*)True_malloc(1024); GetStackWalk(stackTrace); memoryAllocations.emplace(std::make_pair(ptr, stackTrace)); return ptr; } void My_free(_Pre_maybenull_ _Post_invalid_ void* _Block) { auto it = memoryAllocations.find(_Block); if (it != memoryAllocations.end()) { True_free((void*)it->second); memoryAllocations.erase(it); } return True_free(_Block); } void StartMemoryLeakFinder() { Mhook_SetHook((PVOID*)&True_malloc, My_malloc); Mhook_SetHook((PVOID*)&True_free, My_free); } void StopMemoryLeakFinder() { Mhook_Unhook((PVOID*)&True_malloc); Mhook_Unhook((PVOID*)&True_free); std::ofstream ofs("memoryleaks.txt"); for (auto it = memoryAllocations.begin(); it != memoryAllocations.end(); ++it) { ofs << it->second << std::endl; True_free((void*)it->second); } ofs.close(); } } You have to call StartMemoryLeakFinder() and StopMemoryLeakFinder() where you'd like them to start and stop accordingly.
  21. [Hidden Content] [Hidden Content] Example Usage [hide][/hide] Requirements
  22. 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.
  23. M2 Download Center Download Here ( Internal ) Hello since i was looking for this system and it was "hard" to find it because Sanii's page is gone, i had to put it together taking bits of code from here and there. It is full with all the fixes and working with armor and weapon costumes. With this system you can assign an .mse file to a Vnum via 1 single .txt file It is a nice system so everyone should be able to use it. Only thing left is to adapt it for Sash's/Wing's if someone want's to do that i can post it here. Have fun.
  24. Hi! I don't know if it is a perfect solution, but it works fine for me. Open game/char_item.cpp and find this: if (false == CanUnequipNow(item2) || false == CanEquipNow(item1)) Replace to this: //if (false == CanUnequipNow(item2) || false == CanEquipNow(item1)) if (false == CanEquipNow(item1)) return false; if (item2->IsDragonSoul() && false == CanUnequipNow(item2)) return false; Then compile and run...
  25. Reversed from 22.2.7.0 Official Binary Client part is from 2018 Official Root [Hidden Content] [Hidden Content]
×
×
  • 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.