Jump to content

Leaderboard

Popular Content

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

  1. M2 Download Center Download Here ( Internal ) hello people i wanted to publish something small. You can see icons that I modded at the end of 2013. The idea is or was that skills jump directly from m1 to G1 through a soul book. it was intended for an oldschool server. I think the icons are very beautiful and that's why I'm happy to share them with you. If you want to create a quest for it, you are welcome to do it. I'll adjust these later and add them here. Have fun with it Kind regards Ace Bookindow Download
    4 points
  2. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) [Hidden Content] Reversed from 22.2.7.0 Official Binary
    1 point
  3. M2 Download Center Download Here ( Internal ) [Hidden Content]
    1 point
  4. M2 Download Center Download Here ( Internal ) GitHub Repository: [Hidden Content] The tutorial bellow is also available on the repository. Metin2-Patcher-Electron A simple metin2 patcher made in Electron with React and TypeScript. The file verification is made with SHA256. Getting Started Install NodeJS: [Hidden Content] Install Yarn: [Hidden Content] Clone the repository: git clone [Hidden Content] Install the dependencies: yarn install Edit src/config.ts with your own values. Change resources/icon.png with your own logo (should be at least 256x256). Available Commands Command Purpose yarn run start Starts the React App (aka Frontend) in development mode. yarn run build Builds a production ready React bundle. yarn run electron-start Starts the Electron App. yarn run electron-pack Builds a production package of the app. yarn run lint Check for linting errors. yarn run lint-fix Fixing some linting errors. About the Patcher This project was made with the intend of learn more about Electron, something I wanted to do for a while. If the folders don't exist, they'll be created. If the files don't exist they will be downloaded. The patcher checks the local files and if their checksum mismatches the remote checksum, they will get downloaded. This patcher runs the downloads asynchronously, this means it will download multiple files at the same time. The entire project is made in React and Electron both with TypeScript. For CSS was used TailwindCSS. Deploying After editing everything you must use the command yarn run electron-pack to build the application. It will build 2 files inside the release folder: Metin2 Patcher Electron-X.X.X-win.zip metin2_patcher_electron.exe The first file is the full bundle zipped that can be extracted to the client folder (after removing the 2 unnecessary LINCENSE files). DON'T USE THIS IF YOU ALREADY HAVE THE CEF BROWSER ON THE CLIENT. The second file is also zipped but will be extract to a temporary folder during runtime (takes about 3 seconds to fully open) and clean after itself when it closes. This is the way if you can't perform the first option. Development Testing In case there isn't the possibility to use a local webserver (like Apache with Xampp, or Wampp) it may be necessary update the CORS on your remote server. For NGINX Go to the configuration file for the patcher host and add this line: add_header 'Access-Control-Allow-Origin' '[Hidden Content]'; For Apache Go to the configuration file for the patcher host and add this line: Header set Access-Control-Allow-Origin "[Hidden Content]" It may also be needed to activate the headers module: a2enmod headers Web Server Using this NodeJS script, you shall place the client files inside a folder called files and run the script. It will generate the JSON file with the names, sizes and checksum hash of the files. Issues If you have any issues, post here or open an issue on the repository: [Hidden Content]/issues
    1 point
  5. M2 Download Center Download Here ( Internal ) [Hidden Content] The system allows you to combine the same items in one click. Might create some lag if you are trying to combine lots of item. Made by me. I hope to see a similar system in big servers. Stay safe. (Would be cool if someone can implement the system and share the results here. Might have forgot few things ) [Hidden Content]
    1 point
  6. M2 Download Center Download Here ( Internal ) Hello, I've been surprised but many servers still use this old signal fire. I've created atleast a little blow effect for it. Download
    1 point
  7. 1 point
  8. GF v21.1.3.0 patch (Metin2 Download) Contents: root-meta, dumped binary, protos New chat filter GUI resources New pet, new costume(Ramadan) + Hairstyle All files unpacked in a folder Soon comes the Looting System resources. Well.. They are so geniuses.
    1 point
  9. I bought a homepage with animations from them and a login interface with char select and choose empire. - What I can say about it is that you are the best designers there are, especially when it comes to the animations, they completely blow you away, just wonderful what they conjure up! Highly Recommended! Best regards
    1 point
  10. Everything worked fine thanks for your services.
    1 point
  11. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Metin2 Color Formatter A simple class writted for Python and C++ which convert the param-values into an string by a specific color rgb as hexadecimals. Color constants module: [Hidden Content] [Hidden Content] Python: from cff import CFF text = CFF.format('Metin2', 'green') text = CFF.format(8000, 'banana') text = CFF.format(412.55, 'red') text = CFF.format('Pending', '#113355') text = CFF.format('Item name:', 'springgreen', CFF.FLAG_NEW_TAB) + CFF.format(item.GetItemName(), 'chocolate') text = CFF.multi_format(('a', 'b', 'c'), 'red') # text[0], text[1], text[2] C++: #include "cff.h" std::string text = CFF::format("Metin2", "green"); std::string text = CFF::format(std::to_string(8000), "banana"); std::string text = CFF::format(std::to_string(412.55), "red"); std::string text = CFF::format("Pending", "#113355"); std::string text = CFF::format("Item name:", "springgreen", CFF::FLAG_NEW_TAB) + CFF::format(pItemData->GetName(), "chocolate"); std::vector<string> text = CFF::multi_format({"a", "b", "c"}, "red"); // text[0], text[1], text[2] Github repository: [Hidden Content]
    1 point
  12. The idea isn't so bad, but the code has too many useless lines, here's what you can do to improve it. def RefreshPickupFilter(self): #Weapon if systemSetting.IsPickUpFilterWeapon(): self.PickUpFilterList[0].Down() else: self.PickUpFilterList[0].SetUp() #Armor if systemSetting.IsPickUpFilterArmor(): self.PickUpFilterList[1].Down() else: self.PickUpFilterList[1].SetUp() #Ear if systemSetting.IsPickUpFilterEar(): self.PickUpFilterList[2].Down() else: self.PickUpFilterList[2].SetUp() #Neck if systemSetting.IsPickUpFilterNeck(): self.PickUpFilterList[3].Down() else: self.PickUpFilterList[3].SetUp() #Foots if systemSetting.IsPickUpFilterFoots(): self.PickUpFilterList[4].Down() else: self.PickUpFilterList[4].SetUp() #Shield if systemSetting.IsPickUpFilterShield(): self.PickUpFilterList[5].Down() else: self.PickUpFilterList[5].SetUp() #Book if systemSetting.IsPickUpFilterBook(): self.PickUpFilterList[6].Down() else: self.PickUpFilterList[6].SetUp() #Stone if systemSetting.IsPickUpFilterStone(): self.PickUpFilterList[7].Down() else: self.PickUpFilterList[7].SetUp() #Etc if systemSetting.IsPickUpFilterEtc(): self.PickUpFilterList[8].Down() else: self.PickUpFilterList[8].SetUp() To: def RefreshPickupFilter(self): checkFilterList = ( systemSetting.IsPickUpFilterWeapon(), systemSetting.IsPickUpFilterArmor(), systemSetting.IsPickUpFilterEar(), systemSetting.IsPickUpFilterNeck(), systemSetting.IsPickUpFilterFoots(), systemSetting.IsPickUpFilterShield(), systemSetting.IsPickUpFilterBook(), systemSetting.IsPickUpFilterStone(), systemSetting.IsPickUpFilterEtc() ) for child, flag in zip(self.PickUpFilterList, checkFilterList): if flag: child.Down() else: child.SetUp() self.PickUpFilterList.append(GetObject("Pick_Up_FilterWeapon")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterArmor")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterEar")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterNeck")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterFoots")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterShield")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterBook")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterStone")) self.PickUpFilterList.append(GetObject("Pick_Up_FilterEtc")) To: for name in ('Weapon','Armor','Ear','Neck','Foots','Shield','Book','Stone','Etc'): self.PickUpFilterList.append(GetObject("Pick_Up_Filter{}".format(name))) self.PickUpFilterList[0].SetToggleUpEvent(self.__OnClickPickupFilterButtonWeapon) # Weapon self.PickUpFilterList[0].SetToggleDownEvent(self.__OnClickPickupFilterButtonWeapon) # Weapon self.PickUpFilterList[1].SetToggleUpEvent(self.__OnClickPickupFilterButtonArmor) # Armor self.PickUpFilterList[1].SetToggleDownEvent(self.__OnClickPickupFilterButtonArmor) # Armor self.PickUpFilterList[2].SetToggleUpEvent(self.__OnClickPickupFilterButtonEar) # Ear self.PickUpFilterList[2].SetToggleDownEvent(self.__OnClickPickupFilterButtonEar) # Ear self.PickUpFilterList[3].SetToggleUpEvent(self.__OnClickPickupFilterButtonNeck) # Neck self.PickUpFilterList[3].SetToggleDownEvent(self.__OnClickPickupFilterButtonNeck) # Neck self.PickUpFilterList[4].SetToggleUpEvent(self.__OnClickPickupFilterButtonFoots) # Foots self.PickUpFilterList[4].SetToggleDownEvent(self.__OnClickPickupFilterButtonFoots) # Foots self.PickUpFilterList[5].SetToggleUpEvent(self.__OnClickPickupFilterButtonShield) # Shield self.PickUpFilterList[5].SetToggleDownEvent(self.__OnClickPickupFilterButtonShield) # Shield self.PickUpFilterList[6].SetToggleUpEvent(self.__OnClickPickupFilterButtonBook) # Books self.PickUpFilterList[6].SetToggleDownEvent(self.__OnClickPickupFilterButtonBook) # Books self.PickUpFilterList[7].SetToggleUpEvent(self.__OnClickPickupFilterButtonStone) # Stone self.PickUpFilterList[7].SetToggleDownEvent(self.__OnClickPickupFilterButtonStone) # Stone self.PickUpFilterList[8].SetToggleUpEvent(self.__OnClickPickupFilterButtonEtc) # Etc self.PickUpFilterList[8].SetToggleDownEvent(self.__OnClickPickupFilterButtonEtc) # Etc To: eventFuncList = ( self.__OnClickPickupFilterButtonWeapon, self.__OnClickPickupFilterButtonArmor, self.__OnClickPickupFilterButtonEar, self.__OnClickPickupFilterButtonNeck, self.__OnClickPickupFilterButtonFoots, self.__OnClickPickupFilterButtonShield, self.__OnClickPickupFilterButtonBook, self.__OnClickPickupFilterButtonStone, self.__OnClickPickupFilterButtonEtc ) for child, event in zip(self.PickUpFilterList, eventFuncList): child.SetToggleUpEvent(event) child.SetToggleDownEvent(event)
    1 point
  13. Since the source is public, also everyone can write an unpacker tool.
    1 point
  14. Memory leaks are very important when we speak about reusing memory, it prevents the game to keep allocating new RAM over and over. WIth this simple fixes memory leaks on Metin2 will be fixed. 1. Server Open the file game/main.cpp Search this function: int main(int argc, char **argv) { After this add the following code: return 0; Now open the file db/Main.cpp. Search this function: int main() { After this add the following code: return 0; 2. Client Open the file UserInterface/UserInterface.cpp Search this function: int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { After this add the following code: return 0; I hope it will works now, enjoy just 200MB for a complete client. Good luck.
    0 points
  15. JA JA JA... WHAT A JOKE THIS SHIT IS... I BELIEVED IT , BASTARDS!!
    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.