Jump to content

Search the Community

Showing results for tags 'python'.

  • 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. [Hidden Content] [Hidden Content] Item icons will appear in the hyperlink tooltip OLD: NOW:
  2. Hi, By pressing SHIFT + RIGHT CLICK on the items eligible for sale, an interface will appear showing you how much money you will receive and how many items you have selected. The selected items will have a special icon indicating that they have been selected. More information can be found in the README. [Hidden Content] [Hidden Content]
  3. I think title says it all. Why this? Why not?
  4. Download Alternative download links → Github Hi, This is all interface about SungmaHee Tower Like official servers and the first floor like Official Servers, In this files we have 2k or 3k LOC, maybe more, I'm tired and I don't have information about all floor's tower, but if you want complete this system, you can contact with some-developer and providing the information about the floors or modifying all floors like your concept for Metin2, you'll be a nice dungeon. I already did the hardest part. You can extract all visual part with the official patchs from this forum. This dungeon is Full C++, Python and SQL. PLEASE: Not more messages for my person if you don't want to pay money, I only sell systems "not personal systems" you need understand about my time, my help, code or resolve some problem, needs time. If you want something (not offlineshop, this world has different options with this system) you can contact me but, you will need understand that I will charge you. I'm a nice person (I think), but this world needs money and if I invest time in one project, I will cancel other projects and is overmoney.
  5. I don't know if developed a tool like this, before by anotherone. I wrote it for myself and I am sharing it to help you too. What is it? Sort the contents of proto files from smallest to largest based on numbers How to use? Simple to use, just put the file to be sorted in the same directory as the tool and run the tool. Easy to use. If undecodable characters are encountered (aka if not in EUC_KR charmap), you will fail. If you agree to ignore this, you can use 'force_sort_proto.exe' or 'force_sort_proto.py' to force sort the file. Effects: Functionally you should not encounter any problems. However, it may lose its meaning in 'human language' .exe? For those who don't have the Python Interpreter, for quick use. [Hidden Content] or [Hidden Content]
  6. 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.
  7. Hello, As the title says, there is a significant exploit in the chat link system. Given that many servers utilize this system, I believe most private servers are affected by this exploit. Essentially, someone can execute any CMD command they want on a player's computer by instructing them to click on an item. How does it work? [Hidden Content] He sends this through whisper or public chat, and the player clicks on the item. The command opens notepad.exe. How can you fix it? Firstly, STOP using os.system to open links. There are special libraries for that, such as the one I will use to implement this fix. Please note that this is a straightforward fix and may not be 100% foolproof because malicious links can still be sent to open in the browser. I recommend using a link validation technique on the server side and allowing only specific links. [Hidden Content]
  8. Download GitHub Repository Synchronizes the character's position with the server and can be used to free them if they get stuck. If there is no available position within the available distance, the character will be warped to the village. .
  9. Hi, I don't know if you've noticed, but every time you open a shop or want to add a stone to an item, the window inexplicably opens somewhere on the right at the top near the inventory. It bothered me for quite a while, so I looked into the code, and the fix is very easy. I'm sharing it with you, and I would appreciate it if you let me know if any other window does the same, as I've only noticed these two so far. Open uiattachmetin.py and search in def Open(self, metinItemPos, targetItemPos): self.UpdateDialog() Add under: self.SetCenterPosition() ############################ Open uishop.py and search in def Open(self, vid): self.Refresh() Add under: self.SetCenterPosition() Thats all :D
  10. Download Alternative download links → Mega Hello Metin2 Dev. I'm here to present a Portable Shop System. How does it work? Players get a panel when click F7 with several options. This system exists to make players able to buy items while farming. In case of any problem, contact me or write here. With best regards, Doose.
  11. [Hidden Content] [Hidden Content] After using it in almost all of the modern UIs they made, they finally decided to turn it into a class.
  12. Download Merry Christmas to everyone, I saw that here is not the best option, so I want to offer you the official system, it is not a complicated system, but maybe someone needs it.
  13. Hello. As you know, the LibJPEG library in Metin2 is only useful for taking screenshots. Other than that, it doesn't have any duties. Those who have Directx9 and want to take better quality screenshots with this method can follow this guide carefully. Those who use Directx8 can update the code I will give according to Directx8 and try it, I did not have the chance to try it. Make sure you are determined before following the steps here. Because as a result of these operations, you will no longer have the libjpeg library, and the screenshot files will reach larger sizes than the jpg file, depending on the quality. (between 3-8MB) The explanation will be a bit complicated, but if you follow each process in order, you will not have any problems. If you still have a problem, you can report it below. First, let's get rid of libjpeg: -> Enter the Client src/extern/lib folder and delete the .lib files whose file name starts with libjpeg... -> Enter the Client src/EterLib folder and delete the JpegFile.cpp & JpegFile.h files. Open the EterLib project in Visual Studio in the same way, select these two files and remove them. -> Open the client src/EterPythonLib/PythonGraphic.cpp file and remove the following include line and functions: #include "../eterLib/JpegFile.h" --------------------------------- void GenScreenShotTag(const char* src, DWORD crc32, char* leaf, size_t leafLen){ const char* p = src; const char* n = p; while (n = strchr(p, '\\')) p = n + 1; _snprintf(leaf, leafLen, "YMIR_METIN2:%s:0x%.8x", p, crc32); } bool CPythonGraphic::SaveJPEG(const char* pszFileName, LPBYTE pbyBuffer, UINT uWidth, UINT uHeight) { return jpeg_save(pbyBuffer, uWidth, uHeight, 100, pszFileName) != 0; } -> Where you delete these, you will see this function: bool CPythonGraphic::SaveScreenShot(const char* c_pszFileName) { -> Replace this function completely like this: bool CPythonGraphic::SaveScreenShot() { LPDIRECT3DSURFACE9 lpSurface = nullptr; D3DSURFACE_DESC stSurfaceDesc = {}; uint32_t uWidth = stSurfaceDesc.Width; uint32_t uHeight = stSurfaceDesc.Height; ms_lpd3dDevice->CreateOffscreenPlainSurface(uWidth, uHeight, D3DFMT_A8R8G8B8, D3DPOOL_SYSTEMMEM, &lpSurface, NULL); if (SUCCEEDED(ms_lpd3dDevice->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &lpSurface))) { if (!CreateDirectory("screenshot", NULL) && ERROR_ALREADY_EXISTS != GetLastError()) //yoksa oluştur return false; SYSTEMTIME st; GetSystemTime(&st); char szFileName[MAX_PATH]; sprintf_s(szFileName, "screenshot/screenshot_%04d%02d%02d_%02d%02d%02d.bmp", // eşsiz st.wYear, st.wMonth, st.wDay, st.wHour, st.wMinute, st.wSecond); D3DXSaveSurfaceToFile(szFileName, D3DXIFF_BMP, lpSurface, NULL, NULL); } else TraceError("CPythonGraphic::SaveScreenShot() - ScreenShot Basarisiz!"); // yok et if (lpSurface) { lpSurface->Release(); lpSurface = nullptr; } return true; } -> Then remove the following from the PythonGraphic.h file: bool SaveJPEG(const char* pszFileName, LPBYTE pbyBuffer, UINT uWidth, UINT uHeight); -> In the same file there will be: bool SaveScreenShot(const char* szFileName); -> Update this to: bool SaveScreenShot(); -> Open PythonGraphicModule.cpp and delete this PyObject* grpSaveScreenShot(PyObject* poSelf, PyObject* poArgs) { struct tm* tmNow; time_t ct; ct = time(0); tmNow = localtime(&ct); char szPath[MAX_PATH + 256]; SHGetSpecialFolderPath(NULL, szPath, CSIDL_PERSONAL, TRUE); //GetTempPath(); strcat(szPath, "\\METIN2\\"); if (-1 == _access(szPath, 0)) if (!CreateDirectory(szPath, NULL)) { TraceError("Failed to create directory [%s]\n", szPath); return Py_BuildValue("(is)", FALSE, ""); } sprintf(szPath + strlen(szPath), "%02d%02d_%02d%02d%02d.jpg", tmNow->tm_mon + 1, tmNow->tm_mday, tmNow->tm_hour, tmNow->tm_min, tmNow->tm_sec); BOOL bResult = CPythonGraphic::Instance().SaveScreenShot(szPath); return Py_BuildValue("(is)", bResult, szPath); } -> and delete this: { "SaveScreenShot", grpSaveScreenShot, METH_VARARGS }, -> Find the following function in the same file PyObject* grpSaveScreenShotToPath(PyObject* poSelf, PyObject* poArgs) { -> Replace this function completely with the code I gave below. PyObject* grpSaveScreenShotToPath(PyObject* poSelf, PyObject* poArgs) { CPythonGraphic::Instance().SaveScreenShot(); return Py_BuildNone(); } -> We are done with the client src. Now open root/game.py and find this function: def SaveScreen(self): print "save screen" # SCREENSHOT_CWDSAVE if SCREENSHOT_CWDSAVE: if not os.path.exists(os.getcwd()+os.sep+"screenshot"): os.mkdir(os.getcwd()+os.sep+"screenshot") (succeeded, name) = grp.SaveScreenShotToPath(os.getcwd()+os.sep+"screenshot"+os.sep) elif SCREENSHOT_DIR: (succeeded, name) = grp.SaveScreenShot(SCREENSHOT_DIR) else: (succeeded, name) = grp.SaveScreenShot() # END_OF_SCREENSHOT_CWDSAVE if succeeded: pass """ chat.AppendChat(chat.CHAT_TYPE_INFO, name + localeInfo.SCREENSHOT_SAVE1) chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE2) """ else: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.SCREENSHOT_SAVE_FAILURE) -> ..and update it like this: def SaveScreen(self): grp.SaveScreenShotToPath() You can also search and delete the variables in the original Python code above from root. I'm sorry for my bad english.
  14. [Hidden Content] [Hidden Content] Preview[OFF-ON]: Enable:
  15. A fool came and gave you no peace and you blocked this fool. Let's see what will happen. additional: while coding the system i fixed a few errors related to mesenge_manager and made adjustments and p2p works. -> You can block or delete a player from the list by typing the player's name from the Messenger panel. There is also a block button inside the target buttons. M2 Download Center Download Here ( Internal ) Download Here ( GitHub )
  16. Reversed From Official Binary A feature created so that each character has a separate config settings [Hidden Content] [Hidden Content]
  17. Hello community, I decided to create a patcher in C# to share here completely free. Download [hide][Hidden Content] [Hidden Content]]
  18. Download Alternative download links → M2DL Hello! I share this little modifications, made by @peaceofficial (He gave me rights to share it.) (The thinboard will be different for you.) Here is GIF, how is it looks like:
  19. I'm bored of counting; I've counted enough during school. This script counts on its own. Readme.md says it all !
  20. Hello Metin2 Dev. As the title says, i'm here to present a way to block pvp option on certain maps, this is good for PvP Projects. #Search this function: def __OnClickPvPModeFreeButton(self): #Replace with: def __OnClickPvPModeFreeButton(self): if self.__CheckPvPProtectedLevelPlayer(): return self.__RefreshPVPButtonList() import background if background.GetCurrentMapName() == "metin2_map_c1": chat.AppendChat(chat.CHAT_TYPE_INFO, "You can't do this here. ") elif constInfo.PVPMODE_ENABLE: net.SendChatPacket("/pkmode 2", chat.CHAT_TYPE_TALKING) else: chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.OPTION_PVPMODE_NOT_SUPPORT) Wish you a good use on this. With best regards, Doose.
  21. I've brought you some files for optimizing your client. The first file examines whether there are any entities in the mob_proto that are missing from the npclist.txt. These entities might remain unseen in your client, making them invisible to you. The second file is designed to purge the missing entries from the mob_proto. This step will help clean up and enhance the efficiency of your client. The third program's purpose is to inspect the unpacked version of your client and identify any NPCs or creatures that are not listed in your npclist. You have the option to manually remove these entities and then repackage your client. By implementing these optimizations, you can effectively rid your client of unnecessary elements. These entities won't burden your client's memory during startup, potentially resulting in significant RAM savings. Missing_ids.py mob_proto_delete.py show_folders_need_to_delete.py show_missing_ids.py
  22. I made this script because I was too lazy to do it from the source... The title says it all. Steps are in readme.
×
×
  • 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.