Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 02/15/20 in all areas

  1. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) I have already shared my “LocaleStringBuilder” (locale_string.txt) translate script here on one of the topics but this time I also created for the quests (translate.lua) “LocaleQuestBuilder”. Now you can find them both on the same repository. Information All the strings in locale_string.txt and locale_quest.txt are from the official v19.6.15 patch. In order to run the tools, you will need Python2. [Hidden Content] Hope it helps, see ya around...
    4 points
  2. Hey, I want to share a fix about the SKILL_MUYEONG, Official fixed this before some months ago, but nobody care in such details so we still have the same issue in our servers. The SKILL_MUYEONG is still attacking while you riding but doesn't make any damage. Preview with Fixed SKILL_MUYEONG while you riding: [Hidden Content]
    2 points
  3. M2 Download Center Download Here ( Internal ) Hello, I publish the light version of my ProtoReader here, the light version has one functionality. It converts client item_proto and mob_proto the their server version Input: item_proto mob_proto Output: item_names.txt item_proto.txt mob_names.txt mob_proto.txt Its fully automated just double click on it when its in the same folder as the item_proto and mob_proto. It works like dump_proto but in reverse. Attention! Not every value is included in the clientside proto tables it could happen that you have to change some values on your own. ProtoReader is for old item_proto files (before dragon soul (dragon stone alchemy)). ProtoReaderNewFormat is for the current files. Virustotal: [Hidden Content] You find the download in the attachments. When you like my work and this tool, go and visit: I might also do a Pro Version with some other Features like clientside proto to xml or sql or sql to server item_proto and so
    1 point
  4. M2 Download Center Download Here ( Internal ) Hello everyone. I reversed something new from the official binary what I would like to share with you. Edit.: Download PS.: Let me know if you found any mistake in the guide.
    1 point
  5. M2 Download Center Download Here ( Internal ) Hello, Working on some new stuff I found out that current implementation of event looks a bit tricky. Due to this fact I basically deciced to re-implement it in C++11 providing up to date tech. Don`t forget to take a look at this topic before you start: [Hidden Content] So lets begin. Add include into the main.cpp: #ifdef __NEW_EVENT_HANDLER__ #include "EventFunctionHandler.h" #endif And add this into main function before: while (idle()); #ifdef __NEW_EVENT_HANDLER__ CEventFunctionHandler EventFunctionHandler; #endif Now add this at the end of idle: #ifdef __NEW_EVENT_HANDLER__ CEventFunctionHandler::instance().Process(); #endif Now search for: sys_log(0, "<shutdown> Destroying CArenaManager..."); And add before: #ifdef __NEW_EVENT_HANDLER__ sys_log(0, "<shutdown> Destroying CEventFunctionHandler..."); CEventFunctionHandler::instance().Destroy(); #endif Now open service.h and add this define: #define __NEW_EVENT_HANDLER__ That`s all. Now just download attachment and add included files to your source.
    1 point
  6. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Hello , this is one of my first systems that i made for my pvp server 1-2 years ago and since then i was using it and it has no problems. I'm not a system's developer i only made things for my servers and this one i want to share with you.
    1 point
  7. You are missing a return true ---> bool CHARACTER::DragonSoul_ActivateDeck(int deck_idx) { if (deck_idx < DRAGON_SOUL_DECK_0 || deck_idx >= DRAGON_SOUL_DECK_MAX_NUM) { return false; } if (DragonSoul_GetActiveDeck() == deck_idx) return true; DragonSoul_DeactivateAll(); if (!DragonSoul_IsQualified()) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("żëČĄĽ® »óŔÚ°ˇ Č°ĽşČ­µÇÁö ľĘľŇ˝Ŕ´Ď´Ů.")); return false; } AddAffect(AFFECT_DRAGON_SOUL_DECK_0 + deck_idx, APPLY_NONE, 0, 0, INFINITE_AFFECT_DURATION, 0, false); m_pointsInstant.iDragonSoulActiveDeck = deck_idx; for (int i = DRAGON_SOUL_EQUIP_SLOT_START + DS_SLOT_MAX * deck_idx; i < DRAGON_SOUL_EQUIP_SLOT_START + DS_SLOT_MAX * (deck_idx + 1); i++) { LPITEM pItem = GetInventoryItem(i); if (NULL != pItem) DSManager::instance().ActivateDragonSoul(pItem); } return true; } Dont do the thing that WeedHex said
    1 point
  8. // InstanceBaseBattle.cpp // Search for: m_GraphicThingInstance.Die(); // Add after: m_GraphicThingInstance.SetScalePosition(0.0f, 0.0f, 0.0f); The current scale position function is not writed ok for attached models. Official server realised that and changed it. Do the same ?
    1 point
  9. M2 Download Center Download Here ( Internal ) Hello everyone. With this tool you will be able to convert XML proto files into self-defined structure of SQL or TXT files. Files contains definitions for default metin2 structure of mob and item protos (includes txt version of mob proto). Now few words about program structure. There are files named like '*ProtoItem' - this is definition of input and result structure. You can define own names for properties in XML files, result SQL columns and indexes for positions in TXT version of protos. XmlAttribute is used to define input data type and name of property in XML file. SqlMapAttribute is used to define database column name or position in TXT file(by ClientProtoIdx property). MobProto & ItemProto classes inherits from abstract classes for specified destiny(client or database). I implemented basic functionallity to convert XML files into SQL, but you can easly implement your own version - it's really flexible. [Hidden Content]
    1 point
  10. Such a small system for extracting stones.
    1 point
  11. M2 Download Center Download Here ( Internal ) Hi everyone! So, after serveral days of searching a tool that could change the texture path of a .gr2 file, I found the tool(probably all of you know it, the texture changer by marv). After that I tried to change the texture paths of some gr2 models of a weapon, and guess what, it didn't work. I'm gonna reupload the file, because I didn't seen it on metin2dev, and I'm gonna teach you how to use it. First of all, I don't know about others, but for me it didn't work to change anything with this (I'm running windows 7 x64 bit). Some of guys told me that this "texture changer" works only on windows 7 x86 bit, so I reinstalled my windows(I really needed that tool), of course, it didn't work either way. So, go in Start and search cmd, and run it. After the cmd started you'll see a path right there C:\Users\Name (Instead of Name you'll have your username of computer administrator, or the account you're logged in), now that's the path where we can work with the tool. PAY ATTENTION!!! IF YOU START THE TOOL IN OTHER FOLDER INSTEAD OF C:\Users\Name THE TOOL WILL NOT WORK, AND YOU WILL NOT BE ABLE TO SAVE THE NEW MODEL. Exctract all the files from the archive(I'll post it below), and start Metin2TextureChanger.exe. Now click "Load" to choose a gr2 file you want to change texture path, BUT, the model name can't have spaces in name(devil sword.gr2 for example, it's wrong, the tool won't read it, and you'll not be able to save your new gr2 model), so if you want to change for example devil sword.gr2 you need to rename it into devil_sword.gr2 or devilsword.gr2 or any other name without spaces betwen. Where is "Neuer Texturpfad" we will chose the new path for texture, for example d:\ymir work\test\devil_sword_blue.dds , there you can choose any other path, but you can't modify "d:\ymir work" or you won't be able to see the weapon/armour in-game. Now we save the file wherever we want, it doesn't matter, this way must work for everybody. AGAIN, THIS TOOL WASN'T MADE BY ME. And I made this post because I've searched many days a tool that would work, but neither didn't work, and this tool didn't work for me either just when I used this method. So, this post is for guys who had the same problem like me (they had the tool, but couldn't save the new model) that's why I wanted to help them, and any other people who weren't been able to use it. And about the other tool I've found on this forum, the tool "made" by thunder-core, I didn't find that tool satisfying, it worked, but after the new model was made, I wasn't been able to import it in 3d max, or to convert the model from file format revision 7 to 6. So you were basicaly forced to upgrade your client to granny 2.9, and I found that inconvenient, because, I don't know about others, but I don't use source for binary, and because of that it's imposible to see the model in-game. And of course, the new model you've created, with the tool in attachement, is revision 7, so you need the new granny if you want to see it in-game, but you can use the converter from archive to convert from revision 7, to revision 6 (old), and you'll be able to see it in-game. If you already see it in-game, you don't need to use the converter. If you found this post helpful I'm glad I could help you.
    1 point
  12. Hello community, we are investigating a high increase of internal server errors. We will inform you when the problems are resolved. While analyzing these errors it may appear that some features of metin2dev are unavailable. Kind regards, metin2dev Administration
    1 point
  13. in cmd please change from SV_PLAYER TO GM_PLAYER cause i changed them in my server.
    0 points
  14. I think you will need to make a new button that shows up when you have the horse skill using if self.__CanUseHorseSkill(): There is the function in uiCharacter.py if self.__CanUseHorseSkill(): self.activeSkillGroupName.Hide() self.skillGroupButton1.SetText(nameList.get(group, "Noname")) self.skillGroupButton2.SetText(localeInfo.SKILL_GROUP_HORSE) self.skillGroupButton1.Show() self.skillGroupButton2.Show() I will give it a try in about one hour. Edit: I manage to add the new page somehow. There is a bug i can't understand while selecting the pages. The bug comes from __SelectSkillGroup function which i don't know how it works [Hidden Content] uiCharacter.py: From PAGE_HORSE = 2 to PAGE_HORSE = 3 Find: self.skillGroupButton2 = None Add after: self.skillGroupButton3 = None Find: self.skillGroupButton2 = self.GetChild("Skill_Group_Button_2") Add after: self.skillGroupButton3 = self.GetChild("Skill_Group_Button_3") In self.skillGroupButton = ( find : self.GetChild("Skill_Group_Button_2"), Add below: self.GetChild("Skill_Group_Button_3"), Replace the def __SetSkillGroupName(self, race, group): function with this: def __SetSkillGroupName(self, race, group): job = chr.RaceToJob(race) if not self.SKILL_GROUP_NAME_DICT.has_key(job): return nameList = self.SKILL_GROUP_NAME_DICT[job] if 0 == group: self.skillGroupButton1.SetText(nameList[1]) self.skillGroupButton2.SetText(nameList[2]) if self.__CanUseHorseSkill(): self.skillGroupButton3.SetText(localeInfo.SKILL_GROUP_HORSE) self.skillGroupButton3.Show() self.skillGroupButton3.SetPosition(95, 2) else: self.skillGroupButton3.Hide() self.skillGroupButton1.Show() self.skillGroupButton2.Show() self.activeSkillGroupName.Hide() else: if self.__CanUseHorseSkill(): self.activeSkillGroupName.Hide() self.skillGroupButton1.SetText(nameList.get(group, "Noname")) self.skillGroupButton3.SetText(localeInfo.SKILL_GROUP_HORSE) self.skillGroupButton1.Show() self.skillGroupButton2.Hide() self.skillGroupButton3.Show() self.skillGroupButton3.SetPosition(50, 2) else: self.activeSkillGroupName.SetText(nameList.get(group, "Noname")) self.activeSkillGroupName.Show() self.skillGroupButton1.Hide() self.skillGroupButton2.Hide() self.skillGroupButton3.Hide() uiscript/characterdetails.py Find: { "name" : "Skill_Group_Button_2", "type" : "radio_button", "x" : 50, "y" : 2, "text" : "Group2", "text_color" : 0xFFFFE3AD, "default_image" : "d:/ymir work/ui/game/windows/skill_tab_button_01.sub", "over_image" : "d:/ymir work/ui/game/windows/skill_tab_button_02.sub", "down_image" : "d:/ymir work/ui/game/windows/skill_tab_button_03.sub", }, Add below: ##horse skill page { "name" : "Skill_Group_Button_3", "type" : "radio_button", "x" : 95, "y" : 2, "text" : "Group3", "text_color" : 0xFFFFE3AD, "default_image" : "d:/ymir work/ui/game/windows/skill_tab_button_01.sub", "over_image" : "d:/ymir work/ui/game/windows/skill_tab_button_02.sub", "down_image" : "d:/ymir work/ui/game/windows/skill_tab_button_03.sub", }, Sorry if i couldn't do the job, im a beginner. I thought it's easier but it seems not.
    0 points
  15. So you're telling me that someone has made a quality post? Very good
    0 points
  16. That's VAC... This is for this "protection":
    0 points
  17. I don't know why people waste time for coding these things non-logical and call them "algorithm vs names fake" but it's fine, we're in 2020, everything is strange. You could do something better, stop doing anti-cheat things, you've no idea how they're working behind and even if you know something the checks are so bad and old things, maybe they was good back in 2010 in metin2, but for these times are 0. Don't take it bad, is just an advice.
    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.