Jump to content

Leaderboard

Popular Content

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

  1. M2 Download Center Download Here ( Internal ) [Hidden Content] Reversed from 22.2.7.0 Official Binary. Client part is from 2018 Official Root. You can set different colors:
    29 points
  2. M2 Download Center Download Here ( Internal ) [Hidden Content] Client side is from 2018 official root. It checks the status of the channel from db and gets the port and addr. It also checks if that map exists in that channel(config). *Info: This is currently disabled on official servers.
    20 points
  3. Summary Thread Last Update → Saturday 4 November 2023 Powered by Core X Programming & Scripts 381 Topics Features & Metin2 Systems 401 Topics Bug Fixes 259 Topics Quest Functions & Features 38 Topics Commands 29 Topics Metadata 9 Topics Hack Protection & Security 27 Topics Interfaces 14 Topics
    8 points
  4. M2 Download Center Download Here ( Internal ) [Hidden Content] Client side is from 2018 official root. Mount transmutation 2018 didn't exist in root, I made minor edits. However, to use mount transmutation, you need to edit it according to your own mount system. I created a new slot effect so that it doesn't interfere with other systems (highlight) etc. You can use this sloteffect and the diffusecolor function elsewhere. ***Add this before adding this system:
    6 points
  5. M2 Download Center Download Here ( Internal ) Hi devs! The original equipment viewer is not updated for the new equipments I am thinking of costumes + rings + belt Here is the extended version. Here are my modified files to root and uiscript package, the .py files: uiEquipDialog.py Pastebin ~ MEGA UIScriptEquipmentDialog.py Pastebin ~ MEGA UIScriptCostumeEquipmentDialog.py Pastebin ~ MEGA Ehm yeah this was the easiest part of this, now comin' the serverside and binary parts. Server: 1.) Open gamepacket.h than search for: "typedef struct pakcet_view_equip" and replace all structure with this: typedef struct pakcet_view_equip { BYTE header; DWORD vid; struct { DWORD vnum; BYTE count; long alSockets[ITEM_SOCKET_MAX_NUM]; TPlayerItemAttribute aAttr[ITEM_ATTRIBUTE_MAX_NUM]; } equips[16]; } TPacketViewEquip; PS: lel "pakcet" xD nevermind Save&Close 2.) Open char.cpp and search for this: "void CHARACTER::SendEquipment(LPCHARACTER ch)" and replace the event with this(Thanks ATAG): void CHARACTER::SendEquipment(LPCHARACTER ch) { TPacketViewEquip p; p.header = HEADER_GC_VIEW_EQUIP; p.vid = GetVID(); int pos[16] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 19, 20, 21, 22, 23 }; for (int i = 0; i < 16; i++) { LPITEM item = GetWear(pos[i]); if (item) { p.equips[i].vnum = item->GetVnum(); p.equips[i].count = item->GetCount(); thecore_memcpy(p.equips[i].alSockets, item->GetSockets(), sizeof(p.equips[i].alSockets)); thecore_memcpy(p.equips[i].aAttr, item->GetAttributes(), sizeof(p.equips[i].aAttr)); } else { p.equips[i].vnum = 0; } } ch->GetDesc()->Packet(&p, sizeof(p)); } Serverside done! - Build! Binary: 1.) Open UserInterfacePacket.h than search for this: "typedef struct pakcet_view_equip" and replace with this: typedef struct pakcet_view_equip { BYTE header; DWORD dwVID; TEquipmentItemSet equips[16]; } TPacketGCViewEquip; PS: we met again with pakcet xD, Save&Close. 2.) Open UserInterfacePythonNetworkStreamPhaseGame.cpp than search for this: "bool CPythonNetworkStream::RecvViewEquipPacket()" and replace with this: bool CPythonNetworkStream::RecvViewEquipPacket() { TPacketGCViewEquip kViewEquipPacket; if (!Recv(sizeof(kViewEquipPacket), &kViewEquipPacket)) return false; PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "OpenEquipmentDialog", Py_BuildValue("(i)", kViewEquipPacket.dwVID)); for (int i = 0; i < 16; ++i) { TEquipmentItemSet & rItemSet = kViewEquipPacket.equips[i]; PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogItem", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, rItemSet.vnum, rItemSet.count)); for (int j = 0; j < ITEM_SOCKET_SLOT_MAX_NUM; ++j) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogSocket", Py_BuildValue("(iiii)", kViewEquipPacket.dwVID, i, j, rItemSet.alSockets[j])); for (int k = 0; k < ITEM_ATTRIBUTE_SLOT_MAX_NUM; ++k) PyCallClassMemberFunc(m_apoPhaseWnd[PHASE_WINDOW_GAME], "SetEquipmentDialogAttr", Py_BuildValue("(iiiii)", kViewEquipPacket.dwVID, i, k, rItemSet.aAttr[k].bType, rItemSet.aAttr[k].sValue)); } return true; } Binaryside done! - Build! ---Edit---- Multiple opening bugfix: Open interFaceModule.py and search for this: "def OpenEquipmentDialog(self, vid):" if you found it replace that function with this: def OpenEquipmentDialog(self, vid): if self.equipmentDialogDict.has_key(vid): self.equipmentDialogDict[vid].Destroy() self.CloseEquipmentDialog(vid) dlg = uiEquipmentDialog.EquipmentDialog() dlg.SetItemToolTip(self.tooltipItem) dlg.SetCloseEvent(ui.__mem_func__(self.CloseEquipmentDialog)) dlg.Open(vid) self.equipmentDialogDict[vid] = dlg Show the "View equip" button on the targetbar: Open uitarget.py and check this diff to fix it for yourself: [Hidden Content] ( ----EndEdit---- Ohh I almost forgot, here are the bgs ^^-> ui.7z - MEGA All done, press escape to exit... :')
    6 points
  6. pythonutils.cpp [Hidden Content] 20PmKT5WcX pythonutils.h [Hidden Content] ar70SR4c (Delete space after /)
    6 points
  7. Download Updated at 2023.08.05. Alternative download links: Client & Serverfiles + VDI + Extension Pack [40250] Reference Serverfile + Client + Src [15 Available Languages] My goal was to make a reference r40250 serverfile as official as possible compared to what GF had back when their files got leaked in early 2014. No new systems added, only bug fixes. While I spent several hours testing, there may still be bugs. Please report bugs to me so I can fix them in the future, I want to make this project as bug free as possible. Available languages: EN/DE/HU/FR/CZ/DK/ES/GR/IT/NL/PL/PT/RO/RU/TR Please read Languages.txt to learn how to change the default EN language. SSH for VM: root/123456789 MySQL: root/123456789 Ingame: admin/123456789 Aliases and it's commands: start cd /usr/metin2/server && sh start.sh close cd /usr/metin2/server && sh close.sh clean cd /usr/metin2/server && sh clean.sh backup cd /usr/metin2/server && sh backup.sh questcompile cd /usr/metin2/server/share/locale/english/quest && python2.7 make.py dbclean cd /usr/metin2/src/server/db/src && gmake clean dbdep cd /usr/metin2/src/server/db/src && gmake dep dbcompile cd /usr/metin2/src/server/db/src && gmake -j9 gameclean cd /usr/metin2/src/server/game/src && gmake clean gamedep cd /usr/metin2/src/server/game/src && gmake dep gamecompile cd /usr/metin2/src/server/game/src && gmake -j9 Please read Changelog.txt to find more about the changes I made. Special thanks to: @Mali for the clean and updated client & server src files. @Sanchez for the 2014 base client. @Veltor88 for the translate.lua pack. @Fazer for the locale_string pack I made a little video about installing the serverfile (vm) and changing the language: PS: I know it's pretty late in 2021 but better than ever Sincerely, TMP4
    5 points
  8. M2 Download Center Download Here ( Internal ) Hi, from what I saw some of you are looking for a tutorial wich is showing you how to upgrade the granny version from 2.9 to 2.11.8 so I thought I have a tutorial for you guys. I explained as much as possible that no one has any error. Otherwise any error leave a reply. Thanks in advance and good luck! [Hidden Content]
    4 points
  9. M2 Download Center Download Here ( Internal ) Hi, As requested by some users i have you a VM with FreeBSD 9.2 32bit, novaline source and pre installed Ports so you can compile the game. It was like 10 minutes of work to enter the commands so no thanks needed. Link: HerpDerp Login: root Pw: dev To compile the game: cd /usr/src/novaline/Srcs/Server/game/src gmake clean gmake -j20 If there are any Problems or questsions you can add me in Skype(l337-5p34k) or Message me here i'll always give you support. Kind regards TheGame €: There are no Serverfiles on this VM because i dont have test serverfiles. If someone have Serverfiles for me i'll implement them and upload an updated version of this VM. €: Updated Link: Thanks to Da'Real Pain
    4 points
  10. Hey m2dev You summon a lot of monsters, they attack your character and then you kill or purge monsters, but the damage still continues to be shown visually. Is this a familiar situation? In addition, the damage is shown visually even after the death of the character... I love this game. I haven't seen a fix for this problem, let's try to fix this sh.. [Hidden Content] I'm not saying that this is an ideal solution. If you have any ideas, please write comments. Best regards, Masha
    4 points
  11. Introduction I think everyone know about this famous bug. I profiled the game and checked granny documentation why it happens because we also faced this on MAP1s since we have a lot of offline shops. Actually the game not even freezes, it runs well and the updates happen. What eventually happens there is just that update time takes too long so it will skip rendering. What makes update times longer? The answer is granny controls. When you minimize your game, the completed controls never get freed. It's because the game frees them in CGrannyModelInstance::UpdateWorldPose which is called from CPythonApplication::RenderGame in a long way. There are just more and more of them that are never freed and that makes GrannySetModelClock take more and more time so when you open up your client from the minimized state it will never finish the update fast enough to call RenderGame in which they would be freed again. [Hidden Content] Thats all, you won't face the "black screen bug" again! Good luck guys!
    3 points
  12. M2 Download Center Download Here ( Internal ) Hi, folks! With this guide you will be able to combine textlines with images, like rubinum does. Usage is simple: emojiTextLine.SetText("|Eemoji/key_ctrl|e + |Eemoji/key_x|e + |Eemoji/key_rclick|e - Direct sell") The files are located in the icon pack, so basically the code will load from icon/{GIVEN_PATH}.tga - in the sample the path for the X is: icon/emoji/key_x.tga Here are the images from rubinum client:  Howto: Have fun Sorry for arab players , for sure they have also developers, so let's go guys, finish it ? If you have problem, maybe I made a mistake in the guide of missed out something, just leave a comment below. PS.: Sometimes the code tag of the board puts an extra invisible character mostly the end of the lines, if your IDE cries for syntax error, but it seems correct, check that part of the file with notepad++, it will show a ?(question mark) where the problem is.
    3 points
  13. M2 Download Center Download Here ( Internal ) Hi here's my collection of 2010-11 weapons+it's icons dl: [Hidden Content] vt: [Hidden Content] PS: you can make your own item_list parts *-*
    3 points
  14. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) Download Here ( MEGA ) As the title indicates, the system allows you to change the default keyboard keys. Click here to check the tutorial for adding new keys & functions. Click here for tab targeting key support.
    3 points
  15. Hi, m2dev! The game cannot change the screen resolution in real time (as is done in most new games). I started trying to implement this function, but I do not know how to change the screen resolution correctly. //UserInterface/PythonApplication.cpp //Original code. unsigned __GetWindowMode(bool windowed) { if (windowed) return WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX; return WS_POPUP; } //Change code unsigned __GetWindowMode(bool windowed) { if (windowed) return WS_TILEDWINDOW; return WS_POPUP; } In fact, the developers of this game laid the foundation for changing the resolution in real time. This is understandable if you open the file: UserInterface/PythonApplicationProcedure.cpp and find the function: //UserInterface/PythonApplicationProcedure.cpp //seacrh function: LRESULT CPythonApplication::WindowProcedure(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam) //We should be interested in this section case WM_SIZE: switch (wParam) { case SIZE_RESTORED: case SIZE_MAXIMIZED: { RECT rcWnd; GetClientRect(&rcWnd); UINT uWidth=rcWnd.right-rcWnd.left; UINT uHeight=rcWnd.bottom-rcWnd.left; m_grpDevice.ResizeBackBuffer(uWidth, uHeight); } break; } if (wParam==SIZE_MINIMIZED) m_isMinimizedWnd=true; else m_isMinimizedWnd=false; OnSizeChange(short(LOWORD(lParam)), short(HIWORD(lParam))); break; case WM_EXITSIZEMOVE: { RECT rcWnd; GetClientRect(&rcWnd); UINT uWidth=rcWnd.right-rcWnd.left; UINT uHeight=rcWnd.bottom-rcWnd.left; m_grpDevice.ResizeBackBuffer(uWidth, uHeight); OnSizeChange(short(LOWORD(lParam)), short(HIWORD(lParam))); } break; //UserInterface/PythonApplicationEvent.cpp (We should be interested in the function: OnSizeChange) void CPythonApplication::OnSizeChange(int width, int height) { //Here it is necessary to implement a change in the size of GUI and etc... } If you leave everything in this form, then changing the screen resolution will be incorrect. The game will simply stretch the contents of the window to our screen resolution. This is not what it should be. It looks ugly. Please tell me how to properly handle the change in screen resolution in real time in the function: OnSizeChange?
    3 points
  16. M2 Download Center Download Here ( Internal ) Mega
    3 points
  17. M2 Download Center Download Here ( Internal ) Hi everyone, As title say, this is a wiki system but, InGame . This system was made by Kori . When i download it, the system had a bug on item bar, so, i've removed it . Screen of system: The system is open by pressing a key ( choosed for you ) . How to ? Well, 1º - Unpack your root . 2º- Search for archive game.py 3º- Open it and add: import uiwiki 4º - Search for: def __init__(self, stream): and add: self.wiki = uiwiki.AgeofPlatonWiki() 5º - Search for: onPressKeyDict[app.DIK_F5] and next add: onPressKeyDict[app.DIK_F9] = lambda : self.__OnWiki() Note: in here: [app.DIK_F9], F9 will be the key would you need to press to can view the system . You can change it , like you want. 6º - In the end of all ( game.py ) add this: def __OnWiki(self): if self.wiki.IsShow(): self.wiki.Hide() else: self.wiki.Show() 7º - Download the archive, add it to root, and pack it again . Download: Link Here Password: www.metin2dev.org Have fun ! Kind Regards, Grave
    3 points
  18. How to create a Metin2 private server with Metin2 Project - Français Introduction I want to offer Metin2 Project as an alternative to stable and functional server files. Metin2 Project is shaped according to my ideas and my desires, my only limit is my imagination. All changes and fixes to Metin2 Project are made with defines. You can suggest ideas to me but I am free to refuse them without any justification. Summary Important information to know about Metin2 Project. Initial working base => @ Mali & @ TMP4 => TMP4's Project DB & GAME Ready for FreeBSD 32 Bit & 64 Bit Ready for MySQL Server 8 Ready for Microsoft Visual Studio 2022 EN DE HU FR CZ DK ES GR IT NL PL PT RO RU TR Avalable languages Test Environment When developing the project, the following configuration was used. FreeBSD 13.1 64 Bit MySQL Server 8.0.29 LLVM-Devel 15.0.D20220328_1 GDB 11.2 Makedepend 1.0.6,1 GMake 4.3_2 Python 2.7.18_1 Microsoft Visual Studio 2022 Access Credentials No database login credentials are provided. You must set up your own user to administer and manage your Metin2 Project server. The associated tutorial, allows you to create your login credentials to the database, you should be able to get there... Finally, I hope for you. Metin2 Accounts User: playerone User: playertwo User: playerthree User: playerfour User: playefive User: playersix User: playerseven User: playereight User: playernine User: playerten Password: player Changelogs 2022.XX.XX.0001 Spoiler XXX (In Dev, Use TMP4 Projet) Downloads Download the project and enjoy! No virtual machine is provided, you can create it yourself using the associated tutorial. 2022.XX.XX.0001 => Server + Client (In Dev, Use TMP4 Projet) Made With and Metin2 Project
    3 points
  19. M2 Download Center Download Here ( Internal ) [Hidden Content] VirusTotal
    3 points
  20. M2 Download Center Download Here ( Internal ) Hi! I didnt release something more useful long time.. So today i'm releasing new weapon set for free. The package including weapons for all 5 characters. - Twohand sword + normal swrod (warrior) - Axe (sura) - Bow + dagger (assassin) - Fan + bell (shaman) - Claw (lycan) Also my new map magic cave is coming (not for free), this is one of the reasons why im releasing this set too... So stay tuned! Download
    3 points
  21. This is actually something interesting to implement in the client with a drop-down menu because all modern games are now using this type of in-game setting. Changing the size of the window is relatively easy but the biggest issue is that it will distort every texture, font and any type of graphical objects in the client. Since we are talking about Metin2 it will not be that easy task in my point of view because changing the resolution of the entire game isn’t so easy in DirectX as in OpenGL because you need to reset the device in DirectX and doing this it will mess the anti-analyzing of the terrain textures, you can call it the “famous UAC bug” (and that happens because when the screen is black/lost it will reset itself) and that’s just one problem. The worst part is all graphical elements in the client getting distorted like fonts. I’m not an expert in DirectX but I assume you would have to reset the *ms_lpd3dDevice device and render the entire graphical objects again. I did try to play around with CGraphicDevice and ms_matScreen2 but the results weren’t so good as expected.
    3 points
  22. Support for Tab Targeting [Hidden Content]
    3 points
  23. M2 Download Center Download Here ( Internal ) [Hidden Content] VirusTotal
    3 points
  24. M2 Download Center Download Here ( Internal ) [Hidden Content] VirusTotal
    3 points
  25. M2 Download Center Download Here ( Internal ) GitHub repository: [Hidden Content]
    3 points
  26. BR Patch 07.09.2021 (Metin2 Download) GF v21.3.7.0 Patch (Metin2 Download)
    3 points
  27. M2 Download Center Download Here ( Internal ) download
    3 points
  28. M2 Download Center Download Here ( Internal ) The archive contains: The model Textures The icon An example MSM
    3 points
  29. M2 Download Center Download Here ( Internal ) Hello guys, i want share all my recreate models from another games to metin2 with you. I have decided because i dont have time for help, create new models and other reasons. Soo. Thats my last release and i send here all my release + video or gif. Thanks for read this "bulls*t" and have a nice day Best Regards meeisterViper ---------------------------------------------------------------------------------------------------------------------------------------- Fenrir pet ss: [Hidden Content] ss1: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Vamana pet ss: [Hidden Content] Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Kumas mount Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Car mount Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Mount pack ss: [Hidden Content] Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Bunny mount ss: [Hidden Content] Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Sail Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Helrath mount ss: [Hidden Content] Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Lama mount ss: [Hidden Content] Video: [Hidden Content] Download: [Hidden Content] ---------------------------------------------------------------------------------------------------------------------------------------- Panda mount ss: [Hidden Content] Video: [Hidden Content] Download: [Hidden Content]
    3 points
  30. M2 Download Center Download Here ( Internal ) D:\ymir work\item\weapon\Ksjeu_Anim\Ksjeu_Wings\ksjeu_wings_set8\ksjeu_wings_set8.dds Download
    3 points
  31. M2 Download Center Download Here ( Internal ) Download
    2 points
  32. M2 Download Center Download Here ( Internal ) Hey devs! One word: Works! Follow the steps: 1.) Open "db/src/Main.cpp" file and write this to the top of the file, under to the includes: // NOTXT_STARTUP_BEGIN BOOL g_noTXT = false; // NOTXT_STARTUP_END 2.) Search for this: "int iDisableHotBackup;" and put under this: // NOTXT_STARTUP_BEGIN int iNoTXT; if (CConfig::instance().GetValue("NO_TXT", &iNoTXT)) { if (iNoTXT) { sys_log(0, "CONFIG: NO_TXT"); g_noTXT = true; } } // NOTXT_STARTUP_END 3.) Save&Close. Now open "db/src/ClientManager.h" and replace: bool InitializeMobTable(); bool InitializeItemTable(); With: // NOTXT_STARTUP_BEGIN bool InitializeMobTableTXT(); bool InitializeItemTableTXT(); bool InitializeMobTableSQL(); bool InitializeItemTableSQL(); // NOTXT_STARTUP_END 4.) Save&Close. Then open "db/src/ClientManagerBoot.cpp" and put this the top of the file: // NOTXT_STARTUP_BEGIN extern int g_noTXT; // NOTXT_STARTUP_END 5.) Replace this: bool CClientManager::InitializeMobTable() With this: bool CClientManager::InitializeMobTableTXT() And repeat it with ItemProto(::InitializeItemTable) 6.) Search for this: "bool CClientManager::InitializeTables()" and replace this: if (!InitializeMobTable()) { sys_err("InitializeMobTable FAILED"); return false; } if (!MirrorMobTableIntoDB()) { sys_err("MirrorMobTableIntoDB FAILED"); return false; } if (!InitializeItemTable()) { sys_err("InitializeItemTable FAILED"); return false; } if (!MirrorItemTableIntoDB()) { sys_err("MirrorItemTableIntoDB FAILED"); return false; } With this: // NOTXT_STARTUP_BEGIN if (g_noTXT) // item and mob proto { if (!InitializeMobTableSQL()) { sys_err("InitializeMobTableSQL FAILED"); return false; } if (!InitializeItemTableSQL()) { sys_err("InitializeItemTableSQL FAILED"); return false; } } else { if (!InitializeMobTableTXT()) { sys_err("InitializeMobTableTXT FAILED"); return false; } if (!MirrorMobTableIntoDB()) { sys_err("MirrorMobTableIntoDB FAILED"); return false; } if (!InitializeItemTableTXT()) { sys_err("InitializeItemTableTXT FAILED"); return false; } if (!MirrorItemTableIntoDB()) { sys_err("MirrorItemTableIntoDB FAILED"); return false; } } // NOTXT_STARTUP_END 7.) And last put these functions into the file: 7+1.) New item_proto_table.sql: DROP TABLE IF EXISTS `item_proto`; CREATE TABLE `item_proto` ( `vnum` int(11) unsigned NOT NULL DEFAULT '0', `vnum_range` int(11) unsigned NOT NULL DEFAULT '0', `name` varbinary(200) NOT NULL DEFAULT 'Noname ', `locale_name` varbinary(24) NOT NULL DEFAULT 'Noname ', `type` tinyint(2) NOT NULL DEFAULT '0', `subtype` tinyint(2) NOT NULL DEFAULT '0', `weight` tinyint(3) DEFAULT '0', `size` tinyint(3) DEFAULT '0', `antiflag` int(11) DEFAULT '0', `flag` int(11) DEFAULT '0', `wearflag` int(11) DEFAULT '0', `immuneflag` set('PARA','CURSE','STUN','SLEEP','SLOW','POISON','TERROR') CHARACTER SET big5 NOT NULL DEFAULT '', `gold` int(11) DEFAULT '0', `shop_buy_price` int(10) unsigned NOT NULL DEFAULT '0', `refined_vnum` int(10) unsigned NOT NULL DEFAULT '0', `refine_set` smallint(11) unsigned NOT NULL DEFAULT '0', `refine_set2` smallint(5) unsigned NOT NULL DEFAULT '0', `magic_pct` tinyint(4) NOT NULL DEFAULT '0', `limittype0` tinyint(4) DEFAULT '0', `limitvalue0` int(11) DEFAULT '0', `limittype1` tinyint(4) DEFAULT '0', `limitvalue1` int(11) DEFAULT '0', `applytype0` tinyint(4) DEFAULT '0', `applyvalue0` int(11) DEFAULT '0', `applytype1` tinyint(4) DEFAULT '0', `applyvalue1` int(11) DEFAULT '0', `applytype2` tinyint(4) DEFAULT '0', `applyvalue2` int(11) DEFAULT '0', `value0` int(11) DEFAULT '0', `value1` int(11) DEFAULT '0', `value2` int(11) DEFAULT '0', `value3` int(11) DEFAULT '0', `value4` int(11) DEFAULT '0', `value5` int(11) DEFAULT '0', `socket0` tinyint(4) DEFAULT '-1', `socket1` tinyint(4) DEFAULT '-1', `socket2` tinyint(4) DEFAULT '-1', `socket3` tinyint(4) DEFAULT '-1', `socket4` tinyint(4) DEFAULT '-1', `socket5` tinyint(4) DEFAULT '-1', `specular` tinyint(4) NOT NULL DEFAULT '0', `socket_pct` tinyint(4) NOT NULL DEFAULT '0', `addon_type` smallint(6) NOT NULL DEFAULT '0', PRIMARY KEY (`vnum`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_bin; But you can modify your item_proto with "Design table" option in navicat, just make the vnum_range column to the second column after the vnum, as you can see in the query. conf.txt: NO_TXT = 1 0: TXT 1: SQL Special thanks to: - iMer, Zonni for the snippets ^^ Changelog: - "0" If you find any errors or problems just post a message into this thread. I tested on win. I hope you like it. With regards, P3NG3R.
    2 points
  33. M2 Download Center Download Here ( Internal ) June 17 2014 - I rewrote the whole the source. FAQ: How can I open the project, which version of Visual Studio do I need? I used Visual Studio 2013, but I'm sure you can open in 2012 too. What is CRC? You can learn more about Cyclic redundancy check here. How can I make a list for the patcher? You can use the lister tool, it's in the source. HOW TO MAKE IT WORKS: 1. Change the ServerURL variable in Globals.cs to your url 2. Build the project 3. Create a list with the lister tool (Example of the list) 4. Upload the files and the patchlist to your server (Example of the folder structure) Downloads: MEGA.CO.NZ If you have any question or suggestion please just reply to this topic. Kind Regards, Sanchez
    2 points
  34. M2 Download Center Download Here ( Internal ) Files for root ( introselect.py , introcreate.py) Must make their self.
    2 points
  35. M2 Download Center Download Here ( Internal ) Hy, below you will see that "amazing" system for Pet. Actually is not a system but, Merry Christmas. [Hidden Content] Download: [Hidden Content]
    2 points
  36. M2 Download Center Download Here ( Internal ) Hi everyone, Today I bring you a collection of maps made by Ymir that were included at some point in an official client but were never used. The maps are: GM Guild Building Field Dungeon Ginseng Valley (b2) - Second version of Dragon Valley (Orcs area) Heavenly Valley (c2) - Third version of Dragon Valley (Orcs area) Dragon Timeattack 1 - Dungeon possibly used in Korea, used by SG for Dragon Timeattack event Dragon Timeattack 2 Dragon Timeattack 3 Test map - Actually a town EW02 - ? Guild Inside - Supposed to be the inside of a guild house Milgyo Pass & Sungzi - A collection of alternative maps for Nation War. Requires editing forked_road.txt in order to add them to this event. Siege - Three maps one for each kingdom, for a kingdom event You might also be interested in the Metin2 Korea Naga map available here
    2 points
  37. With this guide you can render map(s) to your login screen. Some server back in 2012 used this kinda login (DaRealFreak) and I found it pretty cool, so I did this tutorial maybe people will use it again. At def LoadMap(self): there is a list called environments where I set 17 location for you. You can edit/extend it as you wish. The client choose a random location from that list. Somebody will surely comment that it's make the client opening slower. Yes it does, but as you can see in the video that's minimal. Also if you use a client with intro video logo then it doesn't matter because that's longer than it's 1-1,5 second loading time. But if you think it's not acceptable then either optimize it somehow or stay with image background [Hidden Content]You can disable the environmental background by editing INTERACTIVE_LOGIN = 1 at the top to INTERACTIVE_LOGIN = 0. Here's a basic intrologin.py with this environmental background if you want to compare: Google Drive (or Metin2 Download) Original idea by DaRealFreak in 2012. Sincerly, TMP4
    2 points
  38. Hello, pretty sure anyone of you knows about the Dispel and Heal Lag problem that has been around since always. This little modification will fix both these problems completely. (Thanks @Horinna for helping with the in-game tests) Problem: The RemoveAffect function calls ComputePoints() (Complete rearrange of all the player stats and equip parts, one of the heaviest checks). The correct function to use is RefreshAffect() which does its job pretty fine! But that's not the only problem: Based on the current code, that function would get called every single time an affect gets removed or added, while it should only get called once, at the end of the process. Solution: We could make new functions for those 2 special flags (REMOVE_BAD_AFFECT and REMOVE_GOOD_AFFECT), but in order to keep things simple for you guys, i'll simply "dynamicize" the RemoveAffect function. 1: navigate inside char_affect.cpp: 2: navigate inside char.h: This way, we applied a simple boolean value arg to the RemoveAffect function, which will get set to true by default. By setting it to false like this RemoveAffect(affectLUL, false); we are basically saying the game to not Rearrange the points when affectLUL gets removed. now we will use a cycle to do that for every affect like usual, and we will rearrange of the points just once, at the end of the process, like it should be. Done! Comparison:
    2 points
  39. You too? You want to create a server for our favorite MMORPG?! You will be able to make your dream come true ! This guide is exclusively compatible with Metin2 Project. Are you ready? Gooo! Install the Virtual Machine Spoiler Prerequisites Download and install the latest version of VirtualBox Download the latest version of the Metin2 Project Virtual Machine Storage: 25GB RAM: 2GB Introduction VirtualBox is virtualization software. A Metin2 Server runs mostly on an operating system called FreeBSD. It's therefore necessary to virtualize a second computer within yours to operate your Metin2 Project Server. It's the virtualization of a second operating system that consumes resources in processor, RAM and storage on the host system, your computer. If you are using a dedicated server, you will install FreeBSD as the main operating system without using Windows! The Metin2 Project Virtual Machine is ready to use, it's already preconfigured to be usable, even for a neophyte! Ready? Gooo! You need to open the « OVA » file by clicking on it, like to open your favorite software. The extension is recognized automatically by Windows and is associated with VirtualBox. You must click on the button « IMPORT » and let VirtualBox work, it imports your Metin2 Project Virtual Machine for your greatest happiness ! It has successfully imported your Metin2 Project Virtual Machine! Congratulations ! Configure the Virtual Machine Spoiler Introduction By default, your Metin2 Project Virtual Machine is partitioned into a local network within your computer. This manipulation consists of making your router and your virtual machine communicate and allowing it access to the Internet network. Ready? Gooo! You must click on the name of your virtual machine then click on « CONFIGURATION ». A part that is very important, this is where you give your virtual machine the power to connect to the world and control all of us ! Click on « NETWORK » and choose « BRIDGED ADAPTER » then select the primary network card that your computer uses, « WIFI » or « ETHERNET ». You also have the possibility to modify the various parameters of your virtual machine, such as the RAM, the power of the processor... Click the « OK » to save the changes. Manage the Virtual Machine Spoiler Introduction It's important to know how to manage a virtual machine, starting it and shutting it down are actions that you are likely to perform regularly when managing your Metin2 Project Server. Ready? Gooo! All you have to do is start your Metin2 Project Virtual Machine ! For that, it's very simple you have to right click on the name of your virtual machine and it will offer you several choices including: « START » or « CLOSE » when you want to turn it off. When it has finished starting, you must have this on your screen, you must identify yourself using the identifiers that are available on the topic where you downloaded Metin2 Project, when entering the password it will not be displayed no, this is absolutely normal. So here you have the main interface between your computer and your virtual machine, it's a bit like your second screen! It must imperatively remain open otherwise it would turn off your computer . Trick It's possible to restart your Metin2 Project Virtual Machine using a command! When you are connected and identified on the VirtualBox interface or using PuTTY, all you have to do is enter the following command then validate with the « ENTER »key on your keyboard: reboot Retrieve the IP Address Spoiler Introduction An IP address is like your postal address, if we don't know it, we can't know where you are. An IP address represents the postal address, the location of your Metin2 Project Virtual Machine on your network. Ready? Gooo! You will retrieve the address of your virtual machine, it has an address, a home and it does not pay rent! This address, which is exclusively numeric is the IP address, it's specific to each computer, whether physical or virtual. You will be able to connect to the various tools to manage your Metin2 Project private server but also to connect to the game! For that, it's very simple you have to enter the following command in the VirtualBox interface: ifconfig In our example, the IP address of the virtual machine is: « 192.168.0.21 ». Use PuTTY Spoiler Prerequisites Download the latest version of PuTTY Introduction PuTTY is an SSH client, it allows you to connect to your FreeBSD Server in SSH. It's more or less similar to a remote control software like AnyDesk or TeamViewer except that it's used in command line! This saves you the uncomfortable interface of VirtualBox. PuTTY being much more ergonomic for copying and pasting commands... Ready? Gooo! Enter the IP address in the field: Host Name (or IP address) Enter the SSH port in the field: Port (Default: 22) Enter a name you want in the field: Saved Sessions Click on the « SAVE » button to save the connection parameters You must double click on the registered server of your choice to initiate a connection. PuTTY will ask you for the username and password of your FreeBSD user, this corresponds to the credentials used on your VirtualBox interface. It may also ask you to confirm the connection to the SSH Server and indicate a security problem, don't panic and click on « YES ». Use EterNexus Spoiler Prerequisites Download the latest version of EterNexus Download the Metin2 Project Client Introduction EterNexus is a software which will allow you to decompress and compress the « EIX » and « EPK » archives of the « PACK » folder of your Metin2 Project Client, these archives contain absolutely all the game data, images, texts, models, textures... Ready? Gooo! You have to extract the files from EterNexus and move them to the « PACK » directory of your Metin2 Project Client. You will find a folder with the same name of the archive that you unzipped in the directory where the archive is located. To unzip an archive: EterNexus will recreate a new archive with the same name of the folder and in the same location where the same directory is located. To compress an archive: Configure the Metin2 Project Client Spoiler Prerequisites Download and install the latest version of Notepad++ Download and install the latest version of WinRAR Introduction It's necessary to link your Metin2 Project Client to your Metin2 Project Server, for this we will enter the IP address of your server within the game client configuration. Ready? Gooo! You must first extract the Metin2 Project Client archive. In order to configure your Metin2 Project Client and link it to your Metin2 Project Virtual Machine, you must configure the IP address within your Metin2 Project Client. You must extract the archive « ROOT » and you will find a multitude of files there, the one that interests us is « SERVERINFO.PY », it contains all the information about your server, the IP address, the name, the port of access... At the beginning of this file, there is a list of sample servers to guide you through the changes. At the beginning of the file you must find the following block: SRV_LOCALHOST = { 'name':'LOCALHOST', 'host':'127.0.0.1', 'auth':11002, 'c1':13001, 'ids':'10', } You need to modify the line similar to: 'host':'XXX.XXX.XXX.XXX', You must replace « XXX.XXX.XXX.XXX » by the IP address of your Metin2 Project Virtual Machine then save the changes. After that, you simply need to compress the « ROOT » archive. This means that when you run the Metin2 Project Client, you will need to select the « LOCALHOST » server. Use Navicat Spoiler Prerequisites Download and install the latest version of Navicat Introduction Navicat is a graphical database management and development software suite, it will allow you to manage your databases and the data stored in them. Navicat is not limited to MySQL, it's also able to connect to other SQL Servers such as PostgreSQL, Oracle, SQLite, MariaDB... As part of Metin2 Project, we use MySQL, the database records and stores all data relating to your Metin2 Project Server, accounts, characters, inventories, state of quests... Ready? Gooo! To start the configuration of Navicat, you must click on « CONNECTION » then choose « MYSQL », MySQL is the engine of our database used in Metin2 Project. Logins are available on the topic where you have downloaded Metin2 Project. Enter the name you want in the field: Connection Name Enter the IP address in the field: Host Enter the MySQL port in the field: Port (Default: 3306) Enter the username of a public account in the field: User Name Enter the password associated with your user in the field: Password Check the box: Save password In order to ensure that the connection is established, you can click on the button: « TEST CONNECTION » if you have the message below, everything is good! It only remains to confirm by clicking twice on the buttons: « OK ». To connect to a MySQL Server, you must double click on the name of the previously added server. In the left part of Navicat, to see all the data of your Metin2 Project Server you must click on « TABLES ». To open a data table, also double click on it. Create an Account on Metin2 Project Spoiler Prerequisites Encrypt password Ready? Gooo! Creating an account on your Metin2 Project Server is easy, for that we will use Navicat to connect to the MySQL Server. We are going to modify the « ACCOUNT » table, it's located in the « ACCOUNT » database. To manually add an account from Navicat, you must click on the « + » at the bottom left and fill in the boxes, these fields are the most important, everything else is optional and will be filled in automatically with the default settings: ID: Do not fill, it fills automatically LOGIN: The username of the account we use to connect to the game client PASSWORD: This is the password, which you must first encrypt SOCIAL_ID: This is the code for deleting a character EMAIL: This is the email address of the account CREATE_TIME: Account creation date STATUS: Account status, « OK » or « BLOCK » if he should be banned SECURITYCODE: ? AVAILDT: ? MILEAGE: DC CASH: MD GOLD_EXPIRE: Double Drop Chance for Items SILVER_EXPIRE: 50% More experience SAFEBOX_EXPIRE: More storage space in the Warehouse AUTOLOOT_EXPIRE: A Hand that Automatically Picks Up Yangs FISH_MIND_EXPIRE: The chance of catching a Fish increases MARRIAGE_FAST_EXPIRE: Love points increase faster MONEY_DROP_RATE_EXPIRE: Double Chance of Yang Drop LAST_PLAY: Last login date This ensures that your passwords are not in the clear in your database, a measure of security and confidentiality. Finish by pressing the « ENTREE » key on your keyboard to confirm and save. Assign « GM » permissions Spoiler Introduction Adding permissions to a user involves a lot of responsibility, for this we will use Navicat to connect to the MySQL Server. We are going to modify the « GMLIST » table, it's located in the « COMMON » database. To manually add an account from Navicat, you must click on the « + » at the bottom left and fill in the boxes: MID: Do not fill, it fills automatically MACCOUNT: The account ID the one to use to connect with the game client MNAME: This is the name of the character, it must be strictly identical, if it's not yet existing, it does not matter, the important thing here is to choose a name that will be that of your character MCONTACTIP: The box is empty by default, however some explanations: this allows the rights to be assigned to an account according to the player's IP address, this prevents someone from connecting to the account to take advantage of the accesses, to be avoided if the player to a dynamic IP address MSERVERIP: The box is on « ALL » by default, however some explanations: this is in the case where you have several Metin2 servers running on the same FreeBSD Server, this allows you to assign access to a particular server, it requires adding the server IP in the « GMHOST » table MAUTHORITY: This is the level of access rights in play, you can check the access level of an order from the sources of Metin2 GOD: Limited access HIGH_WIZARD: Limited access WIZARD: Limited access LOW_BIZARD: Limited access IMPLEMENTOR: Full access Finish by pressing the « ENTREE » key on your keyboard to confirm and save. You have defined the accesses, you must reload them, two solutions: You have an account with an already existing GM character, you must write this in-game command and disconnect / reconnect the concerned account: « /RELOAD A ». You don't have any GM characters, you have to stop and restart the Metin2 Project Server with the Metin2 Project Shell Manager. At this stage, the server has not started, the next start of the Metin2 Project Server will suffice to update your character's accesses. Use WinSCP Spoiler Prerequisites Download and install the latest version of WinSCP Introduction WinSCP is a graphical SFTP client for Windows. It uses SSH and is open source. The purpose of this program is to enable secure copying of files between a local computer and a remote computer. You will use it to transfer files to it. With WinSCP you will be able to explore the content of your Metin2 Project Virtual Machine as if you were on your computer with Windows and its file explorer. You will find there the files of the FreeBSD operating system, the programs which have been installed, but also, most importantly, the files of our Metin2 Project Server. Ready? Gooo! When you open the program for the first time, it automatically offers you the connection manager: Enter the IP address in the field: Host name Enter the SSH port in the port number: Port number (Default: 22) Enter Username: root: in the field: Username Enter the password for: root: in the field: Password Click on the button: Save... Enter the name you want in the field: Save session as Check the box: Save password (not recommended) Click on the button: OK To initiate the connection, you must double click on the server you have registered. WinSCP will automatically connect with the username and password that have been registered. It may also ask you to confirm the connection to the SFTP Server and announce a security issue, don't panic, click « YES ». Start the Metin2 Project Server Spoiler Prerequisites Using Metin2 Project Shell Manager Introduction Metin2 Project comes with a powerful program, Metin2 Project Shell Manager. It allows you to manage your Metin2 Project Server with ease! Ready? Gooo! To invoke it, you need to run this command on PuTTY: cd /usr/m2_project && sh m2sh.sh You have a multitude of options available to you that allow you to manage Metin2 Project as simply as possible. Each time you run the above command, you must choose one of these options by entering it and then validating it with the « ENTER » key on your keyboard. Enter: 103 Ready? Gooo! Spoiler Introduction It's time for you to materialize in the virtual and wonderful world of Metin2 Project ! Enjoy the great and beautiful Metin2 Project adventure... Made With and
    2 points
  40. M2 Download Center Download Here ( Internal ) [Hidden Content]
    2 points
  41. M2 Download Center Download Here ( Internal ) download:
    2 points
  42. M2 Download Center Download Here ( Internal ) Hello, To extend NPC Shop to 80 Items follow these steps. ServerSide Open "common/length.h" and search: SHOP_HOST_ITEM_MAX_NUM = 40 Replace with: SHOP_HOST_ITEM_MAX_NUM = 80 In the same file search: SHOP_PRICELIST_MAX_NUM = 40 Replace with: SHOP_PRICELIST_MAX_NUM = 80 Now open "game/shop.cpp" and search: m_pGrid = M2_NEW CGrid(5, 9) Replace with: m_pGrid = M2_NEW CGrid(10, 9) Now open "game/shop_manager.cpp" and search: CGrid grid = CGrid(5, 9) Replace with: CGrid grid = CGrid(10, 9) Now compile Db File & Game File and ServerSide's steps complete. ClientSide NOTE: If you want Only NPC Shop's with 80 Items follow this guide, else if you want NPC Shop & Private Shop follow the Update Istruction. Extract "pack/uiscript" from your Client and open "shopdialog.py". Now reaplace all content with: Shopdialog.py ~ 80 Items Now create "shopdialog2.py" and insert this content: ShopDialog2 ~ 80 Items for Shop Ok, at this point you can compress your UiScript with the new file "shopdialog2.py". Extract "pack/root" from your Client and open "interfacemodule.py" Search this: self.dlgShop = uiShop.ShopDialog() self.dlgShop.LoadDialog() self.dlgShop.Hide() After add: self.dlgShop2 = uiShop.ShopDialog2() self.dlgShop2.LoadDialog() self.dlgShop2.Hide() Same file, search this: def OpenShopDialog(self, vid): self.wndInventory.Show() self.wndInventory.SetTop() self.dlgShop.Open(vid) self.dlgShop.SetTop() After add: def OpenShopDialog2(self, vid): self.wndInventory.Show() self.wndInventory.SetTop() self.dlgShop2.Open(vid) self.dlgShop2.SetTop() Now open "game.py" and Search: def StartShop(self, vid): self.interface.OpenShopDialog(vid) Replace with: def StartShop(self, vid): if chr.IsNPC(vid): self.interface.OpenShopDialog(vid) else: self.interface.OpenShopDialog2(vid) Now open "uishop.py" and Search: def Close(self): self.OnCloseQuestionDialog() shop.Close() net.SendShopEndPacket() self.CancelShopping() self.tooltipItem.HideToolTip() self.Hide() Replace with: def Close(self): self.OnCloseQuestionDialog() shop.Close() net.SendShopEndPacket() self.CancelShopping() self.Hide() Same file, search: def OnUpdate(self): USE_SHOP_LIMIT_RANGE = 1000 (x, y, z) = player.GetMainCharacterPosition() if abs(x - self.xShopStart) > USE_SHOP_LIMIT_RANGE or abs(y - self.yShopStart) > USE_SHOP_LIMIT_RANGE: self.Close() After add: UiShop.py ~ ShopDialog2 Now you can compress "root" file. #Update [24-02-15] Fixed Client Bug. Changes in "shop_manager.cpp" added. #Update [26-02-15] Added PrivateShop with 80 Items. NPC & PrivateShop with 80 Items ClientSide: Open "UserInterface/Packet.h" in you Binary Client Source and Search: SHOP_HOST_ITEM_MAX_NUM = 40 Replace with: SHOP_HOST_ITEM_MAX_NUM = 80 Now you can compile your Binary Source. Open your Client File and extract "pack/uiscript". Open "shopdialog.py" and replace all contentwith: Shopdialog.py ~ 80 Items Now open "privateshopbuilder.py" and replace all content with: PrivateShopBuilder ~ 80 Items Now you can compress your UiScript. Screen Private Shop: [Hidden Content] Et Voilà, we ended. [Hidden Content] Good work, Bye.
    2 points
  43. M2 Download Center Download ( Internal ) Download ( Mega ) Hi Everyone! Making a monster transparent is not a real problem, in some cases even ugly. However, I would like to propose an alternative to classic transparency that can make some monsters more interesting. The idea is to allow some monsters to become visible only in a certain range. In the guide I also added the possibility of making it untargetable up to a minimum distance and the possibility of hiding the monster from the minimap to make it truly camouflaged.
    2 points
  44. M2 Download Center Download Here ( Internal ) Enjoy it!
    2 points
  45. Thanks @Jxxkub, the quick slot pagination is now fixed, check the repository. Tutorial for adding new keys & functions. [Hidden Content] This is just an example to guide the implementation of new keys and functions.
    2 points
  46. I couldn't identify any problem with the key changing, before posting everything I took the time to implement the system on a clean binary source. Once again, I checked and everything seems to be working correctlty. Preview 1 / Preview 2
    2 points
  47. [Hidden Content] any help please ? :$
    2 points
  48. M2 Download Center Download Here ( Internal ) Download Here ( GitHub ) I have added some necessary visual stuff, although some are just visual. I don't provide basic support for implementation, If you notice that something is missing you can let me know and I will add it. GIF visual: [Hidden Content] [Hidden Content] [Hidden Content]
    2 points
  49. M2 Download Center Download Here ( Internal ) Hi everyone, today i want to share with u a old set but i can't find nowhere. [Hidden Content] hope u guy's will enjoy. link: [Hidden Content] virustotal: [Hidden Content]
    2 points
  50. C++ version [Hidden Content]
    2 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.